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:
| Manufacturer | Name |
|---|---|
| Intel | Hyper-Threading (HT) |
| AMD | SMT |
| IBM Power | SMT up to 8 threads per core |
| Apple, ARM mobile cores | mostly 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