新闻来源:PCPOP
PC/AT机器出现至今,BIOS已经拥有超过数十年之久的历史,当计算机开启了电源,BIOS便会从快闪存储器中被加载到主存储器,并掌控包含芯片组、存储器子系统以及外围I/O的初始化以及诊断,确保所有的硬件元件都可以达到最低限度的正常工作。然而当硬件随著时间日新月异,却只有BIOS好似被冰封住,技术和界面都停滞在过去吗?

何谓EFI?其实EFI(Extensible Firmware Interface)的概念很简单,就是由模块化的C语言,藉由参数堆叠传递,并以动态连结形式架构的简易型操作系统,其工作责任在于肩负起连结硬件与操作系统的桥梁,理论上来说,其设计难度要远低于由汇编语言所架构而成的传统BIOS。目前的EFI系统可以运作于32位元或64位元模式之下,即便未来的出现了128甚至更高位元的处理器,EFI系统也能很平顺的过渡支持。

本文作者凤凰科技技术长Dr. Gaurav Banga
由于EFI等同于一款简易型的操作系统,为了与硬件沟通,就必须透过驱动程序来对硬件进行识别与操作,这些驱动程序是专门应用于EFI系统下的机器指令,必须透过硬件抽象层来转译执行,其概念非常类似于目前的高阶操作系统,不同的处理器平台(X86、RISC、Itanium)之间只要抽换不同的硬件抽象层,驱动程序便可以沿用,可以大幅简化跨平台应用的开发复杂度。相较之下,传统BIOS基于真实模式之下,必须利用中断模式来增加硬件功能,而这些操作都必须完全针对个别的处理器规范来进行,不同的处理器平台之间,即便芯片组或外围完全相同,依然完全无法互通,且传统BIOS基本上都是运作于16位元模式下,对目前的32位元或64位元操作系统来说,都是极为沉重的存取瓶颈。

微星的EFI的BIOS,支持中文显示
不过或许各位会有疑问,EFI能够做到这么强大的控制功能,那么是否有可能取代传统操作系统的地位,我们只能说,根据应用的不同,有部分产品可能有这样的状况,但是基本上,EFI仅是作为进入操作系统前 的硬件沟通界面,根据功能模块的不同,可能会有网络或其它控制能力,其次,在EFI环境下的硬件效能会受限于硬件抽象层的转译效率,而且EFI对存储器的 控制能力非常有限,不具备保护模式服务。当然,以上的限制有可能在未来被改进,但是就目前来看,EFI在PC平台上依旧处于推广初期,尚无余力将触角过度 延伸。
由BIOS进展至EFI再到UEFI
由于BIOS与硬件的整合性极高,因此过去BIOS也被称为韧体,在大约1990年,BIOS是被储存在唯读存储器中,而无法被更改的,然而随著硬件规格 的更新速度加遽,被写死在唯读存储器中的BIOS明显无法符合个人计算机厂商的需求,为了能够更灵活的进行修改与新增功能,BIOS转而被储存在 EEPROM或快闪存储器中,并沿用至今。然而不论硬件厂商如何对BIOS进行功能的增减,依然无法改变BIOS是个非常老旧且缺乏效率的系统的事实,处理器厂商在开发新产品时,为了维持与过去的兼容性,不得不牺牲效能,或者是增加了产品的复杂度,虽然BIOS是使用汇编语言撰写而成,但是仅能运作于16位元模式的限制,让其效能乏善可陈,更严重限制了现有32位元及64位元处理器的速度表现。Intel身为PC技术潮流的实际领导者,自然也积极的想要改变这样的状况。
Intel所提出的解决方案,便是基于EFI规格下的全新BIOS架构。Intel所发展的EFI称为Tiano,EFI对Intel来说只是一个规格名称。EFI就是让各硬件厂商能够自行撰写BIOS,也就是所谓的EFI driver,然后BIOS提供商只要整合这些驱动程序,便可以架构出完整的EFI系统。甚至终端使用者可以在不更动EFI原始码的前提下,自行加载或卸除驱动模块,算是非常方便与新奇的能力。
EFI这个名词最早出现于2000年,当时Intel针对高阶服务器市场推出的Itanium平台,其韧体便是EFI技术的最早实作应用,当初所推出的Itanium工作站与服务器,便是基于EFI 1.02版,而2002年由HP所推出的Itanium2平台,则是基于EFI 1.10版。Itanium平台与传统X86平台是完全不同的架构,Itanium是个完全的64位元处理器,不支持16位元兼容模式,传统的BIOS无法被沿用到Itanium之上,因此就必需要使用全新的韧体架构来搭配。虽然Itanium处理器本身并不算相当成功,但是其全新的韧体概念,却深深的影响到后世的PC发展与应用。
其后,Intel将EFI 的原始码释放出来,改由业界组成一标准组织来推动EFI规格,这个规格称为UEFI(Unified Extensible Firmware Interface),目前已经进展到2.1版,对许多规格进行了标准化,但设计概念上仍与原始的EFI大致相同。作为推广成员之一,凤凰科技也推出了完 整支持2.0及2.1版UEFI的新版本韧体架构,称为SecureCore。
UEFI与传统BIOS的拉锯战
从这点来看,首先我们要考虑到,当初BIOS的开发其实与当初微软比尔盖兹认为个人计算机存储器只要有640K就已经足够的态度一样,并未考虑到太多未来 的扩充性与硬件发展性,BIOS的16位元真实模式以及DOS的640K限制,成为箝制数十年来计算机发展历程的紧箍咒,处理器为了与操作系统以及硬件的兼容性,不得不把16位元兼容模式加入,虽然640K随著作业系统的保护模式及处理器定址能力加强,已经逐渐成为过去。然而BIOS却彻底成为食之无味,却无法抛弃的包袱。
因此凤凰科技在宣导UEFI架构时,也要面对硬件厂商对过往兼容性的要求,加上诸如华硕、技嘉等板卡厂商都在自家主板上的BIOS进行了许多差异性的设计,导入EFI,也等于叫这些板卡厂商放弃过去对BIOS的投资,且一切都必须从头来过。而在操作系统方面,除了少数几款较新的64位元操作系统原生支持EFI架构,诸如Windows XP X32、Linux等都还是只原生支持传统BIOS

