ハードウェアマルチスレッディング ハードウェアマルチスレッディングの概要

ハードウェアマルチスレッディング

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/05 02:03 UTC 版)

ナビゲーションに移動 検索に移動

概要

ハードウェアマルチスレッドのパラダイムは、1990年代後半以来、命令レベルの並列性をこれ以上利用する努力が行き詰まったため、注目されるようになった。スループットコンピューティングの概念をより特化した分野であるトランザクション処理から突如再浮上させることになった。

  • これ以上シングルスレッドやシングルプログラムの性能を向上させるのは非常に難しいが、ほとんどのコンピュータシステムは実際には複数のスレッドやプログラムによりマルチタスクを行なっている。
  • すべてのタスクのシステム全体のスループットを向上させうる技術が、大きなパフォーマンスの向上につながる。

「スループットコンピューティング」のための二つの有力な方法が、マルチプロセッシングハードウェアマルチスレッディングである。

マルチスレッディングに対していくつか批判もある:

  • キャッシュTLB などのハードウェアを共有すると、複数のスレッドが互いに干渉しあってしまいスラッシングを招く
  • シングルスレッドの実行時間は向上せず、むしろ低下する可能性がある。
  • マルチスレッディングのためのハードウェアサポートはソフトウェアにとって目に付くもので、マルチプロセッシングと比べアプリケーションプログラムやオペレーティングシステムにより多くの変更を必要とする。
 横軸は各クロックサイクルにおける命令実行能力を示し、縦軸はクロックサイクルの実行の流れを示す。 空白はクロックサイクルが未使用であることを示し、各色は各スレッドごとの一連の命令の流れを示し、番号は各スレッドにおける命令の順序を示す。

マルチスレッドサポートするために用いられるハードウェア技術は、コンピュータプログラムのマルチタスクのためのソフトウェア技術と匹敵する。

細粒度マルチスレッディング

概念

細粒度マルチスレッドはサイクルごとに実行スレッドの切り替えを行い、マルチスレッドに対応する方法である。実行スレッドの切り替えは、複数のスレッドからの命令実行をインターリーブ(動的割り当てによる性能向上)するため、大抵の場合ラウンドロビン方式で行われ、停止中のスレッドはスキップされる。[1]

例:

  1. サイクル i: スレッド A からの命令が発行される
  2. サイクル i+1: スレッド B からの命令が発行される
  3. サイクル i+2: スレッド C からの命令が発行される

この種類のマルチスレッディングの目的は、実行パイプラインから、データ依存によるストールをすべて排除することである。一つのスレッドが比較的他のスレッドから独立しているため、一つのパイプのステージ内の一つの命令がパイプラインの古い命令の出力結果を必要とする可能性は低い。

概念的には、オペレーティングシステムで用いられるプリエンプティブ・マルチタスクと似ている。各アクティブスレッドに与えられたタイムスライスを 1 CPU サイクルに例えることができるだろう。

利点

細粒度のマルチスレッドの主な利点の1つは、短時間および長時間のスレッドの停止によって生じるスループット低下を隠せることである。というのも、あるスレッドが停止したとき(たとえ数サイクルの停止であったとしても)、サイクルごとに実行スレッドの切り替えを行うので、他のスレッドの命令が実行されるためである。[1]

欠点

細粒度のマルチスレッドの主な欠点は、個々のスレッドの実行速度が遅くなることである。サイクルごとに実行スレッドの切り替えを行うので、停止せずに実行可能なスレッドが、他のスレッドからの命令によって遅れてしまうからである。その代償として、シングルスレッドの性能(レイテンシーで測定)が低下するため、マルチスレッドのスループットも向上しない。[1]

用語

この種のマルチスレッディングは初め「バレルプロセッシング」と呼ばれ、樽 (barrel) の段がパイプラインのステージと、実行スレッドを表す。「細粒度 (fine-grained) マルチスレッディング (FGMT)」、「インターリーブ型 (interleaved) マルチスレッディング」、「プリエンプティブ (pre-emptive) マルチスレッディング」、「タイムスライス (time-sliced) マルチスレッディング」などが、より現代的な用語である。

