登录注册.
高级搜索  

作者 主题: 22--AMD CPU的测温原理(修订) <2013-1-6>  (阅读 1232 次)

0 会员 以及 1 访客 正在阅读本主题.

gogochen

  • Administrator
  • Hero Member
  • *****
  • 帖子: 587
22--AMD CPU的测温原理(修订) <2013-1-6>
« 于: 九月 12, 2014, 03:12:41 下午 »

AMD CPU的测温原理(修订)

dongfang-M 发表于 2013-1-6

有些AMD平台的DIY客户,很是纠结CPU的温度,感觉一些“测温”软件显示的温度不准确。
笔者在这里就AMD的CPU测温技术作一点解释和说明。

一、AMD的 CPU测温技术

AMD一直没有公开他的CPU测温技术。只能根据一些零星的资料透露的信息综合起来看,AMD CPU测温技术的历史如下:

1、早期的AMD CPU(K7和K7之前),都是采用主板CPU插槽下面的温度探头来测量温度,这一点可以从那个时代的K7主板CPU插座里面的热敏电阻证实。


其实早期的CPU,无论是Intel还是AMD,CPU内部都没有温度监控功能,大多数情况下,是主板CPU插座内的一个热敏电阻来监视CPU温度,温度读数是由监控芯片根据热敏电阻的阻值变化计算得出。热敏电阻是接触式测温元件,如果热敏电阻与CPU接触不够紧密,CPU的热量不能有效地传送到热敏电阻,所测量温度会有很大误差。此外,CPU核心发出的热量由芯片封装向外部散热,CPU的表面温度和核心温度之间约有15度~30度的温差,结果因芯片封装形式不同,以及环境温度的不同,而让真实的CPU温度难以确定。

2、到了K8时代,CPU开始逐步内置温度传感器。早期的AMD CPU温度传感器的信息,是由CPU汇报给BIOS,通过Windows 2K/XP管理系统的核心(WMI)来获取,并由软件体现出来。由于WMI只是操作系统层面的东东,所以准确性以及时效性都很差。此时的CPU温度数据一旦变化,必须要等到系统某些信息发生变化时,数据才会刷新。


3、AMD官方宣布从F 版的Opteron 开始支持DTS。其实早在AMD 64芯片就已经有DTS存在了。
所谓DTS(数字温度传感器),就是一个热敏二极管加上一个模数转换器就构成。理论上来说这个DTS的工作方式十分简单:一个CPU核心上的电路从热敏二极管上采样然后把数字数据输出到CPU一个特定的寄存器中,从而任何程序都可以随意读取该数据。这种方式的长处就是所有工作都在CPU内部即时完成,和易于被干扰和衰减的模拟信号相比,数字信号传输的时候不会损失精确性。

DTS的另一个优点就是可以在一块芯片上集成若干个传感器。AMD说在CPU的每一个核心上集成了一个DTS,这就是说可以看到每一个核心的温度。除了核心里面的DTS外,在CPU整体封装里面还有一个DTS,这个DTS检测的是CPU的整体温度。


这是AMD官方文档中说到的放置在内核的DTS,不过AMD在这里没有称之为DTS,而是叫做Thermal Sensor。


这是AMD官方文档中说到的CPU芯片内的DTS,AMD称之为On-die thermal diode。


Die是芯片的意思,On-die就是放在芯片里 On-die thermal diode,就是放在CPU芯片里的热敏二极管,也就是温度探头。这个On-die thermal diode才是测温的硬件,是一个温度计。
因此我们从一些软件中可以看到AMD处理器的温度有中央处理器(CPU)温度,还有CPU的几个核心温度。


二、传送温度数据的接口TSI

DTS探测到的温度数据要通过一个通道传送出来,或者说存放在寄存器通过接口便于通过电路传送出来。
AMD把这种接口称之为TSI(Thermal Sensor Interface),英特尔把这种接口称之为PECI(Platform Environment Control Interface,平台环境控制接口)。TSI也好,PECI也好都是一种专门用来传输CPU温度的数字接口。
由于温度主要是用来控制CPU负载和CPU过热保护的。保护机制还是要通过IO芯片和BIOS操控,CPU温度需要送到传统的IO芯片。

温度数据传送到IO芯片的途径如下。


三、IO芯片的温度数据

IO芯片获取CPU温度数据一是用来调控风扇转速,也叫做智能调速,二是保护CPU,当CPU温度达到保护温度的时候执行关机。
由于IO芯片有TSI和D1+二种途径获取CPU温度,主板厂商可以采用TSI途径,也可以采用D1+的途径。
TSI是CPU温度数据接口,可以随时从CPU的TSI接口读取,不需要寄存器存放。
D1+是传送到IO芯片的温度数据寄存器。IO芯片一般有三个温度数据寄存器。各种IO芯片的定义不一样。

F71889的定义如下图。


三个寄存器存放的是二进制补码,可以代表的温度是-40---127摄氏度。如果线路设计是开路没有数据链接。那就是10000000,也就是128度。


IO芯片的三个温度寄存器定义也不是永恒的,主板厂商也是可以更改的,比如可以自己定义D2+是CPU温度。

四、温度显示软件的张冠李戴

用户希望知道他使用的CPU温度是多少,是不是很高,特别是出现故障的时候想知道是不是与CPU过热有关。于是产生显示温度的软件,这些软件被称之为“测温软件”。其实软件是不能测温的,只是通过温度数据接口找到温度数据,并显示出来。温度显示软件可以从IO芯片获取CPU温度数据,也可以从TSI接口获取。

IO芯片有三个温度寄存器,其中哪一个是CPU的?每种IO芯片有自己的定义,主板厂商还有可能随时改变IO芯片的定义。有的时候还可能不用IO的温度寄存器。这样就给实名显示温度的软件带来不便。搞不好就会张冠李戴。

请看AIDA64的2个版本在同一台电脑上显示的CPU温度。
2.60.2100版本显示中央处理器(CPU)温度是56度。


2.70.2200版中央处理器(CPU)温度是13度。


所以,当感觉软件显示的温度不正常的时候,不一定是CPU温度不对,可能是软件张冠李戴。

CPUID这款软件不是显示实名温度,只是把温度显示出来,显示出温度的来源,但是这些温度是什么温度?核心温度?芯片温度?
这个软件不会说明,因为搞不好就会弄错。当感觉某个软件显示的温度不对时,可以用这个软件看看,这个温度取自哪里。


五、核心温度的低温

从上面AIDA64显示的核心温度看,9度?是不是有点太低?是的AMD CPU的核心温度偏低,这是因为AMD 的多核CPU是把多个核心做在一个芯片,核心的热量迅速传向芯片。所以CPU芯片的温度就明显高很多。

核心温度不是固定不变的,观察核心温度,最好使用Core Temp这款软件。这是专门显示核心温度的软件,而且读取核心温度特变快,可以显示出核心温度的瞬间变化,并记录最大和最小温度。

从这个图片就可以看到,最大21度,最小1度。


六、FM2主板CPU测温的变化

新的FM2主板的CPU测温采用了新的设计。就是在CPU插座的中心放置了一个热敏电阻,侦测CPU的温度,也就是又回到原始的CPU测温方式。


这是测温电原理图


BIOS显示的温度


这是测温软件显示的CPU温度。


热敏电阻侦测的CPU温度数据传送到IO芯片的TMPIN0寄存器里。测温软件从TMPIN0寄存器读取温度数值。AIDA64软件显示的“中央处理器(CPU)”温度鲁大师显示的CPU温度,都是从TMPIN0寄存器读取的。CPU ID显示的TMPIN0是CPU温度,TMPIN2是主板温度。
已记录