热点科技
标题:
BIOS的定义与解释
[打印本页]
作者:
itpundit
时间:
2007-3-13 12:55
标题:
BIOS的定义与解释
大约二十六年前
(1981)
,当时在信息界被称为蓝色巨人的
IBM
,在规划第一部个人计算机
-IBM PC
时,他们的工程师把将一些开机时的硬件启始
/
检测码
(Initial Code)
,从软盘或硬盘加载操作系统、完成开机程序的前导程序代码,以及一些最基本的周边
I/O
处理的子程序码
(
如屏幕显示、磁盘驱动器驱动、游戏杆控制等等
)
,通通挤入在一颗大约
32KB
大小的
PROM(Programmable ROM)
,可编程化只读存储器
)
。这个程序代码就叫做
BIOS(Basic Input/Output System)
。
BIOS
内部的几个组件包括了两大部分,首先是
BIOS
程序的所在部分
-BIOS ROM
,接着就是纪录
BIOS
设定数据的
BIOS CMOS
部分,最后则是
BIOS
功能的核心软件
-
纪录在
ROM
中的
BIOS
程序。
[
本帖最后由 itpundit 于 2007-3-13 13:04 编辑
]
作者:
itpundit
时间:
2007-3-13 12:57
一、BIOS ROM
所谓的ROM,全名是Read Only Memory,也就是只读存储器,正如其名字一般,一般来说ROM这种IC芯片中所存储的数据,基本上是不能随便更动的,与我们相当熟知的系统内存(RAM,Random Access Memory-随机存取内存)正好相反。ROM这种IC结构的特点,除了数据的不易变动性外,此外就是存取速度较慢。这是由于ROM的成本较低,而且大部分用途定位在稳定的数据储存单位,因此在速度上的需求就不如一般供系统运算运作所使用的RAM来的快。
而由于BIOS内部程序讲究稳定、不常变动、低负载量的特性,因此在个人计算机的设计中,采用ROM只读存储器作为储存BIOS程序的媒介。也正因为BIOS程序储存在这样不易变动的媒介中,因此并不能明显地定义BIOS程序是否属于设备方面的硬件(Hardware),还是属于数据方面的软件(Software),这也就是为甚么我们称BIOS程序为韧体(
Firmware
)的原因。
传统的个人计算机中,由于大部分的设计都是由厂商将整套计算机系统组装完毕,也因此系统的升级或更新不像目前模块化设计一般的方便,这同时也表示,传统个人计算机BIOS程序的内容,基本上也不太可能由于升级等等原因而有所变动,也因此BIOS程序的内容可以储存在最传统的ROM芯片中,而永远不需要更动。如果因为升级的需要等等因素,可再更换另一颗ROM芯片即可,这样的设计在变动性不大的旧时就已经相当的足够。
但是随着个人计算机系统的演进,系统所提供的功能也越来越为繁复,这同时也表示说,使用者对于许多的功能,必须要具备有让使用者自行更动设定的机制,才能够满足现阶段的需要。同时,由于BIOS程序必须负责的作业越来多、与模块化的计算机系统组件设计也使得BIOS程序必须面临更多的挑战,BIOS程序内容由于新功能或是旧的问题而产生了必须更新、更动的状况。如果每次更新、更动BIOS程序的内容时,就必须更换新的BIOS芯片,势必会造成很大的额外负担。这也就表示说,我们需要更有弹性的BIOS程序储存媒介,因应这样的需求,BIOS ROM的储存媒介,开始采用PROM(可编程只读存储器)以及其它延伸的ROM设备。
1. PROM: PROM的全名是Programmable Read Only Memory,中文名称为可编程只读存储器,这是一种可以更改其内容的ROM设备。这类ROM在由工厂制作完毕时,其中还没有任何的数据,一但我们决定了所要储存的内容后,更可以利用特殊的仪器将所需要的内容写入PROM之中。写入数据后,由于其中的内容无法消去,这也就表示并无法更改其内容。使用这类产品作为BIOS程序的储存媒介时,主要的优点在于可以很快的由店家烧录一个新的BIOS ROM以便安装在系统中,而不需要送回工厂来处理。
2. EPROM:比PROM稍微再有弹性一点的产品,也就是接下来介绍的EPROM。EPROM的全名是Erasable Programmable Read Only Memory,中文名称为可消去只读存储器。这类内存可以将其中的数据利用仪器加以消除,再将新的数据写入其中。使用这类产品的优点是,当使用者必须更新BIOS程序的内容时,只消将带往店家利用仪器消除内容再重新写入,而不要额外再花费一个BIOS的成本。不过当然对地这类产品的成本稍微较PROM来的高。
3.
EEPROM
:这是目前BIOS最常用的储存媒介,而使用上的弹性也是这几大类ROM设备中最为方便的。EEPROM的全名是Electrically Erasable Programmable Read Only Memory,这是一种可直接用电力消去内容数据的只读存储器。当使用者必须更新其中的内容时,只需在计算机系统中执行某个更新程序,这时主板便可以利用简单的装置将其中的内容消去,而再写入新的程序内容。使用者甚至不需要到店家修理或进行此类动作,而要在网络上取得BIOS程序的新内容就可以自行更新。
目前大部分的系统所用的BIOS ROM,大多采用最后的EEPROM,虽然成本稍微昂贵,但由于提供了良好的弹性与升级性,对于主板厂商而言确实也是提高服务质量、产品效能等等的优良设计。
而BIOS程序储存在这些ROM之中,所扮演的角色在于系统开机初期,维持整个计算机系统的基本运作,以便由操作系统接手进行更精密的工作。
[
本帖最后由 itpundit 于 2007-3-13 13:03 编辑
]
作者:
itpundit
时间:
2007-3-13 12:57
二、
BIOS CMOS Memory
BIOS
既然处理整个计算机系统在一开机时的初始状态设定等等,那么对于系统的一些基本组态,像是硬盘机种类,系统时间等等,都必须要能够有所了解。但是不同的计算机系统在这些方面的设定可能有所不同,而
BIOS
却又不可能针对不同的计算机系统就设计一套不同的芯片,否则本身的成本因此过分提高。这也就是说,
BIOS
的内部设计必须预留一部份可供使用者调整的设定,这样才能让
BIOS
针对不同系统进行不同的开机初始化设定等等。
如果每次开机时,都必须要求使用者先进行计算机状态的设定,使用计算机将成为繁复且令人生厌的不快经验。这表示我们要想办法将设定的状态储存起来,使用者只在须要更改的状况时,才重新输入或更动设定的内容。可是我们先前曾经提过,
BIOS
程序本身储存在不能任意更动的
ROM
之中,即使是目前最常用的
EEPROM
,也只能利用特定程序来将其中的内容覆写成新版
BIOS
,而无法任意更改。那么这些可随时更改的
BIOS
设定内容,势必无法储存在
BIOS ROM
数据区中。也就是说,
BIOS
必须设计另一个储存区域,方能将这些设定数据放入并随时更改。这也就是我们接下来要介绍的,
BIOS CMOS
区域。
CMOS
也就是
Complementary Metal Oxide Semiconductor
,这种技术广泛的使用在微处理器、芯片组、
DRAM
内存等等。这类线路的设计所消耗的电力相当小,而这里所用的
CMOS Memory
就是利用此种技术完成。这样一来我们只需要主板上放置简单的小型锂电池,就可以将
BIOS
的设定资料储存起来。在
BIOS
中的
CMOS
数据区域通常不大,这样子主板电池可以延续几乎数年的时间。由于一般的印象中
CMOS
技术常用在
BIOS
设定数据的储存,因此一般提到
CMOS
时大多表示
BIOS
中的
CMOS Memory
。
一般
CMOS
的设计中,都会加入侦测错误用的
error-detecting
码。
每次更改设定时,就会重新计算
checksum
值,也就是将整个
CMOS
中其它
Byte
的值累加起来,并将
checksum
值写入
CMOS
中。
每次系统开机时,便会检查目前
CMOS
中储存的资料之
checksum
值是否与先前纪录的相符。这样一来便可确认系统的完整性,避免设定数据被不当的更动而造成系统的错误。一现不相符时,系统便发出
CMOS Checksum Error
的错误讯息。
除了我们这里提到的
CMOS
记忆区域之外,目前较新的
BIOS
,皆支持新型的随插即用
<Plug and Play>
硬件,而这类的
BIOS
必须纪录目前系统中的硬件组态,也就是
Extend System Configuration Data<ESCD>
数据区。这是除了标准
CMOS
记忆区外的另一个重要纪录区。
IBM
在主板上使用一颗编号
MC 146818
的
CMOS
参数记录
/
计时芯片,能储存的数据大小才
64bytes
,而且要扣掉一些固定来记录系统日期
/
时间的字段。
当计算机电源关闭时,这颗
IC
会改由电池供电以维持计算机的设定记录值。由于
CMOS
制作的内存耗电量很低,就算计算机一、两年都不开电源,
CMOS
内存内的记录值也一样完整的保存。
这种芯片起初被称为
RTC/CMOS RAM
,后来被简称为
CMOS
芯片。随着
PC
工业蓬勃发展,也有厂商规划出不同类型的
CMOS
芯片。记得早期主板,
CMOS
芯片旁有像啤酒桶般的电池,而设计往往随着时间一久,电池内部的电解质液体流出,造成主板电路被腐蚀。随也有厂商使用一种整合电池与
CMOS RAM
于一体的芯片,它被设计成
IC
插座的类型,而且体积
(
或者说厚度
)
比较大,这类整合电池的
CMOS
芯片也曾流行一时。
随后主板的线路逐渐整合、简化,这种
RTC/CMOS RAM
硬件架构被保留并整合到像是
Super I/O
芯片
甚至南桥芯片
(South Bridge)
等,内容也不再只有
64bytes(
可能到
128bytes
,甚至更多
)
,而供应电力的电路则拉到芯片外头,另外搭配锂电池来供电,旁边仅保留
CMOS
放电的
Jumper
,供厂商或客户可以清除
CMOS
记录值。
所以今日的主板,除了电池与
CMOS
放电的
Jumper
以外,已经看不到所谓的
CMOS
芯片。对于
BIOS
而言,它依旧存在,但对于主板或客户而言,它已经成为
南桥芯片的一部份
。
[
本帖最后由 itpundit 于 2007-3-13 13:06 编辑
]
作者:
itpundit
时间:
2007-3-13 12:58
三、BIOS程序
BIOS程序就是设备中负责让系统执行各项基本作业的最重要软件单位。要让计算机系统发挥功用,就必须有些程序代码让CPU执行,并藉此协调各项配备进行特定的工作。而在开机之时,由于各项硬件,例如硬盘等等,还没有适当的启动与初始化,这时还不可能由这些磁盘读入任何的程序以供执行,而必须有另外的设备来帮助系统对这些硬件进行初始化动作,才能够进行接下来的动作。而BIOS程序也就是负责提供这些初始化程序的单位。
在程序被CPU执行之前,这些程序代码的内容必须被加载到内存之中<随机存取内存>,但是在随机存取内存中的数据,一但关机就会消失,因此我们必须把这些程料写入某个固定的硬件装置中,而且每次关机也不会消失,这也就是BIOS程序被纪录在ROM<只读存储器>中的原因,除此之外,开机程序通常也不会轻易变动,这样我们更可以明白BIOS程序纪录在ROM之中的原因。
而在设计CPU与BIOS的厂商之间则遵循相同的协议,这个协议的内容是,当开机程序进行时,CPU会到内存中的特定位置寻找开机初始化所需的程序,也就是BIOS程序。
在个人计算机系统中,BIOS程序在内存中的位置是固定的,通常系统中最基本的1 Mega Bytes的最后64KB的区域<由F000h到FFFFh>便用来放置BIOS程序。某些BIOS程序大于64KB,大部分不是我们这里主要讨论的系统BIOS,而是例如显示卡,SCSI卡上的BIOS,这类程序则有其它的方法来加载内存。
当计算机从开机的一瞬间,硬件特性就是设计成CPU从主板的BIOS芯片内取得程序代码,BIOS由内部的程序代码获得控制权并且发挥作用,从CPU内外部的检测设定、启动DRAM、针对芯片组与周边做初值化设定之后,最后驱动软盘或硬盘机,把操作系统(如DOS、Windows、Linux)加载之后,BIOS的开机引导工作就此告一段落,改为从事幕后的支持、协调工作,并帮助操作系统或应用程序,来处理周边装置沟通的细部执行动作。
事实上除了主板上有BIOS之外,另外像是显示卡、SCSI控制卡、磁盘附加卡或高阶网络卡也都有自己的BIOS芯片。设计在主板上、负责整个主板运作的BIOS,一般我们以System BIOS或Mainboard BIOS称呼之。
如果要更清晰的定义何谓BIOS,我们可以从某家BIOS研发厂商的技术训练档中,对于BIOS的叙述,他们是这么说明的:
A Firmware program(一种属于韧体的程序代码),储存在ROM、EPROM或FlashROM内存内,提供最基本的硬件初始化(initialize)、周边控制的必要程序代码。通常由汇编语言(Assembly Language)所写成。
BIOS平时是设定成只读的状态,除了特殊工式或特殊方式之外,任何应用程序都没办法加以修改或抹除。以前的修改方式比较复杂,如果是Mask-ROM或PROM,几乎得重新换一颗空白ROM的芯片,然后烧录进去,到了EPROM时代,可以用紫外线照射其窗口一段时间,重新抹除其内部的所有数据之后,再以EPROM烧录器将BIOS数据烧录进去。
当Windows 95流行之后,由于Plug and Play(PnP)与ACPI、DMI协议的需要,主板需要有一个可以记录周边装置资源的异动情形,却又不会被其它程序破坏的内存区域,FlashROM对于韧体程序代码的更新也比EPROM还要方便,所以到后来,主板BIOS,以至于显示卡、与各周边适配卡储存BIOS的内存芯片,几乎都是Flash ROM的天下。
对主板BIOS而言,它最重要的工作有下列几点:
1.
POST(Power On Self Test,开机自我测试)
一开机时系统将控制权交给BIOS时,它会针对CPU各项寄存器、旗号等先检查是否运作正常,接下来会检查像是8254 timer(可编程化周边计时芯片)、8259A(可编程化中断器)、8237DMA controller(DMA控制器)的状态。
2.
Initial
–针对动态内存(DRAM)、主板芯片组、显示卡以及相关周边的寄存器(register)做初始化(Initialize)的动作,并检测是否能够正常工作。
所谓初始化的动作就是依照该芯片组的技术文件规定,作一些寄存器填值、改位或旗号的动作,使得主板/芯片组的内存、I/O功能得以正常运作。
3. 记录系统的设定值,并且储存在非挥发性内存(Non-Volatile RAM,像是CMOS或Flash Memory(的ESCD区域)。
4. 将常驻程序库常驻于某一段内存,提供操作系统或应用程序呼叫。像是Int 10h、Int 13h,Int 15h之类的函式。
[
本帖最后由 itpundit 于 2007-3-13 13:08 编辑
]
作者:
gongtao
时间:
2007-3-13 15:33
不错的.
顶一下.
作者:
wacclark
时间:
2007-3-13 15:38
可以
作者:
liango1204
时间:
2007-3-14 13:46
学习
欢迎光临 热点科技 (http://www.itheat.com/activity/)
Powered by Discuz! X3.2