delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

28 Jul 2010

Intel CPU的Tj(max)的获得

本文主要是笔记,不保证其正确性,也不保证其不导致死机、崩溃或任何其他问题。


CPU的Tj(max)值可以通过读 MSR IA32_TEMPERATURE_TARGET,即 0x1a2 来获得【1】。目前,Intel正式的开发文档中并没有明确对这一MSR进行说明。早期的CPU中,Tj(max)值需要加上40到50摄氏度,目前不清楚具体哪些CPU必须如此,但从公开文档来看,已知:

Xeon 7100系列需要加修正值。其中,150W TDP的CPU需要加50摄氏度;95W TDP的CPU需要加40摄氏度。【2】

Xeon 5200系列不需要加修正值。【3】从文字上推测,5200以后的系列都不需要加修正值。

Xeon 5400系列不需要加修正值。【4】

使用LGA771 SMT socket、L3 cache不超过8M的Xeon MP系列需要加修正值50摄氏度。【5】

双核 Xeon 2.8G 处理器(根据文档推测,Prescott、Nocona和Potomac系列)需要加修正值50摄氏度。【6】

系统总线800MHz的Xeon处理器需要加修正值50摄氏度。【7】

双核Xeon 5000系列需要加修正值60摄氏度(没错,是60摄氏度,不是50摄氏度)。【8】

Xeon 7400系列不需要加修正值。【9】

支持超线程的Mobile Pentium 4处理器需要加修正值50摄氏度,同时,这个值的范围是0-30摄氏度。【10】

姑且推断5200系列之后不需要修正值?(model 0x17之后)能够公开获得的文献中,提到这个寄存器最早的一份是2004年6月出的第一版。

FreeBSD目前不支持从这个MSR直接搞Tj(max)温度出来,我做了个patch,测试了Xeon L5630和Core i7 CPU,不过其他的暂时还没测过。

Linux驱动这部分逻辑很让人费解(drivers/hwmon/coretemp.c):如果读MSR得到了有效的值(80-120之间,而文档【1】上说的至少70度是存在的。如果读MSR失败,或驱动认为值无效,则用了一套相当奇怪的逻辑去猜测实际的数值,某些型号的Atom使用旧的逻辑去判断,等等。问题是(1)这段相当的混乱,而且与文档有很多不一致的地方;(2)为什么不先判断CPU型号再访问MSR呢?


参考文献

【1】CPU Monitoring With DTS/PECI。Intel 文档编号322683。

【2】Dual-Core Intel® Xeon® Processor 7100 Series Datasheet.Intel 文档编号314553。

【3】Dual-Core Intel® Xeon® Processor 5200 Series in Embedded Applications, Thermal/Mechanical Design Guidelines。Intel文档编号319012。

【4】Quad-Core Intel® Xeon® Processor 5400 Series, Thermal/Mechanical Design Guidelines。Intel文档编号318611。

【5】64-bit Intel® Xeon™ Processor MP with 8 MB L3 Cache, Thermal/Mechanical Design Guidelines。Intel文档编号306753。

【6】Dual-Core Intel® Xeon® Processor 2.80 GHz, Thermal/Mechanical Design Guidelines。Intel文档编号309160。

【7】Intel® Xeon™ Processor with 800 MHz System Bus, Thermal/Mechanical Design Guidelines。Intel文档编号302661。

【8】Dual-Core Intel® Xeon® Processor 5000 Series, Thermal/Mechanical Design Guidelines。Intel文档编号313062。

【9】Intel® Xeon® Processor 7400 Series, Thermal/Mechanical Design Guidelines。Intel文档编号320337。

【10】Mobile Intel® Pentium® 4 Processor Supporting Hyper-Threading Technology on 90-nm Process Technology Datasheet。Intel文档编号302424。