让BIOS“下岗”——UEFI技术揭秘
技术空间
5月26日,在西雅图举行的WHEC(Windows硬件工程会议)上,微软公司宣布从2007年年底起,将在Windows Vista和名为“长角服务器”(Longhorn Server)的新版服务器系统中引入UEFI接口技术,以取代陪伴我们20多年的BIOS系统!到底是什么赋予UEFI如此强大的力量?
廉颇老矣——传统BIOS的缺点
作为连接操作系统和硬件体系之间的桥梁,BIOS(Basic Input Output System,基本输入输出系统)为PC的发展做出了重要的贡献,而UEFI能够取代BIOS,自然是瞄准了传统BIOS的缺点。对于这位与我们朝夕相处的朋友,你可曾留意过它的缺陷?
1.代码运行缓慢、启动时间长
无论是过去的286、386,还是如今的高频Pentium 4或性能不俗的Athlon 64平台,它们从开机到操作系统接管主机大权之前,主机在启动其间运行速度似乎没有多大差别。这一不合“常理”的现象的确令人感到奇怪。事实上,这正是由于传统BIOS技术发展缓慢造成的。当X86架构CPU进入32位时代后,由于兼容性的原因,80386仍然保留了16位的运行方式,CPU加电启动时仍然会切换到16位的实模式下工作。尽管以后CPU历经了多次重大革新,但这一兼容处理方法仍然没有改变。自从第一套BIOS源程序问世后,BIOS就以16位汇编代码、寄存器参数调用方式、静态链接以及1MB以下内存固定编址的形式存在了20年。正是这个可怕的16位“魔咒”,迫使Intel、AMD在开发新款CPU时,必须考虑加入会导致系统性能大大降低的兼容模式。
2.用户操作体验不佳
很多人觉得BIOS高深莫测,好像那是高手才能玩转的东西。其实,造成这一认识的很大一个原因是BIOS所采用的“简陋”字符界面。在Windows系统下,菜单、图标按钮、单击、双击……赏心悦目的图形界面缩短了我们与计算机之间的距离,而BIOS始终如一的“铁面”却让我们望而生畏。面对用户多年来的抱怨,BIOS也该有所“交待”了。
3.即插即用远非完美
通过硬件及系统厂商的不断努力,如今要让一块硬件正常运转起来,所花费的时间已经比以往减少了很多,但这远非完美。很多时候我们仍然会遭遇硬件之间的冲突,而此时就要进行硬件驱动及分配资源的手动调整,没有一定专业知识的人根本无从做起。事实证明,传统BIOS技术难以令即插即用技术发展到令人满意的程度。
4.代码编写复杂
平台创新的快速发展使传统 BIOS 的大小和复杂性显著增加,由于受到复杂的 16 位汇编语言代码的影响,这种扩展对硬件开发人员提出了前所未有的要求,仅有少数具有多年相关经验的专家才能进行 BIOS 开发,这对本来就发展缓慢的BIOS来说更是雪上加霜。

顺应时势——UEFI诞生
面对BIOS如此多的缺陷,业界大腕Intel首先按捺不住了。当安腾(Itanium)处理器诞生时,Intel终于有机会重新定义系统固件和操作系统之间的接口了。这一次Intel定义了一个可扩展的标准化固件接口——EFI(Extensibel Fireware Interface,可扩展固件接口)。
EFI在安腾服务器平台上得到了成功的应用,为了将这把“烈火”烧到PC产品线,Intel把EFI交给一个工业联盟管理,这个联盟的成员包括微软、AMD、HP等业界巨头。有了他们的鼎力支持,EFI想不火起来都难!与此同时,EFI的名称也转变为UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口),UEFI组织负责相关技术标准的制定。
登台亮相——UEFI的优点
1.易于实现、容错和纠错特性更强
与BIOS显著不同的是,UEFI是用模块化、C语言风格的参数堆栈传递方式、动态链接的形式构建系统,它比BIOS更易于实现,容错和纠错特性也更强,从而缩短了系统研发的时间。更加重要的是,它运行于32位或64位模式,突破了传统16位代码的寻址能力,达到处理器的最大寻址,此举克服了BIOS代码运行缓慢的弊端。
2.驱动开发简单、兼容性好
与BIOS不同的是,UEFI体系的驱动并不是由直接运行在CPU上的代码组成的,而是用EFI Byte Code(EFI字节代码)编写而成的。对Java有一点了解的朋友,一定知道它的编译代码就是以“Byte Code”形式存在的,正是这种没有一步到位的中间性机制,使Java可以在多种平台上运行。UEFI也借鉴了类似的做法。EFI Byte Code是一组用于UEFI驱动的虚拟机器指令,必须在UEFI驱动运行环境下被解释运行,由此保证了充分的向下兼容性。
一个带有UEFI驱动的扩展设备既可以安装在使用安腾的系统中,也可以安装在支持UEFI的新PC系统中,它的UEFI驱动不必重新编写,这样就无须考虑系统升级后的兼容性问题。基于解释引擎的执行机制,还大大降低了UEFI驱动编写的复杂门槛,所有的PC部件提供商都可以参与。
3.高分辨率的彩色图形环境、支持鼠标操作
UEFI将让枯燥的字符界面成为历史!UEFI内置图形驱动功能,可以提供一个高分辨率的彩色图形环境,用户进入后能用鼠标点击调整配置,一切就像操作Windows系统下的应用软件一样简单。BIOS将不再是高手才能玩转的工具,光这一点就足以让很多菜鸟朋友心仪不已了。
4.强大的可扩展性
我们都知道,当电脑出现故障导致无法进入操作系统时,我们往往要借助其他工具才能解决问题,BIOS在诊断系统故障方面的作用实是在太小了。不过,UEFI将不会重蹈BIOS功能单一的覆辙!强大的可扩展性是UEFI的另一大优点。UEFI将使用模块化设计,它在逻辑上分为硬件控制与OS(操作系统)软件管理两部分,硬件控制为所有UEFI版本所共有,而OS软件管理其实是一个可编程的开放接口。借助这个接口,主板厂商可以实现各种丰富的功能。比如我们熟悉的各种备份及诊断功能可通过UEFI加以实现,主板或固件厂商可以将它们作为自身产品的一大卖点。如果你更习惯让别人来维护机器,UEFI也提供了强大的联网功能,其他用户可以对你的主机进行可靠的远程故障诊断,而这一切并不需要进入操作系统!要知道,如今的BIOS就是添加几个简单的USB设备支持都极其困难,更别说上网浏览网页了。

