深入了解BIOS
BIOS(Basic Input / Output System)——基本输入输出系统,通常是固化在只读存储器(ROM)中,所以又称为ROM-BIOS。它直接对计算机系统中的输入输出设备进行设备级、硬件级的控制,是连接软件程序和硬件设备之间的枢纽。ROM-BIOS是计算机系统中用来提供最低级、最直接的硬件控制的程序。计算机技术发展到今天,出现了各种各样新技术,许多技术的软件部分是借助于BIOS来管理实现的。如PnP技术(Plug and Play—即插即用技术),就是在BIOS中加上PnP模块实现的。又如热插拔技术,也是由系统BIOS将热插拔信息传送给BIOS中的配置管理程序,并由该程序进行重新配置(如:中断、DMA通道等分配)。事实上热插拔技术也属于PnP技术。
#1 二、BIOS的工作原理
讲到BIOS的工作原理,我们先来介绍一下BIOS系统的两类载体:EPROM和EEPROM的相关知识。EPROM——可擦除可编程只读存储器,从外观上可以看见,在芯片的中央有一个透明的小窗口,紫外线光即是通过这个小窗口将芯片上保存的信息擦除掉的,因为在日光和荧光中都含有紫外线,因此,我们通常用一块不透明的标签将已保存了信息的EPROM芯片的紫外线窗口封住。当然,写入EPROM芯片时,我们首先必须先用紫外线擦除器将EPROM中的信息清除掉,使它变为空的芯片后才能进行写操作,应该说明的是这里“空芯片”的“空”并非我们通常意义上的“空白”,而是此时芯片内部变为全“1”信息,因此,芯片的写入原理实际上是将指定位置上的“1”改为“0”。到这里,有的朋友一定想问:既然日光和荧光均含有紫外线,为什么我们不让EPROM芯片在这些光线下暴露一段时间来擦除呢?要知道,完全擦除一块EPROM中的内容,在日光下至少要一周,在室内荧光下至少要三年了!而且随着芯片容量的增大,时间也得相应拉长。EEPROM是电可擦除可编程只读存储器。在平常情况下,EEPROM与EPROM一样是只读的,需要写入时,在指定的引脚加上一个高电压即可写入或擦除,而且其擦除的速度极快!通常EEPROM芯片又分为串行EEPROM和并行EEPROM两种,串行EEPROM在读写时数据的输入/输出是通过2线、3线、4线或SPI总线等接口方式进行的,而并行EEPROM的数据输入/输出则是通过并行总线进行的。另外还有一种EEPROM即是我们现在主板上常见到的FLASH ROM——闪速存储器,其读写速度更快,更可靠,而且可以用单电压进行读写和编程,为便携式设备的在线操作提供了极大的便利,也因此广泛应用在计算机主板上。
通常,486以及486档次以下电脑的BIOS芯片基本上均是EPROM芯片,而586以及PⅡ、PⅢ档次的BIOS芯片基本上均是EEPROM。另外我们也可以从BIOS芯片上的型号来识别:像27C010、27C512等以“27”打头的芯片均是EPROM,而28C010、29C010、29C020、29C040等,均为EEPROM,其中28C010是128K×8,即1M比特并行EEPROM,29C010是128K×8(1M比特)、29C020是256K×8(2M比特)、29C040是512K×8(4M比特)的FLASH ROM。串行EEPROM在计算机主板上较少见,而提供这些芯片的厂家多为MX、WINBOND、ATMEL等厂家。应注意的是:不同厂家生产的芯片命名方式不同。以上介绍的芯片是以ATMEL公司的产品为例。
下面我们以当前最常见的AT29C020为例,介绍一下BIOS的工作原理和程序的烧录过程。(^25030501a^)
AT29C020是ATMEL公司生产的256K×8的FLASH ROM芯片,采用单5V供电,由于AT29C020的容量为256K×8,所以需要18根地址线来寻址,也即图中A0~A17,而其输出是8位并行输出,需要8位双向数据线,即图中D0~D7,另外图中还有几个用于控制芯片工作状态的引脚。“^25030501b^”引脚是控制芯片写入的使能端,“^25030501c^”引脚是控制芯片输出数据的使能端,这两个引脚控制芯片在选中后的工作状态,“^25030501c^”引脚为芯片的片选端。当处理器需要对该芯片进行读写操作时,首先必须选中该芯片,即在“^25030501d^”端送出低电平,然后,再根据是读指令还是写指令,而将相应的“^25030501c^”引脚或“^25030501b^”引脚拉至低电平,同时处理器要通过A0~A17地址线送出待读取或写入芯片指定的存储单元的地址,AT29C020芯片就将该存储单元中的数据读出到数据线D0~D7上或者将数据线D0~D7上的数据写入到指定的存储单元中,从而就完成了一次读或写操作。
当上电后,计算机即从BIOS芯片中读取出指令代码进行系统硬件的自检(含BIOS程序完整性检验、RAM可读写性检验、进行CPU、DMA控制器等部件测试)。对PnP设备进行检测和确认,然后依次从各个PnP部件上读出相应部件正常工作所需的系统资源数据等配置信息。BIOS中的PnP模块试图建立不冲突的资源分配表,使得所有的部件都能正常地工作。配置完成之后,系统要将所有的配置数据即ESCD——Extended System Config Data写入BIOS中,这就是为什么我们在开机时看到主机启动进入Windows前出现一系列检测:配置内存、硬盘、光驱、声卡等,而后出现的“UPDATE ESCD..SUCCESSED”等提示信息。所有这些检测完成后,BIOS将系统控制权移交给系统的引导模块,由它完成操作系统的装入。
#1 三、计算机主板中的BIOS技术
第一代BIOS技术通常见于586以及现在的大部分440LX、440BX、i810等芯片组的主板上,这些主板通常只有一块BIOS芯片,而且基本上均采用EEPROM芯片,因此在给予电脑爱好者提供便利的BIOS升级、提升主板性能、充分发挥主板潜力的大好机遇的同时,也给CIH之类的病毒造成了可乘之机。病毒通过程序指令给BIOS芯片加上编程电压,然后向BIOS芯片写入一大堆乱码,从而达到破坏主机引导、瘫痪系统之目的。1999年的4月26日,想必许多人至今还刻骨铭心。于是厂家集思广益迅速推出了第二代双BIOS技术,以技嘉科技推出的DUALBIOS技术最早也最为出名,其原理是在计算机主板上安排了两个BIOS芯片,一块为Master BIOS,另一块为Slave BIOS。两块BIOS中的内容完全一样,Slave BIOS只是提供简单的备份功能,每次系统启动,Slave BIOS就会主动检查Master BIOS的完整性,若发现主BIOS内容有损坏,立即用备份BIOS重写主BIOS,一旦重写失败,则直接从备份BIOS启动。微星公司的SAFEBIOS技术原理也一样,但其配备了一片容量为普通BIOS芯片容量两倍的4MB Flash ROM作为BIOS芯片,平均划分为两个独立的区域,并且这两个区域的BIOS均可启动系统。近来一些厂家又提出了更为先进实用的双BIOS技术,像承启科技提出TWIN BIOS技术,其与DUAL BIOS技术所不同的是,TWIN BIOS技术中两块BIOS可以按完全不同配置进行配置,两块BIOS芯片地位完全对等,无主从之分,可以在开机时通过键盘按键选择从哪一块BIOS芯片上启动,这样大大地提高了另一片BIOS芯片的利用率,又能在一台电脑上实现按不同系统环境进行不同系统配置的要求。如可实现中文Windows与英文/日文Windows共存等,而不需用System Conmand等软件来实现复杂的多重启动来引导,从而使双BIOS技术从单一的系统安全保护作用跃升为兼备独立配置系统硬件设备的强大功能。随着科技的发展,可以预见不久的将来BIOS芯片的容量将会越来越大,提供给我们设置和监视系统的功能也将越来越大,当然也会越来越方便。