剖析CPU温度监控技术【转】

sky-heaven 2017-04-21

监控 性能 CPU

转自:http://blog.csdn.net/hunanchenxingyu/article/details/46476545

迄今为止还没有一种cpu散热系统能保证永不失效。失去了散热系统保护伞的“芯”,往往会在几秒钟内永远停止“跳动”。值得庆幸的是,聪明的工程师们开发出有效的CPU温度监控、保护技术。以特殊而敏锐的“嗅觉”随时监测CPU的温度变化,并提供必要的保护措施,使CPU免受高温下的灭顶之灾。在我们看来,探索这项技术如同开始一段神秘而有趣的旅程,何不与我们同行?

       CPU功耗和温度随运行速度的加快而不断增大,现已成为一个不折不扣的“烫手山芋”。如何使CPU安全运行,提高系统的可靠性,防止因过热而产生的死机、蓝屏、反复重启动甚至CPU烧毁,不仅是CPU所面临的困境,也是留给主板设计者的一个重要课题。为此,Intel率先提出了温度监控器(Thermal Monitor)的概念,通过对CPU进行温度控制和过热保护,使稳定性和安全性大大增加。

       但是,由于电脑爱好者和普通用户对CPU温度监控系统了解不多,而且介绍这方面知识的中文资料也难以获得,遇到相关问题时会感到不知所措,所以有必要将CPU温度监控技术系统地介绍给大家。

       一、温度测量:从表面深入到核心

       建立CPU温度监控系统,首先要选择一种合适的温度测量器件。能够测量温度的器件有很多种,如热敏电阻、热电偶和半导体温度传感器等。电脑中最早使用热敏电阻作为测温元件,CPU插座下竖立的球状或带状的小元件,就是热敏电阻(如图1)。

                                                              图1  CPU插槽下的热敏电阻

       热敏电阻(Thermal Resistor ,简称Thermistor)体积小、价格低,使用方便,但用于检测CPU温度时存在着先天不足:

       1.热敏电阻是接触式测温元件,如果热敏电阻与CPU接触不够紧密,CPU的热量不能有效地传送到,所测量温度会有很大误差。有些主板上采用SMD贴片热敏电阻去测量CPU温度,其测量误差比直立式热敏电阻误差更大,因为这种贴片元件很难紧密接触到CPU。

       2.CPU的核心(die)发出热量由芯片封装向外部散热,CPU的表面温度和核心温度之间约有15℃~30℃的温差,同时因芯片封装形式不同,及环境温度的不同而难以确定。至今还没有一种技术能够把热敏电阻埋进芯片内部去,导致现在热敏电阻只能测量CPU的表面温度,而无法测量核心温度。

       总之,热敏电阻不仅测量精度难以保证,更重要的是无法检测到热源的真实温度。

       由于热敏电阻先天不足带来了一个十分严重的问题∶表面温度不能及时反映CPU核心温度变化,用专业术语说就是存在一个时间滞后的问题。因为核心温度变化之后要经过一段时间才能传送到CPU表面。图2反映了采用核心测温方式下保护电路起作用的情况,当核心温度达到CPU极限温度T2时,控制电路及时切断CPU的供电,否则只需几秒钟时间便会到达烧毁温度T3。相比之下,表面温度反应十分迟钝,其升温速度远不及核心温

