电脑CPUBIOS CPU VR Setting中SA ,IA ,GT是代表什么意思

作为专业人士可以大概率地怀疑你的主板有热区,跑游戏该块超过Thermal阈值EC将CPU的PROCHOT# pin设置有效,CPU进入保护状态这个热区根据描述,大概率在显卡附件这种问题属于笔记本散热设计不太好。

这是一个常见问题建议大家收藏这个回答,说不定你那天也会遇到同样的问题无论你用的台式机还是笔记本,也请點赞让更多人看到。对原理不感兴趣的同学也可以直接看结论

CPU的pcode管理着CPU的运行频率等等状态。当它检测到有东西威胁到CPU的健康运行时就会将CPU的倍频锁定到8倍,以降低风险直到危险解除。我们都知道现在CPU的基频是100Mhz8倍频就是:

这些危险包括温度,电压等而温度是最瑺见的情况。

我在这篇文章重点介绍了CPU本身的温度保护:

CPU内部有两道关卡:PROCHOT#THERMTRIP#保证CPU的安全无忧。这里不再详述

不知道朋友们有没有想過,如果问题没有发生在CPU身上而发生在显卡,甚至机箱风扇上会怎么样呢

实际上现代计算机系统早就把它加入考量之中。CPU为此将PROCHOT#设置為双向的是为BD PROCHOT(Bi-directional processor hot)。CPU可以通过PROCHOT#来向主板上其他固件如EC/BMC来报告CPU太热,让它们加大散热力度;主板上其他设备如果过热也可以通过这个引脚告诉CPU,让它慢点跑来让整个系统凉下来。

BD PROCHOT设计的初衷是好的也在这么多年取得了良好的效果。但如果发生一些故障CPU的800Mhz会让人明显感箌卡顿,而将注意力集中到CPU上而忽略了问题的真正引发点。

比较常见的情况是玩一会游戏忽然就变得很卡一看是CPU运行在800Mhz上,以为CPU出了問题结果退出游戏,一会CPU就恢复正常这多发生在散热不好的笔记本上。发生这种情况是GPU散热不佳通过BD PROCHOT来让CPU跑慢点,不是CPU的问题而昰GPU的问题。机箱风扇坏了或者局部散热不良也会出现类似情况

不但GPU有温度传感器,主板上本身也有很多它们也会随时汇报当时温度。囿种情况是本来计算机工作十分正常但忽然CPU忽然被锁定运行在800Mhz,打开测温软件会看到CPU、GPU温度正常题主应该就是这种情况,而发生的原洇是主板上某个温感器报警了

可以先来定位一下是不是这个问题。在BIOS里面关闭BD PROCHOT,它一般在CPU的菜单里面:

如果是笔记本等简化BIOS而找不到这個选项,可以下载一个ThrottleStop软件来关掉它:

把BD PROCHOT前面的勾去掉就行了它的缺点是每次都要运行,不像BIOS一样一劳永逸

如果关掉 BD PROCHOT,系统就不掉频叻说明是这个问题的几率很大。直接永远关掉可能造成硬件损坏并不推荐。那么除了换个笔记本之外似乎也只有买个笔记本散热底座,在打游戏的时候架上了:

CPU的外部VR损坏或者设置错误也会让CPU进入800Mhz的情况但这是小概率事件。大部分原因都与温度有关而有不少主板溫度传感器因为各种各样的问题损坏后CPU会被永久锁定在800Mhz的频率上,造成运行速度极其缓慢如果你能确定是这个问题,可以选择相对省钱嘚办法关闭BD PROCHOT来忽略这种错误

BD PROCHOT存在是有其价值的,在不确定的时候贸然关闭相当于忽略了危险信号这是我不推荐的。 如那种显卡过热和機箱风扇损坏的损坏的情况忽略错误可能引发显卡或者主板损坏。

欢迎大家关注我的专栏和用微信扫描下方二维码加入微信公众号"UEFIBlog"在那里有最新的文章。同时欢迎大家给本专栏和公众号投稿!

用微信扫描二维码加入UEFIBlog公众号
}

这个东西其实很多年前就有过科普现在也是适用的

不过这篇科普里介绍的并不是非常完全,提到的软件也仅仅适用于BD-PROCHOT这种限制

这次我给你们来点直接的用这个基本上鈳以摸清楚intel平台的各种降频问题

这一栏是系统下能抓到intel CPU的所有状态指示,从名字就能看出这些指示就是来描述CPU性能限制来源的

拿一些比較典型的指示来解释一下吧

基础:(绝大部分玩家会遇到的)

IA指的是CPU的传统计算核心(对应的是GT core也就是核显模块),PROCHOT全称是processor hot也就是处理器熱这个指示代表着机器用了BD-PROCHOT这条路来直接限频以达到控制发热的目的

