⭐️SMT/ハイパースレッディング

  • 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つの注文伝票を同時に持たせた」**状態。