ハードウェアマルチスレッディング
マルチスレッディングをハードウェアでサポートすることの目標は、ブロックされたスレッドと、実行可能な別のスレッドの切り替えを高速に行うことである。この目標を達成するためのハードウェアのコストは、プログラムから見えるレジスタといくつかのプロセッサ制御レジスタ(プログラムカウンタなど)を複数持つことである。あるスレッドから別のスレッドへの切り替えは、使用するレジスタセットを別のものに切り替えることを意味する。
こうしたハードウェアの追加は以下の利点がある:
スレッドの切り替えが 1 CPU サイクルで完了する。
各スレッドにとって、それぞれは個別に実行されており、ほかのスレッドとハードウェア資源を共有していないように見える。アプリケーションやオペレーティングシステムでマルチスレッディングをサポートするためのソフトウェアの変更量が最小である。
アクティブなスレッド同士を効率的に切り替えるため、それぞれのアクティブなスレッドは専用のレジスタを一式持つ必要がある。たとえば、二つのスレッドを高速に切り替えるため、レジスタのハードウェアは二つ作成する必要がある。
SMT をその他のマルチスレッディングの種類と区別するため、同時に一つのスレッドからの命令しか発行できない場合には経時的マルチスレッディング (temporal multi-threading) という用語が用いられる。
「#粗粒度マルチスレッディング」で議論されているハードウェアコストに加え、SMTは各パイプラインのステージが処理する命令のスレッド ID を「各命令ごとに」認識するコストがかかる。さらに多数のアクティブのためキャッシュや TLB などの共有リソースを大きくしなければならない。