这条路是老旧笔记本的传统限制方式,触发时非常暴力直接取消睿频甚至限制到800MHz或400MHz(取决于CPU LFM是多少),由于这样的调节非常容易引起卡顿等较差的使用体验各家已经不再用这个控制一般情况的散热,呮在某些极端条件下当倒数第二个保护墙用(最后一堵墙是断电黑屏)

直译过来就是IA部分的散热事件是否触发,散热事件指的是CPU是否出現过热状态

这个状态指示对应AIDA64里的CPU Throttling那条红线,为0的时候是没有触发否则就是触发了

触发时,CPU会调整电压、频率来降低功耗进而控制溫度,且这个动作是频繁迅速的在没有其他限制的情况下,这个机制会让CPU维持在设定的温度墙附近误差2-3度

这是一个以核心温度为基准嘚频率调节,精度是每核心100MHz

笔记本研发内喜欢把这个叫TCC并且将是否触发TCC来判断机器的散热设计是否达标。否则的话就会调整散热模块或鍺修改DPTF来满足需求

这种思路不能算错,只是他们妖魔化了触发TCC的后果可能是很久以前TCC的动态调频机制不够完善,触发后频率波动大导致性能反而降低(3代移动锐龙就是如此)所以倾向于不要触发。不过以我自己的测试来看intel的TCC现在已经很完善了,大可以放心将TCC作为唯┅性能限制条件

这个其实就是PL1,它指的是长时(负载)功耗限制阈值当intel CPU结束了PL2阶段,其平均功耗就会被PL1所限制

通常来说,PL1会被设定為TDP标称值在7代U及以前的处理器中,笔记本厂商基本都这么设置的但是8代U以后由于CPU核心数变多,而intel给标压永远是45W厂商为了更高的性能洏不断提高,现在的游戏本单烤PL1设定70W已经不足为奇了

当然,PL1也可以低于TDP但intel通常会给一个最低值,建议厂商不要低于这个设定但这个偠求不是强制的,这就出现了PL1=6W这种看着都会卡爆的情况

限定PL1会使得CPU频率电压相应的降低也是动态调节的

intel最推荐的是使用PL1来控制机器的发熱,这也是目前厂商的主要手段DPTF这套环境里,PL1也扮演着重要的角色厂商通过设定DPTF里面的触发条件,来定义PL1 max和PL1 min基本过程是这样的:

  • 假設这个触发条件是热管旁边的一个温度传感器达到55度,当这个条件满足时PL1就会从max值逐步降低到min值
  • 这个过程中每一次调整的PL1大小可以定义,每次调整的间隔时间可以定义min值也是自定义的
  • 如果在调节PL1过程中,传感器温度低于另外一个触发值比如50度后PL1降低的动作停止,会按照同样的间隔时间和步进来逐步提高PL1值
  • 这一套DPTF算一个场景而场景的进入也是有自定义条件的,这个条件可以是某个温度某个程序甚至外部手动切换信号(比如FN+Q)

通过这些机制,PL1会不断的调整进而使得性能也不断的变化。

PL2是短时(负载)功耗限制阈值PL3是瞬时(负载)功耗限制阈值

短时指的是几秒钟到几分钟,瞬时指的是几十毫秒

PL2的存在使得笔记本在冷机空载状态下有了Over Loading的能力这段时间内机器的功耗昰可以承受高于其散热设计数值的,等待温度上去后结束PL2阶段用PL1来控制发热。

定义PL2阶段存在时间的参数是Tau但它不是唯一影响因素,PL1、PL2夶小同样会影响

影响PL2时间的是下面的这个公式:

ω代表计算出的累计功耗

P=Power,即单位时间内CPU的实际功耗

这个公式其实就是一个迭代计算PL2嘚过程如下:

  • 当机器长期处于待机时,ω(0)就是待机功耗数值
  • 当某个负载进入后P就是那个加负载后的功耗值
  • ω(1)到ω(n),不断在累计升高
  • 当ω(n+1)等于此时的Power数值时PL2阶段停止
  • 当负载下去后,ω(n+1)也会同步刷新到更低值使得CPU重新具备Turbo的能力(这里的turbo指的是功耗,不是频率)

可以看出这种机制还是比较合理的,PL1/Tau的大小会显著影响最终n的取值也就是PL2存在时间而Power是受到PL2和散热设计的限制的。短时间的负载波动不会导致PL2嘚时间骤变这也跟实际机器的散热过程相匹配。

不过PL2在大部分用户场景中的效果是跑分真要跑到PL1的场景也不多,更别说PL2了(单烤下)

PL3┅般厂商都是保持关闭也就是PL2+2W,这种设置是保护电路用的几十毫秒没有啥实际用处。

直译是睿频衰减这玩意是每款CPU的设定,通过BIOS或鍺XTU啥的可以降低一般不能调高(部分高阶的i7或者不锁频的i9可以,这就算超频了)

查看CPU支持的最大睿频是多少可以用AIDA64:

最下面一行Max Turbo Boost Multipliers就是,1C代表单核高负载可以到的最大倍频(频率=外频x倍频现在的CPU外频基本上都是100MHz),2C代表双核高负载以此类推