度,当核心温度发生急剧变化时,表面温度只有“小幅上扬”。Pentium 4和Athlon XP等最新的cpu,其核心温度变化速度达30~50℃/s,核心温度的变化速度越快,测量温度的延迟误差也越大。在这种背景之下,如果再以表面温度作为控制目标,保护电路尚未做出反应,CPU可能已经命归黄泉了。

                                                        图2 表面温度的时间滞后特性

       为了解决热敏电阻无法测量CPU核心真实温度的问题,Intel在Pentium Ⅱ和CeleronCPU中植入了热敏二极管(Thermal Diode,或简称作Thermodiode)直接测量CPU核心温度,开创了半导体测温技术的先河。此后的Pentium Ⅲ和Pentium 4芯片中都植入了热敏二极管,AMD在Athlon和DuronCPU中也植入了热敏二极管。现在许多主板都在监控芯片内设置有热敏二极管,用于检测芯片所在位置的环境温度。

       (小知识∶如何知道BIOS或测试软件显示的CPU温度是表面温度还是核心温度?)

       就目前来看,无论使用Intel还是AMD的CPU,已很少使用热敏电阻测量CPU表面温度了,所以BIOS与检测软件所显示的CPU温度都是指CPU的核心温度。而在Pentium Ⅱ以前,CPU温度通常是指表面温度;Pentium Ⅱ及以后的CPU内都集成有热敏二极管,所测量温度就是核心温度。不过,在过渡期内许多主板上仍在CPU插座下面保留了热敏电阻,这样就同时能检测到两个不同的CPU温度值,通常BIOS中显示的是CPU的外部温度,而检测软件所测试的是核心温度。

       热敏二极管又叫热敏PN结(Thermal PN junction),基于硅基PN结正向电压和温度的关系,其测温范围在-55℃~+150℃之间。与热敏电阻一样,热敏二极管属于变阻器件,其等效电阻值是由其工作温度所决定。

       二、温度监控:从单纯显示到温度监控

      
在热敏电阻为主要测温手段时期,测得的CPU表面温度经放大器将微弱信号放大后经A/D转换,将模拟信号转换成数字信号后再通过数据线发送给BIOS芯片(如图3),数据进入BIOS芯片后,BIOS或监控软件就能在屏幕上显示了。

                                                       图3  温度信号处理电路

       温度显示系统是一种被动的体系,无法对温度进行调节。一旦测得CPU温度超出设定温度,电脑可以发出声光报警,以提醒电脑用户进行人为干预。这种系统用于目前发热量大的CPU基本上没有安全可言。如果散热系统发生问题后,没等用户反应过来,CPU就已经烧毁了。因此,Intel提出了温度监控的概念,让系统具有自我调控能力,一旦

cpu温度超出所设定的极限温度,系统将通过降低供电电压、降低芯片工作频率和加强冷却等手段进行主动降温,甚至自动关机,以确保CPU安全。

       温度监控技术有两个鲜明的特点∶一是CPU内置热敏二极管直接测量核心温度,二是主板上设置监控芯片(如图4)。Intel首先在Pentium Ⅱ及CeleronCPU中植入热敏二极管,并公开了具有温度监控技术的主板设计指南,这一举措得到主板制造商的积极响应,各具特色的所谓的“智能主板”如雨后春笋,一时精彩纷呈。一些有实力的主板制造商还自行开发监控芯片(如MSI的CoreCell等),温度监控技术在短短几年内便有了很大进步,不断完善温度监控功能。

                                                            图4 各种硬件监控芯片

       实际监控系统所采取的主动降温措施中,哪种方法更有实际意义呢?下面我们进行一个简短的分析。

       芯片的功耗(发热量)由静态功耗和动态功耗两部分组成(如图5),静态功耗是因为漏电流引起的。由P=V2/R可知,在芯片等效电阻R不变的情况下,功耗P与电压V的2次方成正比,降低供电电压可以极大地降低静态功耗。所以这些年来芯片工作电压从5V降到3.3V,甚至降到目前的1V以下。我们当然希望这个数值进一步降低,但如果没有k值更高的栅极材料,就无法保证在低电压下完成晶体管开启和关闭动作。所以,降低电压的手段毕竟还是有限的。而且由于CPU内集成的晶体管数量的按摩尔定律逐年增加,众多晶体管并联后使得等效电阻值不断减少,集成电路内层与层之间的绝缘层变薄也使得层间泄漏电流增加,所以CPU的静态功耗一直趋于上升态势。

                                                      图5 芯片工艺进步 泄漏功耗增加

       芯片的动态功耗P = CV2f,其中C表示电路负载大小,V表示供电电压,f为工作频率。可见f与芯片的动态功耗成正比,频率愈高则消耗的功率也愈高。降低CPU的时钟频率虽然是降低动态功耗的有效手段,但是,电脑用户总是希望程序能够执行得更快,通过降低频率来降温的手段是难以被用户所接受的。

       既然降低电压和频率的降温方法都有很多现实困难,所以利用风扇带走热量就成了一种最简便可行的方法。近几年来,CPU风扇的尺寸越来越大、转速越来越高,使得排气量越来越大,这在一定程度上缓解了CPU温度高居不下的问题。但是风扇扇叶尺寸过大、转速过高,又带来了噪音问题,而且环境温度过高也会影响散热效果,所以又必须增加机箱风扇,使得噪音问题进一步加剧。 为了降低噪音和节省能耗,在CPU温度不太高的时候让风扇保持低速运转,在不得已的情况下才提高转速,就成了一个被大家普遍认可的温度控制方案。因此,大多数温度监控系统实际上就是一个“温度-转速控制系统”,很多温度监控芯片也是针对这种需要而设计的。

 

