admin管理员组

文章数量:1537937

2024年4月22日发(作者:)

EFI、UEFI主板BIOS 和 MBR、GPT硬盘分区技术详解

一、EFI (可扩展固件接口,英文名Extensible Firmware Interface 或EFI)

由英特尔,一个主导个人电脑技术研发的公司推出的一种在未来的类PC的电脑系统

中替代BIOS的升级方案。BIOS技术的兴起源于IBM PC/AT机器的流行以及第一台由康

柏公司研制生产的“克隆”PC。在PC启动的过程中,BIOS担负着初始化硬件,检测硬件

功能,以及引导操作系统的责任,在早期,BIOS还提供一套运行时的服务程序给操作系统

及应用程序使用。BIOS程序存放于一个掉电后内容不会丢失的只读存储器中,系统加电时

处理器的第一条指令的地址会被定位到BIOS的存储器中,便于使初始化程序得到执行。

EFI的产生

众所周知,英特尔在近二十年来引领以x86系列处理器为基础的PC技术潮流,它的

产品如CPU,芯片组等在PC生产线中占据绝对领导的位置。因此,不少人认为这一举动

显示了英特尔公司欲染指固件产品市场的野心。事实上,EFI技术源于英特尔安腾处理器

(Itanium)平台的推出。安腾处理器是英特尔瞄准服务器高端市场投入近十年研发力量设计

产生的与x86系列完全不同的64位新架构。在x86系列处理器进入32位的时代,由于

兼容性的原因,新的处理器 (i80386)保留了16位的运行方式(实模式),此后多次处理器

的升级换代都保留了这种运行方式。甚至在含64位扩展技术的至强系列处理器中,处理

器加电启动时仍然会切换到16位的实模式下运行。英特尔将这种情况归咎于BIOS技术的

发展缓慢。自从PC兼容机厂商通过净室的方式复制出第一套BIOS源程序,BIOS就以16

位汇编代码,寄存器参数调用方式,静态链接,以及1MB以下内存固定编址的形式存在

了十几年。虽然由于各大BIOS厂商近年来的努力,有许多新元素添加到产品中,如PnP

BIOS,ACPI,传统USB设备支持等等,但BIOS的根本性质没有得到任何改变。这迫使

英特尔在开发更新的处理器时,都必须考虑加进使效能大大降低的兼容模式。有人曾打了

一个比喻:这就像保时捷新一代的全自动档跑车被人生套上去一个蹩脚的挂档器。

然而,安腾处理器并没有这样的顾虑,它是一个新生的处理器架构,系统固件和操作

系统之间的接口都可以完全重新定义。并且这一次,英特尔将其定义为一个可扩展的,标

准化的固件接口规范,不同于传统BIOS的固定的,缺乏文档的,完全基于经验和晦涩约

定的一个事实标准。基于EFI的第一套系统产品的出现至今已经有五年的时间,如今,英

特尔试图将成功运用在高端服务器上的技术推广到市场占有率更有优势的PC产品线中,

并承诺在2006年间会投入全力的技术支持。

比较EFI和BIOS

一个显著的区别就是EFI是用模块化,C语言风格的参数堆栈传递方式,动态链接的

形式构建的系统,较BIOS而言更易于实现,容错和纠错特性更强,缩短了系统研发的时

间。它运行于32位或64位模式,乃至未来增强的处理器模式下,突破传统16位代码的

寻址能力,达到处理器的最大寻址。它利用加载EFI 驱动的形式,识别及操作硬件,不同

于BIOS利用挂载实模式中断的方式增加硬件功能。后者必须将一段类似于驱动的16位代

码,放置在固定的 0x000C0000至0x000DFFFF之间存储区中,运行这段代码的初始化

部分,它将挂载实模式下约定的中断向量向其他程序提供服务。例如,VGA 图形及文本输

出中断(INT 10h),磁盘存取中断服务(INT 13h)等等。由于这段存储空间有限(128KB),

BIOS对于所需放置的驱动代码大小超过空间大小的情况无能为力。另外,BIOS的硬件服

务程序都已 16位代码的形式存在,这就给运行于增强模式的操作系统访问其服务造成了

困难。因此BIOS提供的服务在现实中只能提供给操作系统引导程序或MS-DOS 类操作

系统使用。而EFI系统下的驱动并不是由可以直接运行在CPU上的代码组成的,而是用

EFI Byte Code编写而成的。这是一组专用于EFI驱动的虚拟机器指令,必须在EFI驱动运

本文标签: 处理器技术方式模式系统