——————————7/11更新————————————

最大睿频限制,前面那个和这个很接近如果厂商是严格按照intel的标准来设定单核到多核的睿频限制,那么这两個是同时触发的

这个时候hwinfo显示的情况就成了这样

所以这两者的关系就是,Max Turbo Limit告诉你CPU频率是否到了这台机器设定值的上限Turbo attenuation告诉你CPU频率是否箌了intel官方标准的上限。

一般来说intel的CPU只能调低而不能调高(除了带K结尾的或者高阶i7比如i7-10850H),调低可以降低CPU的发热进而改善温度使用throttlestop即可哽改

中阶:(部分玩家会遇到,很难看懂)

这个玩意是个综合体各种板端的限制会导致触发它。Electrical Design Point应该指的是EDC之类的这个跟你机器的CPU供電设计强相关(硬件规格上用了多少相供电),触发了就说明你CPU就只能跑这么高了再高可能供电要挂

这个功耗就是intel计算出来的理论最高功耗,这个由于是预估所以并不是真的有那么多功耗,看起来更像是推测同一时间系统的瞬时功耗可能会有多少

PL4就是用来限制PPP数值的當预估的PPP高于PL4,系统就会降低CPU频率来防止“过载”

这种机制主要应用于电池模式下,用以保护机器不会因功耗过高而断电当然这个也鈳以在AC模式下应用,这个时候看起来应该就是防止电源适配器过载了

简称TVB,intel公开文档是这样介绍的:

看描述似乎是在温度低的时候(低於70度)可以获得额外的频率加成(100-200MHz)看起来是赚了

然而实际上,这玩意的作用机制是降频……

并且intel对外宣称的CPU频率(支持TVB的型号)也嘟是算进去TVB频率的

比如i7-10750H,宣称最大5GHz(也就是单核睿频)这个就是包含TVB频率的,温度上去后会降到4.9或者4.8GHz(一般机器都是降100MHz不知道具体规則)

这个指示就是在告诉你,当前频率是否有TVB加成有的话是No,没有就Yes

如果你有解锁BIOS那么恭喜你,这个也可以关闭的关闭后如刚才所說,不是TVB频率没了而是永远不会因为它降频了!

不过支持i9-HK超频的机器,这个选项肯定是可以开启的并且这类机型往往出货时就是默认開启的,支持OC后intel很贴心的将TVB默认禁用了所以,买了这类机器不用解锁也能享受到永久TVB频率的加成(比如Y9000K)

这个东西也跟供电设计强相关但这个数值也跟散热模块的设计有关。如果你用的mos多点电感大点,跟散热接触的充分点这样在CPU功耗较高的时候,供电的温度也能有效降低TDC的数值也是可以高于intel推荐值的,这个数值并非强制

高阶(基本看不到,玩家自己折腾可能会看到)

直译就是VR散热警告其实意思也很清楚了,供电部分过热了

这个很显然是跟上面VR TDC息息相关的东西,如果都是按照intel的规范来设计应该只会出现VR TDC限制而不是这个。当TDC數值设置太高实际散热撑不住时,CPU就只能靠这个限频降低CPU的功耗

但是强烈不建议解锁这个选项,这里有个血泪史当初就有台机器遇箌了这个警报,强行禁用后每次跑高负载没几分钟就黑屏最后彻底不开机,返厂说供电和CPU都烧了各位以此为鉴吧

简称RATL,这个功能是进階的CPU Throttling前面说的那个是温度到了TCC设定值立刻开始动态降频,防止温度超过太多而RATL允许CPU温度超过TCC设定值,然后通过计算得出啥时候开始生效TCC

这个机制听起来是不是有点像PL1和PL2

对!其实这个玩意跟那个计算PL2阶段存在时间一样一样的,只是这次把Power改成了Temperature然后把Tau改成了TCC_Tau

不过这两個稍微有点差异的是,PATL里没有对TCC做个PL2限制这意味着如果机器散热雪崩,温度以极快的方式拉到TCC以上还不会限制那么这台机器极有可能會触发断电保护机制(几乎所有机器都会有这个温度墙),然后就没有然后了……

别说研发阶段我确实见到过这种机器,肯定是心太大沒摸清楚机制就瞎捣鼓上去了……

这也侧面说明目前RATL机制还是不够完善,即便出货的时候调教的没问题等日后硅脂干了散热积灰了,溫升变成接近90度的直线时也还是有同样的风险

如果你的机器很不幸用了这个机制可以在解锁BIOS下给它关掉。

看直译是保险丝熔断限制这個东西在当前平台上没有效果,是给未来Tigerlake准备的TGL的供电是IA和GT整合的,我推测这个的功能是防止核显部分抽载太高影响CPU供电按照固定比唎来限制核显的功耗

其它(我也不知道是啥玩意)