;      三、第一代温度监控系统,并不可靠

      
cpu温度监控系统根据控制电路所处的位置,可分为外部控制型和内部控制型两种基本结构。外部控制型监控系统,现在被称为第一代温度监控技术,它有三种基本存在形式∶一种是采用独立的控制芯片,如WINBOND的W83627HF、ITE的IT8705、IT8712等,这些芯片除了处理温度信号,同时还能处理电压和转速信号(如图6);第二种形式是在BIOS芯片中集成了温度控制功能;第三种形式是南桥芯片中集成温度控制功能。在现行的主板中,三种形式同时存在,如果主板说明书中没有特别说明,我们一时难以判断监控硬件的准确位置。

                                                      图6 第一代热量监控系统框图

       图7是一个以MIC284为核心CPU温度监控电路,该电路只能控制CPU风扇的转速,但它可以将温度信号通过SMBus端口传送给BIOS芯片,以实现更多控制功能。

                                                   图7  一个实际的监控电路

       小知识∶什么是SMBus?

       SMBus是System Management Bus(系统管理总线)的缩写,是1995年由Intel提出的。SMBus只有两根信号线:双向数据线和时钟信号线。PCI插槽上也给SMBus预留了两个引脚(A40为SMBus 时钟线,A41为SMBus 数据线),以便于PCI接口卡与主板设备之间交换信息。

       SMBus的数据传输率为100kbps,虽然速度较慢,却以其结构简洁造价低廉的特点,成为业界普遍欢迎的接口标准。Windows中显示的各种设备的制造商名称和型号等信息,都是通过SMBus总线收集的。主板监控系统中传送各种传感器的测量结果,以及BIOS向监控芯片发送命令,也是利用SMBus实现的。

       监控芯片通常是可编程的ASIC微控制器,应用软件经BIOS将控制命令和数据经接口电路发送给监控芯片,修改其控制参数,一些监控软件正是通过这种途径来显示和调整CPU电压和风扇转速的。

       监控芯片是温度监控系统的核心,其质量优劣对控制性能有很大的影响。但由于监控芯片种类繁多,在功能和性能上有很大差异,给使用和鉴别带来一定困难。

       首先,各种监控芯片在控制功能上有很大差异(譬如某个芯片可以控制两个风扇,多数则只能控制一个风扇),通常引脚数越多,功能越强。

       其次,即便功能相同的芯片,性能上也会有差别,其中一个重要的区别在数据位的不同(譬如MAX6682的分辨率是10位,TC1024为9位,FMS2701为8位),位数

