POPPUR爱换

标题: 从Intel CPU测温原理谈温度监控 [打印本页]

作者: nfsking2    时间: 2009-5-17 14:12
标题: 从Intel CPU测温原理谈温度监控
本帖最后由 nfsking2 于 2009-5-17 14:19 编辑

夏天马上就到了,相信很多人在超频过程中,甚至常规使用时都很注重CPU温度的监控。
从目前的情况来看,即使同为45nm的CPU,在相同频率、相同电压下,温度相差都可能十分大。这到底是所谓的“测温bug”还是CPU核心本来就这么热?

下面就从Intel CPU的测温原理来看看温度监测“不正常”的原因。PS:此处只讨论Intel的45nm CPU,由于AMD的测温原理跟Intel有所不同,因此,如果大家需要了解AMD CPU的相关情况,我会考虑重新开帖。

早期的CPU并不具备测温功能,而从Socket插槽开始,主板通常会附带一颗温度探头,位于CPU与主板之间。但这样所测得的温度几乎不具备任何意义,因为真正发热的是CPU Die,于是,从PD开始,Intel引入了一种新的测温机制:digital thermal sensor (DTS),数字温度传感器。

DTS的工作原理是:Absolute Core Temperature = TJMax - DTS(实际温度=TJMax-DTS)。因此,CPU实际测得的数值并不是温度,而是DTS,要监控CPU的实际温度,就必须获得CPU的TJMax值:CPU能承受的最高温度。而Intel官方在TJMax上一直含糊不清,只是在去年的IDF大会上,Intel公布了45nm处理器的TJMax资料,但并不十分准确。因此,目前的CPU测温,可以说是100%不准确的,只能作为一个参考。

这实际上不能算是Bug,因为每颗处理器的核心不可能完全相同,因此TJMax值也肯定完全不同。Intel不可能在每颗CPU出厂之前都进行测试和校正,只能根据ES版CPU来制定一个大概的TJMax值。

另外一个重要参数是Tcase。Intel所建议的Tcase温度测试部位在IHS(Integrated Heat Spreader)中央,也就是通常所说的CPU铜盖中央。由于测试CPU表面的温度要比测试核心温度容易得多,因此,比起核心温度,监测所得的CPU表面温度更有意义。

下面是CoreTemp的作者给我的邮件全文:


H ello from Canada,

When running a high stress program like Prime 95 Small FFTs, the core temperature is about 25C hotter than the temperature at the center of the IHS or heat spreader on top of the cores.  This is where Intel recommends that the Tcase temperature should be measured.  When you are using a large air cooler, the side or top of the cooler will not feel very hot to the touch even when the core temperature is very high.  It's impossible to accurately judge the core temperature based on how hot the heatsink feels because the heatsink may only be a few degrees greater than body temperature.  It will feel warm but that's about it.  The heat dissipates very rapidly with some of the big, efficient air coolers that are available these days.

There are a lot of problems with the sensors that Intel uses in all of their Core 2 based 45nm CPUs.  There are a lot of variables which makes it difficult to do a fair temperature comparison between two different CPUs.

The first problem is that Intel has never properly documented TJMax.  They released some information about TJMax last year at their IDF conferences but some of the information released does not seem very accurate at all.  They also didn't include details like how much error is in their TJMax specification number.  With 45nm there seems to be as much as 10C of variation in TJMax and that's from one core to the next on the same CPU.  Without trying to do some sort of calibration to minimize this amount of error, accurate temperature comparisons are difficult.

The next problem is slope error in these sensors.  The futher you get away from TJMax, the more these sensors will move at a rate either faster or slower than changes in the actual core temperature.  At idle, this can result in another plus or minus 10 degrees of error.  Intel has never documented the size of this error.

You can have two CPUs that have the exact same part number but one might read too low at idle while the other one reads too high.  An actual core temperature of 40C might be displayed on one CPU as 30C and another CPU might show that as 50C even though the core temperature is exactly the same on both CPUs.  There are methods I've come up with to try and calibrate these sensors but very few users bother to do this.  Most temperature comparisons I read about are meaningless because of the amount of possible error.