这个应该是hwinfo作者弄错了,实际上为Reliability stress Restrictor可靠性应力限制。CPU会提交给Windows一些参数被记录在日志通常用来防止损坏的主板或CPU运行。而Windows会将某些CPU超频现象归类为“错误”从而扼杀CPU速度

先更新这些,下次更新下AMD能看到的参数

}

学习很长时间了一直没有时间紦经验和挖掘的一些技巧整理出来,这个暑假在家没事整理了一些与大家分享。由于都是自己的理解和实验产物所以肯定有些不当之處,期待交流指正!  这个系列文章将以Ubuntu探秘命名内容涉及到整个开机流程及GNOME桌面的hack . 今天发表第一篇心得:BIOS到底干啥用?

北桥和南桥组成叻主板上的芯片组北桥主要控制CPU和内存,是系统总线和一级PCI总线的桥接设备也称host bridge ;南桥负责PCI,PCI-E,USB,VGA等外围总线设备,这些外围设备挂在PCI总线仩通过各自的控制器与PCI总线接口,不同类型的总线通过bridge接口

通常,计算机的启动过程是在主板的BIOS控制下进行的这个BIOS也称为“系统BIOS”,它的内容在南桥芯片的一块特殊区域CMOS中主板上的电池就是为CMOS保存资料而提供电源的。除了这个“系统BIOS”以外各PCI设备也都提供各自的BIOS,它们的功能是直接访问所在设备的PCI配置寄存器以获得PCI设备的信息、配置PCI设备的参数、完成PCI设备的初始化等。

BIOS)若错误则用默认的值取玳CMOS提供的资料。SMBIOS扮演的主要角色是将主板或X86的系统通过BIOS呈现在用户面前通过dmidecode命令可以查看该表格,其中有许多Type每个Type代表一类信息,可鉯在dmidecode的man page中找到相关定义

当计算机电源开关被按下时,电源就开始向主板和其它设备供电此时电压还不稳定,主板控制芯片组(北桥芯片)會向CPU发出一个Reset信号让CPU复位初始化。当电源开始稳定供电后芯片组便撤去Reset信号,CPU马上开始从地址FFFF0H处执行指令这个地址在“系统BIOS”的地址范围内,放在这里的一般是一个跳转指令跳到系统BIOS的真正开始代码处。

      Pown On 阶段 这一阶段从上电开始到屏幕出现信息结束也就是所谓的噭活电源阶段。这一阶段的主要任务是校验CMOS中的内容是否正确、检查主机上某些硬件的状态以确定下一步的自检因此,用户无法在屏幕仩看到BIOS信息(要等硬件确认后才激活VGA) 若这个阶段出现错误一般都是致命的(通常为黑屏),只能通过喇叭声来判断错误类型这个阶段只是检查系统上都有哪些设备,并不初始化

检查一些关键设备如内存、显卡能否正常工作,并提供简易的内存只要测试没问题,就在屏幕上顯示该硬件的基本信息这个阶段的基本过程如下:系统BIOS查找显卡的BIOS,存放显卡BIOS的ROM芯片的起始地址通常在C0000H处然后调用其初始化代码,由顯卡的BIOS完成显卡的初始化然后屏幕就可以显示信息了,大多数的显卡会在这时显示显卡的一些信息但是通常只是一闪而过。依次类推系统BIOS调用在前一个阶段找到的设备的BIOS代码,以完成相应设备的初始化查完其它所有设备后,BIOS将显示自己的启动画面接着检查CPU的类型囷工作频率、主机的内存容量,然后系统BIOS开始测试和配置系统中安装的一些标准硬件设备如硬盘、光驱、COM口、并口等然后BIOS开始检查并配置系统中的即插即用设备。开机时和开机后所有需要用到的设备都是在这个阶段被激活的

      加载bootloader阶段 当所有的硬件都检测完毕并没有问题後,BIOS退居幕后的办法是将加载OS的主控权交给硬盘的主引导扇区MBR即硬盘的物理扇区0柱0面1扇区上的内容让藏匿于此的开机管理程序(bootloader)将指针带箌系统核心的地方。linux常见的开机管理程序为Grub.(以后会分享grub的配置及除错方法^_^)

    另外查看系统BIOS信息的命令主要有两个:dmidecode 和 biosdecode .它们可以显示cpu 、内存、主板型号、OEM信息、主板插槽等信息这些信息对于查看系统硬件配置非常有用。


对于经常使用电脑CPU的用户(来CFAN的都应该包括在这一行列吧)来说每天当你按下Power Button等待电脑CPU进入系统开始一天正常工作的时候,你有没有想过在这一段时间内电脑CPU内部都发生了什么当电脑CPU发生故障不能启动的时候你是否不知所措, 不知道是哪里出了问题如果你还没有想过这个问题,或者这是你老早就在思考的问题却苦苦得不箌答案,那么请继续往下看
整个电脑CPU的启动过程大概可以分为三个阶段:

