散热器测试的价值有多少?谈温度监控
泡泡网散热器频道2009年8月6日 在我刚刚开始负责散热器频道文章时,为了能让文章更有可比性,我希望能用同一颗CPU(A64 X2 4200+)来测所有散热器,不过我当我每次都把扣具上好,测过10多个散热器后,CPU顶盖就已经凹陷了,自此以后测所有散热器温度都非常高,最终放弃了这种方法,采用和其他大部分媒体一样的方法:遇到哪颗CPU就用它测。这样的文章更贴近网友,娱乐性更高一些,但确实失去了大部分意义。nfsking2在PCINLIFE上的这篇文章会更清楚的解释原因,一起来看看,当您看过以后会对CPU的温度有一个全新的认识。应作者要求不修改原贴的内容,中间CoreTemp的作者的来信在后页有译文。
夏天马上就到了,相信很多人在超频过程中,甚至常规使用时都很注重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的作者给我的邮件全文(下一页是邮件译文):
Hello 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 10℃ 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 40℃ might be displayed on one CPU as 30C℃ and another CPU might show that as 50℃ 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 50℃ 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.
邮件译文
你好!
在执行大计算量的程序,例如利用快速傅里叶变化的Prime95时,处理器核心温度可能比IHS位置或处理器顶盖温度高25℃左右,而这个位置也就是Intel建议的Tcase参数的采温点。如果你使用的散热器体积比较大,即使核心温度较高,散热器的边缘和顶部摸上去都不会很热,所以通过用手实际触摸散热器是无法判断处理器核心温度是否很高的。因为大体积散热器能高效快速的传导热量,大部分情况下散热器只比人体高几摄氏度而已。
在Intel Core2 构架45nm工艺CPU的温度传感器上存在有很多问题,这些问题会让你根本无法公平的对比两块CPU的温度。
第一个问题就是Intel从未系统的公布过关于TjMax的资料,去年在Intel IDF会议上曾经透露过一些关于TjMax的信息,不过很多资料看起来不是很详实,资料中也没有说明TjMax的误差有多少,在45nm工艺下相同型号的CPU在TjMax这个参数上可能会有10℃以上的区别,如果不针对每一个CPU的这个参数进行校正,想准确对比他们的温度是不可能的。
第二个问题就是温度传感器上的偏离值。当CPU的温度离TjMax越远,传感器输出的温度信号离真实值偏差就越大,在CPU处于闲置状态时误差可能有正负10℃,Intel对这种误差没有详细的资料说明。
也许你手里有两颗编号一样的CPU,可能一个在闲置时温度就很低,另一个却很高,假设你的CPU真实温度为40℃,那么误差会使显示出的数字一个为30℃,另一个为50℃,可实际上这时两块CPU的真实温度是大致相等的。我最近也在努力通过校准来解决这个问题,可是极少有用户这样做(指通过软件提交测试结果)。基于以上两个较大的误差,可以说,我看过的绝大部分处理器的温度对比都是毫无意义的。
下一个问题就是传感器的温度信号有时会卡住。传感器输出的的温度信号到了50℃后一直维持在这个数值,即便之后CPU的核心温度已经降了下来也不变。这会让人产生误解:这是颗高温U。而实际上这是由于传感器造成的。
在我的测试过程中还发现,如果传感器没有卡住的问题,并且对它进行过数值校准,那么绝大部分Dual Core和Quad Core的CPU在闲置时,温度差异就不怎么大了。
如果你用两个45nm的处理器在相同的核心电压下,分别在同一块主板上用同一种方式满载运行,而且使用相同的散热器和风扇,那他们的温度差异不是很大。
我认为绝大部分用户在对比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度。
但通常情况下,用户所做的温度对比几乎都不能叫公平,因为中间会有散热器差别,机箱温度差别,室温差别以及CPU传感器本身的差别等因素。
因此,CoreTemp作者建议,以及他自己也是这样做的:在CPU超频并满载状态下,如果做好了常规的散热措施,并且系统稳定运行,那么就别去管核心温度了,因为它根本不重要,根本不可能准确。
总结以上,所谓的测温Bug实际上包含了很多因素。首先是TJMax的个体差异。然后是CPU温度传感器会有误差和故障,特别是在待机状态下。并且由于对每颗CPU都进行TJMax和传感器校准会耗费大量资金和精力,因此Intel永远也不可能这样做。而TJMax不能称为Bug,真正有Bug的是传感器。
所以,大家在做好散热措施之后,根本不用去担心待机温度,而不管检测到满载温度是高还是低,都应该做好散热工作,因为实际上,所有45nm的CPU在电压相近,频率相近的条件下,发热量都是基本相等的,完全不存在高温U或者低温U的说法,温度差异就是Bug,并且所有U在超频后都会很热~~(原帖链接)
这篇文章可能会帮助很多网友解决CPU温度的疑问,比如编辑自己曾经用过的一颗E5200,两个核心在低温下一直有将近15℃的温差,而在跑Orthos时,两个核心的温度就会相等。当时问过一些人,得到的都是类似“一个核心和顶盖贴合不好”的解释。我很疑惑:接触不好温度高,为什么还能照样可以跑3.8GHz?现在来看,这篇文章就能解决这个困惑了。此外还有一些网友的处理器温度低于室温,我想也是由于传感器在低温下误差较大造成的。
Intel为每颗处理器都标定了VID,可是没有为每颗处理器标定TjMax,也许是出于成本上的考虑。
这篇文章只简单叙述了Intel Core构架的CPU温度监控过程,i7甚至是AMD处理器的温度监控过程与之不同,希望看到更多这方面的资料。
常常在论坛上看到网友们通过对比自己CPU的温度来衡量散热器的好坏,看来这下也没有太多依据了,此外很多经营“低温低压,超频牛”的CPU经销商也不太愿意承认这个现实。
最后是关于网站散热器的单品评测,如果您看到我们测试的温度比您用同样散热器测试的低,也不代表您买到次品了。更何况很多时候网友会在评论中提及自己用不同CPU不同散热器测试的结果,和我们的测试结果做对比。总的来讲,散热器的单品评测意义很小,小到没有可比性。<