The next problrem is sticking sensors at low temperatures.  It's possible for a sensor to get stuck at 50C and it will keep reporting this number even as the actual core temperature gets cooler.  This can make users think that their CPU is running "hot" but it might just be more sensor problems.

What I found during testing was that if you had sensors that weren't sticking and if you calibrated them then there isn't a big difference in the core temperature at idle between a wide variety of Intel's CPUs; Dual and Quad cores.  
At full load, if you have two 45nm dual Core CPUs and run them on the same motherboard, with the same heatsink and fan and at the same core voltage and at the same speed with the same load; there's not a lot of difference in temperature either.

I think many users try to make temperature comparisons that are not very fair and don't take in to consideration the significant problems these sensors have.  You have to do a lot of work to try and make a fair comparison.  Different users with different cases and air flow and room temperatures and 101 other things rarely equalize all of these factors and variables for a fair comparison.
I hope this makes some sense.  If you don't understand something or don't agree or need some more information then write back.

Here's the latest version of RealTemp I'm working on:
http://www.fileden.com/files/2008/3/3/1794507/RealTempBeta.zip

As long as your computer is stable at full load then core temperatures aren't too important.  I've learned to run Intel's CPUs as cool as possible for maximum performance and not to worry too much about exact temperature numbers because the sensors are too inaccurate.


在运行Prime 95或者OR这类FFTs测试软件时,CPU核心温度通常大概比表面温度高25度左右。注意:此时说的是满载温度,并不是待机温度)。当使用底部面积较大的散热器时,由于散热器与CPU接触面积较大,并且鰭片数量较多,因此即使CPU表面温度非常高,也不一定能用手感觉出来(实际上,即使温度很高,鰭片散热器温度也只会比体温高出几度,因此靠触摸等方法判断温度高低完全没用)。

而Intel在45nm CPU上使用的传感器也存在很多问题,所以单纯对比两个45nm CPU的温度也毫无意义(比如用E5200@4G的温度与E8400@4G的温度进行对比是完全错误的)。首先是前面提到过的TJMax,所有CPU的TJMax都不相同,Intel也没给出TJmax的误差范围。从CoreTemp作者对45nm CPU所进行的测试来看,即便是相同型号,相同条件下的两个CPU,TJMax的差距也能达到10°C以上。除非能进行大量的校正工作来缩小误差范围,否则要准确测得核心温度非常困难,这并不是制造工艺问题,也不是Bug。

除了TJMax,DTS传感器本身也有很多问题。CPU核心温度越低(也就是距离TJMax越多),传感器的精确度就越差。在待机状态下,这个误差能在10°C左右。即使是相同生产周期的两个CPU,假设他们的温度都是40度,那么监测所得的温度也可能是:一颗CPU 30度,另一颗是50度。

[attach]1051556[/attach]
传感器误差示意图


CoreTemp作者提到,大量收集用户手中CPU的各种温度监控参数,有利于减少误差,但很少有用户愿意反馈这些信息,而少部分反馈回来的信息,也基本无用,因为这些参数受到了太多外界因素的影响。

另外,Intel CPU的传感器在低温状态下会“卡住”。很有可能监测温度是50度,而实际上核心温度已经下降了很多了,但CPU的温度传感器仍然继续报告相同的DTS值。而如果CPU传感器没有故障,并且TJMax也经过了校准,那么可以发现,Intel的所有45nm CPU之间(包括双核以及四核)的待机温度并不会有太大差距。而对于两颗同为45nm的CPU(比如E5200与E8400),在频率,电压以及散热条件相同的情况下满载,他们之间的温度也不会有很大差距。

[attach]1051557[/attach]
这是CoreTemp作者对某颗Q6600传感器的测试结果

