EFI是什么

发布时间:阅读数:8


EFI可扩展固件接口(Extensible Firmware Interface)的缩写,是英特尔公司推出的一种在未来的类PC的电脑系统中替代BIOS的升级方案。

EFI 是可扩展固件接口(Extensible Firmware Interface)的缩写,是英特尔公司推出的一种在未来的类 PC 的电脑系统中替代 BIOS 的升级方案。

EFI是什么

EFI 的产生

BIOS 技术的兴起源于 IBM PC/AT 机器的流行以及第一台由康柏公司研制生产的“克隆”PC。在 PC 启动的过程中,BIOS 担负着初始化硬件,检测硬件功能,以及引导操作系统的责任,在早期,BIOS 还提供一套运行时的服务程序给操作系统及应用程序使用。BIOS 程序存放于一个掉电后内容不会丢失的只读存储器中,系统加电时处理器的第一条指令的地址会被定位到 BIOS 的存储器中,便于使初始化程序得到执行。

众所周知,英特尔在近二十年来引领以 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 和 Legacy BIOS

一个显著的区别就是 EFI BIOS 是用模块化,C 语言风格的参数堆栈传递方式,动态链接的形式构建的系统,较 Legacy BIOS 而言更易于实现,容错和纠错特性更强,缩短了系统研发的时间。它运行于 32 位或 64 位模式,乃至未来增强的处理器模式下,突破传统 16 位代码的寻址能力,达到处理器的最大寻址。它利用加载 EFI 驱动的形式,识别及操作硬件,不同于 BIOS 利用挂载实模式中断的方式增加硬件功能。后者必须将一段类似于驱动的 16 位代码,放置在固定的 0x000C0000 至 0x000DFFFF 之间存储区中,运行这段代码的初始化部分,它将挂载实模式下约定的中断向量向其他程序提供服务。例如,VGA 图形及文本输出中断(INT 10h),磁盘存取中断服务(INT 13h)等等。由于这段存储空间有限(128KB),Legacy BIOS 对于所需放置的驱动代码大小超过空间大小的情况无能为力。

另外,Legacy BIOS 的硬件服务程序都以 16 位代码的形式存在,这就给运行于增强模式的操作系统访问其服务造成了困难。因此 Legacy BIOS 提供的服务在现实中只能提供给操作系统引导程序或 MS-DOS 类操作系统使用。而 EFI 系统下的驱动并不是由可以直接运行在 CPU 上的代码组成的,而是用 EFI Byte Code(EBC)编写而成的。这是一组专用于 EFI 驱动的虚拟机器指令,必须在 EFI 驱动运行环境(Driver Execution Environment,或 DXE)下被解释运行。这就保证了充分的向下兼容性,打个比方说,一个带有 EFI 驱动的扩展设备,既可以将其安装在安腾处理器的系统中,也可以安装于支持 EFI 的新 PC 系统中,而它的 EFI 驱动不需要重新编写。这样就无需对系统升级带来的兼容性因素作任何考虑。

另外,由于 EFI 驱动开发简单,所有的 PC 部件提供商都可以参与,情形非常类似于现代操作系统的开发模式,这个开发模式曾使 Windows 在短短的两三年时间内成为功能强大,性能优越的操作系统。基于 EFI 的驱动模型可以使 EFI 系统接触到所有的硬件功能,在操作操作系统运行以前浏览万维网站不再是天方夜谭,甚至实现起来也非常简单。这对基于传统 BIOS 的系统来说是件不可能的任务,在 BIOS 中添加几个简单的 USB 设备支持都曾使很多 BIOS 设计师痛苦万分,更何况除了添加对无数网络硬件的支持外,还得凭空构建一个 16 位模式下的 TCP/IP 协议栈。

一些人认为 BIOS 只不过是由于兼容性问题遗留下来的无足轻重的部分,不值得为它花费太大的升级努力。而反对者认为,当 BIOS 的出现制约了 PC 技术的发展时,必须有人对它作必要的改变。