Closed6
同時マルチスレッディング(SMT)について

お馴染みの
より詳しく

SMTの状態を確認 (以下はSMTを有効にしている)
$ cat /sys/devices/system/cpu/smt/control
on
以下でも確認できる。SMT(2スレッド/コア)が有効になっている。
$ lscpu | grep "Thread(s) per core"
Thread(s) per core: 2

各CPUコアの スレッド兄弟(thread siblings) を表示
thread_siblings_list
は、ある物理コアが持つ SMT 論理コア(スレッド)を示す。
$ grep -H . /sys/devices/system/cpu/cpu*/topology/thread_siblings_list | sort -n -t ':' -k 2 -u
/sys/devices/system/cpu/cpu0/topology/thread_siblings_list:0-1
/sys/devices/system/cpu/cpu2/topology/thread_siblings_list:2-3
/sys/devices/system/cpu/cpu4/topology/thread_siblings_list:4-5
/sys/devices/system/cpu/cpu6/topology/thread_siblings_list:6-7
/sys/devices/system/cpu/cpu8/topology/thread_siblings_list:8-9
/sys/devices/system/cpu/cpu10/topology/thread_siblings_list:10-11
/sys/devices/system/cpu/cpu12/topology/thread_siblings_list:12-13
/sys/devices/system/cpu/cpu14/topology/thread_siblings_list:14-15
例えば、
/sys/devices/system/cpu/cpu0/topology/thread_siblings_list:0-1
→ CPU 0 は、スレッド 0 と 1 を持つ(1つの物理コアに SMT で2つの論理スレッド)
よって、各ペア(0-1、2-3、…)は、それぞれ 同じ物理コア上の2つの論理CPU(スレッド) となる。
※ 物理コア数 = 8、論理コア数 = 16(= 8×2)

概要的なもの
同時マルチスレッディング(SMT: Simultaneous Multithreading)は、CPUの1つの物理コアが複数のスレッド(命令列)を同時に実行できるようにする技術を指す。
Intelではこれを「Hyper-Threading(ハイパースレッディング)」と呼び、AMDでも「SMT」という名称で採用している。

なんでSMTが必要なんだっけ?
CPUの物理コアはとても高速だけど、実行中にメモリ待ちなどで アイドル状態(暇) になることがある。
SMTはそのアイドル時間を利用して、もう1つのスレッドを同時に実行させることで、CPUリソースの利用効率を高める。

SMTの注意点・デメリット
項目 | 内容 |
---|---|
❌ セキュリティリスク | キャッシュを共有するため、SpectreやMeltdownなどの影響を受けやすい |
❌ 効果が限定的 | 単一の重い処理では恩恵が少ない |
❌ スレッド競合 | 論理スレッドがリソースを奪い合うこともある |
このスクラップは4ヶ月前にクローズされました