Simultan multitrådning (SMT) – definition, funktion och fördelar

Simultaneous multithreading, förkortning SMT, är en teknik för att förbättra den totala effektiviteten hos superskalära CPU:er med hårdvarumultithreading. SMT tillåter flera oberoende exekveringssträngar för att bättre utnyttja de resurser som moderna datorarkitekturer tillhandahåller.

Multitrådning liknar konceptet för multitasking men implementeras på trådnivå i moderna superskalära processorer.

Vid processordesign finns det två sätt att öka parallelliteten på chipet med mindre resurskrav:

  1. Superskalär teknik: som försöker öka parallelliteten på instruktionsnivå (ILP) genom att utföra flera instruktioner samtidigt (kallat "samtidigt"), genom att "samtidigt" skicka instruktioner (kallat "instruction dispatching") till flera redundanta exekveringsenheter som är byggda inuti processorn.
  2. CMT-teknik (chip-level multithreading): använder trådnivåparallellism (TLP) för att utföra instruktioner från flera trådar inom ett processorkretslopp samtidigt.

Det finns många sätt att stödja mer än en tråd i ett chip, nämligen:

  1. Interleaved multithreading (IMT) : Interleaved utfärdande av flera instruktioner från olika trådar, även kallat Temporal multithreading. Det kan delas in i finkornig multitrådning eller grovkornig multitrådning beroende på hur ofta de interleaved frågorna sker. Fine-grain multithreading utfärdar instruktioner för olika trådar efter varje cykel, medan coarse-grain multithreading endast övergår till att utfärda instruktioner från en annan tråd när den aktuella tråden orsakar några händelser med lång latenstid (t.ex. page fault etc.). Grovkornig multitrådning är vanligare för mindre kontextväxling mellan trådar. För processorer med en pipeline per kärna är interleaved multithreading det enda möjliga sättet, eftersom det bara kan utfärda upp till en instruktion per cykel.
  2. Simultan multitrådning (SMT): Utfärda flera instruktioner från flera trådar i en och samma cykel. Processorn måste vara superskalär för att kunna göra detta.
  3. Multiprocessering på chipnivå (CMP eller flerkärnig processor): integrerar två eller flera superskalära processorer i ett chip, var och en utför trådar oberoende av varandra.
  4. Någon kombination av IMT/SMT/CMP

Den viktigaste faktorn för att skilja dem åt är att titta på hur många instruktioner processorn kan utfärda under en cykel och hur många trådar som instruktionerna kommer från.

Definition och huvudidé

Simultan multitrådning (SMT) innebär att en fysisk processor kan utföra instruktioner från mer än en tråd under samma klockcykel. Målet är att öka den aggregerade genomströmningen (throughput) genom att fylla tomma exekveringsenheter som annars skulle stå oanvända vid väntan på data, minnesåtkomst eller andra latenta händelser.

Hur SMT fungerar i praktiken

  • Varje tråd har ofta sin egen arkitektoniska kontext (registerfiler, programräknare osv.) men delar mikrokodens resurser såsom exekveringsenheter, caches, buffertar och busser.
  • En superskalär processor som stödjer SMT kan i varje cykel välja instruktioner från flera trådar och skicka dem till olika exekveringsenheter. För att detta ska fungera krävs ofta registeromnamning, större issue- och reorder-buffertar samt logik för att hantera beroenden mellan instruktioner från olika trådar.
  • SMT bygger på att olika trådar sällan behöver samma exekveringsresurser exakt samtidigt – när en tråd väntar på minne kan en annan använda ALU:er eller FP-enheter.

Vanliga varianter och hur de skiljer sig

  • Fine-grain (finkornig) IMT: Växlar tråd varje cykel och ger god latenstolerans men kräver snabb trådväxling.
  • Coarse-grain (grovkornig) IMT: Växlar tråd endast vid längre fördröjningar, vilket minskar kostnader för kontexthantering.
  • SMT: Utfärdar flera instruktioner från olika trådar i samma cykel. Kräver en superskalär kärna som kan utfärda flera instruktioner samtidigt.
  • CMP / flerkärnigt: Flera oberoende kärnor på ett chip, var och en kan vara enkel- eller flerkärnig och i sig stödja SMT.
  • I praktiken kombineras tekniker ofta: en kärna kan vara superskalär + SMT, och flera sådana kärnor sätts ihop på ett chip (CMP).

Fördelar med SMT

  • Ökad genomströmning: fler instruktioner exekveras per klockcykel totalt.
  • Bättre resursutnyttjande: exekveringsenheter och pipelines används mer kontinuerligt.
  • Kostnadseffektiv ökning av parallellitet: jämfört med att lägga till fler fysiska kärnor krävs mindre extra hårdvara.
  • Förbättrad latenstolerans: trådar med långa minneslatens kan kompletteras med andra trådar som arbetar lokalt.