二 BIOS引导阶段(从CPU Reset到操作系统引导)
    这一阶段完全在BIOS的控制之下,由BIOS完成微机硬件的自检(POST)与初始化BIOS还提供BIOS设置和Runtime Service服务(微机原理课学过的BIOS中断服务),最后BIOS将从可引导介质上引导操作系统
三 操莋系统引导阶段 很多文章里都会忽略这一阶段,直接从CPU Reset读取BIOS代码开始自检讲起可能是这一步经过的时间太短了,用户根本觉察不到所鉯没有必要讲:( 。但是这是必需的一步不经过这一阶段PC不可能启动!
注意:台式机与笔记本在这一阶段有很大的区别,这是由于笔记夲有KBC的存在(后面会讲到)

由于台式机的开机与PC电源有密切关系,先看一下电源部分:
(看不清楚没事 拆了机箱拿出电源自己慢慢看 看熟悉就好了)
这个就是主板供电插头的pin脚定义图,这是ATX 12V 规范之前的定义最新的ATX 12V 规范pin脚已经变成24针(主要是加强了了对CPU的供电电压 ,如果想了解更多的电源规范可以参考ATX 电源规范 这个不在本文的探讨之列),但是这个变化对开机流程没有影响所以这张图依然适用(手頭只有这张图,懒的找了)

说明一下,其中8引脚为PG(Power Good)信号。9引脚为待机供电14引脚为PW-ON(Power-On)信号,14引脚与GND(Ground)短接后即可触发电源工莋(这一点非 常重要!)未触发前9、14引脚输出电压均为+5V,其它引脚无输出电压

还有,根据电源的两种结构主板触发也采用两种方式。AT结构电源采用硬开机方式(触发后PW-ON为常闭状态)ATX结构电源采用软开机方式(触发后 PW-ON为常开状态)。由于软开机是目前绝大多数主板采鼡的触发方式因此我们主要针对这种触发方式进行分析。这个有时分析是要用到的 所以我想想还是说一下


看一下几种典型的主板触发電路:
1. 经过南桥的触发电路(见下图)
在触发电路中凡是参加开机的元件均由电源9引脚(紫)提供+5V供电。+5V高电位经电阻R1、R2在PW-ON非接地端形荿+3.3V高电位。当 PW-ON(机箱开机按纽)被触发(即闭合)瞬间+3.3V高电位信号被拉低,变为低电位南桥接收到低电位信号向电源14引脚(绿)发出低电位信号, 将POWER(14)+5V高电位拉低触发电源工作,实现开机

2. 用反向器式,不同与上面的接地式


当PW-ON被触发(即闭合)瞬间,+3.3V高电位信号經反向器(如7404等)转换为低电位南桥接收到低电位信号向电源14引脚(绿)发出低电位信号,将POWER(14)+5V高电位拉低触发电源工作,实现开機
过程与经过南桥相似,只是由南桥控制I/O芯片通过I/O芯片发出低电位信号将POWER(14)+5V高电位拉低,触发电源工作
上面列举了三种常用开机電路,当然不同的PC厂商可能会采取不同的设计,基本原理应该都和上面的电路相同

至此,ATX电源开始正常工作就会输出+12V,-12V.+5V ,-5V,+3.3V电压,包括8引腳PG(Power Good)信号这时候主板上的用电已经全部输出。输出PG信号后会触发南桥经过一系列的触发动作,最终由北桥发送CPURST#给CPU使CPU Reset.

至此,PC开机过程的第一步完成(应该是台式机还有笔记本的没讲 :))。需要说明的是这一过程在极短的时间内(微秒级)完成,用户根本感觉不箌(好复杂啊!还有更复杂的呢CPU内部的每秒G次级操作!)。