但通常情况下,用户所做的温度对比几乎都不能叫公平,因为中间会有散热器差别,机箱温度差别,室温差别以及CPU传感器本身的差别等因素。

因此,CoreTemp作者建议,以及他自己也是这样做的:在CPU超频并满载状态下,如果做好了常规的散热措施,并且系统稳定运行,那么就别去管核心温度了,因为它根本不重要,根本不可能准确。


总结以上,所谓的测温Bug实际上包含了很多因素。首先是TJMax的个体差异。然后是CPU温度传感器会有误差和故障,特别是在待机状态下。并且由于对每颗CPU都进行TJMax和传感器校准会耗费大量资金和精力,因此Intel永远也不可能这样做。而TJMax不能称为Bug,真正有Bug的是传感器。

所以,大家在做好散热措施之后,根本不用去担心待机温度,而不管检测到满载温度是高还是低,都应该做好散热工作,因为实际上,所有45nm的CPU在电压相近,频率相近的条件下,发热量都是基本相等的,完全不存在高温U或者低温U的说法,温度差异就是Bug,并且所有U在超频后都会很热~~
作者: 路路步兵    时间: 2009-5-17 14:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: 咕噜咕噜锤    时间: 2009-5-17 14:21
太高难度了~  板凳观看
作者: T3-DiDi    时间: 2009-5-17 14:27
狂徒,帮你顶拉哈……………………………………………………
作者: winddomain    时间: 2009-5-17 14:30
又见技术帖...  以后压表面就行了 @@
作者: k319    时间: 2009-5-17 14:50
一直不理解高压低温   低温低压    现在有点了解了
作者: 走火2008    时间: 2009-5-17 14:53
教学贴,学习了,狂顶!~~~
作者: yelanyun    时间: 2009-5-17 14:53
所有45nm的CPU在电压相近,频率相近的条件下,发热量都是基本相等的,完全不存在高温U或者低温U的说法,温度差异就是Bug,并且所有U在超频后都会很热~~

嘿嘿,我对我的E5200很放心了
作者: bbsd    时间: 2009-5-17 14:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: shoppingwang    时间: 2009-5-17 14:56
好文!收藏!
话说我的U满载核心5X的温度,但手摸热管一点温度都没
半年前试过黑海+4850,无风扇满载也是5X度,但热管就烫得不能碰了...
作者: flyhigher    时间: 2009-5-17 14:58
提示: 作者被禁止或删除 内容自动屏蔽
作者: 四根木头    时间: 2009-5-17 15:00
本地顶一个,版主的E文水平就是不一样
作者: opportunite    时间: 2009-5-17 15:05
精华好文
作者: liling99    时间: 2009-5-17 15:05
测温不准->pwm控制风扇运转在低转速->cpu温度升高->烧掉,哈哈
作者: dxbbc    时间: 2009-5-17 15:07
学习了,好帖
作者: wylliang    时间: 2009-5-17 15:11
原来如此,现在不用整天看着CPU的温度了。
作者: 新世界    时间: 2009-5-17 15:15
好文,顶了
作者: ramses    时间: 2009-5-17 16:56
精彩好文 要顶
作者: lopscank    时间: 2009-5-17 17:00
顶歹徒!
作者: Ese    时间: 2009-5-17 17:20
收藏收藏,技术性的东西。
作者: freezee    时间: 2009-5-17 17:37
好文章,解答了很多的疑惑,受教了~
作者: loveclark    时间: 2009-5-17 17:59
E71中。。。。
顺便解惑了  哈哈
作者: 红鲱鱼    时间: 2009-5-18 10:30
收藏 晚上回家看
作者: sleuth    时间: 2009-5-18 10:42
本帖最后由 sleuth 于 2009-5-18 10:44 编辑

