统一可扩展固件接口统一可扩展固件接口(UEFI)的产生众所周知,英特尔在近二十年来引领以x86系列处理器为基础的PC技术潮流,其产品如CPU,芯片组等在PC生产线中占据绝对领导的位置
因此,不少人认为此举显示英特尔公司欲染指固件产品市场的野心
事实上,EFI技术源于英特尔安腾处理器(Itanium)平台的推出
安腾处理器是英特尔瞄准服务器高端市场投入近十年研发力量设计产生的与x86系列完全不同的64位新架构
在x86系列处理器进入32位的时代,由于兼容性的原因,新的处理器(80386)保留16位的运行方式(实模式),此后多次处理器的升级换代都保留这种运行方式
甚至在包含EM64T技术的至强系列处理器中,处理器加电启动时仍然会切换到16位的实模式下运行(BIOS)
英特尔将这种情况归咎于BIOS技术的发展缓慢
自从IBM PC兼容机厂商通过净室的方式复制出第一套BIOS源程序,BIOS就以16位汇编代码,寄存器参数调用方式,静态链接,以及1MB以下内存固定编址的形式存在十几年
虽然由于各大BIOS厂商近年来的努力,有许多新元素添加到产品中,如PnPBIOS、ACPI、传统USB设备支持等等,但BIOS的根本性质没有得到任何改变
这迫使英特尔在开发新的处理器时,都必须考虑加进使性能大大降低的兼容模式
用一个比喻来讲:这就像保时捷新一代的全自排跑车,被人套上去一个蹩脚打档器
然而,安腾处理器并没有这样的顾虑,它是一个新生的处理器架构,系统固件和操作系统之间的接口都可以完全重新定义
并且这一次,英特尔将其定义为一个可扩展的,标准化的固件接口规范,不同于传统BIOS的固定的,缺乏文档的,完全基于经验和晦涩约定的一个事实标准
基于EFI的第一套系统产品的出现至今已经有五年的时间,如今,英特尔试图将成功运用在高端服务器上的技术推广到市场占有率更有优势的PC产品线中,并承诺在2006年间会投入全力的技术支持
比较统一可扩展固件接口(UEFI)和BIOS二者显著的区别就是UEFI是用模块化,C语言风格的参数堆栈传递方式,动态链接的形式构建的系统,较BIOS而言更易于实现,容错和纠错特性更强,缩短了系统研发的时间
它可以运行于x86-64、IA32、IA64等架构上(在个人电脑上通常是x86-64平台),突破传统16位代码的寻址能力,达到处理器的最大寻址
它利用加载EFI驱动程序的形式,识别及操作硬件,不同于BIOS利用挂载真实模式中断的方式增加硬件功能
后者必须将一段类似于驱动程序的16位代码(如RAID卡的Option ROM)放置在固定的0x000C0000至0x000DFFFF之间存储区中,运行这段代码的初始化部分,它将挂载实模式下约定的中断向量向其他程序提供服务
例如,VGA图形及文本输出中断(INT 10h),磁盘访问中断服务(INT 13h)等等
由于这段存储空间有限(128KB),BIOS对于所需放置的驱动程序代码大小超过空间大小的情况无能为力
另外,BIOS的硬件服务程序都以16位代码的形式存在,这就给运行于增强模式的操作系统访问其服务造成了困难
因此BIOS提供的服务在现实中只能提供给操作系统引导程序或MS-DOS类操作系统使用
而UEFI系统下的驱动程序可以由EFI Byte Code(EBC)编写而成,EFI Byte Code是一组专用于EFI驱动程序的虚拟机器语言,必须在EFI驱动程序运行环境(Driver Execution Environment,或DXE)下被解释运行
采用EBC编写的EFI驱动程序拥有向下兼容性,打个比方说,一个带有EFI驱动程序的扩展设备,既可以将其安装在安腾处理器的系统中,也可以安装于支持UEFI的64位/32位PC系统中,而它的EFI驱动不需要重新编写
这样就无需对系统升级带来的兼容性因素作考虑
另外,由于EFI驱动程序开发简单,所有的PC部件提供商都可以参与,情形非常类似于现代操作系统的开发模式,这个开发模式曾使Windows在短短的两三年时间内成为功能强大,性能优越的操作系统
基于EFI的驱动模型可以使UEFI系统接触到所有的硬件功能,在操作系统运行以前浏览万维网站,实现图形化、多语言的BIOS设置界面,或者无需运行操作系统即可线上更新BIOS等等不再是天方夜谭,甚至实现起来也非常简单
这对基于传统BIOS的系统来说是件难以实现的任务,在BIOS中添加几个简单的USB设备支持都曾使很多BIOS设计师痛苦万分,更何况除了添加对无数网络硬件的支持外,还得凭空构建一个16位模式下的TCP/IP协议栈
一些人认为BIOS只不过是由于兼容性问题遗留下来的无足轻重的部分,不值得为它花费太大的升级努力
而反对者认为,当BIOS的出现约制了PC技术的发展时,必须有人对它作必要的改变
以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。