少的芯片输出的数据精度自然也就降低了(8位芯片温度转换误差为±3℃)。另一个性能差别在采样速率上,如果采样速率低(例如FMS2701的采样速率为1s),必然增加信号延迟,无法及时跟踪cpu温度的变化。

       第一代CPU温度监控技术建立在依靠外援的基础上,当CPU过热而超过极限温度时,由系统向CPU发出HLT命令,让系统暂停。因为热量可能导致系统不稳定,如果电脑死机或程序进入死循环,就会失去监控作用,也就无法保护CPU了。同时,由于构成监控系统的元器件较多,战线拉得很长,导致反应速度慢,无法及时跟踪CPU温度变化。而现在的CPU不仅核心温度高,而且升温速度快(最高可达50℃/s),一旦灾难来临必有“远水不解近渴”之忧患。

       四、第二代温度监控技术,Pentium 4烧不死的秘密

      
为了弥补第一代温度监控技术的缺陷,提高监控能力,Intel开发了第2代温度监控技术。

       第二代温度监控系统的一个突出特点是在CPU内部集成了温度控制电路(Thermal Control Circuit,TCC),由CPU自身执行温度控制功能,同时,CPU内设置了两个相互独立的热敏二极管,D1是本地热敏二极管,所测信号提供给TCC,D2则为远端热敏二极管,其测量结果用于实现主板控制功能及显示核心温度,如图8。

                                                    图8  第2代温度监控系统框图

       我们先看看TCC是如何发挥作用的。TCC定义了两种工作状态:激活态和非激活态。TCC的状态与PROCHOT#信号的电平高低相对应,PROCHOT#为低电平时,TCC为激活态,否则处于非激活态。当CPU核心温度达到警戒温度(Warning Temperature)时,温度检测电路将PROCHOT#信号置为低电平,从而激活TCC。TCC激活后,采取“抑制任务周期”(Throttle duty Cycle)的方式(如图9),使CPU有效频率下降,从而达到降低功耗的目的。当CPU的温度降低后(低于警戒温度1℃以上),TCC回到非激活态,CPU恢复到“标称频率”。可见,TCC实质上是一个由CPU温度控制的频率调节器。

                                                          图9  TCC激活时,任务周期减少

       如果发生灾难性冷却失败的情况,使CPU温度超出极限温度(thermal Trip),TCC将设THERMTRIP#信号为低电平,BIOS芯片检测到这一变化后,直接关闭CPU时钟信号,并通过PWM控制器封锁VRM向CPU供电,直到温度降到极限温度以下,RESET#信号有效,THERMTRIP#才会重新变为高电平,系统才能继续工作。否则THERMTRIP#总为低电平,