笔记本由于有KBC的存在这一阶段和台式机又有不同。KBC(Keyboard Controller,键盘控制器)从字面上我們就可以看出来它的作用这只是它当初的定义,现在的KBC的功能已经远远超出它当初的定义了现在笔记本 上的电源管理,状态LED的显示Panel褙光亮度的调节,Fn键的控制CPU Throttle的开关,无线蓝牙红外等外设的控制电池充放电的控制等等功能都由KBC来接手,应该说KBC接手了台式机上南桥嘚一部分功能现在常用 的KBC芯片主要有Hitachi的H8和Winbond系列(如W83L941D)。
KBC在NB的开机过程中也起着很大的作用下面我们来看:
在系统关机的时候,只有RTC部汾和KBC部分在运行明白这一点很重要!很多笔记本用户会问为什么笔记本即使不开机过一段时间电池电量也会减少?这正是 KBC还在用电的原洇当然,电池的自然陨耗也不可忽略RTC部分维持着计算机的时钟和CMOS设置信息,而KBC则在等待用户按开机键在检测到用户 按开机键后,KBC会通知整个系统把电源打开(这部分在下面详细介绍)CPU被RESET后,会去读BIOS内一个特定地址内的指令(其实是一个跳转指 令这个地址是由CPU硬件設定的),接下来就是第二阶段讨论的内容了!
(以下一段从权威揭密 笔记本硬件结构终极教程 (下)一文摘录)
那我们现在就讲解一下筆记本电脑CPU在硬件上的逻辑开机过程
首先我们做一些预习工作,以方便读者的理解在笔记本内部的电压有好几种,我们分别看一下
艏先是RTC电源,这部分电力是永远不关闭的除非电池(纽扣电池)没电并且没接任何外部电源(比如电池和电源适配器)。RTC用以保持机器內部时钟的运 转和保证CMOS配置信息在断电的情况下不丢失;其次在你插上电池或者电源适配器,但还没按power键的时候(S5)机器内部的开启嘚电称为 ALWAYS电,主要用以保证EC的正常运行;再次你开机以后,所有的电力都开启这时候,我们称为MAIN电(S0)以供整机的运行;在你进待机的 時候(S3),机器内部的电成为SUS电主要是DDR的电力供应,以保证RAM内部的资料不丢失;而休眠(S4)和关机(S5)的电是一样的都是 Always电。其中上文中括号内嘚是表示计算机的状态(S0-开机,S3-待机S4-休眠,S5-关机)
上图是对上面这段话的总结,我想应该很容易明白其中最后一列指的是其电压开啟的控制信号,这点下面会讲到至于为什么这里没有S4,即休眠状态是因为在S4状态和S5状态下,系统开启的电是一样的所以就没必要增加一组控制电路。
OK现在我们假设没有任何的电力设备在供电(没电池和电源),这时候机器内部只有RTC电路在运作,南桥上会接有一个3V嘚纽扣电池来供给RTC电力以保持内部时间的运行和CMOS信息。
我们来分析一下开机的过程在插上电池或者电源的时候,机器内部的单片机KBC就Reset並开始工作等待用户按下Power键。在此期间的时序 是:ALWAYS电开启以后KBC Reset并开始运行,随后发给南桥一个称为‘RSMRST#’的信号这时候南桥的部分功能开始初始化并等待开机信号。这里要注意这时候的南桥并没有 打开全部电源,只有很少一部分的功能可用比如供检测开机信号的PWRBTN#信號。
在用户按下Power键的时候KBC检测到一个电平变化(一般时序是:高-低-高),然后发送一个开机信号(PWRBTN#)给南桥南桥收到 PWRBTN#信号后依次拉高SLP_S5#,SLP_S4#,SLP_S3#信号,开启了所有的外围电压主要是+3V,+5V以及DDR2.5V等 并发送PM PWROK信号,这信号表明外围电源正常开启
在用VR_PWRGD_ICH这个信号通知南桥CORE VR成功开启后,南桥會发出PCI RST#信号到PCI总线于是总线上的设备都被初始化(包括北桥),并同时发出H_PWRGD来通知CPU它的核心电压已经成功开启然后北桥发 H_CPURST#信号给CPU,CPU被RESET并正式开始工作。
至此PC开机过程的第一阶段全部完成(台式机,笔记本)
我们跟随微机进入第二阶段。

第二阶段: BIOS引导


从这一阶段開始我们就可以“看”到这一过程了(显卡开始工作之后)。在这一阶段BIOS是绝对的主角!基本上一切都在它的控制之下。

可以说BIOS是一個很大的话题不要说一篇文章,就是一本书一门课程都不可能讲的很透彻!这里我主要是根据自己的理解,对BIOS在微机启动过程中的作鼡作一下梳理


为了便于理解,先给不熟悉BIOS的兄弟(当然还有姐妹:))们补补课(之前听到有人说BOIS还有的称BOSS!)。BIOS的全称是Basic Input And Output System中文名僦是基本输入输出系统,从名称上我们不能获得更多的信息它到底是硬件还是? 既然称为系统我怎么看不到应该说BIOS是名符其实的软件(先别急着反驳,听我讲完)它本身是一段程序,只不过这段程序和我们平时接触的程序有一点不 同它不像我们常见的程序那样工作於操作系统下,因为它本身就可以说是一个简单的小型操作系统(不好理解就当我没说过上面的这段话,继续往下看)这段 程序是固囮在一块芯片当中的――这块芯片就是我们学说的BIOS芯片,而这块芯片又焊接在主板上如果你细心找的话,在主板上你肯定能找到这块芯爿(没有 BIOS的PC偶还么的见过)而正是由于BIOS是固化在芯片中的才会导致某些人说BIOS是硬件。整理一下应该说BIOS是软件,如果我们说 BIOS芯片(保存BIOS程序的那块芯片)那么它就是硬件(芯片当然是硬件拉)。
要想了解更多关于BIOS的信息大家可以去  ,从上面可以获得更多的资料从基夲的BIOS设置到怎么刷BIOS到替换BIOS的开机画面,应有尽有
再说一下BIOS在微机中的基本作用:
2. Initial――针对动态内存(DRAM),主板芯片组显卡以及相关外围的寄存器做初始化设置,并检测是否能够工作
所谓初始化设置,就是依照该芯片组的技术文件检定做一些寄存器的填值,改位的动作使得主板/芯片组和内存,I/O的功能得以正常运行
4.将常驻程序库(Runtime Program)常驻于某一段内存内,提供给操作系统或应用程序调用像Int 10H, Int 13H, Int 15H之类的函数(这個功能在Windows系统下已经不存在了,在DOS下还会用到就是我们常说的BIOS 中断)
继续讨论BIOS在开机过程中的作用,我们看下面的图:

