

|
告别BIOS,EFI时代来临 如果你并非一位专业技术人员,要独立完成主板BIOS的详细设定是一个非常困难的任务。事实上,绝大多数用户都对BIOS望而生畏,复杂的设定项目、不友好的字符界面以及密密麻麻的硬件参数,令人不知从何下手。而且设定BIOS还会有一定的危险性,倘若你把CPU或内存的频率设得过高,系统就很可能无法开机。这些情况对专业人士而言根本不是什么问题,但多数PC用户并不掌握相关的专业知识,调校BIOS对他们来说的确太困难了。BIOS的功能仅限于对计算机硬件的基础设定,而无法提供诸如系统恢复、远程管理、磁盘修复工具之类的附加功能。以英特尔为首的PC业界很早就意识到BIOS存在的弊端,在英特尔的主导下,名为“EFI(Extensible Firmware Interface,可扩展固件接口)”的下一代BIOS技术早在1999年底就开始启动,EFI以人性化的图形界面代替文本界面,对硬件的管理也更加科学,同时拥有灵活的可扩展性,允许设备厂商增加各类附加功能,大大提高了整机的可管理性。2004年,EFI开发成功,不过英特尔初期只是将EFI用于Itanium服务器平台。PC厂商、主板厂商和BIOS开发商虽然对EFI很感兴趣,但受限于Windows操作系统,EFI一直都无法进入PC产品中,导致其一度沉寂。最终扮演领衔者角色的却是苹果公司,苹果在1月份推出Macbook pro率先采用EFI技术。PC方面,微软Windows Vista的未来版本也将对EFI提供支持,EFI有望在未来三年内取代BIOS成为主导性的固件接口。 EFI开发的必要性 BIOS是操作系统与底层硬件的衔接桥梁,它的全称是“Basic Input Output System(基本输入输出系统)”,BIOS的主要功能是开机时管理各个硬件系统,并为后续操作系统的引导提供必要的信息。简单点说,当用户按下电源按钮,计算机“滴”的一声启动时,BIOS就开始处于工作状态。如果是初次开机,用户需要进入BIOS对硬件进行设定,例如CPU的工作频率、前端总线频率,内存的速度、延时,各个设备的启动顺序等等,保存退出之后,BIOS就会严格依照这些设定进入下一步的运行。BIOS将各硬件的具体参数传送给指定硬件的Firmware(固件),这些硬件便会严格依照这些性能参数工作。如果这一步没有问题,那么BIOS就会发出读取硬盘、启动操作系统的命令,接下来操作系统的核心数据便会被载入到内存,这项工作要花费不短的一段时间,此时我们在屏幕上看到的就是系统启动的进度条。当操作系统开始启动后,BIOS就自动释放,系统的管理权转交给操作系统,此后BIOS的职能就转为软件与硬件的衔接桥梁,任何与硬件操作相关的软件指令都必须依赖BIOS方可完成。 BIOS在设计时并没有预备任何安全措施,如果我们把CPU或内存的性能参数调得太高,达到远超出CPU和内存硬件所能承受的限度,系统仍然会要求CPU和内存工作在这个速度上,出现的后果就是计算机无法开机或者死机。一旦遇到这类情况,用户可以利用主板BIOS的跳线将这些设定清空,使之恢复到默认的状态,但这项工作非常繁琐且要求用户有一定的经验,普通用户很难完成。由于BIOS一直都缺乏预防此类危机的手段,一些主板厂商被迫自行发展自动恢复技术,如果BIOS参数设定不当导致无法开机,系统会在十几秒后自动重启,并将BIOS恢复回默认状态。 尽管BIOS很好地满足了计算机的基本需求,但在今天它已经相当落伍了。作为DOS时代的产物,BIOS并没有为未来PC的发展做好准备,所有的BIOS都工作在16位的“实模式(Real Mode)”状态下,而实模式是英特尔公司在1978年8086 PC平台的产物。即便你拥有一部64位双核心的顶极PC,在开机时系统都只能工作在16位模式下,可管理到的最大内存为1MB,而系统启动时各类扩展卡以及整合设备(如网络控制器、音频控制器)都必须被BIOS访问,但它们的ROM(Read Only Memory)容量也都被限制在128KB。显然,如此寒酸的硬件支持让BIOS除了老老实实为启动操作系统作准备外什么都干不了。 采用汇编语言编写是BIOS的另一个缺陷。作为低级语言,汇编语言具有与底层硬件紧密结合、程序速度快以及代码简练的优势。在PC刚刚开始出现的上个世纪八十年代,汇编语言可以说是编写BIOS程序的最佳选择。但事过境迁,为BIOS增加新功能是业界的共识,但BIOS所采用的汇编语言相当复杂,程序编写的难度极大,如果要增加新功能,用汇编语言来编写简直就是一个灾难。再者,新功能的引入会让BIOS汇编程序变得很复杂,调试成为一个难题,将出现Bug频频的糟糕情况。如果你对主板BIOS升级有所了解,一定会明白我们所指的是什么意思。BIOS通常都有这样那样的毛病,主板厂商通过更新BIOS程序版本来解决问题,但这个新BIOS可能又带来了新的Bug。显然,如果作为下一代BIOS技术的EFI要彻底克服这个缺陷,就必须采用功能更强大且易于调试的高级语言来编写。 |