如果你们的主板上有Debug LED等和简易Debug灯的话,在开机的时候可以观察一下,在显示器有东西显示之前这些Debug灯都会在一直跳动,如果卡在某个地方不动的话,恭喜你,有东西出问题了。
传统的AMI BIOS自检,图片来源:wikipedia
电脑开机的必备步骤:上电自检
你看到的这个过程其实就是电脑的上电自检Power On Self Test,简称POST,这是计算机接通电源后系统进行的一个自我检查的例行程序,其实许多电子设备都有这个自检过程,当然我们这里只讨论PC的,POST自检是设备预引导序列的一部分,自检成功的话结果会显示在屏幕上,当自检完成后BIOS就会进入下一个步骤,从硬盘、光盘、移动设备或网络驱动器上寻找操作系统进行启动,PC控制权会交给操作系统。
上电自检是有BIOS所执行的,当然有些外围设备自带BIOS的会让他们自己检查,比如显卡和SCSI设备,这时你就会看到自检过程中多了一两个画面。
现在主板的自检界面已经相当简化
上电自检期间主板BIOS的主要基本职责包括:
验证CPU寄存器
验证BIOS自身的完整性
验证一些基本组件,例如DMA、计时器、中断控制器
初始化、调整和验证系统内存
初始化BIOS
把控制器交给其他扩展卡的BIOS
识别与选择可用于引导的设备
而现在设备的主板BIOS上,POST自检还包括:
初始化芯片组
查找、初始化和分类所有系统总线与设备
提供用于系统配置的用户界面
构建目标操作系统所需要的系统环境
上电自检的过程
当你按下电源键后,系统就会启动上电自检程序,在此期间系统的控制权在BIOS上。刚开机的时候电压还不稳定,主板就会通过芯片组向CPU发出一个RESET信号,此时CPU会初始化,同时会等待电源发出的POWER GOOD信号,这段时间其实只有短暂的瞬间,当电压稳定后就会撤去RESET信号。
随后CPU就会从地址FFFF0H处执行指令,而这个地址是在主板BIOS的范围内的,无论是什么哪种BIOS放在这里的都是一条跳转指令,就是跳转到BIOS的启动代码,而这个启动代码要做的第一个事情就是执行上电自检,检查PC的硬件设备工作状态是否正常。
上电自检的大致过程为:Power——CPU——ROM——BIOS——System Clock——DMA——64KB RAM——IRQ——显卡等非关键设备,I/O口、软硬盘驱动器、鼠标键盘、即插即用设备以及CMOS设置等都排在显卡的后面,通常显卡通过测试后屏幕就会亮起,并且在屏幕上显示各种信息。
主板上的DeBug LED
这个过程是逐一进行的,每个设备都有一个POST Code开机自我检测代码,在对某个设备进行检查时就会把这个自我检测代码写入诊断端口,检测通过后就会送入另一个设备的代码,如此重复。
如果某个设备检测没有通过,它的POST Code就会在检测端口保留下来,而检测程序也会终止,并会发出警报,看到这里你应该已经明白DeBug卡上面的两个数字是怎么来的了,如果你有接蜂鸣器的话还能听到警报声,通过DeBug卡或者蜂鸣器的声音就能比较快速的找到问题的所在位置,并进行修理。
其实在早期的电脑上,上电自检其实是会对所有设备进行全面的测试的,包括完整的内存测试。这其实是继承了IBM在大型机上的设计,不过随着PC逐渐发展为一种个人的消费级设备,大多数产品都放弃了这种高可靠性功能,内存的奇偶校验和全面检测被放弃了,因为这一过程非常的长,而且随着内存容量的指数膨胀,这时间只会逐渐让人无法接受。
最初的IBM PC最少内存容量只有16KB,而通常的产品容量是在64到640KB之间,当时使用的8088 CPU频率只有4.77MHz,完成上电自检大概耗时5秒到一分半钟,而且无法跳过内存扫描,从IBM XT开始上电自检期间会显示内存计数器,而不是之前的空白屏幕。在上世纪80年代人们开始关注启动时间,光内存自检就要30到60秒其实是很让人不爽的,所以从哪个时候开始,兼容机的BIOS里面就多了个设置,运行用户通过按一个按键跳过内存自检。
而现在的电脑基本都不会进行内存自检了,现在的内存比以前可靠多,除非BIOS里面有着设置而且你还把它打开了。此外现在的BIOS在执行上电自检前会确定其执行原因,如果是冷启动的话就可能执行全部操作,但如果是休眠唤醒或者开启了快速启动的话,就会跳过标准的上电自检程序,直接从预设的系统设备列表中加载设备即可。
为什么不同主板的自检时间有差异
用过HEDT平台的朋友应该都有体验,就是X99/X299这类主板启动速度明显是要比普通Z字头或者B字头主板要慢的,原因嘛,其实就是HEDT平台的可扩展能力更强,上面的东西更多所以需要自检的时间更长罢了,其实如果把主板的RAID功能开启,或者安装RAID卡,或安装某些PCI-E SSD的话,自检速度会更慢。
此外AMD平台启动要比Intel平台慢这个估计也有许多人发现了,其实在AMD主板上BIOS启动前还有个叫AGESA的东西,在AGESA 1.0.0.4之前开机自检时间确实非常的长,这也导致了大家对AMD平台启动慢的印象,当然现在新版的启动时间已经大幅缩短,不比Intel平台慢多少。
现在的平台开机上电自检时间已经非常短,如果BIOS设置与上次启动是一致的话自检时间是非常快的,再加上现在基本上厂家都用开机Logo替换了自检界面,不把这东西关掉的话根本看不到自检报告画面,这一过程已经逐渐被大家忽略了它的存在,但它每次开机都在默默的运行。
当然如果你感觉到某次自检特别慢,如果你没加任何硬件的话,那多数是什么地方出问题了,比如莫名的超频失败CMOS重置,或者是什么地方松了导致开机卡住,这些时候就就会感觉到上电自检的存在。