当你坐在电脑前愉快的玩耍时,有没有想过一个细思恐极的问题:如果忽然我的CPU风扇卡住不转了,我的CPU会不会烧掉?
亦或整个主机被融化掉?
值得庆幸的是,聪明的工程师们早已开发出有效的处理器温度监控、保护技术。以特殊而敏锐的“嗅觉”随时监测CPU的温度变化,并提供必要的保护措施,使CPU免受高温下的灭顶之灾。在我们看来,探索这项技术如同开始一段神秘而有趣的旅程,何不与我们同行?
历史建立CPU温度监控系统,首先要选择一种合适的温度测量器件。能够测量温度的器件有很多种,如热敏电阻、热电偶和半导体温度传感器等。电脑中最早使用热敏电阻(Thermal Resistor ,简称Thermistor)作为测温元件,CPU插座下竖立的球状或带状的小元件,就是热敏电阻。但这种接触式测温元件和CPU接触不够紧密,CPU核心(die)发出热量由芯片封装向外部散热,其表面温度和核心温度之间约有15℃~30℃的温差,同时因芯片封装形式不同,及环境温度的不同而难以确定。由于热敏电阻先天不足带来了一个十分严重的问题∶表面温度不能及时反映CPU核心温度变化,用专业术语说就是存在一个时间滞后的问题。在这种背景之下,如果再以表面温度作为控制目标,保护电路尚未做出反应,CPU可能已经命归黄泉了。
在这种情况下,Intel在Pentium Ⅱ和Celeron CPU中植入了热敏二极管(Thermal Diode)直接测量核心温度,开创了半导体测温技术的先河,术语叫做DTS(数字温度传感器,digital thermal sensor)。与此同时,是在CPU内部集成了温度控制电路(Thermal Control Circuit,TCC),由其自身执行温度控制功能。在DTS温度超过CPU的额定核心最高温度(TjMAX,maximum junction temperature)时会引发CPU的降温措施,减慢CPU的执行速度。
那么如何减慢CPU的执行速度呢?不外乎让CPU做做停停磨洋工和做的慢一点两种。在Pentium Ⅱ时同时引入的TM1(Thermal Monitor1)就是磨洋工做法,而在Pentium4引入的TM2(Thermal Monitor2)则是让CPU*慢点。如下图:
可以过热会引发PROCHOT#信号,这时TM1会将一半的Duty cycle关掉,就是干一下,歇一下。与TM1相比,TM2可以提供更智能,更有效的处理器热量功耗的管理方式,在保证处理器基本性能的前提下尽可能在满负荷情况下降低处理器的功耗和温度。它会降低CPU频率,与此同时通过与电压管理模块VR通讯,降低CPU电压,双管齐下保证CPU温度降低。
也许你还有疑问,如果降频还不足以降温呢?毕竟风扇不转后再慢的速度,CPU温度还是会上升啊!下面我们从硬件和软件两个角度来看看原理细节。
原理为什么我们要分成硬件和软件两部分来讲呢?因为依靠单纯的硬件和单纯的软件都有各自的问题:
1. 纯硬件:缺点是软件如操作系统不参与,OS无从知道硬件过热,谁也不希望文件写着写着忽然断电,文件都丢失了。
2. 纯软件:软件容易死掉,假使操作系统宕机,纯软件方法没有办法继续降低CPU温度,会导致CPU烧毁。
只有结合软件和硬件,才能提供保障和有好的用户体验。软件预先报警和阻止温度上升,硬件在软件行动不利后插手进一步阻止温度上升,并在危急时刻自动切断电源。
硬件在Core2后,Intel融合了TM1和TM2,提出了自适应温度监控(Adaptive Thermal Monitor),它实际上是结合了两者。Intel在每个内核和核显上都放置了DTS,并通过TCC随时监控各个DTS的状况,这些DTS的温度值可以通过MSR或者PECI总线进行读取。CPU温度上升后,Intel为保障系统安全设置了两道防线:
1. PROCHOT#
为保证CPU工作在额定最大功率下(thermal design power ,TDP),Intel为CPU设定了额定核心最高温度(TjMAX,maximum junction temperature)。TjMAX是系统可以正常工作的最高温度,它通常是不能修改的。当CPU内任何DTS(数字温度传感器,digital thermal sensor)高于TjMAX后,CPU的PROCHOT#信号线就会被置起。PROCHOT#信号线通常是双向的(在某些低端CPU上是只能in,或out),它可以通知外部EC、BMC等芯片CPU温度过高,也可以用于CPU感知外部某器件温度过高,而一样进入CPU降温模式:减慢CPU的执行速度。
“现在很多笔记本厂家都引入了一种名叫BD PROCHOT(Bi-directional processor hot)的功能来解决高端GPU和CPU的发热问题。其核心原理就是在独显工作的时候,当其温度超过某一阈值,利用PROCHOT#通知CPU降频以达到减少发热的目的。反过来亦然,详情见文后的扩展阅读部分。“
PROCHOT#是CPU的第一道防线,它是温度变高,TCC(温度控制电路,Thermal Control Circuit)反应的结果而不是原因。当这条黄线被跨过后,CPU电压管理模块立刻行动起来:
A. 立刻利用TM2降低频率和电压,直到DTS不再超过TjMAX。因为可以选择的频率和电压有很多档,频率和电压是按照一定算法逐渐降低的,力度也是逐渐加大。
B. 如果温度继续上升到一个Delta值后,TM1也会起作用,删除掉一部分工作周期,让CPU多休息一下。这时实际的效果是TM1和TM2的叠加。
2. THERMTRIP#
为保证CPU不会被毁坏,这是最后一道防线,当发生灾难性温度时(catastrophic Critical Temperature),THERMTRIP#会被置起用以通知外部管理器件,同时CPU电源管理器会立刻强制关闭电源。这是一种类似保险丝的熔断机制,你会看到系统立刻掉电了,只有在系统凉下来之后,你才能恢复上电。
这里需要特别指出的是,主板厂商根据需要,可以在BIOS设定一个比TjMAX更低的温度来规避可能的风险,这个温度同样也可以产生TjMAX一样的相关动作。
好了,CPU有了这两个双保险,看起来性命无忧了,但是我们的数据呢?达到THERMTRIP#可是会自动断电的。这就要靠软件来保证了。
软件要读懂软件需要ACPI的背景知识(ACPI与UEFI: )。
ACPI规定了几个温度阈值,如下图:
BIOS可以设置这些阈值的具体数值,并通过温度中断告诉CPU阈值被突破。操作系统的OSPM在超过_PSV的温度被报告后,会开始利用EIST(P-State,CPU省电的秘密(一):EIST )降频和利用T-State来关掉一部分有效时钟周期,这点和TM1和TM2十分类似,不过是OS发起的。在突破AC1和AC0后,OS通过ACPI提供的方法疯狂提高风扇转速,尽力把情况控制在自己的掌握之中。当温度继续上升,到达_CRT时,OS会立刻发起强制关机,避免数据丢失。通常_CRT温度会小于THERMTRIP#的温度。这种控制温度的方法叫做on demand thermal mode.
这么多的温度阈值,软件方法和硬件方法,他们是怎么协同工作的呢?我们通过两个例子来串联一下所有的知识点。
Happy Ending在我们最初的例子中,你正在愉快的玩着游戏,忽然有什么事情发生了:周围忽然好安静。喧嚣的CPU风扇忽然没了声音。你还在狐疑中为什么这么安静,你的电脑机箱里面正在进行一场温度与时间的赛跑。CPU温度越来越高了,一个个报警器都开始运作了:
1. 温度首先突破软件的_PSV。windows开始通过EIST降频了,你的人物动作变得一卡一卡的,游戏体验越来越糟糕。
2. 温度连续突破_AC0、_AC1和TjMAX。OS试图提高风扇转速,但因为风扇不转,温度继续上升。硬件这次也参与进来了,你的游戏变得几乎无法操作。
3. 突破_CRT。OS开始关机,熟悉的关机画面出来了。你的游戏如果处理了关机消息的话,还有机会存储你的游戏记录。硬盘数据也不会有损失。
Worst Case还是回到我们最初的例子。你正在愉快的玩着游戏,忽然有什么事情发生了:周围忽然好安静。喧嚣的CPU风扇忽然没了声音,更糟糕的是,你的操作系统也忽然死机了,游戏的人物僵住了。
正在你脑子里在考虑是不是某个敌人放出了时间停止魔法,一切都静止了!但你的电脑机箱里面温度却在突飞猛进:
1. 温度首先突破软件的_PSV。因为OS死掉,CPU温度继续升高。
2. 连续突破_AC0、_AC1和TjMAX。OS还是无所作为,硬件Adaptive Thermal Monitor开始发挥作用,降频和抽频,温度上升有所减缓,但因为风扇不转,温度继续上升。
3. 突破_CRT。太可惜了,因为OS死机,没有抓住最后的机会保存你的游戏,你的进度丢失了。
4. 突破THERMTRIP#! 你就听吧嗒一下,你的世界更清净了,电脑直接关机了,电源风扇和显示器都关闭了。
这时如果你不信邪,按下电源键试图再次开机,会发现没有任何反应。你拆开机箱,折腾了半天,徒劳无功,并开始怀疑人生。最后抱着仅剩的一点点希望,你颤抖的手按向电源,同时向上天祈祷。哇,开机了,电脑没坏啊!这时你应该注意到了呆掉的CPU风扇,并意识到CPU温度管理救了你一命。谁说这不是个智能家电,你的眼睛里充满着劫后余生之后感动的泪水!
扩展阅读1. 现在很多笔记本厂家都引入了一种名叫BD PROCHOT(Bi-directional processor hot)的功能来解决高端GPU和CPU的发热问题。其核心原理就是在独显工作的时候,当其温度超过某一阈值,利用PROCHOT#通知CPU降频以达到减少发热的目的。CPU过热也可以让GPU降频。但是很多玩家不爽这个功能,希望能关掉它,有个软件叫做ThrottleStop,它能帮忙。你可阅读这篇文章:Squeeze the most out of your laptop - advanced tweaks (undervolting, overclocking and underclocking)。请注意这么做有一定风险。
2. 需要了解更多相关知识请阅读硬件手册。这里有个
https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/desktop-6th-gen-core-family-datasheet-vol-1.pdf
里面有TjMAX在第6代酷睿中的具体数值。