Samtidig multithreading
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.
Multithreading svarer i princippet til multitasking, men implementeres på trådniveau i moderne superskalære processorer.
I processordesign er der to måder at øge on-chip-paralleliteten på med mindre ressourcekrav:
- Superscalar teknik: der forsøger at øge 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.
- 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.
Der er mange måder at understøtte mere end én tråd i en chip på, nemlig:
- Interleaved multithreading (IMT) : Interleaved udstedelse af flere instruktioner fra forskellige tråde, også kaldet Temporal multithreading. Det kan yderligere opdeles i finkorns-multithreading eller grovkorns-multithreading afhængigt af hyppigheden af interleaved-udgaver. Fine-grain multithreading udsender instruktioner til forskellige tråde efter hver cyklus, mens coarse-grain multithreading kun skifter til at udstede instruktioner fra en anden tråd, når den aktuelle udførende tråd forårsager nogle begivenheder med lang latenstid (som f.eks. page fault osv.). Grovkornet multithreading er mere almindeligt for mindre kontekstskifte mellem tråde. For processorer med én pipeline pr. kerne er interleaved multithreading den eneste mulige måde, fordi den kun kan udstede op til én instruktion pr. cyklus.
- Simultan multithreading (SMT): Udstedelse af flere instruktioner fra flere tråde i én cyklus. Processoren skal være superskalær for at kunne gøre dette.
- 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 af hinanden.
- En hvilken som helst kombination af IMT/SMT/CMP
Den vigtigste faktor til at skelne dem fra hinanden er at se på, hvor mange instruktioner processoren kan udstede i en cyklus, og hvor mange tråde instruktionerne kommer fra.
Eksempler på moderne SMT-CPU'er
- 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.
- De nyeste MIPS-arkitekturdesigns omfatter et SMT-system, der er kendt som "MIPS MT".
- 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.
- 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
- Tråd (datalogi)
- Parallel databehandling
- Parallelitet på instruktionsniveau
- Multi-core-processorer
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.