ハードウェアタイマー
読み:ハードウェアタイマー
外語:hardware timer

 パーソナルコンピューターなど、コンピューター基板上に搭載されたカウンター機能。
目次

概要
 タイマー割り込みといった、コンピューターに欠かせない定期処理や同期処理などに使われる。
 ハードウェアクロックと併用し、一度時計を読んだ後はタイマーだけでカウントアップする実装も存在する。時計の読み込みは一般に遅いので、全体的なパフォーマンスを向上させるための技術である。

特徴
 主としてPC/AT互換機で使われているもの。

PIT(Programmable Interval Timer)
 PC/AT互換機であれば、ほぼ確実に存在するタイマー。
 一般にi8254互換である。NTSCの色副搬送波周波数の1/3、つまり約1193182Hz(3579545/3Hz)で動作する。時計とNTSCとは無関係だが、発振器が安く、入手しやすいため、NTSC以外でもよく使われた。
 カウンターは16ビットで、3つのタイマーを持つ。OSが使うのは、このうちタイマー0である。
 FreeBSD等のdmesgでは、次のように表示されて認識される。
 Timecounter "i8254" frequency 1193182 Hz quality 0

HPET (High Precision Event Timer)
 ICH4時代のもの以降に搭載されているらしい。旧称はマルチメディアタイマー(Multimedia Timer)で、CMOS RTCとPITの置き換えを想定している。元々は単独のチップだったが、のちにノースブリッジに吸収された。
 動作周波数は10MHz以上。カウンターは64ビットだが、ラッチ機能がないため、32ビットCPUからはクロックを止めない限りは32ビットでしか利用できない。
 FreeBSD等のdmesgでは、次のように表示されて認識される。
 acpi_hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
 Timecounter "HPET" frequency 14318180 Hz quality 900

ACPI PM timer
 ACPIの機能を持ったマザーボードに搭載されている。
 基準周波数は、NTSCの色副搬送波周波数3579545Hz。時計とNTSCとは無関係だが、発振器が安く、入手しやすいため、NTSC以外でもよく使われた。
 カウンターは24ビットである。
 FreeBSD等のdmesgでは、次のように表示されて認識される。
 Timecounter "ACPI-fast" frequency 3579545 Hz quality 1000
 acpi_timer0: <24-bit timer at 3.579545MHz> port 0x408-0x40b on acpi0

Local APIC Timer
 Pentium以降、Local APICに内蔵されているタイマー。
 カウンターは32ビットだが、基準周波数はCPUクロックと同じで、1、2、4、8、16、32、64、128分周させることができる。

TSC (Time Stamp Counter)
 Pentium以降で搭載されたカウンター。
 カウンターは64ビットで、基準周波数はCPUクロックと同じ。
 分周機能や、基準周波数の取得方法などはなく、またパワーマネージメント機能でクロック周波数が低下すると、それに応じてカウントも遅くなる場合がある。HLT命令でカウンターが止まることもあるらしい。
 加えて、コアが複数あるCPUや、マルチプロセッサー環境で、各コアのカウンターは同期しないなど様々な難点があるが、rdtsc命令を使って1命令で読み出せるため高速である。

再検索