Intel CPUで温度を計測する
This content is a draft and will not be included in production builds.
CPUが温度センサーを持っているか
Section titled “CPUが温度センサーを持っているか”CPUID 命令を機能テーブル(リーフ) 6(power management) で呼び出すと、DTSビットにセンサーの有無が格納される。
[!info] DTSビットはDigital Thermal Sensorビットの略で、CPUID命令でEAXレジスタに格納された値の下位1ビットのこと
温度を取得する
Section titled “温度を取得する”DTSビットが1なら MSR 命令でモデル固有のレジスタ(model-specific register)から値を取り出す。MSR 命令は EAX と EDX レジスタに値をセットする。
EDX レジスタの最上位ビットがReading Validフラグを表す。このビットが0の場合は取得できていない。
EAX レジスタの17〜23bitがDTSの値で、この値はTCC activation temperatureとの差を表しているらしい。TCC activation temperatureはインテルプロセッサーの温度に関する情報によるとTjunction maxとも呼ばれている。
EAX レジスタの28〜32bitはResolution in Degrees Celsiusらしいが、摂氏の解像度と言われてもなんのことやら。