变还是没变?Intel CPU测温原理谈温度监控
- +1 你赞过了
【雷竞技须安全稳定 DIY硬件频道】相信很多人在超频过程中,甚至常规使用时都很注重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:
传感器误差示意图
CoreTemp作者提到,大量收集用户手中CPU的各种温度监控参数,有利于减少误差,但很少有用户愿意反馈这些信息,而少部分反馈回来的信息,也基本无用,因为这些参数受到了太多外界因素的影响。
另外,Intel CPU的传感器在低温状态下会“卡住”。很有可能监测温度是50度,而实际上核心温度已经下降了很多了,但CPU的温度传感器仍然继续报告相同的DTS值。而如果CPU传感器没有故障,并且TJMax也经过了校准,那么可以发现,Intel的所有45nm CPU之间(包括双核以及四核)的待机温度并不会有太大差距。而对于两颗同为45nm的CPU(比如E5200与E8400),在频率,电压以及散热条件相同的情况下满载,他们之间的温度也不会有很大差距。
这是CoreTemp作者对某颗Q6600传感器的测试结果
但通常情况下,用户所做的温度对比几乎都不能叫公平,因为中间会有散热器差别,机箱温度差别,室温差别以及CPU传感器本身的差别等因素。
因此,CoreTemp作者建议,以及他自己也是这样做的:在CPU超频并满载状态下,如果做好了常规的散热措施,并且系统稳定运行,那么就别去管核心温度了,因为它根本不重要,根本不可能准确。
总结以上,所谓的测温Bug实际上包含了很多因素。首先是TJMax的个体差异。然后是CPU温度传感器会有误差和故障,特别是在待机状态下。并且由于对每颗CPU都进行TJMax和传感器校准会耗费大量资金和精力,因此Intel永远也不可能这样做。而TJMax不能称为Bug,真正有Bug的是传感器。
所以,大家在做好散热措施之后,根本不用去担心待机温度,而不管检测到满载温度是高还是低,都应该做好散热工作,因为实际上,所有45nm的CPU在电压相近,频率相近的条件下,发热量都是基本相等的,完全不存在高温U或者低温U的说法,温度差异就是Bug,并且所有U在超频后都会很热~~
最新资讯
热门视频
新品评测