Intel64 and IA-32 アーキテクチャ仕様書が改訂

Intel の Intel64 & IA-32アーキテクチャ仕様書が改訂されている。前回日記に書いた id:nminoru:20100402:intelcpu の以降、6月と9月付と二回すでに改訂されているのね*1

Local APIC timer に TSC-Deadline mode が追加

Local API timer はコア毎(Hyperthread が有効な場合はスレッド毎)に存在するタイマーで、OS がスレッドスケジューリングの契機を作るのに利用するなど使用頻度の高いタイマーだった。

ただ Local APIC timer は発火する時間を残時間で指定する相対時間指定のタイマーで、しかも指定時刻が (32 ビットの仮数)×2^x の形式で分解能が高くない。これはハイパーバイザーがゲストの local API timer をエミュレーションするのが難しい等の問題がある。

追加された TSC-deadline mode は、発火時間を CPU の TSC の値で指定して、TSC が実際に指定値まで進むと割り込みが発生する絶対時間指定になっている。指定も 64 ビットでできる。IA-64 にあった ITC/ITM みたい。

最近の Intel の CPU は TSC低周波モードに落ちても一定の刻みを続ける constant TSC だったり、スリープモードになっても刻み続ける invariant TSC だったりするので、TSC-deadline mode はタイマーの設定時間を計算するのが非常に簡単になる。

1GB のラージ TLB

x86-64 は 4KB/page だがラージ TLB として 2MB/page が使えたのだが、これに 1GB/page のさらに大きなラージ TLB が追加された。

*1:というか Intel64 & IA-32 アーキテクチャ仕様書は3、6、9、12月の三ヶ月度に改訂するのね。