ノートPCのCPUクロックがどんな風に変化しているか見るために、数秒おきにTSC(Time Stamp Counter) を読んで表示するプログラムを作ったのですが、CrystalCPUIDの出す値と比べてみたら、全然値が違います。
我が家のCore Soloに限定すると、負荷をかけて内部クロックの倍率がx10になればTSCから求めた値と一致しますが、倍率がx8とかx6に下がっている状態だと、TSCから求めたクロックがかなり高い値に計算されてしまいます。どうやらrdtscではダメなようです。
LinuxのカーネルやカーネルのコメントでリファーされているIntelの資料を見ると、MSRの値から計算できるらしいのですが、そんなのユーザプログラムからできないよ。
ちなみにCrystalCPUIDはどうしてるかというと、実行時にSysInfo.sysというドライバ(主にMSRを読むドライバでしょう)をロードして、\Device\CrystalSysInfoって名前のデバイスを作り、そいつを叩いて取得しているようです。やはりそれしかないのかなあ…。
< | 2007 | > | ||||
<< | < | 03 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
合計:
本日: