ハイパースレッディング 【Hyper-Threading】 HT
概要
ハイパースレッディング(Hyper-Threading)とは、米インテル(Intel)社が自社のマイクロプロセッサ(MPU/CPU)製品に搭載している、一つのプロセッサコアを擬似的に二つに見せかける技術。いわゆる同時マルチスレッディング技術(SMT:Simultaneous Multithreading Technology)の一種で、一つのコアで並行して二つの命令の流れ(スレッド)を実行できる。通常のプロセッサでは一つのコアは一つの命令の流れを順番に実行していくが、例えば整数の計算を行う命令を実行している間、浮動小数点数を計算するための回路は休んでいる。ハイパースレッディングに対応したCPU内部では、通常より演算などの回路に対して命令の解釈(デコード)や投入(スケジューリング)のための回路を増やしており、次の命令が使用する回路が空いていれば前の命令の終了を待たずに並行に実行するようになっている。
遊んでいる回路を減らすだけでなく、一つの命令が低速なメモリ入出力の待ち状態になっている間にも、メモリの読み書きが不要な命令をどんどん実行することができる。命令の並列化はハードウェア側で完全に制御されるため、OS側からはコアが二つあるように見え、それぞれ独立したスレッドやプログラムを実行できる。
ただし、前の命令の処理結果を次の命令で利用するといった依存関係がある場合は並列化できず(これは通常のマルチコアでも同様)、また、整数の計算が延々と続くといったように同じ回路を使用する命令が連続している場合にも順番待ちとなる。
コアに付属する高速なキャッシュメモリ(L1キャッシュ/L2キャッシュ)も共用であり、演算回路などもすべて二系統あるデュアルコアやデュアルプロセッサと同じだけの高速化とはならない。最良の場合で1クロックあたり20~30%程度の高速化になると言われている。
ハイパースレッディングは2002年に「NetBurst」型のPentium 4プロセッサやXeonプロセッサなどで初めて採用された。Intel Coreシリーズへの移行の際に一旦廃止されたが、2008年のモデルからIntel Core i3/i5/i7シリーズなどで復活した。いずれの製品もBIOSなどのシステム設定により、起動時にハイパースレッディングのオンとオフを切り替えることができる。