估计看过这篇文章,很多遇到过测温bug的XD都会安心一点了。
技术贴要顶。
作者: naga0556    时间: 2009-5-18 11:12
看来我的二奶机可以让我放心了
作者: b22sun    时间: 2009-5-18 11:18
学习了~~~谢谢楼主
作者: dawensger    时间: 2009-5-18 11:47
好文章帮顶了~~~~~~~
作者: zajara    时间: 2009-5-18 12:34
只能说进入45nm以后,在测温方面有很多技术问题没解决
比如TJMax的离散性,DTS传感器低温下的精度问题(或者是量程问题)。
如果不行还是走回外部测温的老路算了
作者: 蒋PJ    时间: 2009-5-18 12:52
主板保留外部测温来了没?
作者: dxbbc    时间: 2009-5-18 13:07
我的e84待机都40+。。。。。。。。。。。。。
作者: johngoo    时间: 2009-5-18 13:37
测温不准->pwm控制风扇运转在低转速->cpu温度升高->烧掉,哈哈
liling99 发表于 2009-5-17 15:05


PWM风扇的转速机制根本不是按照这个温度来运转的,而且自身也带有保险机制,一看你回帖就知道是无知装无畏
作者: johngoo    时间: 2009-5-18 13:38
只能说进入45nm以后,在测温方面有很多技术问题没解决
比如TJMax的离散性,DTS传感器低温下的精度问题(或者是量程问题)。
如果不行还是走回外部测温的老路算了
zajara 发表于 2009-5-18 12:34


外部测温的误差还要大
而且外部测温没有任何意义
看来你还是没理解LZ发贴的含义
建议你仔细阅读下楼主贴的英语邮件内容
作者: 红发IXFXI    时间: 2009-5-18 14:32
好文  我见过-1的扣肉温度

LZ在开个amd贴好了
作者: gy851    时间: 2009-5-18 16:18
因此,CoreTemp作者建议,以及他自己也是这样做的:在CPU超频并满载状态下,如果做好了常规的散热措施,并且系统稳定运行,那么就别去管核心温度了,因为它根本不重要,根本不可能准确。
作者: zajara    时间: 2009-5-18 16:26
外部测温的误差还要大
而且外部测温没有任何意义
看来你还是没理解LZ发贴的含义
建议你仔细阅读下楼主贴的英语邮件内容
johngoo 发表于 2009-5-18 13:38
记得读书的时候玩的一个实验,用纸杯烧水
只要水没烧干,火焰温度多高纸都不会着火,因为100°还不到纸的燃点。
对于纸和火焰的温差可以确定吗,我看未必

相比接触大热容散热器的顶盖,核心的温度提高的速度会快很多,最后也会到一个动态平衡
这样就出现一个问题,是否对应不同的散热装置,核心与顶盖的满载温差是确定值intel是不是做过研究?
如果不确定,是否导致核心的温度可能会超过安全值?
当然既然intel确定Tcase是可以信赖的,我们当然也可以相信。
不过相比顶盖和核心的温度,大多数人更想知道的是核心温度吧

对于一个完全没有参考意义的核心温度,是不是属于一个intel应该解决的问题呢?65nm似乎没问题,起码没人提。
Tcase属于不属于外部测温呢?
作者: myh925    时间: 2009-5-18 16:26
提示: 作者被禁止或删除 内容自动屏蔽
作者: nfsking2    时间: 2009-5-18 17:39
35# zajara

65nm照样有问题,目前最能值得信赖的测温是i7的传感器的数据,但也不是完全准确

