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

出典: フリー百科事典『ウィキペディア(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から「論理的に」複数のCPUのように見えることとなり、OSが2つのスレッドやプロセスをスケジューリングすることが可能となる。これにより、処理に時間を要するスレッドが実行中でも、別のスレッドを走らせることができる。

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

そこで一つのCPUながらデコードやスケジュールをする部分を複数とし、論理的に複数のCPUと見なすことにより、空いているパイプラインを埋めて効率を向上させることが考えられた。

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

最近はCPUの処理するコードやデータの量が肥大化しているのに対し、L2キャッシュのサイズには限りがあるので低速のメインメモリにアクセスが必要になると、パイプラインが空いていても処理できない。このため、最新のCPUではメモリーコントローラーをチップセットではなくCPU自体に内蔵させてメインメモリへのアクセス速度を向上させている。

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

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

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

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

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

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

すなわちハイパースレッディングはOSやアプリケーションをに改変せず利用できる透過性があることが特徴である。もちろんハイパースレッディングを意識したプロセスとするかどうかによって効率は変化する。

なお、CPUが処理中のコードやデータを自ら書き換えていくような 特殊なアプリケーションや、複数のスレッドが強い依存関係を持つ場合は効率が低下したりエラーとなることがある。また論理CPU間のデータの秘匿に問題があるなど、ごく限られたケースながら問題が生じることがある。このため、多くの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]

セキュリティ[編集]

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マイクロアーキテクチャのものとは技術的な関連はない。

脚注[編集]

[ヘルプ]

関連項目[編集]

情報源[編集]

外部リンク[編集]