同時マルチスレッド

Intel Pentium 4 は、2002 年にリリースされた 3.06 GHz モデル以降、多くのプロセッサに導入され、同時マルチスレッドを実装した最初のモダンなデスクトップ プロセッサです。 インテルはこの機能をハイパースレッディングテクノロジーと呼び、基本的な2スレッドのSMTエンジンを提供する。 Intelは、SMTでない同じPentium 4と比較して、最大で30%の速度向上を謳っている。 しかし、プロセッサの完全な注意を必要とする2つのプログラムを実行する場合、ハイパースレッディングをオンにすると、どちらかのプログラムの速度がわずかに低下するように見えることがあります。 これは、Pentium 4 のリプレイシステムが貴重な実行リソースを占有し、帯域幅、キャッシュ、TLB、リオーダーバッファエントリーなどのリソースに対する競合を増加させ、2 つのプログラム間のプロセッサリソースを均等にするため、実行時間が変化することが原因です。 Pentium 4 Prescottコアは、リプレイキューを獲得し、リプレイシステムに必要な実行時間を短縮しました。 565>

最新の Imagination Technologies MIPS アーキテクチャーのデザインには、「MIPS MT」として知られる SMT システムが含まれています。 MIPS MT は、ヘビー級の仮想処理要素と軽量なハードウェアマイクロスレッドの両方を提供します。 クパチーノに本拠を置く新興企業であるRMIは、MIPSベンダーとして初めて、それぞれが4スレッドを実行する8コアをベースにしたプロセッサSOCを提供する企業である。 スレッドは、各サイクルごとに異なるスレッドを実行するファイングレインモードで実行することができます。 また、スレッドに優先順位をつけることも可能です。 2004 年 5 月に発表された IBM POWER5 は、デュアルコア・デュアルチップ・モジュール(DCM)、クアッドコアまたはオクトコア・マルチチップ・モジュール(MCM)のいずれかであり、各コアに 2 スレッド SMT エンジンが搭載されています。 IBMの実装は、以前のものよりも洗練されており、さまざまなスレッドに異なる優先度を割り当てることができ、よりきめ細かく、SMTプロセッサが性能を向上させないようなワークロードをよりよく実行するために、SMTエンジンを動的にオン/オフすることができる。 これは、一般に利用可能なハードウェアマルチスレッディングのIBMの2番目の実装です。 2010 年、IBM は POWER7 プロセッサーをベースに、それぞれが 4 つの Simultaneous Intelligent Threads を持つ 8 つのコアを搭載したシステムをリリースしました。 これは、その時点でスケジューリングされているプロセススレッドの数に応じて、スレッドモードを1スレッド、2スレッド、4スレッドの間で切り替えます。 これにより、最小の応答時間と最大のスループットのためにコアの使用を最適化します。 IBM POWER8 は、1 コアあたり 8 つのインテリジェントな同時スレッド (SMT8) を備えています。

多くの人が、Sun Microsystems の UltraSPARC T1 (2005 年 11 月 14 日のリリースまで「Niagara」として知られていた) および今はなきコードネーム「Rock」プロセッサ (2005 年に発表されたが、多くの延期の末 2010 年にキャンセル) は SMT および CMP 技術の活用にほぼ完全に焦点を当てた SPARC の実装だと報告しているが、実際には Niagara は SMT は使用されていない。 Sunは、これらを組み合わせたアプローチを「CMT」と呼び、全体のコンセプトを「Throughput Computing」と呼んでいる。 Niagaraは8コアだが、各コアのパイプラインは1本なので、実際には細粒度のマルチスレッドを使っている。 SMTのように1サイクルごとに複数のスレッドから命令を発行するのではなく、1サイクルごとに次のアクティブなスレッドから命令を発行するラウンドロビン・ポリシーを採用している。 このため、よりバレルプロセッサに近いものとなっている。 565>

Oracle CorporationのSPARC T3はコアあたり8つの細粒度のスレッドを持ち、SPARC T4, SPARC T5, SPARC M5, M6, M7はコアあたり8つの細粒度のスレッドを持ち、そのうち2つは同時に実行することができる。

Fujitsu SPARC64 VI は粗視化 Vertical Multithreading (VMT) SPARC VII 以降は 2-way SMT。

Intel Itanium Montecito は粗視化マルチスレッド、Tukwila 以降は 2D SMT(デュアルドメイン マルチスレッド付き)です。

Intel Xeon Phi は、通常の Hyperthreading と異なり無効にできないハードウェアベースのスレッドを持つ 4-way SMT (時間多重化マルチスレッディング) を備えています。 2008年に発売されたIntel Atomは、命令の並べ替え、投機実行、レジスタ名の変更をサポートしない2ウェイSMT(Hyper-Threadingとして販売)を搭載した最初のIntel製品です。 565>

AMD Bulldozer マイクロアーキテクチャ FlexFPU と共有 L2 キャッシュはマルチスレッドですが、モジュール内の整数コアはシングルスレッドなので、部分的な SMT の実装にすぎません。

AMD Zen マイクロアーキテクチャは 2-way SMT を備えています。

VISC アーキテクチャは、仮想ソフトウェア層 (翻訳層) を使用して、命令の単一スレッドをグローバル フロントエンドにディスパッチし、命令を個別の仮想コアにディスパッチされるハードウェア仮想スレッドレットに分割します。 この仮想コアは、物理コアの空いているリソースに命令を送ることができる。 複数の仮想コアは、1つの物理コアのリオーダーバッファにスレッドレットをプッシュすることができ、物理コアは複数のスレッドレットから部分命令とデータを同時に実行ポートに分割することができる。 各仮想コアは、相対的な出力の位置を把握している。 この形態のマルチスレッドは、1つのスレッドがCPUのすべてのリソースを使用できるようにすることで、シングルスレッド性能を高めることができます。リソースの割り当ては、ほぼシングルサイクルのレイテンシレベルでダイナミックに行われます(個々のアプリケーションのニーズに応じて割り当てを変更することで1~4サイクルになります。 したがって、2つの仮想コアがリソースを競合している場合、どのリソースをどこに割り当てるかを決定する適切なアルゴリズムが用意されています。