UEFI统一可扩展固件接口
admin
2024-03-03 14:33:47
0

统一可扩展固件接口(英语:Unified Extensible Firmware Interface,缩写UEFI)是一种个人电脑系统规格,用来定义操作系统与系统固件之间的软件界面,作为BIOS的替代方案。可扩展固件接口负责加电自检(POST)、联系操作系统以及提供连接操作系统与硬件的接口。

UEFI的前身是Intel在1998年开始开发的Intel Boot Initiative,后来被重命名为可扩展固件接口(Extensible Firmware Interface,缩写EFI)。Intel在2005年将其交由统一可扩展固件接口论坛(Unified EFI Forum)来推广与发展,为了凸显这一点,EFI也更名为UEFI(Unified EFI)。UEFI论坛的创始者是11家知名电脑公司,包括Intel、IBM等硬件厂商,软件厂商Microsoft,及BIOS厂商安迈科技、Insyde、Phoenix。

UEFI论坛网址:https://uefi.org/

与BIOS的比较
二者显著的区别就是UEFI是用模块化,C语言风格的参数堆栈传递方式,动态链接的形式构建的系统,较BIOS而言更易于实现,容错和纠错特性更强,缩短了系统研发的时间。它可以执行于x86-64、IA32、ARM等架构上(在个人电脑上通常是x86-64平台),突破传统16位代码的寻址能力,达到处理器的最大寻址。它利用加载UEFI驱动程序的形式,识别及操作硬件,不同于BIOS利用挂载实模式中断的方式增加硬件功能。后者必须将一段类似于驱动程序的16位代码(如RAID卡的Option ROM)放置在固定的0x000C0000至0x000DFFFF之间存储区中,运行这段代码的初始化部分,它将挂载实模式下约定的中断向量向其他程序提供服务。例如,VGA图形及文本输出中断(INT 10h),磁盘访问中断服务(INT 13h)等等。BIOS以实模式执行,因此这段存储器空间很有限(在实模式下仅能寻址最多1MB的存储器),BIOS对于所需放置的驱动程序代码大小超过空间大小的情况无能为力。另外,BIOS的硬件服务程序都以16位代码的形式存在,这就给运行于保护模式或长模式的操作系统访问其服务造成了困难。因此BIOS提供的BIOS中断调用在现实中只能提供给操作系统的启动程序或MS-DOS类操作系统使用。而UEFI系统下的驱动程序可以由EFI Byte Code(EBC)编写而成,EFI Byte Code是一组专用于EFI驱动程序的虚拟机器语言,必须在UEFI驱动程序运行环境(Driver Execution Environment,DXE)下被解释运行。由于UEFI驱动程序开发简单,所有的PC部件提供商都可以参与,情形非常类似于现代操作系统的开发模式,这个开发模式曾使Windows在短短的两三年时间内成为功能强大,性能优越的操作系统。基于UEFI驱动模型(UEFI driver model,UDM)可以使UEFI系统接触到所有的硬件功能,在操作系统执行以前浏览万维网站,实现图形化、多语言的BIOS设置界面,或者无需执行操作系统即可在线更新BIOS等等不再是天方夜谭,甚至实现起来也非常简单。这对基于传统BIOS的系统来说是件难以实现的任务,在BIOS中添加几个简单的USB设备支持都曾使很多BIOS设计师痛苦万分,更何况除了添加对无数网络硬件的支持外,还得凭空构建一个16位模式下的TCP/IP协议栈。

一些人认为BIOS只不过是由于兼容性问题遗留下来的无足轻重的部分,不值得为它花费太大的升级努力。而反对者认为,当BIOS的出现约制了PC技术的发展时,必须有人对它作必要的改变。

与操作系统的关系
UEFI在概念上类似于一个低阶的操作系统,并且具有操控所有硬件资源的能力。不少人感觉它的不断发展将有可能代替现代的操作系统。事实上,EFI的缔造者们在第一版规范出台时就将EFI的能力限制于不足以威胁操作系统的统治地位。首先,它只是硬件和预启动软件间的接口规范;其次,UEFI环境下不提供中断的机制,也就是说每个UEFI驱动程序必须用轮询(polling)的方式来检查硬件状态,并且需要以解释的方式运行,较操作系统下的机械码驱动效率更低;再则,UEFI系统不提供复杂的缓存器保护功能,它只具备简单的缓存器管理机制,具体来说就是指运行在x64或x86处理器的长模式或保护模式下,以最大寻址能力为限把缓存器分为一个平坦的段(Segment),所有的程序都有权限访问任何一段位置,并不提供真实的保护服务。当UEFI所有组件加载完毕时,便会启动操作系统的启动程序,如果UEFI固件内置UEFI Shell,也可以启动UEFI Shell命令提示。UEFI应用程序(UEFI Application)和UEFI驱动程序(UEFI driver)是PE格式的.efi文件,可用C语言编写。在UEFI引导模式下,操作系统的启动程序也是UEFI应用程序,启动程序的EFI文件存储在EFI系统分区(ESP)上。

