爱影博客

记录生活 知识分享

BIOS到UEFI发展历程

一,传统的BIOS介绍及引导机制:
   BIOS,即Basic Input Output System的缩写。
   BIOS各部分功能:
  (1)自检及初始化
   这部分负责启动计算机,具体有三个部分,第一个部分是用于计算机刚接通电源时对硬件部分的检测,也叫做加电自检(POST),功能是检查计算机是否良好,例如内存有无故障等。第二个部分是初始化,包括创建中断向量、设置寄存器、对一些外部设备进行初始化和检测等,其中很重要的一部分是BIOS设置,主要是对硬件设置的一些参数,当计算机启动时会读取这些参数,并和实际硬件设置进行比较,如果不符合,会影响系统的启动。
  最后一个部分是引导程序,功能是引导DOS或其他操作系统。BIOS先从软盘或硬盘的开始扇区读取引导记录,如果没有找到,则会在显示器上显示没有引导设备,如果找到引导记录会把计算机的控制权转给引导记录,由引导记录把操作系统装入计算机,在计算机启动成功后,BIOS的这部分任务就完成了。
  (2).程序服务处理和硬件中断处理
   这两部分是两个独立的内容,但在使用上密切相关。程序服务处理程序主要是为应用程序和操作系统服务,这些服务主要与输入输出设备有关,例如读磁盘、文件输出到打印机等。为了完成这些操作,BIOS必须直接与计算机的I/O设备打交道,它通过端口发出命令,向各种外部设备传送数据以及从它们那儿接收数据,使程序能够脱离具体的硬件操作,而硬件中断处理则分别处理PC机硬件的需求,因此这两部分分别为软件和硬件服务,组合到一起,使计算机系统正常运行。
   BIOS的服务功能是通过调用中断服务程序来实现的,这些服务分为很多组,每组有一个专门的中断。例如视频服务,中断号为10H;屏幕打印,中断号为05H;磁盘及串行口服务,中断14H等。每一组又根据具体功能细分为不同的服务号。应用程序需要使用哪些外设、进行什么操作只需要在程序中用相应的指令说明即可,无需直接控制。

二,UEFI引导机制:
   UEFI即Unified Extensible Firmware Interface的缩写,是由英特尔公司联合业界共同提出的一种欲在未来电脑系统中替代传统BIOS的升级解决方案。
   BIOS技术一直是计算机软件系统中与硬件联系最紧密的,在PC启动的过程中,BIOS担负着初始化硬件,检测硬件功能,以及引导操作系统的责任,可以看出,BIOS对于计算机系统来说,是非常重要的系统软件,没有BIOS的计算机是无法运行的。传统BIOS经过了长达20多年的时间,基本上没有大的改进,在CPU和操作系统已经完全32位化的今天,BIOS仍然停留在16位实模式时代,只能访问1MB的基础内存,同时BIOS的开发中还大量使用汇编语言,使得开发入门难度增加,并且业界没有一个统一的规范,各IBVs(Independent BIOS Vender)各自为政,这种局面使传统BIOS开发成为硬件和操作系统发展的瓶颈。EFI不是一套软件,而是一整套定义的很好的接口,在业界得到推广和认可形成了UEFI规范。
   UEFI结构及其功能:
(1) Pre-EFI初始化模块
EFI初始化模块和驱动执行环境通常被集成在一个只读存储器中。Pre-EFI初始化程序在系统开机的时候最先得到执行,它负责最初的CPU,主桥及存储器的初始化工作。
(2)EFI驱动执行环境
(3) EFI驱动程序
   主要由各个设备厂商开发,EFI系统下的驱动并不是由可以直接运行在CPU上的代码组成的,而是用EFI Byte Code编写而成的。这是一组专用于EFI驱动的虚拟机器指令,必须在EFI驱动运行环境(Driver Execution Environment,或DXE)下被解释运行。
(4)兼容性支持模块(CSM)

      CSM是在x86平台EFI 系统中的一个特殊的模块,它将为不具备EFI引导能力的操作系统提供类似于传统BIOS的系统服务。
(5)EFI高层应用
    各个厂商按照UEFI标准开发的基于固件的高级功能,例如IBM Blade Center的AEM和BOFM。
(6)GUID 磁盘分区
    Pre-EFI初始化程序在系统开机的时候最先得到执行,紧接着载入EFI驱动执行环境(DXE)。当DXE被载入运行时,系统便具有了枚举并加载其他EFI驱动的能力。在基于PCI架构的系统中,各PCI桥及PCI适配器的EFI驱动会被相继加载及初始化;这时,系统进而枚举并加载各桥接器及适配器后面的各种总线及设备驱动程序,周而复始,直到最后一个设备的驱动程序被成功加载。最后通过EFI定义的接口加载OS引导程序启动进入操作系统。
   UEFI与传统BIOS的比较:
   1. 编码99%都是由C语言完成;
   2. 一改之前的中断、硬件端口操作的方法,而采用了Driver/protocol的新方式;
   3. 将不支持X86实模式,而直接采用Flat mode(也就是不能用DOS了,现在有些EFI 或UEFI 能用是因为做了兼容,但实际上这部分不属于UEFI的定义了);
   4.输出也不再是单纯的二进制code,改为Removable Binary Drivers;
   5. OS启动不再是调用Int19,而是直接利用protocol/device Path;
   6. 对于第三方的开发,前者基本上做不到,除非参与BIOS的设计,但是还要受到ROM的大小限制,而后者就便利多了。
   7.弥补BIOS对新硬件的支持不足的毛病。
   UEFI的发展前景:
   没有一项技术可以像BIOS一样从PC兴起以来一直发展到现在却没有变,不过熟悉的BIOS可能会在三年内被UEFI取代用户的需求和存储技术的进步让UEFI的实施成为非常容易的工作,因此不需要付出太多的资源就可以实现转换。而且,日后的开机速度将得到显著提升,有人预测开机仅需几秒。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注