另外,Tcase属于外部传感器
作者: snowhillwxf    时间: 2009-5-18 17:51
提示: 作者被禁止或删除 内容自动屏蔽
作者: thislove    时间: 2009-5-18 18:22
楼主发个AMD的吧
作者: Fuyun    时间: 2009-5-18 18:25
收藏了慢慢看,好文啊
作者: hyjpanda    时间: 2009-5-18 19:28
好东西~~ `
作者: eb3071    时间: 2009-5-18 19:56
好文 留名
作者: wangchunboss    时间: 2009-5-18 20:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: loveyz    时间: 2009-5-18 20:03
总算解除了心中的痛
为什么我的u比别人的温度高
稳定才是王道
作者: sonicxz    时间: 2009-5-18 20:12
早就无视了,只看表面温度,核心看着玩的
另外INTEL的U高温下会自动降速,根本不用怕
作者: james0258    时间: 2009-5-18 22:17
谢谢楼主分享
作者: jiangfannew    时间: 2009-5-18 22:44
学习一下
作者: oc939    时间: 2009-5-18 22:45
技术贴要顶
作者: 393    时间: 2009-5-18 23:02
感谢楼主,又学到不少知识。
作者: lordyeye    时间: 2009-5-19 00:28
对核心温度的理解大有帮助
作者: king6784    时间: 2009-5-19 00:29
一会放心一会担心,起起落落的要病了
作者: cool_exorcist    时间: 2009-5-19 06:11
等待AMD篇。
作者: zzzzz0207    时间: 2009-5-19 08:49
相当让人解惑的一篇文章
作者: tbrbarry    时间: 2009-5-19 09:44
正准备上利民U120E,一大早起来上GZ找商家,看来这个,LZ为我省了500块!嘿嘿!!
作者: dxbbc    时间: 2009-5-19 10:24
每日学习一次。。
作者: 红鲱鱼    时间: 2009-5-19 10:40
今天来看完了 学到不少东西 谢谢
作者: 499782    时间: 2009-5-19 13:06
技术贴顶下..........
作者: fay0107    时间: 2009-5-19 17:05
写的好
学习了~~以后少瞎折腾
作者: fay0107    时间: 2009-5-19 17:08
写的好
学习了~~以后少瞎折腾
作者: sapientfox    时间: 2009-5-19 20:09
每日阅帖无数,却只看不回。后来发现自己很傻,比自己晚注册的ID都正式了,于是就把这段话写到记事本里,每次回帖就复制一下。不仅能提高自己活跃度,还能帮LZ顶帖!
作者: wangji    时间: 2009-5-20 00:04
好文
作者: big-eblis    时间: 2009-5-20 00:11
INTEL为什么不干脆在核心理做一个温度传感器呢?类似DS18B20那种结构的。
作者: weizly    时间: 2009-5-20 12:04
提示: 作者被禁止或删除 内容自动屏蔽
作者: 拳头    时间: 2009-5-20 12:41
INTEL为什么不干脆在核心理做一个温度传感器呢?类似DS18B20那种结构的。
big-eblis 发表于 2009-5-20 00:11

用什么传感器,最终反应到IO芯片的监控那里也是电压信号,加多少偏置之类的问题都会影响到结果,其实都一样。
作者: 牛小弟    时间: 2009-5-20 12:43
想请问楼主包括各位高手:

我用南海2压Q6700 OC 3.33G,开了EIST和C1E,电压1.25V。现在室温大概26度,南海2转速1200转,但待机温度竟然达到50,是不是太高了?65nm的测温没有问题吧?
作者: lbx102    时间: 2009-5-20 17:12
写的很好啊 学习了
作者: Joeooo    时间: 2009-5-20 17:15
好文  认真学习
作者: hj7718772    时间: 2009-5-20 20:29
几天看到好贴,帮顶了
作者: tenzerotwo    时间: 2009-5-20 21:23
INTEL为什么不干脆在核心理做一个温度传感器呢?类似DS18B20那种结构的。
big-eblis 发表于 2009-5-20 00:11

DS18B20  想起我的大学时光  HEHE
作者: bnb8088    时间: 2009-5-20 21:35
不错的帖子 收藏一下
顺便问一下LZ,I7的传感器和酷睿2的有改进或者区别吗?

AMD的测温原理是怎么的 我发现用软件看 核心温度比室温还低了
作者: nfsking2    时间: 2009-5-20 21:39
不错的帖子 收藏一下
顺便问一下LZ,I7的传感器和酷睿2的有改进或者区别吗?

AMD的测温原理是怎么的 我发现用软件看 核心温度比室温还低了
bnb8088 发表于 2009-5-20 21:35


AMD从Athlon X2开始也使用DTS传感器,但是AMD完全没有公布Tjmax数据,并且连ES版CPU的传感器也没有校正,所以数据有较大误差很正常
作者: vbn_vbn    时间: 2009-5-20 23:28
帮顶下。。。。
作者: 买与卖    时间: 2009-5-24 13:28
先顶后看好习惯
作者: Fuyun    时间: 2009-5-24 14:42
感觉有个问题LZ忽略了,就是每个CPU个体来说,漏电方面应该是不完全相同的,也就是为什么同一批CPU,可能VID都不相同。所以,在相同电压下,温度还是有区别的
作者: bobow    时间: 2009-5-24 15:01
用了这么久,今天第一次了解I U 测温原理……感谢楼主分享
作者: oe39    时间: 2009-5-24 17:23
嘿嘿 就是没有经过校准的 无法在软件或者硬件上进行补偿
作者: phf602    时间: 2009-5-25 19:31
提示: 作者被禁止或删除 内容自动屏蔽
作者: ZXMAD    时间: 2009-5-25 19:43
哎~~现在才看到这么好的文章~~~~
早看到就不用折腾换散热器了~~
作者: zzzzz0207    时间: 2009-5-30 23:18
好文啊,仔细看了后豁达开朗
作者: howardhe1    时间: 2009-5-31 01:17
好文,学习了
作者: shanda875113    时间: 2009-5-31 10:17
我只知道这个温度最高只能侦测到100度...
亲身体验了2周的裸奔~
作者: mzswru    时间: 2009-5-31 10:39
可以在cpu内部多点测温,工艺上不难实现,测温可以更为接近真实值
作者: siwa000    时间: 2009-5-31 20:06
还是不很明白...

不过谢谢分享
作者: shuhua_114    时间: 2009-6-1 11:35
1# nfsking2

高明!!!厉害!!! 留名!!!!!


楼主能否做篇文章讨论下,双核,四核各个核心温度不一致的原理???
作者: fanzone    时间: 2009-6-1 12:59
看服务器就知道.他不会去检测CPU温度..是去检测机箱内的温度.而决定改变风扇转速.
作者: destroyer    时间: 2009-6-1 13:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: toor    时间: 2009-6-1 14:15
很好的技术文,期待第二篇AMD的
作者: 祭司flamen    时间: 2009-6-1 14:53
不错不错~  就是不知道作者说的准确性高不  顶下
作者: lvhan    时间: 2009-6-1 19:22
学习了 好文
作者: 2ndWeapon    时间: 2009-6-1 21:50
原来coretemp就是骗人的,哈哈看来还是得用温度计量啊
作者: 风筝断了弦    时间: 2009-6-17 07:18
非常不错,学习了
作者: gorlion1    时间: 2009-6-27 18:06
顶一下................
作者: 很好很强大    时间: 2009-6-27 19:10
电压才是王道啊,不知道在普通45NM的U上,高0.1V电压,温度一般会提升多少呢?
作者: huajie1215    时间: 2009-6-27 22:21
目前稳定的系统!我只在乎烫手的北桥
作者: ncxrt    时间: 2009-6-27 22:28
技术帖要顶!
作者: amdiyer    时间: 2009-6-28 13:45
全文看完,想评分结果没有权限.....

还是没弄懂啥是Tj Max值,这个是哪来的?
作者: zmd    时间: 2009-6-28 23:13
好文章,学习了!
作者: agrantleung    时间: 2009-6-29 00:29
好文,支持,顶顶~
作者: max3396    时间: 2009-6-29 01:17
技术贴慢慢消化
勿急
作者: Iver神    时间: 2009-6-29 03:37
学习了~~~谢谢楼主




欢迎光临 POPPUR爱换 (https://we.poppur.com/) Powered by Discuz! X3.4