好了今天就写這么多,以后有空再写。。。
当CPU Reset后根据X86架构的特性,(386以后)CPU会从4G地址的最顶端FFFFFFF0处获得第一条指令来执行而这一地址被定位在BIOS 裏。由于FFFFFFF0到FFFFFFFF只有短短的16字节根本不可能放下一段程序,所以这里会放一条跳转(Jump)指令让BIOS跳到更低的地 址去执行而这个地址就是上图嘚Boot Block模块的入口地址。这个Boot Block(启动模块)是IBM PC遗留下来的规范基本上每一个BIOS厂家都会有这么一个Boot Block。它的作用就是完成BIOS的最初引导(比如说测試很小的一块内存来供临时使用)如果你对BIOS DIY比较熟的话,它的另一项功能你可能会比较熟悉就是当刷BIOS由于不慎导致失败的时候,我们鈳以通过Boot Block的拯救功能来救回BIOS一般是在软驱里放入两个文件,一个是特殊的刷BIOS工具另一个是BIOS文件然后用这个软驱启动,如果Boot Block模块没有损壞的话用这个方法可以救活BIOS.
Boot Block完成引导后就会解压缩出Runtime模块,到这里可能你会问什么是解压缩Runtime模块?莫非BIOS里还藏有 Winrar,winzip这样的程序答案当嘫是否定的。用到解压缩功能完全是因为BIOS可以利用的地址空间太小了而随着芯片组功能和外设功能的增 强,BIOS里还要加入起来越多的功能为了解决地址空间不足的问题,BIOS就引入了压缩模块的方法将一些固定功能的BIOS模块通过压缩算法压缩, 挤出一些空间来让更多的扩展功能使用当然,这些压缩算法肯定没有Winrar等压缩软件那么复杂了否则光是压缩算法就占据了大部分空间,还不如不引入 压缩功能来的划算到这里还有一个问题,就是有人可能要问之前不是讲过BIOS刚开始执行就会进行POST吗?怎么前面还会解压Runtime模块这 是因为在POST过程中要用到中斷调用等功能,而这些功能是由Runtime模块提供的
Runtime模块解压后就会解压POST模块,可以看到连POST也被压缩了可见BIOS空间是多么宝贵!在POST过程中如果用戶有按键(比如常见 的DEL键)想进行BIOS设定,那么BIOS会解压出BIOS SetUp模块来提供BIOS设定界面并保存用户设定结果。在POST过程中BIOS还会进行芯片组内存,显鉲外设等的初始化工作。
上面的只是一个初略的BIOS执行流程BIOS实际执行的过程要比上面说的复杂的多。并且不同的厂商会在BIOS里加入许多特萣的功能(比如一键杀毒还原等),这更会增加BIOS的复杂度!
造成BIOS过于复杂的另一原因是BIOS开发主要是用一般人不熟悉的汇编语言面对复雜的BIOS,不要说普通的用户就连BIOS开发人员有时都会被 搞焦头烂额。还好Intel终于开发出了EFI(Extended Firmware Interface,扩展固件接口)准备用来取代BIOSEFI用流行的C语言開发,可以做出比较好的图形界面使用起来更加直观。EFI还加入了一些 比较实用的功能比如说可以不进系统,在EFI里就可以进行文件操作在EFI里使用网络功能等。有兴趣的可以在网上找一下EFI的相关资料毕竟EFI 离我们也不太远了,之前Microsoft承诺会在Windows Vista里启用EFI的支持可后来又跳票了,最近MS又表示2007年会启用EFI支持MS是否会再忽悠我们一把,我们只有到2007年再下结论 了
至此,PC开机过程的第二阶段完成

第三阶段: 操作系统引导

BIOS自检过程中,如果没有错误接下来就会进行操作系统引导。

BIOS会根据CMOS里记录的启动顺序一个个地来尝试加载启动代码具体的过程是BIOS將磁盘的第一扇区(磁盘最开始的512字节)载入内存,放在 0XC00处然后检查这个扇区的最后两个字节是不是“55AA”,如果是则认为这是一个有效嘚启动扇区如果不是就会尝试下一个启动介 质,如果找到可以启动的程序就会从这一介质启动如果所有的启动介质都判断过后仍然没囿找到可启动的程序那么BIOS会给出错误提示。

第一个原因只会“吃掉”您一小部分的内存

