# 同時マルチスレッディング(SMT)
1 つの物理プロセッサコアが**複数のスレッドを同時実行**し、論理的に複数の独立プロセッサに見える設計手法。スレッドレベル並列性(TLP)を命令レベル並列性(ILP)に変換することで、機能ユニットの空きサイクルを埋める。
## 基本原理
スーパースカラー OOO プロセッサは、ILP の限界(依存・分岐誤予測・キャッシュミス)により機能ユニットが頻繁に遊ぶ。その空きサイクルを**別スレッドの命令**で充填する。
ハードウェアコストが低い:
- 複製が必要なもの: プログラムカウンタ、アーキテクチャレジスタ、TLB エントリなど「実行状態」(全体の約 10%)
- 共有できるもの: デコーダ・ディスパッチロジック・機能ユニット・キャッシュ(全体の大半)
結果として 10% 程度のロジック追加で複数スレッドを同時実行できる。
## Intel ハイパースレッディング
- Pentium 4 で初採用(2 スレッド SMT)。Intel の商品名。
- 性能向上: アプリ依存で **-10% 〜 +30%** と幅が大きい。
- Skylake 世代(Core i第6〜第10世代)まで 2 スレッド SMT。一部 Core Ultra で廃止後、再導入予定。
## 主なプロセッサの SMT 設定
| プロセッサ | コア数 | スレッド/コア | 総スレッド数 |
|---|---|---|---|
| Core i7(12コア) | 12 | 2 | 24 |
| AMD Zen 1〜5 | 〜32 | 2 | 〜64 |
| UltraSPARC T1 | 8 | 4 | 32 |
| UltraSPARC T2/T3 | 8〜16 | 8 | 64〜128 |
| IBM POWER5 | 2 | 2 | 4 |
| IBM POWER8 | 12 | 8 | 96 |
## SMT の性能特性
### 有利なケース
- **メモリレイテンシ律速**: データベース・3D レンダリング・汎用コードなど、キャッシュミス中の待機時間を別スレッドで穴埋め。
### 不利なケース
- **同一リソース競合**: 2 スレッドが同一機能ユニットを奪い合うと互いを足を引っ張る。
- **キャッシュ競合**: 共有キャッシュを分け合うため、ワーキングセットが大きいアプリでは各スレッドのキャッシュヒット率が低下。
- **帯域律速**: イメージ処理など帯域が律速のアプリは SMT で改善しにくい。
> [!key-insight] SMT の本質的な難しさ
> 「最大 2 プロセッサ並みに速い」場合と「2 プロセッサ合計より遅い」場合の両方があり、予測が難しい。マーケティング上も扱いにくいトレードオフ。
## マルチコアとの比較
| 観点 | SMT | マルチコア |
|---|---|---|
| ハードウェアコスト | 低(+10%ロジック) | 高(コア丸ごと追加) |
| スレッド当たり面積効率 | 高 | 低 |
| スレッド間リソース競合 | 高(全共有) | 低(各コアが専用) |
| 並列化効果の天井 | ILP に依存 | 真の並列実行 |
**発行幅のスケーリング問題**: 単一コアを広幅にするほどディスパッチロジックが n² でスケールする。よって「1 コア 20-issue SMT」より「2 コア 10-issue」のほうが面積効率がよく、現実的。これがマルチコアが主流になった理由の一つ。
## 非対称マルチコア(big.LITTLE / hybrid)
大コア(Brainiac・広幅 OOO)と小コア(シンプル・低消費電力)を混在させる設計:
- ARM big.LITTLE: スマホ・タブレットの主流。軽負荷時は大コアをオフ。
- Intel Alder Lake / Raptor Lake: 高性能 P コア + 効率 E コア(Gracemont)。
- **Cell プロセッサ(PS3)**: 大コア + 特殊処理コアの先駆け。ISA 非互換の設計ミスで普及せず。
## SoC(System-on-Chip)
CPU + GPU + 動画エンコーダ + I/O を同一チップに統合。コスト・省スペース・低消費電力を重視するスマホ・タブレット・軽量ノート向け。NVIDIA Tegra が初期の例。Apple M シリーズは統合メモリアーキテクチャを持つ高性能 SoC。
## 横断的知見
- 今後の取り込みで、複数ソース間の関係を追記する。
## 未解決の問い
- この概念をどのソース群で継続的に検証するか。
## 関連
- ILP の限界と TLP の役割 → [[Brainiac設計]]
- キャッシュ競合 → [[メモリ階層とキャッシュ]]