PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

【整理】AMD—CPU的测温机制简要探究

[复制链接]
跳转到指定楼层
1#
lk111wlq 发表于 2011-6-8 22:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:9400|回复数:9
本帖最后由 lk111wlq 于 2011-11-19 15:56 编辑

夏天到了,随着温度升高,各种问题也随之浮现。最典型的莫过于,因温度升高,原先能稳定运行的PC(主要是CPU),会遇到蓝屏、死机,在便携电脑上(主要是显卡)则更加明显,相信做过相关灰尘清理及散热更换的人都深有体会。
那么,我们到底如何知道,我的PC、笔记本的CPU温度,究竟到了多少呢?要了解这个,我们首先要知道一下CPU温度监测的原理及机制。
================================================================================
测量电压可以用万用表这样简单和直接的办法,可是CPU温度怎么办?或许有人说,可以用温度检测软件查看。但在以前,绝大多数的软件都是根据主板插槽上的温度传感器来判断各元件的温度,遗憾的是,这些传感器对温度的精确测定效用甚微,只能达到大致判断CPU是否过热的程度。
  同时,厂家进行温度监测的方式,也造成了精确性的问题。有些主板使用一个安置在CPU插座内部的测温二极管。这个二极管要直接接触CPU底部来达到测温的目的——这也许是最不准确的测温方式了。

  好在这种拙劣的方式不再常用(实际上除了那些拥有2年以上的PC,很难再看到这样的方式了)。从P4/Athlon64开始,现代CPU使用内部安置的温度二极管,这种方式相对精准得多了,可是仍然有一些因素干扰信息的精确读取。这些因素包括信号在到达Super I/O芯片被采样前必须通过的那些电路和部件以及温度二极管本身。

另外一个因素就是传感器所处的位置。在一个CPU核心上有若干部位产生热量,有些部位会比另一些部位产生更多的热。如果我们把一个传感器安置在CPU核心一个并不产生大量热的位置的话,这样我们测到到的温度会和把传感器安置在CPU核心最热的部分完全不同。

  Intel和AMD双双意识到测温问题解决的并不好,于是用到了一个新的方式。这个方式仍然包括热敏二极管,但是热敏二极管是一个模拟器件,所以读数必须被转换成数字数据。这个工作由ADC(模数转换器)来完成。

一个热敏二极管加上一个模数转换器就构成一个被称为Digital Thermal Sensor DTS(数字温度传感器)的部件。如今的大多数测温软件,都是基于DTS来进行温度监测的。理论上来说这个DTS的工作方式十分简单:一个CPU核心上的电路从热敏二极管上采样然后把数字数据输出到CPU一个特定的寄存器中,从而任何程序都可以随意读取该数据。
      
这种方式的长处就是所有工作都在CPU内部即时完成,和易于被干扰和衰弱的模拟信号相比,数字信号传输的时候不会损失精确性。这个系统另一个优点就是你可以在一块芯片上集成若干个传感器。Intel和AMD都在CPU的每一个核心上集成了一个DTS,这意味着你可以看到你每一个核心的温度。

例如当你在双核CPU上运行程序并把该程序的相关性设定到某一个核心的时候,你会看到只有一个核心会升温并且会升得非常之快。当然另一个核心温度也会上升,毕竟两个核心共处在一个硅片上,只是不会上升到全速工作的核心那么高罢了。
 
Intel 和AMD都使用DTS来监测过热并通过“throttling”或者完全关闭系统来保护CPU, 用何种方式由不同的极限温度决定。

第一个官方宣布使用DTS的是Intel在Core Duo (Yonah)系列,随之延续到Core 2 Duo系列。AMD官方宣布从Rev. F Opteron 开始支持DTS。有趣的是通过一些测试,DTS早在AMD 64芯片就已经存在了。

Intel指出他们的DTS被安放在CPU核心最热的部位。AMD虽然没说明他们把DTS放在了哪里,但可以肯定不是在温度最低的部分。

通过无数的测试发现,对于Intel CPU,DTS报告的温度显得非常的合理。Intel的白皮书指出他们的CPU在出厂之前DTS都通过了严格的校准。当然,这个步骤可能需要花费大量的资金、人力,毕竟所有CPU不可能完全相同,其温度也就不会是完全相同的。

在AMD的Rev. F芯片上,DTS的温度报告也显得较为准确,但是从各种途径的报告和从AMD白皮书上了解到的来看,AMD的CPU在出厂前DTS没有经过同Intel一般正确的校准。这也是造成如今AMD平台的测温数据无太多实际意义的原因之一,至于具体的原因(成本、技术或者其他因素),就无法轻易得知了。

================================================================================


在DTS测温中,有两个十分重要的数值你一定要了解:

  1、TCaseMax:这个值表示能使CPU 100%稳定运行的在核心表面正中或者是IHS (就是cpu的金属顶盖)正中的最高温度。
  2、Tjunction (or TjunctionMax) :这个值表示在核心和核心所在PCB板之间所容许的最大温度,通常这个值要远高于TCaseMax.


  很重要的一点就是在解读DTS温度时不要混淆这两个值。当DTS报告一个比TCaseMax还要高的温度时并不意味着CPU处于危险状态。因为TCaseMax是CPU所能忍受的最高外部温度。可是如果CPU达到了Tjunction,你就要小心了,这是一个你不想让CPU超过的温度。


  DTS令人吃惊的是它用起来很简单。传统的Super I/O芯片要求你对不同的I/O芯片进行编程,因为他们所用的地址和算法各不相同。


  使用DTS的话,你只需要读取MSR( for Intel ) 或者 NB 寄存( for AMD ), 简单的计算一下就成了,下面是公式:


  AMD_CoreTemp = DTS_Value – 49
  AMD的DTS数据是8位,可以理论上报告-49 – 206摄氏度的范围。

  Intel_CoreTemp = TjunctionMax – DTS_Value