众所周知电脑CPU中二进制中的换算关系是 1GB=1024MB,实际生产時,硬件厂商厂商的换算单位是1GB=1000MB当电脑CPU厂商告诉您,您电脑CPU中的内存是1GB的时候其实您的内存是1000MB,系统识别时用1000处以1024,也就显示您的內存是0.976GB同理您安装了4G的内存,系统会显示您的内存是3.9GB这并不是硬件厂商欺骗您。

第二个原因可能会“吃掉”您数量可观的一部分内存

內存(RAM也就是您的系统的寻址总空间)=内存条(物理内存,您的内存条是4GB的)+bios内存+缓存+显存+...,32位的电脑CPU的寻址空间是2的32次方也就是4G,系统将這4GB的地址分配给内存条缓存,显存硬件等。

系统分配寻址空间时是有优先级的 bios的内存,cpu的缓存各个硬件的内存,显卡的显存等怹们的优先级比物理内存(也就是内存条)高,所以系统先将寻址空间分配给bios的内存cpu的缓存,各个硬件的内存显卡的显存,最后才将剩余的寻址空间分配给内存条比如您的显卡有500MB,那么可以分配的内存也就只剩下4GB-0.5GB=3.5GB了

相当于一条街上有1000户居民,但是门牌号码确实只有800個于是还有200户居民没能获得门牌号码,但是这200户居民并未消失

如果在32位电脑CPU上装上4G内存条依照优先级关系,你只能使用3G多的的内存条涳间因为前面的几百MB空间是给了各个硬件(包括显存),4GB的内存条只有其中的3.31GB获得了寻址空间此时您只可以看到获得了寻址空间的那┅部分内存条(见下图.)


如果是2G的内存条,因为电脑CPU本身寻址能里是4G,前面几百MB给了硬件依旧剩余3G多的寻址空间, 2G的内存条可以完全获得2G嘚寻址空间您也就能看到2G的内存条了


当 按下电源键,主板的电源系统供电南桥启动,北桥启动复位CPU的reset针脚(具体叫什么,到不知道叻)执行已经设置好的地址上的程序。一般到最 后地址的后十六个字节的起始地址8086为ffff:fff0即ffff0H,即使现在的Intel CPU也会到最的地址空间FFFFFFF0处执行,因为這时就剩余16个字节可以放数据同时又放不下什么程序,一般在此处放一条跳转指令

看看芯片24根地址线1M地址空间的分配情况,如下图

以後盛行20多年的bios可能就要退出历史的舞台了接下来就是UEFI粉墨登场了,现在都2.1b版本了要看的还真是不少。以后等看了再说先记录到这吧。

LinuxBIOS首先要做的是建立和初始化内存建立串口控制台(因为BIOS经常会有一些错误信息,需要将这些信息输出、以便调试使用)接着,BIOS可以執行C代码从这一刻起,LinuxBIOS便能建立CPU上的MTRRs(Memory Type Range Registers)从而使能CPU的cache、并因此而提升运行速度。然后其负责建立IRQ路由表、初始化主板上的单个硬件(包括IDE控制器、键盘、南桥等)。其他的初始化工作便交给了Linux做(这是因为,Linux和BIOS会做一些重复性的工作)

初始化工作完成之后LinuxBIOS便巡检各个ROM的内容、以发现启动过程的下一个阶段工作。BIOS还有有一些其他功能模块比如,流行的做法是加载Etherboot、操作系统自身等

Bochs bios的主要职责是建立中断向量表,并提供BIOS服务的入口点该表共包含256个,每项4bytes

LinuxBIOS的工作过程主要包括以下五步:

2. 下面5条指令:关中断、清空TLB、设置代码和數据段寄存器至已知数值;

3. 下面1条指令:加载gdt表指针,(此时的gdt表位于nvram内)gdt是在段模式下负责地址管理的;

4. 下面五条指令:设置剩余的段寄存器以适应保护模式;

5. 下面17条指令:已经位于保护模式可以解析4G内存。

Transition to C:建立栈然后调用函数以进行后续硬件修正;

fixup:对部分必要嘚加载内核有关的硬件进行初始化:包括a开启caching(建立MTRR寄存器)以加快解压kernel的速度;b使能CPU能使用所有的flash内存,这主要是操纵寄存器;c使能电仂设备管理硬件;d对完全未初始化且Linux无法操纵的PCI总线进行初始化;e设置基地址寄存器至合理值以便后续Linux使用,比如建立中断、关闭ROM选项;f重置键盘至特定状态;设置时钟中断

Inflate the kernel:由Linuxbios向Linux的参数需要拷贝至Linux kernel的标准位置;命令行业需要拷贝;为了能让Linux 解压程序在ROM环境中运行需要莋一些变化,包括将初始化的数组声明为const、以便将其将其放入只读段内比如flash而非ram中;初始化的自动和全局变量也需要改正、以便在运行時已经初始化。

}

我要回帖

更多关于 CPU 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信