High Precision Event Timer
HPETはIntel 8254(英語版) Programmable interval timerとRTC周期割り込み機能を補い、そして置き換えることが意図されている。PITやRTCなどの古いタイマーと比較して、HPETは高い周波数(少なくとも10MHz)と、より広い64ビットカウンターを持つ(ただし、32ビットモードで駆動することもできる)。
8254やRTCもHPETと同様にワンショットモードで利用できるが、セットアッププロセスが非常に遅いため、正確なスケジューリングを必要とするタスクで使用されることはなく、時間間隔を非常に小さく設定した周期モードで代用されていた。たとえば、アプリケーションが数ミリ秒程度の短い待機を何度も行う場合、8254またはRTCのワンショットタイマーを使用するとセットアップコストが高くつくため、1ミリ秒間隔の周期タイマーモードで動作させた方が良い。しかしそうすると、アプリケーションが実際には長い周期の動作を求めているのに、1ミリ秒毎に余分な割り込みが発生してしまう。一方、HPETのワンショットタイマーはセットアップコストがかなり小さく、短い待ちでもコストを気にしなくて済むため、余分な割り込みを避けることができる。
HPETはRTCに比べて高い解像度でより多くの定期的な割り込みを生成することができるため、スムーズな再生を提供するためのマルチメディアストリームの同期によく用いられ、x86ベースのCPUのRDTSC命令のような他のタイムスタンプの計算回数を減らしている。
HPETチップはProgrammable interval timer(英語版)とIntel 8253(英語版)のように10MHzの64ビットのアップカウンターと3つの独立した64ビットコンパレータで構成されている。HPETのチップはユーザーソフトウェアのランダムな割り込みの発生のために29の32ビット コンパレーター/タイマーを含んでいる。しかし、いくつかのオペレーティングシステムはマルチコアCPUのシステムでそれらのタイマーを使用するように構成することができない。
ACPI BIOSによって用意されるメモリマップドI/Oを通す場合のみ、HPETの32/64ビット拡張ができる。HPETのチップをマザーボードに同時に8つ実装することができる。FSBとDDR-RAMは2つのHPETチップを必要とする。これは近代的なPCは64の割り込みとIRQが使用可能なタイマーのために、6つの8253-Timer互換のカウンタ/コンパレータと58の32ビット HPET/コンパレータを持つことを表す。
64ビットカウンタの値の最下位ビットが対応するビットと同値である場合、コンパレータ/タイマーは割り込みを生成することができる。コンパレータ/タイマーはワンショットモードか周期的モードで用いることができる。ワンショットモードは、カウンタの値がコンパレータのレジスタにストアされた値に達した場合に割り込みを起こす。周期的なモードは定義した間隔で割り込みを生成する。
比較的、近代的なPCはHPETの回路をノースブリッジに統合している。 これらのシステム上では、HPETは100MHz以上で動作する。