Intel 的DTS数据是7位,可以报告Tjunction和Tjunction往下126度。如果Tjunction 是85度(Conroe),则理论值下限就是-42度。可是从没见过哪个CPU能测量出低于零摄氏度的温度。这些CPU的DTS看来在某些温度点就停止继续下探了。


除了TJMax,DTS传感器本身也有很多问题。CPU核心温度越低(也就是距离TJMax越多),传感器的精确度就越差。在待机状态下,这个误差能在10°C左右。



传感器误差示意图



大量收集用户手中CPU的各种温度监控参数,再进行统计分析,对测温软件进行优化改进后,将大大减少测温误差,但很少有用户愿意反馈这些信息,而少部分反馈回来的信息,也基本无用,因为这些参数受到了太多外界因素的影响(环境、平台等)。所以通常情况下,我们所做的温度对比几乎都不能叫公平,因为中间会有平台差别、机箱情况差别、室温差别以及CPU传感器本身的差别等因素。

在Intel CPU中TjunctionMax 不难被测到,在AMD Rev. F CPU中,TCaseMax可以被检测到。可惜的是,如何检测Intel CPU 的TCaseMax, 或者AMD CPU的TjunctionMax (这个值更为重要),还未能被顺利得知。


同时,对于不同测温软件来说,由于其设计原理、应用方式不同,对于温度的监测误差也是参差不齐的。

以EasyTune6来说,当我设定0-90℃转速10%,风扇不转,一直增加到25%,风扇才会转动。那么,当我把风扇的控制曲线最高温度点100℃时的转速设置为低于25%,是不是风扇就无法启动呢?事实是相反的。

由图中的温度监控及风扇转速监控,多次测试表明,当温度到49℃左右时,风扇即启动。

随后稳定在400rpm左右




那么,问题就来了——为什么AIDA64温度显示才56度,ET6里设置低于90℃时,风扇转速为10%,不会启动,可明明风扇就是启动,并稳定在了400RPM左右。退一步说,就算温度到了100,也不过按20%转速,风扇依旧不会转动,可为什么它就是转了?到底ET6监测到的温度是多少?
限于本人知识水平有限,无法得知其中的具体原因了。但从这个实例中,我们对软件测温的准确度,可以有一个大概的了解。


十分遗憾,AMD平台的使用者,在AMD cpu的详细测温资料没有公布,或测温软件没有改进之前,将无法准确得知CPU的核心温度。况且,AMD的具体测温方式及其机理,并没有被确切得知,本文的所有论据都是基于DTS测温以及网络搜集的资料为前提下的个人判断,存在谬误也是必然的。而从推土机的AOD测温情况看来,测温不准的问题目前仍没有得到较好的改善。若对于要进行散热器性能测试的人来说,这实在不是个好消息。

总而言之,AMD平台的用户,在能够稳定使用的前提下,对于监测到的CPU温度,也不用太过于计较。正常使用下,几乎不可能将CPU损坏,而OC将CPU烧坏的例子,也是较为稀少的,OC需要的散热投入,自然也就是必备前提了。当然,这并不代表我们可以不重视整个平台的散热。


上图是故意拔掉风扇拷机,认为造成CPU温度过高,显示数值达到了73℃的高温,使得强制降压降倍频。无论TJmax为多少,这也实在不是个安全的温度。此为测试过程中的插曲,请勿轻易模仿。


这个夏天,你蓝屏了吗?


关键词: DTS(数字温度传感器),TjunctionMax,AMD
结论:AMD平台的测温不准,能稳定运行就好

文中如有缺漏或谬误,欢迎指正。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1活跃度 +50 收起 理由
overthink + 50 精品文章

查看全部评分

2#
lk111wlq  楼主| 发表于 2011-6-8 22:58 | 只看该作者
自己沙发~   坐等观众及大神指教~
3#
James007ss 发表于 2011-6-8 23:02 | 只看该作者
码字辛苦,其实很多人不明白测温的奥妙。
4#
joekoo 发表于 2011-6-8 23:26 | 只看该作者
好长...顶完再看...
5#
SSD考察团 发表于 2011-6-8 23:36 | 只看该作者
好像在哪看过
6#
lk111wlq  楼主| 发表于 2011-6-8 23:40 | 只看该作者
好像在哪看过
SSD考察团 发表于 2011-6-8 23:36


   搜集资料,有看到相似的也不奇怪
7#
ggzaiye 发表于 2011-6-9 00:02 | 只看该作者
全面的分析
8#
royalk 发表于 2011-6-9 00:11 | 只看该作者
风扇PWM那里,我个人认为是ET6的调控不准,实际上PWM信号不能完全切断电源。。可能你换个风扇又是另外一个情况的,因为起转电压不一样
温度越低误差越大,这个我是深有体会了,开槽的920探头测得的温度比起核心温度来总是大幅偏低的。不仅是TJMAX计算方法的问题,我觉得每个CPU的传感器信号都有差异。。。
9#
overthink 发表于 2011-6-9 09:04 | 只看该作者
稳定使用最重要,软件报的温度仅做参考{:1_324:}
10#
donnyng 发表于 2013-1-23 09:01 | 只看该作者
royalk 发表于 2011-6-9 00:11
风扇PWM那里,我个人认为是ET6的调控不准,实际上PWM信号不能完全切断电源。。可能你换个风扇又是另外一个 ...

真的每片都有差异...
760和x3440温度,待机的时候,感觉的都会稍微高点.
现在这片357k待机能比室温低, 直接制冷了...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部