深入分析<——UEFI的组成架构
UEFI能得到众多厂商的青睐,自然少不了一些“幕后人员”的功劳。目前UEFI主要由这几部分构成:UEFI初始化模块、UEFI驱动执行环境、UEFI驱动程序、兼容性支持模块、UEFI高层应用和GUID 磁盘分区组成。
UEFI初始化模块和驱动执行环境通常被集成在一个只读存储器中,就好比如今的BIOS固化程序一样。UEFI初始化程序在系统开机的时候最先得到执行,它负责最初的CPU、北桥、南桥及存储器的初始化工作,当这部分设备就绪后,紧接着它就载入UEFI驱动执行环境(Driver Execution Environment,简称DXE)。当DXE被载入时,系统就可以加载硬件设备的UEFI驱动程序了。DXE使用了枚举的方式加载各种总线及设备驱动,UEFI驱动程序可以放置于系统的任何位置,只要保证它可以按顺序被正确枚举。借助这一点,我们可以把众多设备的驱动放置在磁盘的UEFI专用分区中,当系统正确加载这个磁盘后,这些驱动就可以被读取并应用了。在这个特性的作用下,即使新设备再多,UEFI也可以轻松地一一支持,由此克服了传统BIOS捉襟见肘的情形。UEFI能支持网络设备并轻松联网,原因就在于此。
值得注意的是,一种突破传统MBR(主引导记录)磁盘分区结构限制的GUID(全局唯一标志符)磁盘分区系统将在UEFI规范中被引入。MBR结构磁盘只允许存在4个主分区,而这种新结构却不受限制,分区类型也改由GUID来表示。在众多的分区类型中,UEFI系统分区用来存放驱动和应用程序。很多朋友或许对这一点感到担心:当UEFI系统分区遭到破坏时怎么办?而容易受病毒侵扰更是UEFI被人诟病的一大致命缺陷。事实上,系统引导所依赖的UEFI驱动通常不会存放在UEFI系统分区中,当该分区的驱动程序遭到破坏,我们可以使用简单方法加以恢复,根本不用担心。
X86处理器能够取得成功,与它良好的兼容性是分不开的。为了让不具备UEFI引导功能的操作系统提供类似于传统BIOS的系统服务,UEFI还特意提供了一个兼容性支持模块,这就保证了UEFI在技术上的良好过渡。

写在最后
丰富的图形界面、可以上网浏览……从这些功能来看,UEFI就像一个活生生的操作系统。Intel在业界的影响力路人皆知,难道它也想染指操作系统?如果是这样,微软还在鼎力支持,岂不是养虎为患?微软当然不会傻到这种程度。事实上,UEFI只是硬件和预启动软件之间的接口规范,它的实力尚不足以对操作系统构成威胁。另外,UEFI驱动程序使用“轮询”方式来检查硬件状态,它的运行效率并不如操作系统直接高效。再者,UEFI只具备简单的存储器管理机制,还不足以适应多任务环境的运行需求。从目前的情形看,UEFI想取代操作系统,至少还有漫长的路要走。
本来,微软计划在第一版Vista系统中支持UEFI技术,但微软开发经理Andrew Ritz今年3月表示,即将上市的Windows Vista将不支持UEFI技术。但从目前情况来看,UEFI取代BIOS在PC系统中的地位只是时间早晚的问题。以微软和Intel为首的IT企业已逐步实施BIOS淘汰计划,苹果新型的Mac计算机就率先采用了UEFI技术。让我们做好迎接UEFI的准备吧!