ハードウェアマルチスレッディング(hardware multi-threading)とは、プロセッサのマイクロアーキテクチャにおいて、複数のスレッドを
ハードウェアで並行して実行する技術のことです。これにより、システム全体の処理能力(スループット)を向上させることが可能になります。
ハードウェアマルチスレッディングの背景
1990年代後半以降、命令レベルの並列性を追求するアプローチが限界に達する中で、
ハードウェアマルチスレッディングが注目を集めるようになりました。
トランザクション処理など、特定分野で用いられていたスループットコンピューティングの概念が、より広範な分野へと適用されるようになったのです。
シングルスレッドの性能向上が困難になる一方で、多くのコンピュータシステムは複数のスレッドやプログラムを同時に実行する
マルチタスク環境にあります。このような状況下で、システム全体の処理能力を高める技術として、マルチプロセッシングと
ハードウェアマルチスレッディングが重要な役割を担うようになりました。
ハードウェアマルチスレッディングの課題
ハードウェアマルチスレッディングには、以下のような課題も存在します。
リソース競合: キャッシュやTLBなどの共有ハードウェアリソースを複数のスレッドが利用するため、競合が発生し、スラッシングを引き起こす可能性があります。
シングルスレッド性能の低下: マルチスレッディングによって、個々のスレッドの実行速度が低下する可能性があります。
ソフトウェアの変更: マルチスレッディング対応のためには、アプリケーションやオペレーティングシステムに多くの変更が必要となる場合があります。
これらの課題にもかかわらず、ハードウェアマルチスレッディングは、コンピュータプログラムのマルチタスク処理を効率化する上で重要な役割を果たしています。
ハードウェアマルチスレッディングの種類
ハードウェアマルチスレッディングには、主に以下の3つの種類があります。
細粒度マルチスレッディング (Fine-Grained Multi-Threading)
細粒度マルチスレッディング(FGMT)は、CPUサイクルごとに実行スレッドを切り替える方式です。複数のスレッドからの命令をインターリーブに実行することで、パイプライン内のデータ依存によるストールを回避し、スループットを向上させます。この方式は、オペレーティングシステムのプリエンプティブマルチタスクに似ており、各スレッドに割り当てられたタイムスライスが1CPUサイクルに相当すると考えられます。
利点
スレッドが一時停止した場合でも、他のスレッドが実行されるため、スループットの低下を抑制できます。
欠点
サイクルごとにスレッドを切り替えるため、個々のスレッドの実行速度が遅くなる可能性があります。
別名
バレルプロセッシング
インターリーブ型マルチスレッディング
プリエンプティブマルチスレッディング
タイムスライスマルチスレッディング
ハードウェアコスト
各パイプラインステージで処理する命令のスレッドIDを追跡するコストがかかります。
キャッシュやTLBなどの共有リソースを大きくする必要があります。
例
Denelcor Heterogeneous Element Processor
Intel Super-threading
Sun Microsystems UltraSPARC T1
Lexra NetVortex
MIPS 34K コア(Multi-Threaded ASEを実装)
Raza Microelectronics Inc XLR
Cell プロセッサ内の Power Processing Element (PPE)
Xbox 360のPXプロセッサ
粗粒度マルチスレッディング (Coarse-Grained Multi-Threading)
粗粒度マルチスレッディング(CGMT)は、あるスレッドが長い遅延を伴うストール(例:キャッシュミス)によってブロックされるまで、そのスレッドを実行し続ける方式です。スレッドがブロックされた場合、CPUは実行可能な別のスレッドに切り替えます。この方式は、リアルタイムオペレーティングシステムの協調マルチタスクに似ており、タスクが特定のイベントを待つ必要がある場合に自主的に実行権を譲る点に共通点があります。
別名
ブロック型マルチスレッディング
協調マルチスレッディング
垂直マルチスレッディング (VMT)
ハードウェアコスト
プログラムから見えるレジスタやプロセッサ制御レジスタ(プログラムカウンタなど)を複数用意する必要があります。
スレッド切り替えを高速に行う必要があります。
利点
スレッドの切り替えが1CPUサイクルで完了します。
各スレッドは独立して実行されているように見えるため、ソフトウェアの変更を最小限に抑えられます。
例
多くのマイクロコントローラや組み込みプロセッサファミリ
同時マルチスレッディング (Simultaneous Multi-Threading)
同時マルチスレッディング(SMT)は、スーパースケーラCPUにおいて、複数のスレッドから同時に複数の命令を発行する方式です。スーパースケーラCPUは通常、1つのスレッドから毎サイクル複数の命令を発行しますが、SMTでは、複数のスレッドの命令を同時に発行することで、命令発行スロットの利用効率を向上させます。各シングルスレッドの命令レベルの並列性が制限される状況で有効です。
用語
同時に一つのスレッドからの命令しか発行できない場合は、経時的マルチスレッディング(temporal multi-threading)と呼ばれます。
ハードウェアコスト
各パイプラインステージで処理する命令のスレッドIDを認識するコストがかかります。
キャッシュやTLBなどの共有リソースを大きくする必要があります。
例
MIPS 34k
Intel Hyper-Threading
IBM POWER5 以降
実装上の課題
ハードウェアマルチスレッディングの実装においては、以下のような課題が挙げられます。
スレッドスケジューラ: 実行可能スレッドのリストから次に実行するものを高速に選択し、同時に実行可能およびストールしたスレッドのリストを管理するスレッドスケジューラの設計は重要です。
イベントトリガー: キャッシュミス、スレッド間通信、DMA完了など、どの種類のイベントがスレッドの切り替えを引き起こすべきかを決定する必要があります。
リソースの仮想化: すべてのソフトウェアから見える状態(権限管理レジスタ、TLBなど)を複製する場合は、各スレッドで仮想マシンを有効にできます。一方、ユーザーモードの状態のみを保存する場合は、
ハードウェア要件を減らし、より多くのスレッドを同時に実行できます。
まとめ
ハードウェアマルチスレッディングは、プロセッサの性能を最大限に引き出すための重要な技術です。その種類や特性を理解することで、より効率的なシステム設計やプログラム開発が可能になります。今後も、マルチスレッディング技術は進化を続け、より高度なコンピュータシステムの実現に貢献していくでしょう。
関連項目
スレッド (コンピュータ))
同時マルチスレッディング (Simultaneous Multi-Threading), SMT