主板BIOS技术解析
程序员文章站
2022-09-23 17:58:19
主板BIOS技术解析PC经过20多年的发展,几乎所有的硬件架构都历经数次彻头彻尾革新,但古老而变化有限的BIOS 却越来越不为用户重视。随着电脑朝着功能多样化的方向发展,如今传统BIOS也受到来自CSS、UE... 09-04-21...
pc经过20多年的发展,几乎所有的硬件架构都历经数次彻头彻尾革新,但古老而变化有限的bios 却越来越不为用户重视。随着电脑朝着功能多样化的方向发展,如今传统bios也受到来自css、uefi 新一代bios技术的挑战……
bios基础知识
bios是英文“basic input output system”的缩略语,直译过来后中文名称就是“基本输入输出系统”。它的全称应该是rom-bios,意思是只读存储器基本输入输出系统。其实,它是一组固化到电脑内主板上一个rom芯片上的程序,它保存着电脑最重要的基本输入输出的程序、系统设置信息、开机上电自检程序和系统启动自举程序。
有人认为既然bios是“程序”,那它就应该是属于软件,感觉就像自己常用的word或excel。但也很多人不这么认为,因为它与一般的软件还是有一些区别,而且它与硬件的联系也是相当地紧密。它负责最低级的、最直接的硬件控制,以及电脑的原始操作,电脑的原始操作都是依照固化在bios里的程序来完成的。形象地说,bios应该是连接软件程序与硬件设备的一座“桥梁”,负责解决硬件的即时要求。
有了bios,pc厂商在硬件规格改变时,只需要更改bios程序内部即可,而操作系统层级的软件仍然靠呼叫相同bios功能就能完成任务,操作系统完全不需跟随硬件修改。另一方面, ibm预见硬件各种频率有需要调校的可能性,因此bios也负责针对这些电气特性作初始化、设定与调整。一块主板性能优越与否,很大程度上就取决于 bios程序的管理功能是否合理、先进。
主板上rom芯片(read only memory,只读存储器)是记录bios程序的载体,读数据与ram芯片一样,但写数据要用特殊手段,如高电压写,bios程序就是由它来保存的。 rom芯片一个特点是没电时,它里面的信息也不会丢失。rom芯片从最初的不可刷发展到了电可刷新芯片,叫eeprom,通常是5v刷新电压,cih病毒就使用bios芯片电可刷新原理,往bios芯片写一堆垃圾,使得电脑bios程序被破坏,电脑无法启动。而我们平时说刷bios就是使用刷新程序或编程器把新版本的bios程序写进rom芯片,以增加主板功能和提高主板稳定性。
自从pc引入南、北桥芯片架构后,bios就成为一种跟随主板制化的固件,不再像286之前任一样bios安装在任何主板上都可以执行的状况。而在 win98/se时代,bios开始遵循apm标准,此时的bios称为apm bios,提供关于cpu及各种周边的电源管理能力。到winme之后,bios开始支持由 intel、microsoft、hp和toshiba主导、功能更完整的acpi标准,控制包括电源、电源状态、温度等项目,称为acpi bios。
bios掌握着系统的启动、部件之间的兼容和程序管理等多项重任。只要按下电源开关启动主机后,bios就开始接管主板启动的所有自检工作,系统首先由 post (power on self test,上电自检) 程序来对内部各个设备进行检查。通常完整的post自检将包括对cpu、基本内存、1mb以上的扩展内存、rom、主板、cmos存储器、串并口、显示卡、软硬盘子系统及键盘进行测试,一旦在自检中发现问题,系统将给出提示信息或鸣笛警告。
然后bios就按照系统cmos设置中保存的启动顺序搜寻软驱、ide设备和它们的启动顺序,读入操作系统引导记录,最后将系统控制权交给引导记录,并最终完全过渡到操作系统的工作状态。一旦出现故障,就会有蜂鸣器发出报警。不过bios在电脑启动过程中的工作实际上远比我们介绍的要复杂得多。中间任何一个小的步骤出错都会导致系统无法启动,崩溃,而且bios设置不当也会给系统造成隐患。有经验的老鸟可以通过bios启动时候的声音来判断故障,而一般用户可以通过查看debug卡的检错信号,了解post停滞在哪个阶段。
值得一提的是,虽然过去如linux等系统是完全取代bios,在linux电脑系统里bios几乎只在post阶段发挥作用,但由于acpi架构带来更多方便性,现在的linux也开始支持acpi技术。对linux来说,支持acpi可以提高其兼容性,也能减少系统开发的复杂度,但另一方面当然也使其核心的精简度丧失。从系统架构的整体观点来看,这是个选择性的问题,并没有绝对的优与劣。
如今acpi已发展到3.0版,并在2004年9月公开其技术规格。完整的acpi 3.0规格表多达600余页,定义各个系统的工作目标和内容、接口规范,以及acpi tables、registers等。
bios与cmos的概念区别
谈到bios,随便解释一下coms与bios的关系,因为有不少朋友往往将两者混为一谈。
我们常说的cmos却是指主板上一块可读写的存储芯片,也称之为“cmos ram”。那么,cmos与bios到底有什么关系呢?cmos是存储芯片,当然是属于硬件,它的作用是具有数据保存功能,但它也只能起到存储的作用,而不能对存储于其中的数据进行设置,要对cmos中各项参数的设置就要通过专门的设置程序。
现在多数厂家将cmos的参数设置程序做到了bios 芯片中,在电脑打开电源时按特殊的按键进入设置程序就可以方便地对系统进行设置。也就是说bios中的系统设置程序是完成cmos参数设置的手段,而 cmos ram是存放设置好的数据的场所,它们都与电脑的系统参数设置有很大关系。正因如此,便有“cmos设置”和“bios设置”两种说法。
一般来说,通过固化在rom bios的软件进行bios参数的调整过程就称之为bios设置,而通过bios设置中的"标准cmos设置"调试cmos参数的过程就称为cmos设置。我们平常所说的cmos设置与bios设置只是其简化说法,所以在一定程度上造成两个概念的混淆。
传统的bios的不足
作为连接操作系统和硬件体系之间的桥梁,bios(basic input output system,基本输入输出系统)为pc的发展做出了重要的贡献,但也存在许多天生架构的限制。例如,不能完全达到即插即用,需要对硬件的驱动和io资源进行调整,而这一切操作不是必须在操作系统中完成,尤其是对中断分配这个技术环节上,必须进入bios手动进行调整,这往往令初学者感到困难;字符化的 bios设置界面把很多人搞得一头雾水,更为夸张的是当出现某些新硬件的时候,为了达到支持新硬件的目的,必须要手动刷新bios的版本,虽然有不少图形界面更新bios版本的工具,但并不是每一块主板都支持此功能,许多初学者甚至没有接触过dos,刷新bios如何谈起?
此外, acpi bios所支持的即插即用也远非完美。通过硬件及系统厂商的不断努力,如今要让一块硬件正常运转起来,所花费的时间已经比以往减少了很多,但这远非完美。很多时候我们仍然会遭遇硬件之间的冲突,而此时就要进行硬件驱动及分配资源的手动调整,没有一定专业知识的人根本无从做起。
一般来说,只有当今所谓电脑高手才利用bios来对硬件性能做些超频调校,除了专业人士外,已经很少有人再利用bios进行低端工作。因为硬件发展迅速,传统式bios成为进步的包袱。因此,考虑到硬件环境已大幅改变,并考虑未来技术发展的前提下,bios的确有需要改革。
bios基础知识
bios是英文“basic input output system”的缩略语,直译过来后中文名称就是“基本输入输出系统”。它的全称应该是rom-bios,意思是只读存储器基本输入输出系统。其实,它是一组固化到电脑内主板上一个rom芯片上的程序,它保存着电脑最重要的基本输入输出的程序、系统设置信息、开机上电自检程序和系统启动自举程序。
有人认为既然bios是“程序”,那它就应该是属于软件,感觉就像自己常用的word或excel。但也很多人不这么认为,因为它与一般的软件还是有一些区别,而且它与硬件的联系也是相当地紧密。它负责最低级的、最直接的硬件控制,以及电脑的原始操作,电脑的原始操作都是依照固化在bios里的程序来完成的。形象地说,bios应该是连接软件程序与硬件设备的一座“桥梁”,负责解决硬件的即时要求。
有了bios,pc厂商在硬件规格改变时,只需要更改bios程序内部即可,而操作系统层级的软件仍然靠呼叫相同bios功能就能完成任务,操作系统完全不需跟随硬件修改。另一方面, ibm预见硬件各种频率有需要调校的可能性,因此bios也负责针对这些电气特性作初始化、设定与调整。一块主板性能优越与否,很大程度上就取决于 bios程序的管理功能是否合理、先进。
主板上rom芯片(read only memory,只读存储器)是记录bios程序的载体,读数据与ram芯片一样,但写数据要用特殊手段,如高电压写,bios程序就是由它来保存的。 rom芯片一个特点是没电时,它里面的信息也不会丢失。rom芯片从最初的不可刷发展到了电可刷新芯片,叫eeprom,通常是5v刷新电压,cih病毒就使用bios芯片电可刷新原理,往bios芯片写一堆垃圾,使得电脑bios程序被破坏,电脑无法启动。而我们平时说刷bios就是使用刷新程序或编程器把新版本的bios程序写进rom芯片,以增加主板功能和提高主板稳定性。
自从pc引入南、北桥芯片架构后,bios就成为一种跟随主板制化的固件,不再像286之前任一样bios安装在任何主板上都可以执行的状况。而在 win98/se时代,bios开始遵循apm标准,此时的bios称为apm bios,提供关于cpu及各种周边的电源管理能力。到winme之后,bios开始支持由 intel、microsoft、hp和toshiba主导、功能更完整的acpi标准,控制包括电源、电源状态、温度等项目,称为acpi bios。
bios掌握着系统的启动、部件之间的兼容和程序管理等多项重任。只要按下电源开关启动主机后,bios就开始接管主板启动的所有自检工作,系统首先由 post (power on self test,上电自检) 程序来对内部各个设备进行检查。通常完整的post自检将包括对cpu、基本内存、1mb以上的扩展内存、rom、主板、cmos存储器、串并口、显示卡、软硬盘子系统及键盘进行测试,一旦在自检中发现问题,系统将给出提示信息或鸣笛警告。
然后bios就按照系统cmos设置中保存的启动顺序搜寻软驱、ide设备和它们的启动顺序,读入操作系统引导记录,最后将系统控制权交给引导记录,并最终完全过渡到操作系统的工作状态。一旦出现故障,就会有蜂鸣器发出报警。不过bios在电脑启动过程中的工作实际上远比我们介绍的要复杂得多。中间任何一个小的步骤出错都会导致系统无法启动,崩溃,而且bios设置不当也会给系统造成隐患。有经验的老鸟可以通过bios启动时候的声音来判断故障,而一般用户可以通过查看debug卡的检错信号,了解post停滞在哪个阶段。
值得一提的是,虽然过去如linux等系统是完全取代bios,在linux电脑系统里bios几乎只在post阶段发挥作用,但由于acpi架构带来更多方便性,现在的linux也开始支持acpi技术。对linux来说,支持acpi可以提高其兼容性,也能减少系统开发的复杂度,但另一方面当然也使其核心的精简度丧失。从系统架构的整体观点来看,这是个选择性的问题,并没有绝对的优与劣。
如今acpi已发展到3.0版,并在2004年9月公开其技术规格。完整的acpi 3.0规格表多达600余页,定义各个系统的工作目标和内容、接口规范,以及acpi tables、registers等。
bios与cmos的概念区别
谈到bios,随便解释一下coms与bios的关系,因为有不少朋友往往将两者混为一谈。
我们常说的cmos却是指主板上一块可读写的存储芯片,也称之为“cmos ram”。那么,cmos与bios到底有什么关系呢?cmos是存储芯片,当然是属于硬件,它的作用是具有数据保存功能,但它也只能起到存储的作用,而不能对存储于其中的数据进行设置,要对cmos中各项参数的设置就要通过专门的设置程序。
现在多数厂家将cmos的参数设置程序做到了bios 芯片中,在电脑打开电源时按特殊的按键进入设置程序就可以方便地对系统进行设置。也就是说bios中的系统设置程序是完成cmos参数设置的手段,而 cmos ram是存放设置好的数据的场所,它们都与电脑的系统参数设置有很大关系。正因如此,便有“cmos设置”和“bios设置”两种说法。
一般来说,通过固化在rom bios的软件进行bios参数的调整过程就称之为bios设置,而通过bios设置中的"标准cmos设置"调试cmos参数的过程就称为cmos设置。我们平常所说的cmos设置与bios设置只是其简化说法,所以在一定程度上造成两个概念的混淆。
传统的bios的不足
作为连接操作系统和硬件体系之间的桥梁,bios(basic input output system,基本输入输出系统)为pc的发展做出了重要的贡献,但也存在许多天生架构的限制。例如,不能完全达到即插即用,需要对硬件的驱动和io资源进行调整,而这一切操作不是必须在操作系统中完成,尤其是对中断分配这个技术环节上,必须进入bios手动进行调整,这往往令初学者感到困难;字符化的 bios设置界面把很多人搞得一头雾水,更为夸张的是当出现某些新硬件的时候,为了达到支持新硬件的目的,必须要手动刷新bios的版本,虽然有不少图形界面更新bios版本的工具,但并不是每一块主板都支持此功能,许多初学者甚至没有接触过dos,刷新bios如何谈起?
此外, acpi bios所支持的即插即用也远非完美。通过硬件及系统厂商的不断努力,如今要让一块硬件正常运转起来,所花费的时间已经比以往减少了很多,但这远非完美。很多时候我们仍然会遭遇硬件之间的冲突,而此时就要进行硬件驱动及分配资源的手动调整,没有一定专业知识的人根本无从做起。
一般来说,只有当今所谓电脑高手才利用bios来对硬件性能做些超频调校,除了专业人士外,已经很少有人再利用bios进行低端工作。因为硬件发展迅速,传统式bios成为进步的包袱。因此,考虑到硬件环境已大幅改变,并考虑未来技术发展的前提下,bios的确有需要改革。