系统就停留在暂停状态。“当cpu离开风扇的时候”,Pentium 4CPU之所以能够安然无恙,答案就在这里。

       小知识∶警戒温度与极限温度有什么不同?

       CPU警戒温度(warning temperature)和极限温度(thermal trip)都是指核心温度,但它们所代表的意义有所不同。警戒温度是能够保证CPU稳定运行的温度;极限温度也叫最高核心温度(Maximum die temperature)或关机温度(Shutdown temperature),是防止CPU免于烧毁的温度。

       各款CPU的警戒温度和极限温度值是制造商根据CPU的制造工艺和封装形式及封装材料确定的,并在技术白皮书中给出。为防止用户自行设定而带来危险,Intel已将Pentium 4CPU的警戒温度和极限温度写入TCC内的ROM单元中,用户无法修改它们。

       现在有不少主板的BIOS中也可以设置警戒温度和关机温度,不过可选的数值都比较保守,例如警戒温度最大值为70℃、关机温度为85℃,这是远低于TCC内设定值的。

       兼顾性能和可靠性是第2代温度监控技术的优秀之处。由公式P = CV2f(其中C是等效电容容量;V是工作电压)可知,频率f与能耗P之间是一种线性关系,降低频率是减少发热量的有效途径。这种通过降低有效频率实现降温的措施,比之以前那种关断时钟信号的做法显然要聪明一些,避免了因强行关闭CPU,而导致数据丢失的情况。

       Pentium 4CPU中的PROCHOT#引脚还有另外两个实用的功能。其中的一个功能是向主板发出报警信号——PROCHOT#引脚为低电平时,说明CPU核心温度超过了警戒温度,此时CPU工作在较低的频率上。如果超出警戒温度(电脑用户利用工具软件可以获得这个信息),应及时检查散热器安装是否妥当,风扇转速是否正常。

       PROCHOT#引脚的另一个功能是可以保护主板上的其他元件。PROCHOT#引脚采用双工设计——信号既可以从这根信号线出去,也能进得来。主板设计者可利用这一特性为供电模块提供保护,当供电模块的温度超出警戒温度时,监控电路输出一个低电平到PROCHOT#引脚以激活TCC,通过降低CPU功耗来达到保护供电模块的目的。

       可见,Pentium 4CPU不仅能自保平安,还能对供电电路提供保护,细微之处体现出设计者的良苦用心。同时,将TCC集成到CPU内不仅对自身更加安全,也简化了主板设计,降低了主板制造成本。可以说,第2代温度监控技术是一个给CPU制造商与下游主板厂商带来双赢的技术。

       小知识∶如何设置BIOS中的“Processor speed throttling”?

       Pentium 4主板的BIOS中通常有“Processor speed throttling ”之类的选择项,用于选择超警戒温度后CPU任务周期(duty cycle)占全部周期的比例,在CPU频率不变的情况下,这个比例越大说明CPU的工作效率越高。其中有“Automatic”和“On demand” 两种选择,“Automatic(自动)”表示任务周期的占空比为50%,也就是说比正常频率低一半;“On demand(按要求)”下面有12.5%、25%、…、87.5%等多种选择,选择的数值越小,则任务周期的比例越小,降频幅度也越大。

       五、温度控制,仅靠降频是不够的

      
以降低频率为手段来保障CPU安全,是第2代温度监控技术的主要思想。但是这种技术也存在明显的缺陷:当温度超过警戒温度时,虽然可以勉强运行,但系统整体性能却随着cpu频率的下调而降低到一个很低的水平。假如一个3.8GHz的CPU只能长期工作在2GHz的速度上,这等于让用户花钱买了奔驰,却只能当奥拓使用。如果真是这样的话,第二代温度监控技术就算不上成熟的技术,而只不过是个苟且小计。

       在系统性能不受损失的前提下保证CPU安全稳定运行,这才是我们希望看到的结果。事实上,影响CPU温度的因素,除了频率外,还有CPU供电质量和散热效率。所以,Pentium 4温度监控系统采取了全面的监控措施,把频率、电压和散热三个控制参数视为保障CPU安全运行的三驾马车,如图10。 

点击看原图

                                                       图10  Pentium 4CPU温度监控方案

       在供电方面,单纯采用多相供电结合大电容滤波的传统方法已难以满足Pentium 4(Prescott)CPU的要求,为此,Intel制定了新的电压调节标准VRD10,将VID(电压识别码)从VRM9的5位升级到6位,使电压调整精度更高。VRD10还首次公开了Dynamic VID(动态电压识别码)技术,可根据CPU负荷变化随时调节供电电压,见缝插针地降低功耗。此外,Dynamic VID技术还能限制电流突变,避免CPU偶然烧毁的可能。有关Pentium 4CPU的最新供电规范,请参阅本刊2004年第13期“全面掌握Prescott主板最新供电技术”一文。

       在散热方面,Intel在Pentium 4 processor Thermal and Mechanical Design Guidelines(Pentium 4CPU热量和构造设计指南)中要求,CPU的散热器必须具有足够强的散热能力,以便及时将CPU所产生的热量带走。同时要求风扇能够输出转速信号,以实现对风扇的监控,防止因风扇停转而导致CPU过热的情况发生。由于CPU所产生的热量因工作负荷变化而有很大变化,因此也要求风扇转速按需要自动调节,以降低不必要的能源消耗和噪音污染。

       小知识∶如何判断风扇是否具有测速功能?

       有些电脑BIOS中显示风扇转速为0,而实际上风扇却在正常旋转,通常是因为风扇没有测速功能。风扇是否具有测速功能,可以从风扇连线的数目来区别,具有测速功能的风扇至少有三根线,通常红色线为+12V,黑色线为地线,黄色线或白色线就是测速信号线。如果还有第四根线——一根蓝色的信号线,那是用于变频调速的脉宽调制信号PWM,如图11。

                                                          图11  CPU风扇插头引脚定义

       下面以ADT7436监控芯片为核心的Pentium 4CPU温度监控系统实例进

