Wat is SMT (simultaneous multithreading)?
Techniek waarbij één CPU-core instructies van meerdere threads tegelijk verwerkt en zo de rekeneenheden in de core beter benut. Intel noemt dit Hyper-Threading.
Japanse benaming: SMT(同時マルチスレッディング)
“SMT (simultaneous multithreading)” komt voor in 2 oefenvragen uit 2 onderwerpen, bijv. Hardwarebeveiliging, CPU en architectuur.
Vakgebied: CPU en architectuur
Hoe SMT één core deelt
Een moderne out-of-order-core kan meerdere instructies per cyclus uitgeven, maar één thread houdt zelden alle executie-eenheden bezig vanwege afhankelijkheden, verkeerd voorspelde branches en cachemisses. Simultaneous multithreading (SMT) geeft de core voor elke hardwarethread een aparte architecturale toestand, zoals programmateller en architecturale registers, terwijl de threads executie-eenheden, caches, branch predictors en interne buffers delen. In dezelfde cyclus kunnen instructies van verschillende threads naar verschillende eenheden worden uitgegeven. Het besturingssysteem ziet elke hardwarethread als een logische processor, doorgaans twee per core.
Hoeveel versnelling je kunt verwachten
Omdat de threads concurreren om dezelfde executiemiddelen, verdubbelt SMT de prestaties niet zoals een tweede core dat kan. Typische winsten liggen tussen ongeveer 0 en 30 procent. Workloads die vaak stilvallen, zoals workloads die op geheugen wachten, profiteren het meest: terwijl de ene thread op een cachemiss wacht, houdt de andere de eenheden bezig. Workloads die de floating-point-eenheden of de geheugenbandbreedte al verzadigen, winnen weinig, en concurrentie in gedeelde caches kan individuele threads zelfs trager maken, wat ertoe doet bij latentiegevoelige toepassingen.
Beveiliging en scheduling
Twee SMT-threads delen de L1-caches, de branch predictor, de executiepoorten en buffers op zeer fijne schaal, zodat de ene thread kan afleiden wat de andere doet door zijn eigen timing te meten. Verschillende side-channelkwetsbaarheden berusten precies op deze opzet. Systemen die onvertrouwde code van verschillende klanten op dezelfde hardware draaien, schakelen SMT daarom soms uit of gebruiken core scheduling, waarbij alleen threads uit hetzelfde vertrouwensdomein op logische processors van dezelfde core worden geplaatst. Beide verlagen de doorvoer, dus de beslissing is een afweging tussen prestaties en isolatie.
Veelgestelde vragen
Is Hyper-Threading hetzelfde als SMT?
Ja. Hyper-Threading is de merknaam van Intel voor zijn implementatie van simultaneous multithreading, waarbij elke fysieke core zich voor het besturingssysteem voordoet als twee logische processors.
Verdubbelt SMT de prestaties van een CPU?
Nee. De twee threads delen de executie-eenheden en caches van één core, dus typische doorvoerwinsten zijn ongeveer 0 tot 30 procent, afhankelijk van de workload, veel minder dan bij het toevoegen van een tweede core.
Waarom schakelen sommige systemen SMT uit?
Threads op dezelfde core delen caches en executiemiddelen zo nauw dat de ene de andere via timing-side-channels kan waarnemen. SMT uitschakelen, of alleen threads die elkaar vertrouwen samen inplannen, neemt die blootstelling weg, ten koste van enige doorvoer.