BIOS与UEFI

BIOS和UEFI这两个概念对于刚接触计算机硬件的朋友来说可能有些难以区分,最近正好有空,就稍微整理了一下有关知识和大家分享交流一下,如文中有任何错误不足,还望不吝赐教。

1、BIOS

▲图为经典BIOS操作界面

1.1 简介

BIOS,读作/‘baious/,全称Basic Input Outpout System(基本输入输出系统),本质上是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。BIOS和手机的Bootloader有些相似,实际上,不止是电脑和手机,基本所有电子产品都有与BIOS/Bootloader功能相似的部分,它们往往体积很小(最大的也才几MB),功能看似简单但是非常重要。

存储上,在主板中有着专门的芯片(BIOS芯片/CMOS RAM)用于存储BIOS,因此它并不存储在内存或者硬盘中,稳定性和可靠性有较好的保证。

1.2 BIOS的存储介质

早期的BIOS是存储在ROM(Read-Only-Memory,只读存储器)芯片中,在主板出厂前,需要通过特殊的手段将BIOS烧录进BIOS芯片中。而且由于ROM的只读特性,一方面保证了BIOS不会受到轻易更改而保证硬件的正常稳定运行,另一方面也限制了BIOS的升级(ROM不能被写入数据)。

不能被升级的BIOS显然不能迎合科技发展的需要,于是EPROM芯片开始替代ROM成为BIOS的存储芯片。

EPROM全程是Erasable Programmable ROM,名为可擦除可编程ROM,这种芯片可重复擦除和写入,解决了ROM芯片只能写入一次的弊端。EPROM内资料的写入要用专用的编程器,并且往芯片中写内容时必须要加一定的编程电压,写入资料后,还要以不透光的贴纸或胶布把窗口封住,以免受到周围的紫外线照射而使资料受损。

尽管EPROM可以重复擦除和写入,但是操作方式和条件都过于苛刻,后来就使用了EEPROM芯片。EEPROM(Electrically Erasable Programmable ROM,电可擦除可编程ROM)。通过跳线开关和系统配带的驱动程序盘,可以对EEPROM进行重写,方便地实现BIOS升级。

到了现在,我们可以用软件轻易地升级BIOS,是因为现在的BIOS大多是使用了NOR Flash。NOR Flash 的特点是芯片内执行(XIP ,eXecute In Place),这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。

NOR 的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响到它的性能。尽管如此,对于BIOS来说,小容量足以满足需求,而BIOS的升级并非常事,偶尔一次升级,由写入擦除速度慢导致的升级时间延长也没有太大的影响。

1.3 BIOS里面有什么

一般来说,人们普遍认为BIOS是沟通软件与硬件的桥梁。讲完存储介质,我们再来了解一下这个存储芯片(BIOS芯片)里面都储存着什么东西。

●自诊断程序:通过读取CMOSRAM中的内容识别硬件配置,并对其进行自检和初始化;

这就是电脑开机最开始的自检步骤,一般出现错误主板会报警,发出响声,一般可以根据响声的长短和数量来判断出现问题的部分,当然也有一些主板在上面加了一块小型的LED显示屏,通过上面的数字来直接反馈错误信息。

● CMOS设置程序:这个部分就是大家通常见到的BIOS(蓝色背景界面), 引导过程中,用特殊热键启动(一般是Del、esc、F9、F12等),进行设置后,存入CMOS RAM中;

大多数的电脑停留在这个部分的时间并不长,因此想要进入BIOS的CMOS设置程序,需要在一开机就不停地按对应的特殊热键,错过了这个时间段就只能重启再来。

● 系统自举装载程序:在自检成功后将磁盘相对0道0扇区上的引导程序(即MBR分区表)装入内存,让其运行以装入操作系统。

● 主要I/O设备的驱动程序和中断服务:由于BIOS直接和系统硬件资源打交道,因此总是针对某一类型的硬件系统,而各种硬件系统又各有不同,所以存在各种不同种类的BIOS,随着硬件技术的发展,同一种BIOS也先后出现了不同的版本。