ハードウェアのコスト

#粗粒度マルチスレッディング」で議論されているハードウェアコストに加え、「細粒度マルチスレッディング」はさらに各パイプラインステージが処理する各命令のスレッド ID を追跡するためのコストがかかる。また、パイプライン内でより多くのスレッドが並列に実行されるため、異なるスレッド間のスラッシングを避けるためキャッシュや TLB などの共有リソースを大きくする必要がある。

粗粒度マルチスレッディング

概念

もっともシンプルなタイプのマルチスレッディングは、一つのスレッドが、通常長い遅延のあるストールを発生させるイベントによりブロックされるまで動作しつづけるものである。こうしたストールはチップの外にあるメモリにアクセスする必要があり、データを取得して復帰するまで数百 CPU サイクルかかるキャッシュミスである可能性がある。スレッド化されたプロセッサは、ストールが解決されるのを待たず、動作の準備ができている別のスレッドに実行を切り替える。以前のスレッドにデータが到着した場合にのみ、以前のスレッドが実行可能なスレッドのリスト上に復帰する。

例:

  1. サイクル i: スレッド A からの命令 j が発行される
  2. サイクル i+1: スレッド A からの命令 j+1 が発行される
  3. サイクル i+2: スレッド A からの命令 j+2 が発行され、すべてのキャッシュをミスする load 命令である
  4. サイクル i+3: スレッドスケジューラが呼び出され、スレッド B に切り替える
  5. サイクル i+4: スレッド B からの命令 k が発行される
  6. サイクル i+5: スレッド B からの命令 k+1 が発行される

概念的には、リアルタイムオペレーティングシステムで使用される協調マルチタスクに似ている。これは、特定のイベントを待つ必要がある場合にタスクが自主的に実行時間を引き渡す。

用語

この種類のマルチスレッディングは「ブロック型 (block) マルチスレッディング」、「協調 (cooperative) マルチスレッディング」、「粗粒度 (coarse-grained) マルチスレッディング (CGMT)」、「垂直 (vertical) マルチスレッディング (VMT)」として知られる。

ハードウェアのコスト

マルチスレッディングをハードウェアでサポートすることの目標は、ブロックされたスレッドと、実行可能な別のスレッドの切り替えを高速に行うことである。この目標を達成するためのハードウェアのコストは、プログラムから見えるレジスタといくつかのプロセッサ制御レジスタ(プログラムカウンタなど)を複数持つことである。あるスレッドから別のスレッドへの切り替えは、使用するレジスタセットを別のものに切り替えることを意味する。

こうしたハードウェアの追加は以下の利点がある:

  • スレッドの切り替えが 1 CPU サイクルで完了する。
  • 各スレッドにとって、それぞれは個別に実行されており、ほかのスレッドとハードウェア資源を共有していないように見える。アプリケーションやオペレーティングシステムでマルチスレッディングをサポートするためのソフトウェアの変更量が最小である。

アクティブなスレッド同士を効率的に切り替えるため、それぞれのアクティブなスレッドは専用のレジスタを一式持つ必要がある。たとえば、二つのスレッドを高速に切り替えるため、レジスタのハードウェアは二つ作成する必要がある。

  • 多数のマイクロコントローラおよび組み込み用途のプロセッサファミリが、割り込みのための高速なコンテキストスイッチが可能なよう複数の高速なレジスタバンクを持っている。こうした戦略はユーザープログラムスレッドと割り込みスレッドの間のブロック型マルチスレッディングの一種と考えることができる。



「ハードウェアマルチスレッディング」の続きの解説一覧




固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ハードウェアマルチスレッディング」の関連用語

ハードウェアマルチスレッディングのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ハードウェアマルチスレッディングのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのハードウェアマルチスレッディング (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS