|
ハイパースレッディング・テクノロジー (''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つになっている。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「ハイパースレッディング・テクノロジー」の詳細全文を読む 英語版ウィキペディアに対照対訳語「 Hyper-threading 」があります。 スポンサード リンク
|