2、UEFI

2.1 简介

由于BIOS是使用汇编语言进行编写,因此在操作界面上相对比较简陋(没有做出太多的图形化界面),对于技术人员来说维护升级也比较麻烦,不可能使用鼠标操作,更加别说截图之类的功能了。

更致命的是,BIOS已经存在了二十多年,可是其发展却是极度缓慢,已经阻碍到了与其相关的硬件的发展,首当其冲的就是CPU。至此,个人PC行业消费市场的龙头老大英特尔坐不住了,由它主导,开始推广一种名为EFI的技术,旨在用其取代传统的BIOS。

小七注:在x86系列处理器进入32位的时代,由于兼容性的原因,新的处理器(i80386)保留了16位的运行方式(实模式),此后多次处理器的升级换代都保留了这种运行方式。甚至在含64位扩展技术的至强系列处理器中,处理器加电启动时仍然会切换到16位的实模式下运行。英特尔将这种情况归咎于BIOS技术的发展缓慢。自从PC兼容机厂商通过净室的方式复制出第一套BIOS源程序,BIOS就以16位汇编代码,寄存器参数调用方式,静态链接,以及1MB以下内存固定编址的形式存在了十几年。虽然由于各大BIOS厂商的努力,有许多新元素添加到产品中,如PnP BIOS,ACPI,传统USB设备支持等等,但BIOS的根本性质没有得到任何改变。这迫使英特尔在开发更新的处理器时,都必须考虑加进使效能大大降低的兼容模式。有人曾打了一个比喻:这就像保时捷新一代的全自动档跑车被人生套上去一个蹩脚的挂档器。
——摘自百度百科

EFI(Extensible Firmware Interface)的中文名一般叫做可扩展固件接口,是一种由英特尔主导的用于替代BIOS的方案。有人称EFI是“未来的类PC的电脑系统中替代BIOS的升级方案”,但实际上,这种说法有一些不太严谨,因为EFI已经被弃用,如今使用的是基于EFI标准1.10版本发展而来的UEFI标准。

如今UEFI早已经普及开来,近些年发售的主板(包括笔记本)基本都支持UEFI和BIOS两种解决方案,前者一般被称为UEFI,后者则称为Legacy。

那么为什么EFI的前面会多了一个U,变成UEFI了呢?实际上,EFI可以被理解为是在BIOS和UEFI过渡时期的产物。

当传统的BIOS(Legacy BIOS)阻碍了计算机硬件发展的时候,英特尔主导推行EFI标准,但是其他企业自然不会那么傻,让英特尔一人主导了整个EFI标准,正所谓“一流企业卖标准”,由Intel, AMD, American Megatrends, Apple, Dell, Hewlett Packard Enterprise, HP,IBM, Insyde Software, Lenovo, Microsoft 和Phoenix Technologies这12家计算机软硬件和零售的巨头在2005年联合成立了一个名为Unified Extensible Firmware Interface Forum(简称Uefi Forum)的非营利性组织,专门负责制定和管理新一代的EFI标准,随后就基于最后一版的EFI标准(1.10)发布了全新的UEFI标准,EFI也就“变”成了UEFI(全称“统一的可扩展固件接口”,Unified Extensible Firmware Interface)。

▲图为UEFI协会的Logo

2.2 UEFI的优势

那么相对于传统的BIOS,UEFI的优势在哪里呢?

首先,与使用汇编语言编写的传统BIOS不同,UEFI使用C语言编写,因此整体风格上也就延续了C语言风格的参数堆栈传递和动态链接,模块化特征显著。使用C语言开发和维护对于技术人员来说也方便了很多,更容易实现更强的健壮性和容错性。

