2008-06-14

VistaでHPETが使われていることの確認

HPET(High Precision Event Timer)について
Guidelines For Providing Multimedia Timer Support

今走っているPCで、タイマーには何が使われているかというのは気になるが、残念ながら確かめる方法はない。最近のチップセットは、大抵HPETを実装しているのだが、実際に使われているのかどうか気になる。

と思ったら、今使っているマザーボードのBIOS設定に、HPETの有効無効を切り替える設定があったので、試してみた。

まず、HPETが有効な状態でQueryPerformanceFrequencyを呼ぶと、14318180を返してきた。次にBIOSの設定で、HPETを無効にしてみると、3579545であった。再度HPETを有効にすると、値は元に戻った。なるほど、HPETが使われているらしい。

HPETでは少なくとも、10MHz以上の解像度が保障されている。チップセットやBIOSのバグさえなければ、マルチプロセッサ環境で、異なるプロセッサ間でも問題ないらしい(もちろん、そういうコードを書くとXP環境切捨てになるが)

ちなみに当然だが、Windows Vista以降が必要(XP出荷時には、まだHPETは規格すら決まっていなかった)

No comments: