ハイパースレッディング・テクノロジー

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

ハイパースレッディング・テクノロジー (Hyper-Threading Technology、HT、HTT) とは、インテルハードウェアマルチスレッディング実装に対する同社の商標である。当初は、NetBurstマイクロアーキテクチャにおける同時マルチスレッディング (Simultaneous Multithreading; SMT) の実装に対して用いられていたが、その後、コードネームMontecitoの名で知られるプロセッサナンバー 90xxのItaniumに於けるSwitch-on-Event Multi-threading (SoEMT) (ブロック型マルチスレッディングの一種)にも用いられ、LPIA (Low Power on Intel Architecture) 製品の1つであるインオーダプロセッサのIntel AtomのSMT実装もハイパースレッディング・テクノロジーと称している。 これらの製品に共通しているのは、オペレーティングシステム (OS) が、ハイパースレッディングが有効なコアを、1つのコアではなく複数のコアと認識できる点である。

詳細[編集]

ハイパースレッディングとは、従来CPUのコア一つに一つしか搭載していなかったコードを実行する装置を複数搭載してコードの処理能力を向上するものである。これにより、ハイパースレッディングを備えたCPUではホストOSから実際搭載しているコア数より多くのコアを搭載しているよう「論理的に」見えることとなり、実コア数より多くのスレッドやプロセスをOSが同時に実行できるようになる。

現在のパソコンに使われるCPUはCISCと呼ばれるものが主流で、多くは一つのコアにコードを読み込み(ロード)、解釈(デコード)し、処理をスケジュールする装置を一つと、それを処理するパイプラインと呼ばれる演算装置を複数持っている。しかしスケジュールの能力に限りがあるため、例えば整数を処理するパイプラインが働いていも、浮動小数点やMMXなどのマルチメディア計算をするパイプラインが遊んでいることがある。

そこで一つのコアに搭載しているデコードやスケジュールをする装置を複数に増やし、一つのコアを論理的に複数のコアとして動作させることで、空いているパイプラインを埋めて効率を向上させることが考えられた。

ただしコードやデータの間にはお互いに依存関係があり並行処理できない場合がある。また複数の論理的なコアは一つのL2キャッシュを共有しておりデータやキャッシュ不整合が発生した場合はロックがかかり効率が低下する。

コアはキャッシュに対し速度が遅いメインメモリーの入出力が必要になるとパイプラインが空いていても処理できない。最近のCPUは処理するコードやデータの量がL2キャッシュの容量を超えるほど肥大化しメインメモリーの入出力が必要な場合が増えているため、メモリーコントローラーをチップセットではなくCPU自体に内蔵させてメインメモリーの入出力速度を向上させている。

ハイパースレッディングが特に有効なのは、整数処理と浮動小数点処理やマルチメディア処理というように異なるパイプラインを多用するソフトウェアである。殆どのソフトウェアでは論理部分の大半は整数処理であり、浮動小数点処理と多重化できる可能性が高い。

しかしマルチメディアでデータ量が大きくなると、ハードディスクやメインメモリーの頻繁な読み書きが必要となり効率が低下する。またデータのサイズがバラバラの場合は規則正しくロードすることができない。

従ってハイパースレッディングで効率が良いのは、比較的小さなサイズの整数処理のコードと、データサイズが小さい、もしくはデータサイズが大きくても配列が規則的な浮動小数処理やマルチメディア処理の繰り返しが並行して行われている場合である。

一方苦手とするのは、例えばWindowsやLinuxのように雑多なDLLやライブラリー類が頻繁かつ非同期的にコールされ、またコードやデータが頻繁に更新される、いわゆるローカリティが低い場合である。この場合、複数のスレッドでCPUのデータ幅やL2キャッシュが細分化され(スラッシング)、ハイパースレッディングによって逆に効率が低下することもある。

そのため、ハイパースレッディングによって多くのユーザーが不満を持つソフトウェアの立ち上がり時間が短縮されないのはこのせいである。一方、音声や動画の変換や編集ではハイパースレッディングの効果が高くなる。通常入力データサイズが規則的なデータ圧縮のほうが入力データが不規則なデータ解凍より早くなる傾向がある。

