用户
 找回密码
 立即注册
搜索

BIOS的定义与解释

[复制链接]

10

主题

166

帖子

211

积分

中级会员

Rank: 3Rank: 3

积分
211
发表于 2007-3-13 12:55:45
大约二十六年前(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 编辑 ]
使用道具 举报 回复
发表于 2007-3-13 12:57:10
一、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 编辑 ]
使用道具 举报 回复 支持 反对
发表于 2007-3-13 12:57:13
二、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 146818CMOS参数记录/计时芯片,能储存的数据大小才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 编辑 ]
使用道具 举报 回复 支持 反对
发表于 2007-3-13 12:58:10
三、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 编辑 ]
使用道具 举报 回复 支持 反对
发表于 2007-3-13 15:33:41
不错的.
顶一下.
使用道具 举报 回复 支持 反对
发表于 2007-3-13 15:38:05
可以
使用道具 举报 回复 支持 反对
发表于 2007-3-14 13:46:28
学习
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则