Simultan multithreading (SMT): Definition og principper

Simultan multithreading (SMT): Hvordan SMT øger CPU-effektivitet og parallelitet ved at køre flere tråde samtidigt — principper, fordele og designovervejelser.

Forfatter: Leandro Alegsa

Simultaneous multithreading, forkortelse SMT, er en teknik til at forbedre den samlede effektivitet af superskalare CPU'er med hardware multithreading. SMT gør det muligt at udføre flere uafhængige tråde for bedre at udnytte de ressourcer, som moderne computerarkitekturer stiller til rådighed. Kort sagt forsøger SMT at øge processorens gennemløb (throughput) ved at fylde tomme udførelsesenheder og udnytte pipeline-perioder, hvor en enkelt tråd ellers ville vente.

Multithreading svarer i princippet til multitasking, men implementeres på trådniveau i moderne superskalære processorer. Hvor multitasking typisk roterer mellem processer/tråde på operativsystemsniveau, lader SMT flere tråde køre samtidigt på samme fysiske kerne ved at dele pipeline- og udførelsesressourcer.

I processordesign er der to måder at øge on-chip-paralleliteten på med mindre ressourcekrav:

  1. Superscalar teknik: denne tilgang øger paralleliteten på instruktionsniveau (ILP) ved at udføre flere instruktioner på samme tid (kaldet samtidig); ved "samtidig" at sende instruktioner (kaldet: instruktionsfordeling) til flere redundante udførelsesenheder, der er indbygget i processoren. Superskalaritet kræver avanceret afhængighedsdetektion, omordning og registerstyring for at få flere instruktioner til at køre parallelt med korrekt programsemantik.
  2. CMT-teknik (chip-level multithreading): anvendelse af trådniveauparallelisme (TLP) for at udføre instruktioner fra flere tråde i en processorchip på samme tid. CMT kan realiseres som SMT, CMP (multi-core) eller en kombination af begge.