UEFI内置图形驱动功能,可以提供一个高分辨率的图形化界面,用户进入后完全可以像在Windows系统下那样使用鼠标进行设置和调整,操作上更为简单快捷。同时由于UEFI在逻辑上可分为硬件控制与软件管理两部分,前者属于标准化的通用设置,而后者则是可编程的开放接口,因此主板厂商可以借助后者的开放接口在自家产品上实现各种丰富的功能,包括截图、数据备份 、硬件故障诊断、脱离操作系统进行UEFI在线升级等,功能上也要比传统BIOS更多、更强。

小七注:UEFI可以识别FAT/FAT32文件系统格式的U盘,因此可以通过特殊热键将截图存储在U盘中或者是将UEFI的设置导出到U盘中进行备份,还可以将升级文件放入U盘中进行UEFI系统的升级,部分高端的主板甚至可以直接在UEFI环境下联网升级。

2.3 UEFI的组成

▲UEFI在逻辑上可分为软件和硬件两个部分

UEFI在概念上可以分为平台初始化框架和UEFI Image两大部分,细分下来则由初始化模块(Pre EFI,简称PEI)、驱动执行环境(DXE)、驱动程序(UEFI Drivers)、兼容性支持模块(CSM)、UEFI应用(UEFI Applications)和GUID磁盘分区(GPT分区)/ OS Loaders组成。

初始化模块和驱动执行环境是UEFI的运行基础,通常被整合在主板的闪存芯片中,这点与传统BIOS是比较类似的。而这两者也被归属在UEFI的平台初始化框架中。

驱动程序、兼容性支持模块、UEFI应用和GUID磁盘分区则归属于UEFI Image。

▲图为UEFI各部分组件之间的交互逻辑

●初始化模块:开机的时候初始化模块首先得到执行,负责CPU、主板芯片及存储设备的初始化工作。

●驱动执行环境:初始化完成后则载入驱动执行环境,即Driver Execution Environment,简称DXE,DXE是硬件的UEFI驱动程序加载和运行的必要基础环境。

●驱动程序:DXE通过枚举的方式加载各种总线及设备的驱动,而这些驱动程序则可以放置在系统的任意位置,只要确保其可以按顺序被正确枚举即可。硬件的UEFI驱动一般是放置在硬盘的UEFI专用分区中,只需要系统正确加载这个硬盘,对应的驱动就可以正常读取并应用

●兼容性支持模块:兼容性支持模块(CSM)是有点特殊的过渡时期的产物,是为了让不具备UEFI引导功能的操作系统也能在UEFI环境下顺利完成引导开机,这个兼容性支持模块将为UEFI提供类似于传统BIOS的系统服务,以此保证UEFI在技术上能有良好的过渡。

小七注:Windows操作系统在vista之后均已支持UEFI启动,而需要实现UEFI启动,还需要主板支持,且硬盘分区表要是GPT分区表,此三者缺一不可,缺一都要使用CSM才可以正常开机进入操作系统。

●UEFI应用:硬件初始化完,操作系统启动之前的核心应用,比如:启动管理(多硬盘多系统的启动顺序)、BIOS设置、UEFI Shell、诊断程式、调度和供应程式、调试应用、包括CPU的超频,主板散热风扇的转速等等都可以在这里控制。

▲图为UEFI Shell

●GUID磁盘分区/ OS Loaders:GPT分区表作为UEFI标准中不可或缺的重要一环,突破了老旧的MBR分区表最大仅支持2TB硬盘,四个主分区、分区表容易丢失等不足,补足了UEFI启动三要素(主板、硬盘分区表、操作系统)中硬盘分区表这关键的一环。

2.4 UEFI的未来

UEFI有着如此多的好处,不仅收到了广大电脑用户的喜爱,同时也受到了……额……一些居心叵测的人的喜爱。由于UEFI使用C语言编写,在难度上较汇编语言降低了很多,因此容易遭到黑客的破解或者是恶意软件的植入,加上UEFI强大的应用能力(相对BIOS而言),在UEFI搞一个恶意软件什么的不是美滋滋?

尽管如此,UEFI依然是目前的主流趋势。