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.

SMT versus andere vormen van multithreading

Coarse-grained multithreading schakelt alleen over naar een andere thread bij een lange stall, zoals een cachemiss. Fine-grained multithreading wisselt threads cyclus voor cyclus af, maar geeft per cyclus maar van één thread instructies uit, een aanpak die gebruikelijk is in GPU's en sommige netwerkprocessors. SMT gaat verder door in dezelfde cyclus instructies van meerdere threads uit te geven, wat past bij brede superscalaire cores. Multicore dupliceert daarentegen de hele core. Intel brengt zijn tweevoudige SMT op de markt als Hyper-Threading, en sommige serverprocessors ondersteunen vier of acht threads per core.

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.

Nu oefenen: vragen over SMT (simultaneous multithreading)

Waarom wordt bij systemen die vertrouwelijke verwerking uitvoeren soms simultaneous multithreading (SMT) van de CPU uitgeschakeld?

  1. AOmdat twee threads die op dezelfde core draaien L1-cache, rekeneenheden e.d. delen, zodat het spoor van de verwerking gemakkelijk gedetailleerd door de andere thread kan worden waargenomen
  2. BOmdat de prestaties van de CPU altijd stijgen als SMT wordt uitgeschakeld
  3. COmdat SMT geen cryptografische berekeningen kan doen
Antwoord en toelichting tonen

Antwoord: A. Omdat twee threads die op dezelfde core draaien L1-cache, rekeneenheden e.d. delen, zodat het spoor van de verwerking gemakkelijk gedetailleerd door de andere thread kan worden waargenomen

Bij SMT draaien twee threads tegelijk in één core en delen ze de L1-cache, sprongvoorspeller, rekeneenheden en buffers fijnmazig. Een thread kan daardoor gemakkelijk de middelen die de andere gebruikt met tijdmeting waarnemen, en bij enkele kwetsbaarheden was dit een voorwaarde voor de aanval. Om dezelfde core niet met een onbetrouwbare partij te delen, wordt SMT uitgeschakeld of worden op dezelfde core alleen threads van dezelfde gebruiker geplaatst.

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.

“SMT (simultaneous multithreading)” in de toelichting

Vragen met “SMT (simultaneous multithreading)” (2)

  1. Waarom wordt bij systemen die vertrouwelijke verwerking uitvoeren soms simultaneous multithreading (SMT) van de CPU uitgeschakeld?
  2. Welke techniek verwerkt in één CPU-kern gelijktijdig instructies van meerdere threads en benut zo de rekeneenheden in de kern beter?

Verwante termen

Cachecoherentie Cachegeheugen DMA (direct memory access) DVFS (dynamic voltage and frequency scaling) GPU Instructiesetarchitectuur (ISA) Interrupt IPC Microcontroller (MCU) NPU (neural processing unit)

Naar de woordenlijst