[Simultaneous multithreading - Wikipedia](https://en.wikipedia.org/wiki/Simultaneous_multithreading)
同時マルチスレッディング(SMT)は、ハードウェアマルチスレッディングを備えたスーパースカラCPUの総合効率を向上させる技術である。SMTは、複数の独立したスレッドを実行することで、最新のプロセッサ・アーキテクチャが提供するリソースをより有効に活用することができる。
## Details
マルチスレッドという言葉は曖昧で、1つのCPUコアで複数のスレッドを同時に実行できるだけでなく、複数のタスク(異なるページテーブル、異なるタスクステートセグメント、異なるプロテクションリング、異なるI/Oパーミッションなどを持つ)も実行可能だからだ。同じコアで実行されているにもかかわらず、それらは互いに完全に分離されているのです。マルチスレッドはプリエンプティブ・マルチタスクとコンセプトが似ていますが、最近のスーパースカラ・プロセッサではスレッドレベルの実行で実装されています。
同時マルチスレッド(SMT)は、マルチスレッドの2つの主要な実装のうちの1つで、もう1つの形式はテンポラル・マルチスレッド(スーパースレッディングとも呼ばれる)です。一時的マルチスレッドでは、任意のパイプラインステージで一度に実行できる命令スレッドは1つだけです。同時マルチスレッドでは、任意のパイプラインステージで複数のスレッドの命令を一度に実行できる。必要なのは、1サイクルで複数のスレッドから命令をフェッチする機能と、複数のスレッドのデータを保持するためのより大きなレジスタファイルである。同時に実行するスレッドの数は、チップの設計者が決定します。CPUコアあたり2スレッドが一般的ですが、1コアあたり最大8スレッドまでサポートするプロセッサもあります。
共有リソースの競合が必然的に増えるため、その効果を測定したり、合意したりするのは難しい場合があります。しかし、130nmから32nmのIntel SMT(ハイパースレッディング)実装において、ネイティブとマネージドの並列ワークロードでSMTのエネルギー効率を測定したところ、45nmと32nmの実装では、SMTはインオーダーのAtomプロセッサでも非常に高いエネルギー効率を持つことがわかりました[1]。 最新のシステムでは、SMTはほとんど動力を追加せずに並列性を有効に活用することができます。つまり、性能向上がわずかであっても、消費電力を大幅に削減することが可能です[2]。
一部の研究者[who?]は、余分なスレッドをキャッシュのような共有リソースのシードに積極的に使用し、別の単一スレッドの性能を改善できることを示し、これはSMTが効率を高めるだけではないことを示すと主張しています。また、SMTを利用して冗長計算を行い、ある程度のエラー検出とリカバリを行う人もいます。
しかし、現在のほとんどの場合、SMTはメモリレイテンシーを隠蔽し、効率を高め、使用するハードウェア量あたりの計算のスループットを向上させるものです。