Simultaneous Multithreading (SMT)
Kurz: Simultaneous Multithreading (SMT) lässt einen einzigen physischen Prozessorkern zwei (oder mehr) Threads gleichzeitig ausführen, indem er seine Recheneinheiten besser auslastet. Intel nennt es Hyper-Threading.
Genauer: Ein Kern hat viele Recheneinheiten, die bei einem Thread oft leer stehen, weil der auf Daten aus dem Speicher wartet oder von Abhängigkeiten gebremst wird. SMT legt dafür zusätzliche Register und Zustände an, sodass ein zweiter Thread in den freien Lücken mitläuft. Das Betriebssystem sieht dadurch zwei logische Prozessoren pro Kern.
Im Detail
Funktionsweise:
- Pro Kern gibt es doppelte Registersätze und Steuerung, aber nur ein Satz ALUs, FPUs und Caches (gemeinsam genutzt).
- Der Planer füllt die freien Rechenplätze pro Takt abwechselnd aus beiden Threads.
- Wartet ein Thread, rechnet der andere weiter.
Vorteile:
- Etwa 10 bis 30 % mehr Durchsatz bei gut parallelisierbarer Last (Rendern, Kompilieren, Server, Virtualisierung). Der Gewinn kostet nur wenig zusätzliche Chipfläche (~5 %).
- Geringere Latenz bei vielen kleinen Aufgaben, bessere Reaktionsfähigkeit unter Last.
Grenzen und Nachteile:
- Keine Verdopplung: Beide Threads teilen sich Rechenwerke und Cache. Bei rechenintensiven Programmen, die den Kern schon ausnutzen, bringt SMT wenig oder bremst sogar (Cache-Konkurrenz).
- Einzelthread-Tempo kann etwas sinken, wenn der zweite Thread mitläuft.
- Sicherheit: Gemeinsame Ressourcen ermöglichten Seitenkanal-Angriffe (Spectre, MDS, „PortSmash”). Manche Cloud-Anbieter und Systeme schalten SMT deshalb ab oder trennen Kunden pro Kern.
- Spiele: Profitieren oft kaum. Manche laufen ohne SMT stabiler.
Namen:
| Hersteller | Name |
|---|---|
| Intel | Hyper-Threading (HT) |
| AMD | SMT |
| IBM Power | SMT bis 8 Threads pro Kern |
| Apple, ARM-Mobilkerne | meist ohne SMT, dafür mehr echte Kerne |
Ein-/Ausschalten: Im UEFI („SMT Mode”, „Hyper-Threading”). Nur sinnvoll bei Spezialfällen.
Siehe auch: Hyper-Threading und Kerne, Prozessorkerne, logische Prozessoren und Threads, CPU-Pipeline