UEFI固件区分架构,在UEFI引导模式下,通常只能执行特定架构的UEFI操作系统和特定架构的EFI应用程序(EBC程序除外)。比如,采用64位UEFI固件的PC,在UEFI引导模式下只能执行64位操作系统启动程序;而在Legacy引导模式(即BIOS兼容引导模式)下,既可以执行16位的操作系统(如DOS),也可以执行32位操作系统和64位操作系统。

组成
一般认为,UEFI由以下几个部分组成:
Pre-EFI初始化模块(PEI)
UEFI驱动程序执行环境(DXE)
UEFI驱动程序(UEFI driver)
兼容性支持模块(CSM)
UEFI高层应用(UEFI Application)
GUID磁盘分区表
系统管理模式(SMM)

Pre-EFI初始化程序在系统开机的时候最先得到执行,它负责最初的CPU,芯片组及主存的初始化工作,紧接着加载UEFI的驱动程序执行环境(DXE)。当DXE被加载运行时,系统便具有了枚举并加载其他UEFI驱动程序的能力。DXE枚举并加载各种总线(包括PCI、SATA、USB、ISA)及硬件的UEFI驱动程序。例如一个具PCI-E总线接口的RAID存储适配器,其UEFI驱动程序一般会放置在这个设备的Option ROM中。在UEFI规范中,一种突破传统MBR磁盘分区结构限制的GUID磁盘分区系统(GPT)被引入,新结构中,磁盘的主分区数不再受限制(在MBR结构下,只能存在4个主分区),另外UEFI+GPT结合还可以支持2.1 TB以上硬盘。在众多的分区类型中,EFI系统分区可以被UEFI固件访问,可用于存放操作系统的引导程序。UEFI固件通过执行EFI系统分区中的启动程序启动操作系统。CSM是在x86平台UEFI系统中的一个特殊的模块,它将为不具备UEFI引导能力的操作系统以及16位的传统Option ROM提供类似于传统BIOS的系统服务。在加载操作系统后,UEFI的SMM程序继续执行,提供ACPI等服务。

相关内容

热门资讯

Omdia:三季度印度智能手机... 10月22日消息,Omdia最新研究数据显示,2025年第三季度,印度智能手机市场同比增长3%,出货...
全球首个机场出发层 VPD 启... 6月14日消息,全球首个支持机场出发层泊车代驾VPD落地广州白云机场,用户开着传祺向往M8乾崑系列 ...
同力股份:无人驾驶产品目前已完... 新京报贝壳财经讯(记者黄鑫宇)2025年12月26日晚,北交所上市公司陕西同力重工股份有限公司(即“...
新消费周报 | 淘宝闪购开通无... 《CBNData新消费周报》精选本周新消费领域最新动态,公司头条、消费风向、智能创新、营销动态、可持...
穿越波动的稳健之选:优质可转债... 作者:烟雨导语:在当下复杂多变的市场环境中,可转债因其"股债双性"的独特优势,成为投资者平衡风险与收...
6天4板!华联控股拟12.35... Arizaro项目LCE(碳酸锂当量)总资源量概要。 图源:华联控股公告本报记者 李贝贝 上海报道1...
触及重大违法行为,或将被退市!... 本文来源:时代周报 作者:林昀肖12月26日,*ST长药(300391.SZ)公告称,公司因涉嫌定期...
独家揭秘!新股未上市先套现,中... 暗盘交易的本质是一场对赌。“蘅东光每股190元买断”。近日,随着北交所新股蘅东光中签结果出炉,券商中...
科技富豪财富暴增:马斯克身价上... 2025年人工智能投资热潮推动了美国最富有的科技富豪净资产飙升。但随着市场对人工智能泡沫担忧的增长,...
马思唯献唱NBA名人赛 尼克杨... 近日,2025成都聚星名人赛在成都五粮液体育中心举行。现场,四川籍说唱歌手马思唯担任助演嘉宾,倾情现...