- SMT(Simultaneous Multi-Threading):1つの物理コアを、OSからは「複数の論理CPU」に見せる技術
- Intel の実装名が ハイパースレッディング(HT)、AMD だと単に SMT と呼ぶ(中身はほぼ同じ考え方)
- これが「1コア = 2スレッド」の正体。コア数は増えていないのに、論理CPUの数だけ2倍になる
なぜそんなことができるのか
コアの中身は1枚岩ではなく、役割の違う部品の集まりになっている。
- 実行ユニット(計算する部品:足し算、掛け算、メモリアクセスなど)= 料理人の腕・コンロ
- アーキテクチャ状態(レジスタ、プログラムカウンタなど「今どこまで実行したか」の情報)= 料理人が見ているレシピと手元のメモ
SMT は、アーキテクチャ状態だけを2セット持たせて、実行ユニットは共有する。
【 SMT なしのコア 】 【 SMT ありのコア 】
┌─── コア ────────┐ ┌─── コア ──────────────────┐
│ レシピ帳 ×1 │ │ レシピ帳 ×2 (スレッド0/1)│ ◀ ここだけ2セット
│ │ │ │
│ ┌ 実行ユニット ┐│ │ ┌────── 実行ユニット ─────┐│
│ │ 腕・コンロ ││ │ │ 腕・コンロ ││ ◀ ここは共有(1セットのまま)
│ └──────────────┘│ │ └─────────────────────────┘│
└─────────────────┘ └────────────────────────────┘
OSからは「CPU 1個」 OSからは「CPU 2個」に見える
厨房の例えで言うと、**料理人を増やしたのではなく、料理人1人に「2つの注文伝票を同時に持たせた」**状態。