找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 11506|回复: 11

Thermal

[复制链接]
发表于 2008-12-24 19:12:15 | 显示全部楼层 |阅读模式
intel CPU 中,这个IA32_THERM_STATUS寄存器产生的事件是如何处理的?3 j. v* R2 e6 Z  p. _
看了acpi ,datesheet ,intel五本大书,有些糊涂。
* g3 [( \+ D) A& U0 p6 c( f8 _  H在code里,发现SMI处理程序处理这些事件,但是资料上也没说这些事件会产生SMI啊。
 楼主| 发表于 2008-12-24 20:22:03 | 显示全部楼层
操作系统如何更新Die Digital Thermal Sensors的温度?
% M% {" p1 R/ q" {2 {( v0 i/ ~ACPI有个过程方法叫_TMP,可以获取DTS温度,但_TMP如何得到这个温度的,而且这个温度是时时刻刻在变化的,8 n# `# S9 Z6 b8 n$ q, k0 o
_TMP要不停的调用bios中某个功能吗?
回复

使用道具 举报

 楼主| 发表于 2008-12-24 20:23:02 | 显示全部楼层
请高人指点一下,捉摸好几天了。
回复

使用道具 举报

 楼主| 发表于 2008-12-24 21:28:39 | 显示全部楼层
1楼的问题基本知道怎么回事了,确实是触发SMI中断,在Local Apic中可以设置为SMI中断。
5 F  O/ g) N: \  z0 y' U6 ZSMI也对这些Events进行了处理。
回复

使用道具 举报

发表于 2008-12-24 22:47:27 | 显示全部楼层
_TMP是BIOS回报温度给OS的,如BIOS从EC读当前的温度返回,这样OS才会知道温度2 Z% B, D8 c* X6 ?! ?) g
有两种方法让OS调用_TMP,
: m! {% u  A/ u3 u! G  ?1._TSP,polling的方法
  D* F* _& H! T$ ?& l2 y2.中断,Notify ThermalZone,Thermal既可以触发SMI也可以触发SCI的,或者用GPIO& g6 v# H+ ]1 \( o% i& K/ X

  |4 W/ K1 N! a0 J/ Y& c: f, S$ b, _Die Digital Thermal Sensors的温度应该是CPU自己做的吧,和OS应该没有关系
回复

使用道具 举报

 楼主| 发表于 2008-12-26 20:15:21 | 显示全部楼层
今天用Everest软件看了下,有3个CPU温度。
# ~7 X& E4 b& Y; g5 U一个是_TMP返回的温度,另外两个说是内核温度,cpu0和cpu1,但我的asl代码中没有这两个啊。
  g, H" p) |3 C2 b7 J6 Z- w) H, WEverest软件从哪里得到的这两个温度?
% I2 O% B. m4 O" L9 c' ~. @5 bCPU是yonah,双核的。
回复

使用道具 举报

发表于 2008-12-29 14:19:44 | 显示全部楼层
是不是_TMP返回的是通过热敏二极管测量的温度,而2个内核温度是通过读DTS的MSR得到的?
回复

使用道具 举报

 楼主| 发表于 2008-12-29 20:07:44 | 显示全部楼层
有个是通过_TMP返回热敏二极管的温度。但两个内核温度不知道是否是DTS温度,操作系统和Everest咋能读DTS的MSR呢?它们知道地址吗?
回复

使用道具 举报

发表于 2008-12-30 10:23:27 | 显示全部楼层
DTS的温度从IA32_THERM_STATUS MSR中取得。这个MSR是IA32 architectural的,参见Intel 64 and IA32 SDM 13.5 THERMAL MONITORING AND PROTECTION. 貌似Everest是自己通过驱动读到MSR里值的。
回复

使用道具 举报

 楼主| 发表于 2008-12-31 16:56:46 | 显示全部楼层
那两个DTS温度感觉不准确,一个9度左右,一个13度左右。
" x& F) E# W9 `3 q" D+ x0 ]& QDTS感应的应该是CPU最热的地方,怎么可能这么低。
回复

使用道具 举报

发表于 2008-12-31 23:36:20 | 显示全部楼层
我的机器上面看到的,三个温度都差不多的,42摄氏度左右
回复

使用道具 举报

发表于 2009-1-4 14:14:59 | 显示全部楼层
_TMP返回的是通过热敏二极管测量的温度,EC读到的值一般比DTS中最高的那个小一点。因为CPU的thermal diode 一般在两个DTS 的中间
& S! W3 ?/ _6 @7 j5 U 2个内核温度是通过读DTS的MSR得到的 ,两个核的负载有所不同,所以,温度会有高低。- q8 {4 ^) j  @4 T6 ?7 Y
另外Intel 的人说,DTS 的温度跟实际的温度会有5‘C的误差。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2025-5-2 13:41 , Processed in 0.030501 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表