Begränsningar och nackdelar

  • Resurskonkurrens: Delade strukturer (cache, TLB, issue-queue, minnesbandbredd) kan bli flaskhalsar och göra att två trådar presterar sämre tillsammans än ensam.
  • Prestanda-spridning: Inte alla arbetslaster gynnas; CPU-intensiva, cache-tunga trådar kan stjälpa varandra.
  • Komplexitet: Hårdvaran blir mer komplex (hantering av beroenden, rättvisa, kontextlagring).
  • Säkerhet: Delade mikroarkitekturresurser kan utnyttjas i sido-kanalsattacker om inte skydd implementeras.
  • Operativsystemsplanering: OS måste känna till SMT-topologin för att schemalägga trådar rätt (t.ex. undvika att köra två tunga trådar på samma fysiska kärna om det skadar prestanda).

När ger SMT stor nytta — och när inte?

SMT är särskilt användbart för arbetslaster med blandade beteenden (I/O-blockering, väntan på minne, blandade instruktioner) och servermiljöer med många samtidiga trådar. För rena enkla, CPU-bundna och cache-känsliga uppgifter kan SMT ibland ge liten eller negativ effekt jämfört med att köra tråden ensam på kärnan.

Exempel och implementationer

  • Intel marknadsför sin SMT-variant som Hyper-Threading (HT). Många moderna Intel-kärnor kan köra två eller fler trådar per fysisk kärna.
  • AMD använder också SMT i många av sina processorer och kan ha två trådar per kärna (SMT2) i exempelvis Ryzen-serien.
  • IBM:s POWER-processorer har länge använt mer avancerade varianter av multithreading med flera trådar per kärna (ibland fler än två).

Designöverväganden och råd

  • Vid design av system och schemaläggning: mät och testa med de verkliga arbetslaster du förväntar dig. I vissa fall bör SMT aktiveras, i andra stängas av.
  • Säkerhetsåtgärder: moderna processorer inför ofta mitigeringar mot sido-kanaler relaterade till delade mikrorresurser.
  • Balans mellan hårdvara och mjukvara: ge operativsystemet information om kärnornas topologi så att det kan fatta bättre schemaläggningsbeslut.

Sammanfattningsvis ger SMT en kostnadseffektiv metod för att öka processorers genomströmning genom att exekvera instruktioner från flera trådar samtidigt i en superskalär kärna. Effekten beror starkt på arbetslastens karaktär och på hur väl hårdvarans och systemets mjukvaras resurser hanteras.

Exempel på moderna SMT-processorer

  1. Intel Pentium 4 var den första moderna stationära processorn som införde samtidig flertrådning, från och med 3,06 GHz-modellen som släpptes 2002 och sedan dess i ett antal av deras processorer. Intel kallar funktionaliteten Hyper-Threading Technology (HTT) och tillhandahåller en grundläggande SMT-motor med två trådar. Intel hävdar att hastigheten förbättras med upp till 30 % jämfört med en identisk Pentium 4 utan SMT.
  2. De senaste MIPS-arkitekturkonstruktionerna innehåller ett SMT-system som kallas "MIPS MT".
  3. IBM POWER5, som tillkännagavs i maj 2004, finns antingen som DCM med två kärnor eller MCM med fyra eller åtta kärnor, där varje kärna innehåller en SMT-motor med två trådar. IBM:s implementering är mer sofistikerad än de tidigare, eftersom den kan tilldela de olika trådarna olika prioritet, är mer finkornig och SMT-motorn kan slås på och stängas av dynamiskt för att bättre kunna utföra de arbetsbelastningar där en SMT-processor inte skulle öka prestandan. Detta är IBM:s andra implementering av allmänt tillgänglig maskinvaru-multitrådning.
  4. Intel Atom, som släpptes 2008, är den första Intel-produkten som har SMT (marknadsförd som Hyper-threading) utan stöd för omordnande av instruktioner, spekulativ exekvering eller omdöpning av register.

Relaterade sidor

Frågor och svar

F: Vad är simultan multitrådning?


S: Simultaneous multithreading (SMT) är en teknik för att förbättra den totala effektiviteten hos superskalära CPU:er med hårdvarumultithreading. Den tillåter flera oberoende exekveringssträngar för att bättre utnyttja de resurser som tillhandahålls av moderna datorarkitekturer.

F: Hur kan SMT jämföras med multitasking?


S: Multithreading liknar konceptet för multitasking, men det genomförs på trådnivå i moderna superskalära processorer, medan multitasking genomförs på processnivå.

F: Vilka är två sätt att öka parallelliteten på chipet?


S: De två sätten att öka parallelliteten på chipet är superskalär teknik och multithreading på chipnivå (CMT).

Fråga: Vilka är de olika typerna av multithreading på chipnivå?


S: De olika typerna av multithreading på chipnivå omfattar Interleaved Multithreading (IMT), Fine-Grain Multithreading, Coarse Grain Multithreadin och Simultaneous Multithreadin (SMT).

F: Hur kan man skilja mellan IMT/SMT/CMP?


S: Den viktigaste faktorn för att skilja mellan IMT/SMT/CMP är att titta på hur många instruktioner processorn kan utfärda under en cykel och hur många trådar som instruktionerna kommer från.

F: Vilken typ av processor måste användas för SMT?


S: För SMT måste en superskalär processor användas.

F: Vilken typ av processor används vid Chip Level MultiProcessing?


S: Chip Level MultiProcessing använder flerkärniga processorer som integrerar två eller flera superskalära processorer i ett chip, var och en utför trådar oberoende av varandra.

AlegsaOnline.com - 2020 / 2025 - License CC3