基本输入输出系统
基本输入输出系统(BIOS)是一种位于计算机只读存储器(ROM)中的固件,负责计算机启动时的硬件初始化,并在操作系统运行过程中提供运行时服务。因为BIOS存储在ROM中,所以有时也叫“ROM BIOS”。
BIOS的出现可以追溯到1975年。Gary Kldal在Intel 8008的基础上开发的一个管理程序和数据控制程序,就是现代BIOS的雏形。1981年,IBM开发了第一个PROM(可编程只读存储器),称为程序代码的集合BIOS。由于BIOS本身的缺陷,2003年,英特尔推出了EFI(可扩展固件接口)。为了制定统一的标准,2005年,英特尔联合微软、AMD等11家公司制定了统一的EFI标准,即UEFI标准。
BIOS的工作原理包括上电自检、硬件设备初始化和启动boot loader,其核心功能包括硬件检测、系统配置、启动顺序设置和电源管理。随着技术的发展,BIOS的安全性也因固件攻击和兼容性问题受到挑战,逐渐被UEFI取代。
发展历史
背景起源
基本输入输出系统的出现可以追溯到1975年Gary Kldal开发的PL/M操作系统。根据冯·诺依曼原理,计算机可分为五部分,即控制器、运算器、存储器、输入设备和输出设备。如果想让这些部分协调工作,就需要一个操作系统,负责计算机中各种硬件资源的分配和调度。起初,为了操作计算机,通常只有手工操作。程序员首先要把程序和数据对应的穿孔纸带装入输入机;然后启动输入机将程序和数据输入电脑内存,再通过控制台开关启动程序对数据运行;计算结束后,打印机输出计算结果。这种循环效率相当低。
1971年,英特尔开发了第一款微处理器——4004。加里·基尔达尔(Gary kildall)想用这种芯片为他的父亲制作一个导航计算器。但由于Intel4004的指令集不足,1973年,英特尔交出了自己的新产品Intel 8008。kildare花了几个月的时间开发了一种微处理器编程语言——PL/m,通过这种语言,在DEC公司的TOP-10大型机上成功开发出了管理程序和数据的控制程序,并于1974年发布了其第一个版本CP/M1.3(控制程序/微处理器微机)。此后,它也出现在基于英特尔芯片的微型计算机上。直到1975年,他才完成了CP/M的完整应用系统,包括用于复制文件的PIP(外围交换程序)。CP/M的底层是基本输入输出系统——BIOS,由I/O驱动组成,是与硬件的接口。
传统BIOS
在计算机发展的早期,主板BIOS程序是固化在ROM芯片中的,这些BIOS程序是在ROM芯片开发过程中通过厂商特有的方法烧录的,烧录在主板ROM芯片中的BIOS程序不能升级或修改,只能读取。也就是说,如果在烧录到ROM芯片中的BIOS程序中发现了BUG,就只能丢弃。
1981年,IBM在开发第一代个人电脑IBM PC时,工程师们把硬件检测代码,最基本的外围I/O处理程序(如屏幕显示、键盘控制、磁盘控制等)挤到了一起。)和操作系统的主要程序代码存储到32KB PROM(可编程ROM)中。这些程序代码的集合称为BIOS。之后IBM还公开了包括BIOS在内的接口规范,进一步推动了其他厂商对BIOS的开发。
大约在20世纪90年代,Intel与Compaq和Phoenix Technology一起制定了BIOS引导规范和即插即用BIOS规范,这成为业界事实上的标准。
EFI和UEFI
1998年,英特尔推出了专为IA-64处理器设计的英特尔启动计划(Intel Boot Initiative project),后来更名为EFI(可扩展固件接口)。
1999年4月26日,CIH病毒大规模爆发,全球6000多万台电脑瘫痪。当时,中国只有146万台联网计算机。当这种病毒爆发时,它会调用CPU的最高权限,试图将垃圾信息写入硬盘和BIOS。一旦成功,BIOS将完全不起作用,只能更换BIOS芯片或主板。这也促进了BIOS的升级。
2003年,电喷正式登上舞台。同年,为了竞争,凤凰科技和微软在10月宣布推出新一代BIOS,并将其命名为核心系统软件(CSS)。2005年,英特尔联合微软、AMD等11家公司成立了统一EFI论坛,负责制定统一的EFI标准,即UEFI标准。UEFI标准逐渐成为整个行业事实上的BIOS标准。AMI、Insvde、百教等BIOS厂商都基于UEFI打造了自己的产品。
2006年,Byosoft成立,2008年从Intel获得中国BIOS独家技术授权,从而可以获得除开源内核以外的其他闭源芯片的初始化代码。从而成为全球第四,中国第一家也是唯一一家独立的BIOS供应商。
2007年左右,PC操作系统逐渐支持UEFI。微软推出了64位X86版本的Windows Vista Service Pack 1系统,支持UEFI启动。2011年,英特尔推出Sandy Bridge处理器,PC硬件开始向UEFI转移。2020年5月,由中国电子技术标准化研究院和华为技术有限公司牵头的《服务器BIOS通用技术规范》(CESA-2020-2-012)获批立项。2022年5月,微星发布了新的BIOS 300系列主板,支持Zen3处理器,改善了启用fTPM的间歇性性能卡顿问题。
工作原理
通电自检:开机自检(POST)是BIOS开机后启动的第一个程序。电脑开机时,BIOS会先进行自检,检查硬件设备是否正常。
岗位自检分为两部分:POST首先检查计算机系统的关键部件(CPU、显卡、BIOS可以访问的初始64KB内存区域)是否存在,能否正常工作。因为这个过程是在系统BIOS初始化显卡之前,所以如果在检测中发现故障和错误(都被认为是致命错误)并且无法通过显示设备显示出来,系统BIOS就要通过声音报警来表示。经过检查,如果CPU、显卡、第一个64KB内存块都正常,系统可以正常启动。
执行启动自检。首先初始化显卡,屏幕上显示自检画面。
初始化硬件设备:自检完成后,BIOS会根据预设的配置信息初始化硬件设备。它会初始化动态内存(DRAM)、主板芯片组、显卡以及相关外设寄存器,检查是否能正常工作。所谓初始化设置,就是根据芯片组的技术文档做一些寄存器填充和复位,使主板/芯片组的内存和I/O功能能够正常工作。
引导加载程序启动:完成以上操作后,它会为操作系统创建一些参数,比如ACPI表,选择引导设备,从设备加载bootlloader,然后启动操作系统。当设备通过测试后,搜索引导驱动程序(如硬盘、光驱、网络服务器等。)根据BIOS中设置的引导顺序,获取第一个引导设备的代码,读取第一个引导设备的主引导记录(MBR)中引导加载程序的引导信息,从MBR加载引导管理器(GRUB)并运行引导管理。
BIOS功能
硬件检测:BIOS的硬件检测包括自检、硬件识别和硬件监控。
自检:内存测试通过后,BIOS会开始检测系统中安装的一些标准硬件设备,如硬盘、CDROM、通讯口等设备。在此过程中,大多数较新的BIOS版本还会主动检测和设置定时参数、硬盘参数和内存访问模式。
硬件识别:检测到标准设备后,BIOS开始检测并配置系统中安装的即插即用设备。每个设备找到后,BIOS会在屏幕上显示设备的名称和型号,并为设备分配中断、DMA通道、IO口等资源。
硬件监控:通过BIOS可以监控主板、CPU和电源的温度,还可以设置稳压器的电压输出电平和每个风扇的转速。当启动过程中发现上述监控功能异常时,系统会提示并暂停运行。
系统配置:通过BIOS,可以设置参数,优化系统。
参数设置:新电脑必须设置BIOS参数,提高整个电脑系统的配置。即使是具有PnP(即插即用设备)功能的系统,也只能识别部分电脑外设,当前日期、时钟等基本信息必须由用户自己设置。
系统优化:系统本身的BIOS设置参数对系统来说并不是最优的,比如内存读写的等待时间,硬盘的数据传输方式。需要多次实验才能达到最佳的性能组合。另外,内部/外部缓存的使用、节能保护、电源管理甚至启动顺序都对电脑的性能有一定的影响,这些也必须通过BIOS来设置。
开始管理:在启动时,BIOS可以提示启动顺序和启动过程中出现的错误。
引导顺序:BIOS系统根据系统CMOS设置中的引导顺序,搜索硬盘、光驱、网络服务器等有效的引导驱动程序,读入操作系统引导程序,然后将系统控制权交给引导程序。操作系统从引导程序的执行开始逐步完成操作系统内核的加载和初始化,完成系统的启动。
错误提示:启动失败时,BIOS会发出提示音,根据提示音的不同可以判断故障。之后,当启动时的语音提示信息完成后,屏幕上会出现文字提示信息。文本中显示的错误信息属于非关键性错误,暂时不会对硬件系统造成损害,但如果不排除,系统将无法正常启动。
电源管理:APM(Advanced Configuration and Power Interface)是一种基于BIOS的系统电源管理方案,可以通过BIOS序列码为CPU和设备提供电源管理,通过设备的超时设置决定何时将设备切换到低能耗状态。大多数操作系统都提供了支持APM的节能模式。
在电源管理中,一般有四种模式:全开模式、待机模式、挂起模式和打盹模式。
设置扩展
BIOS扩展和更新:BIOS的扩展和更新包括BIOS中的新设备、网络启动(PXE)、RAID功能和自更新。BIOS扩展:许多新添加或更新的设备可能无法被计算机识别,因此必须通过BIOS设置通知它。此外,新设备和原设备之间的IRQ和DMA冲突通常通过BIOS设置来消除。
网络引导(PXE): PXE是一种广泛应用于远程唤醒领域的技术。PXE(pre boot execution environment)是Intel公司推出的网络协议,可用于无盘和无盘联网。它可以使计算机通过网络启动,协议分为客户端和服务器端。PXE客户端在网卡的ROM中。当计算机启动时,BIOS将PXE客户端调入内存执行,并显示命令菜单。用户选择后,PXE客户端通过网络将放置在远端的操作系统下载到本地操作。使用PXE功能首先需要客户端网卡的支持,其次服务器端必须有支持该协议的网管软件。
RAID功能:硬件RAID是RAID(独立磁盘冗余阵列)的一种形式,在主板或独立的RAID卡上完成处理。独立的RAID控制器配备了自己的CPU和高速缓存。因此,硬件RAID设备充当微型独立计算机,有助于保持性能,但与仅基于软件设置RAID阵列相比,它们是更昂贵的选择。这些控制器安装在服务器中,并在操作系统启动前通过BIOS或可选ROM(识别卡并对其进行初始化的固件)进行配置。
升级BIOS:升级BIOS的作用是增加主板对新硬件的支持和识别能力,更好的解决硬件之间的兼容性,提高BIOS的调整功能。然而,升级BIOS是危险的。如果没有必要,尽量不要升级BIOS。首先要确认主板的BIOS是否可以升级,然后根据不同BIOS厂商确定的BIOS类型,获取相应的BIOS升级程序。
操作系统支持:BIOS可以调节操作系统的启动和加载过程。引导过程和操作系统加载:完成开机自检和设备配置后,BIOS开始引导过程。BIOS尝试按照配置的优先级顺序从第一个设备启动。如果有一个有效的设备,固件将从MBR引导扇区读取一个名为boot loader的简短可执行代码,并给予它控制权。此时,BIOS固件已经被执行,并且在系统操作期间不再是活动的。引导加载程序初始化加载并启动操作系统。
高级配置选项:BIOS的高级配置包括CPU超频设置、内存时序配置、软件抽象和兼容性。CPU超频设置:一般主板都会让用户设置CPU的外接频率。当设置超过标准外部频率时,就是超频。在BIOS中,您可以通过更改电压和频率等设置来手动超频CPU。主要步骤是通过BIOS界面进入CPU时钟选项,选择更高的外部频率。
内存时序配置:在计算机中,内存等重要设备的参数对系统的运行效率和稳定性影响很大。为了达到最佳的工作状态,BIOS可以反复调整内存时序等选项,在保证稳定性的前提下尽可能提高效率。
硬件抽象和兼容性:硬件抽象接口位于设备驱动程序和计算机硬件之间。BIOS隐藏了计算机最低总线接口、内存空间等硬件细节。BIOS为操作系统内核提供了硬件抽象接口,便于操作系统移植到不同的计算机上。
硬件组成
非易失性存储器:非易失性存储器是一种断电后仍能长时间保存数据的电子设备。与易失性存储器相比,非易失性存储器具有成本相对较低、存储容量大的特点,但其写入速度普遍较慢,在写入时也有先天的局限性。经过一定次数的写操作后,存储器会达到自己的容忍极限而失效。
互补型金属氧化物半导体:互补金属氧化物半导体(CMOS)是指主板上的一个读写RAM芯片,用来保存当前系统的硬件配置和用户对一些参数的设置。当系统通电并启动时,应读取CMOS信息以初始化机器各部分的状态。它由系统电源或备用电池供电,断电信息不会丢失。CMOS RAM是存储系统参数的地方,BIOS中的系统设置程序是完成参数设置的手段。所以准确的说法应该是通过BIOS设置程序来设置CMOS参数。
跳线和DIP开关:跳线和DIP开关是用于连接或断开网络适配器卡或其它设备上的电路的两种物理方法。跳线主要用于设置硬件的工作状态,如CPU的核心(内核)电压、外部频率和倍频、主板的资源分配、启用或禁用部分主板功能等。跳线给了主板更加灵活的设置方式,让用户可以轻松设置主板上各个元件的工作模式。但随着技术的发展,目前采用无跳线技术,主板上除了一个清除BIOS设置参数的跳线外,没有任何跳线。只要插上CPU,就能自动识别和设定频率和工作电压。也可以通过BIOS设置参数改变主频、工作频率和电压,不需要使用专门的硬件跳线。DIP开关(双列直插式封装)与普通跳线相同,只是小跳线做成开关。DIP开关是一排块式或滑块式开关,开关很小,需要用油笔尖或镊子拨动。使用DIP开关,可以更直观、更容易地设置硬件的工作状态。新电脑的系统配置是通过设置程序设置的,DIP开关很少使用。
BIOS固件芯片:芯片组是主板的核心部件,几乎决定了主板的功能,它会影响整个计算机系统的性能。BIOS固化在电脑主板上的一块ROM芯片上,存储着电脑中最重要的基本输入/输出程序、系统设置信息、开机后自检程序和系统自启动程序。