High Precision Event Timer

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

High Precision Event Timer高精度イベント タイマーHPET)はパーソナル コンピューターで使用されるハードウェア タイマーである。マイクロソフトインテルによって共同で開発され、2005年頃から PC のチップセットに組み込まれ始めた。インテルは当初 Multimedia Timer と呼んでいたが[1]、Windows 3.0 の Multimedia Extensions で導入されたソフトウェア機能の Multimedia Timers との混同を避けるため、現在の名称に変更された。[2]

古いオペレーティング システムは HPET をサポートしておらず、リアルタイム クロックといった以前からの古いタイマー設備を使用する。

特徴[編集]

HPET チップは Programmable Interval TimerIntel 8253 のように 10 MHz の 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 の回路をノースブリッジに統合している[note 1]。 これらのシステム上では、HPET は 100 MHz 以上よりも速く動作する。

アプリケーション[編集]

HPET は RTC に比べて高い解像度でより多くの定期的な割り込みを生成することができるため、スムーズな再生を提供するためのマルチメディア ストリームの同期によく用いられ、x86 ベースの CPU の RDTSC 命令のような他のタイムスタンプの計算回数を減らしている。

以前のものとの比較[編集]

HPET は 8254 Programmable Interval Timer と RTC 周期割り込み機能を補い、そして置き換えることが意図されている。PIT や RTC などの古いタイマと比較して、HPET は高い周波数(少なくとも 10 MHz)と、より広い 64 ビット カウンターを持つ(ただし、32 ビットモードで駆動することもできる)。[1]

8254 と RTC は HPET と同様にワンショットモードで利用できるが、セットアップ プロセスが非常に遅いため、正確なスケジューリングを必要とするタスクで使用されることはない[3]。 その代わりに、8254 と RTC は非常に小さな時間間隔の周期モードで使用される。たとえば、アプリケーションが何回か短い待機(数ミリ秒)を行う場合、8254 または RTC のワンショットタイマーを使用するとセットアップコストが高くつくため、1 ミリ秒間隔の周期タイマモードで動作させた方が良い。しかしそうすると、アプリケーションが実際には長い周期の動作を求めているのに、それより細かくミリ秒毎に割り込みが発生してしまう。一方、HPET のワンショットタイマーはセットアップコストがかなり小さいため、短い待ちでもコストを気にしなくて済むため、余分な割り込みを避けることができる。

互換性[編集]

HPET が登場する以前に設計されたオペレーティング システムは HPET を使用できないため、HPET を除く他のハードウェア タイマーを使用する。より新しいオペレーティング システムはどちらでも使用できる傾向にあり、いくつかのハードウェアは両方を持つ。

以下のオペレーティング システムは、HPET を使用することができないことが知られている。Windows XP[note 2]Windows Server 2003、それより古いバージョンの Windows、バージョン 2.6 よりも古い Linux カーネル[note 3]

以下のオペレーティング システムは、HPET を使用することが知られている。Windows VistaWindows Server 2008Windows 7、x86 バージョンの Mac OS X、バージョン 2.6 の Linux カーネル、FreeBSDOpenSolaris

脚注[編集]

[ヘルプ]

注釈[編集]

  1. ^ ダイの上に高度に統合されてはいるが、BIOS は ACPI でしばしば誤って HPET のセットアップを Intel 8253 モードだけで初期化する。ACPI が正しくセットアップしない場合、OS は HPET を列挙できない。そして BIOS と OS 開発者は対応できないために放っておく。HPET は高速なシステムを満たすためにある。もし、HPET を BIOS が ACPI で正しくセット アップできるのならば、ACPI MMIO ページが最初に 0xFED00000 と次に 0xFED80000 があるはずである。
  2. ^ Windows XP SP2 は、HPET タイマーを(PNP0103 識別子のデバイスとして)認識する。HPET を発見した場合(例えば、Intel DQ45CB マザーボード)、デバイス マネージャ(スタート/コントロール パネル/システム/ハードウェア/デバイス マネージャ)のシステム デバイスの中で "高精度イベント タイマ" と示される。しかし、この装置はドライバがなく、使用されることは全く無い。
  3. ^ Linux カーネルでは、オリジナルの "rtc" ドライバーよりも、新しい "rct-cmos" ハードウェア クロック デバイス ドライバを必要とする。

出典[編集]

関連項目[編集]