前回、「続く」とした件の続きです。
TSCはCPUクロックに依存して、1クロック1インクリメントで増えていくタイマカウンタです。
しかし、近年CPUは可変クロックで動作するし、使っていないコアはディープスリープ状態に陥るし、とTSCのインクリメントは信用できるのか?という話が割と上がってきます。
これについて調べてみると、対処がそれなりにあるようです。
1つは、Constant-TSC というもの、もう1つは Invariant-TSC というものです。これらはTSCの性質を表しています。前者は可変クロックに対応するもので、後者はディープスリープ状態に対応するためのものです。
Constant TSCはPentium4 以降で搭載されているようです。
Invariant TSCはIntel Core i7 (Nehalem)世代で搭載されているようです。
Constant TSCは可変クロックの状態によらず、一定にカウンタ増加だそうです。
Invariant TSCはコアのクロックが停止しても、普遍にカウンタ増加だそうです。
これらの性質を有して、Windows XP SP2以降であれば、TSCを使用してもずれて動作に支障をきたす、ということはないのかもしれません。