ハイパースレッディングの利点として、もともと複数の物理的コアを利用できる対称型マルチプロセッシング対応のOSでは、特にソフトウェアを改変することなくハイパースレッディングによる複数の論理的コアを利用できることである。

すなわちハイパースレッディングはソフトウェアを改変せず利用できる透過性があることが特徴である。もちろんハイパースレッディングを意識した処理として実装しているかどうかによって効率は変化する。

なお、処理中のコードやデータを自ら書き換えていくような特殊なソフトウェアや、複数のスレッドが強い依存関係を持つ場合は効率が低下したりエラーとなることがある。また論理的コア同士の間でデータの秘匿に問題があるなど、ごく限られたケースながら問題が生じることがある。このため、多くのPCではBIOSなどでハイパースレッディングをオフとすることができるようになっている。

パソコン向けのCPUでは、2013年現在ハイパースレッディング搭載製品ではすべて物理コア1つ当たり論理コア2つである一方、HPC用途やメインフレーム用途などの高価なCPUでは、例えばIBM社のIBM POWER8や、オラクル社のSparc T3は物理コア1つ当たり論理コア8つである。intel社のXeon PhiはCPU用途ではなくGPGPUのような使い方を想定しているが、これは物理コア1つが論理コア4つになっている。

性能[編集]

ハイパースレッディングの利点を以下に挙げる。

  • マルチスレッドコードのサポートを改善する。
  • 複数のスレッドが同時に動作することを可能にする。
  • メモリー入出力のレイテンシーを隠蔽しスループットを改善する。

インテルによると、NetBurstマイクロアーキテクチャにおける最初の実装は「通常の」プロセッサへ5%の領域のみを追加するだけで、15 - 30%の性能向上をもたらしたとしている。

しかし、ハイパースレッディングは、論理的なコアが物理的なコアの1次キャッシュメモリーや2次キャッシュメモリーを共有する構造になっているため、共有しているキャッシュメモリーの離れた領域を複数の論理的なコアが読み書きするようなソフトウェアでは、キャッシュの入れ替えが多発し性能が低下する事が指摘されている[1]。インテルは「ほとんどのベンチマークにおいて、ハイパースレッディング技術は良い結果を出している」と述べている

セキュリティ[編集]

2005年、Colin Percivalは、制限された特権を伴う悪意あるスレッド操作により、別のスレッドの実行の監視を許可してしまうため、暗号鍵が盗まれる可能性があることを明らかにした、「Cache Missing for Fun and Profit (PDF) 」という論文を発表した。 これは、攻撃者が対象となるコンピューター上で、アプリケーションを自由に実行できる環境が整わないと影響を受けないため、悪用する事は非常に困難である。現在のところ被害などは報告されていない。

現在[編集]

ハイパースレッディングはNetBurstマイクロアーキテクチャで最初に実装されたが、それに続くCoreマイクロアーキテクチャでは採用されなかった。Coreマイクロアーキテクチャのプロセッサであってもハイパースレッディング・テクノロジーを示すフラグは有り、1(有効)を示している。仮想プロセッサ個数が1であることを示し、ハイパースレッディング・テクノロジーが機能していないことを意味する。なお、2008年後半に発売した Intel Core i7 (コードネーム Nehalem)ではSMTを採用し、ハイパースレッディング・テクノロジーの商標が復活した。2011年発売のSandy Bridge及び2012年発売のIvy Bridgeのモデルでも、ハイパースレッディング・テクノロジーは採用されている。

IA-64Montecitoや、超低消費電力CPUのIntel Atomでもマルチスレッド技術が採用されたが、前者はブロック型マルチスレッディングであり、後者はインオーダープロセッサにおけるSMT実装なので、従来のNetBurstマイクロアーキテクチャのものとは技術的な関連はない。

脚注[編集]

[ヘルプ]

関連項目[編集]

情報源[編集]

外部リンク[編集]