Der er flere konkrete måder at støtte mere end én tråd i en chip på:

  1. Interleaved multithreading (IMT): Interleaved udstedelse af instruktioner fra forskellige tråde, også kaldet temporal multithreading. IMT kan opdeles i fine-grain og coarse-grain afhængigt af, hvor ofte skift mellem tråde sker. Fine-grain multithreading udsteder instruktioner fra forskellige tråde i hver cyklus, hvilket hjælper med at skjule korte ventetider som branch-misses. Coarse-grain multithreading skifter kun tråd, når den aktuelle tråd rammer en længere ventetid, f.eks. en cache-miss eller page fault; dette reducerer hyppigheden af kontekstskift og kan give lavere overhead. For processorer med én pipeline pr. kerne er interleaved multithreading ofte den eneste mulighed, fordi sådanne kerner typisk kun kan udstede op til én instruktion pr. cyklus.
  2. Simultan multithreading (SMT): Udstedelse af flere instruktioner fra flere tråde i én cyklus. For at kunne gøre dette skal processoren være superskalær, så den har flere udførelsesenheder og kan afvikle flere instruktioner parallelt. SMT kan udnytte ressourcer, som ellers ville stå ledige i en enkelt-trådet superskalar kerne (f.eks. ALU'er, load/store-enheder og branch-predictorer).
  3. Multiprocessing på chipniveau (CMP eller multi-core-processor): Integrerer to eller flere superskalare processorer i en chip, som hver især udfører tråde uafhængigt. CMP øger parallelkapaciteten ved at kopiere hele kerner, hvilket ofte giver bedre isolation mellem tråde end SMT, men til en højere hardwareomkostning pr. ekstra trådkapacitet.
  4. En hvilken som helst kombination af IMT/SMT/CMP kan anvendes for at afbalancere hardwareomkostninger, ydeevne og kompleksitet. Moderne designs bruger ofte en kombination: flere kerner (CMP), hver med superskalar udførelse og SMT understøttelse af flere logiske tråde pr. kerne.

Den vigtigste faktor til at skelne disse teknikker er, hvor mange instruktioner processoren kan udstede i en cyklus, og hvor mange tråde instruktionerne kommer fra. Andre væsentlige forskelle og overvejelser inkluderer:

  • Fordele ved SMT: Bedre udnyttelse af udførelsesenheder, højere throughput for multitrådede eller blandede arbejdsbelastninger, hurtigere skift mellem uafhængige instruktionsstrømme og ofte bedre energieffektivitet pr. arbejdeenhed.
  • Ulemper og begrænsninger: Ressourcekonkurrence (cache, TLB, udførelsesenheder), øget hardwarekompleksitet (registerfil-håndtering, scoreboarding) og potentielle fairness-problemer hvor en tråd kan dominere delte ressourcer. Derudover kan SMT forværre sidekanal- og informationslækageproblemer i sikkerhedssammenhæng.
  • OS- og scheduler-krav: Operativsystemer og virtualiseringssoftware skal være SMT-bevidste for at planlægge tråde effektivt—fx at undgå at placere to tunge tråde, der konkurrerer om samme ressourcer, på de logiske tråde tilhørende samme fysiske kerne.
  • Hvornår hjælper SMT mest? Arbejdsbelastninger med betydelig parallelitet men varierende brug af arkitekturressourcer (fx webservere, applikationsservere, visse HPC-opgaver) ser ofte tydelige gevinster. I enkelttråds-latensfølsomme opgaver kan SMT i værste fald give negativ effekt på latenstider, hvis ressourcedeling ikke håndteres.

Praktiske eksempler og implementeringer: Intel har markedsført SMT under navnet Hyper-Threading; moderne AMD Zen-kerner understøtter også SMT; og IBM POWER-processorer har længe tilbudt avancerede multithreading-varianter. Implementationsdetaljer varierer (f.eks. antallet af logiske tråde pr. kerne, om registerbanker er kopieret eller delte, og hvordan branch-predictor-state håndteres).

Måling af SMT-effekt bør baseres på relevante metrikker: throughput (instruktioner per cyklus, IPC), latenstid for kritiske tråde, energieffektivitet og ressourceudnyttelse (cache-miss-rate, udførelsesenhedernes belastning). I praksis anbefales tests med repræsentative arbejdsbelastninger for at afgøre, om SMT giver en nettofordel i en given kontekst.

Samlet set er SMT et kraftfuldt værktøj til at øge procesorydelsen under mange arbejdsbelastninger ved at udnytte eksisterende hardware mere fuldt ud. Valget mellem IMT, SMT og CMP (eller en kombination) afhænger af designmål, omkostningsbegrænsninger, målrettede arbejdsbelastninger og sikkerhedsovervejelser.

Eksempler på moderne SMT-CPU'er

  1. Intel Pentium 4 var den første moderne desktop-processor til at implementere samtidig multithreading, startende fra 3,06 GHz-modellen, der blev udgivet i 2002, og siden indført i en række af deres processorer. Intel kalder funktionaliteten Hyper-Threading Technology (HTT) og leverer en grundlæggende SMT-motor med to tråde. Intel hævder en hastighedsforbedring på op til 30 % i forhold til en ellers identisk Pentium 4 uden SMT.
  2. De nyeste MIPS-arkitekturdesigns omfatter et SMT-system, der er kendt som "MIPS MT".
  3. IBM POWER5, der blev annonceret i maj 2004, leveres enten som en DCM med to kerner eller en MCM med fire eller otte kerner, hvor hver kerne indeholder en SMT-motor med to tråde. IBM's implementering er mere sofistikeret end de tidligere, fordi den kan tildele de forskellige tråde forskellig prioritet, er mere finkornet, og SMT-motoren kan til- og frakobles dynamisk for bedre at kunne udføre de arbejdsbelastninger, hvor en SMT-processor ikke ville øge ydelsen. Dette er IBM's anden implementering af generelt tilgængelig hardware multithreading.
  4. Intel Atom, der blev lanceret i 2008, er det første Intel-produkt med SMT (markedsført som Hyper-threading) uden understøttelse af omordnering af instruktioner, spekulativ udførelse eller omdøbning af registre.

Relaterede sider

Spørgsmål og svar

Spørgsmål: Hvad er simultaneous multithreading?


A: Simultaneous multithreading (SMT) er en teknik til forbedring af den samlede effektivitet af superskalare CPU'er med hardware multithreading. Den tillader flere uafhængige udførelsestråde for bedre at udnytte de ressourcer, som moderne computerarkitekturer stiller til rådighed.

Spørgsmål: Hvordan er SMT sammenlignet med multitasking?


Svar: Multithreading ligner konceptet for multitasking, men det implementeres på trådniveau i moderne superskalære processorer, mens multitasking implementeres på procesniveau.

Spørgsmål: Hvilke to måder kan man øge paralleliteten på chippen på?


Svar: De to måder at øge paralleliteten på chippen på er superskalær teknik og CMT (chip-level multithreading).

Spørgsmål: Hvad er nogle forskellige typer af multithreading på chipniveau?


Svar: De forskellige typer af multithreading på chipniveau omfatter Interleaved Multithreading (IMT), Fine-Grain Multithreading, Coarse Grain Multithreadin og Simultaneous Multithreadin (SMT).

Spørgsmål: Hvordan kan man skelne mellem IMT/SMT/CMP?


Svar: Den vigtigste faktor for at skelne mellem IMT/SMT/CMP er at se på, hvor mange instruktioner processoren kan udstede i en cyklus, og hvor mange tråde instruktionerne kommer fra.

Spørgsmål: Hvilken type processor skal der anvendes til SMT?


Svar: Til SMT skal der anvendes en superskalær processor.

Spørgsmål: Hvilken type processor anvendes ved Chip Level MultiProcessing?


Svar: Chip Level MultiProcessing anvender multi-core-processorer, der integrerer to eller flere superskalare processorer i én chip, som hver især udfører tråde uafhængigt af hinanden.


Søge
AlegsaOnline.com - 2020 / 2025 - License CC3