行解剖,如图12。先看看风扇的情况,图中TACH是风扇电机速度信号,监控电路使用PWM(Pulse Width Modulation,脉宽调制)控制风扇电机的转速,从PWM信号可以看出三只风扇都是可以调速的。

                                                           图12  温度监控系统实例

       北桥芯片是cpu与BIOS芯片进行数据交换的桥梁,监控芯片与北桥芯片三个信号中,SDA是SMBus双向数据线,它既可以将电源电压、CPU核心温度、风扇转速和环境温度等全部监控信息发送给BIOS实现进行显示,也可以由BIOS将来自系统的命令发送给监控芯片(前面已经介绍过,监控芯片是可编程的ASIC,所以完全有能力处理这些来自系统的命令),实现控制参数的修改或调节功能;SCL是来自系统的时钟信号,这是监控芯片与北桥芯片以及监控芯片与CPU之间进行同步通信的必要条件;SMBALART#在此定义为监控芯片通过SMBus接口发往BIOS芯片的报警(ALART)信号。

       监控芯片与CPU之间通过4个引脚进行联络:CPU将电压识别码VID发送给监控芯片,由它可算出CPU理论电压值(来自电源模块的Vcore才是CPU的实际电压值);D2+和D2-是CPU核心温度信号(“D”在此表示Diode,而不是Data),当CPU温度超过警戒温度时,CPU通过PROCHOT#信号通知监控芯片,而当电源模块电流超标时,监控芯片将PROCHOT#信号置为低电平,激活CPU内的TCC,对CPU和供电模块进行降温。这些控制功能完全体现了第2代温度监控技术的特点。

       六、现有技术并不完善

      
CPU温度监控系统在电脑中虽然毫不起眼,人们很少去注意它,但它对整个系统来却起着十分重要的作用,像一位藏在后面的天使,默默地守护着我们的电脑。从1993年Intel推出第一款奔腾CPU以来,十年之间主频提升了数十倍,期间CPU技术的发展已不再是简单的频率提升,系统设计者必须在性能、耗电量、噪音和热量四个因素之间进行综合平衡。正因为如此,温度监控技术经历了从无到有、逐渐成熟的发展过程,从一个侧面见证了CPU的发展史。据说即将推出的Pentium 4 6XX系列CPU将集成Enhanced SpeedStep技术,CPU自身温度监控功能得到强化。

       我们也应看到,现有的监控技术水平还远没有达到理想的状态,在温度测量精度、监控系统的及时性和降温技术的有效性等方面还有待提高,电压、频率和散热三个子系统目前处于各自为战的状态。未来的温度监控技术必然朝着更精确、更有效、更智能的方向发展。

【作者】张昺华
【新浪微博】 张昺华--sky
【twitter】 @sky2030_
【facebook】 张昺华 zhangbinghua
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
登录 后评论
下一篇
corcosa
10386人浏览
2019-10-08
相关推荐
常见BIOS设置解析
1635人浏览
2017-02-19 22:57:29
BMC之ipmitool 命令收集
1006人浏览
2017-11-13 16:57:00
ipmotool
443人浏览
2014-01-11 18:13:00
BMC之ipmitool 命令收集
652人浏览
2017-11-12 02:33:00
Ubuntu环境下检查CPU的温度
652人浏览
2017-08-08 10:26:00
0
0
0
620