Closed6

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

tamaco489tamaco489

SMTの状態を確認 (以下はSMTを有効にしている)

$ cat /sys/devices/system/cpu/smt/control
on

以下でも確認できる。SMT(2スレッド/コア)が有効になっている。

$ lscpu | grep "Thread(s) per core"
Thread(s) per core:                   2
tamaco489tamaco489

各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)

tamaco489tamaco489

概要的なもの

同時マルチスレッディング(SMT: Simultaneous Multithreading)は、CPUの1つの物理コアが複数のスレッド(命令列)を同時に実行できるようにする技術を指す。

Intelではこれを「Hyper-Threading(ハイパースレッディング)」と呼び、AMDでも「SMT」という名称で採用している。

https://www.intel.co.jp/content/www/jp/ja/gaming/resources/hyper-threading.html

tamaco489tamaco489

なんでSMTが必要なんだっけ?

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

tamaco489tamaco489

SMTの注意点・デメリット

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