phoenix官方网站页面
由于这些疑虑,虽然市面上已经有相当多传统BIOS的取代方案,但无一能够撼动传统BIOS的江山,凤凰科技虽然是传统BIOS技术的提供与领导者,但是要在PC产业界瞬间达到一呼百诺的效应,仍然是遥不可及的,因此我们先期就从提供双向支持的方式,也就是说,既提供了UEFI的先进架构,能够让最新的操作系统执行于纯粹的UEFI环境下,也可利用切换的方式切换回传统的BIOS架构,借以执行不支持UEFI的操作系统,这也就是我们所倡导的SecureCore架构。当然,这样的方式仅是作为过渡时期应急之用,当消费者逐渐接受UEFI环境,且操作系统都已经革新到可原生支持UEFI,那么就可在主机板上直接内建纯粹的UEFI环境,无须再考虑传统BIOS的支持。
产业界的合作与推广
EFI早在2006年就已经出现在X86硬件环境中,也就是苹果计算机,由于苹果的操作系统OS X具备了原生支持EFI的能力,加上2006年开始采用Intel的处理器作为平台,因此也顺理成章的成为EFI的示范平台,PC平台的情况较为复杂,除了要考虑操作系统的支持性以外,还要顾虑到各大板卡厂商的态度,因此其导入时间点应该会在2008年左右。不过已经有些动作较快的PC厂商,已经导入EFI技术,比如说,大陆长城计算机集团便在今年八月初发布了业界首款基于EFI的商用计算机。而由于包含微软、Intel、AMD及各大独立硬件供应商(IHVs)都已经将UEFI列入支持重点,IT厂商势必也要转移至UEFI,借以维持竞争力。
UEFI在针对处理多方程序码 (multi- party code)时,提供了一致性的界面。UEFI提供可延展、标准化定义的可测试平台,并允许更简易的矽起始化设定(silicon initialization),可降低花在矽验证的时间。这些要素都将加速发展周期并降低产品上市时程。当BIOS程序设计师在面对UEFI环境时,所 必须面对的,不仅仅是程序语言(C语言与汇编语言)的不同,而是整个开发概念的大变革:首先是驱动模式的变更,这点是最复杂的,其次是物件模型的形式,而 由于UEFI具备了更快的速度以及更强大的显示能力,在使用者界面的设计上也与传统BIOS大异其趣。
凤凰科技在与台湾各大板卡厂商已经进行了相当长的一段推广合作期,预计在今年底或明年初便可看到初步成果。产业界也已经具备了完整的教育训练课程,协助台 湾的BIOS程序设计师能够在最短时间内适应UEFI的开发环境,加上标准化的开发工具,不论在整个具有相对简易的程序开发流程,或是最后的除错阶段,都 可以达到极高的效率。