EMZETT.
Login

Simultaneous multithreading (SMT)

In short: Simultaneous multithreading (SMT) lets a single physical processor core run two (or more) threads at the same time by using its execution units better. Intel calls it Hyper-Threading.

In more detail: A core has many execution units that often sit idle with a single thread because it waits for data from memory or is slowed by dependencies. SMT adds extra registers and state so a second thread runs in the free gaps. The operating system therefore sees two logical processors per core.

In Depth

How it works:

  • Per core there are duplicated register sets and control, but only one set of ALUs, FPUs and caches (shared).
  • The scheduler fills the free execution slots each cycle alternately from both threads.
  • If one thread waits, the other keeps computing.

Advantages:

  • About 10 to 30 % more throughput under well-parallelizable load (rendering, compiling, servers, virtualization). The gain costs only little extra chip area (~5 %).
  • Lower latency with many small tasks, better responsiveness under load.

Limits and disadvantages:

  • No doubling: Both threads share execution units and cache. For compute-heavy programs that already use up the core, SMT brings little or even slows down (cache competition).
  • Single-thread speed can drop slightly when the second thread runs along.
  • Security: Shared resources enabled side-channel attacks (Spectre, MDS, “PortSmash”). Some cloud providers and systems therefore turn SMT off or separate customers per core.
  • Games: Often hardly benefit. Some run more stable without SMT.

Names:

ManufacturerName
IntelHyper-Threading (HT)
AMDSMT
IBM PowerSMT up to 8 threads per core
Apple, ARM mobile coresmostly without SMT, more real cores instead

Switching on/off: In the UEFI (“SMT mode”, “Hyper-Threading”). Only sensible in special cases.

See also: Hyper-threading and cores, Processor cores, logical processors and threads, CPU pipeline