Simultaneous multithreading [1] ( Eng. Simultaneous Multithreading - SMT ) er en af de to hovedformer for multithreading , der kan implementeres i hardware i processorer. Den anden form er midlertidig multithreading . Teknologien med samtidig multithreading gør det muligt at udføre instruktioner fra flere uafhængige udførelsestråde på et sæt funktionelle moduler i en superskalar mikroprocessor i én cyklus.
Samtidig multithreading blev først introduceret i forskningsartikler af Dean Tullsen i 1995 ( UC San Diego ) [2] [3] [4] [5] .
Den første processor til at implementere simultan multithreading ville være DEC 's Alpha 21464 mikroprocessor , som blev annonceret i 1999. Processoren blev udviklet af et team ledet af chefarkitekt Joel Emer . Processoren var single-core, superskalær med 8 pipelines, havde 4 sæt registre til kontekstskift og kunne potentielt udføre 4 tråde samtidigt. En 2x stigning i ydeevnen blev opnået med kun en 10% stigning i antallet af logiske elementer. På mange måder legemliggjorde processoren de forslag og tilgange, der er skitseret i Dean Tallsens arbejde, hvis arbejde var medforfatter af nogle medlemmer af Alpha-teamet (Joel Emer og Rebecca Stamm). Alpha 21464 kom dog aldrig på markedet, den blev offer for virksomhedsfusioner og opkøb [6] .
Den første implementering af simultan multithreading på markedet var således Intels Hyper-threading-teknologi , introduceret i 2002 i Xeon -serverprocessorer og Pentium 4 [7] ( NetBurst - mikroarkitektur ).
Da Intel vendte sig til multi-core mikroprocessorarkitektur, porterede den ikke hyper-threading-teknologi til nye processorer for at forenkle designet. Som et resultat heraf var den første multi-core-processor med samtidig multi-threading på hver kerne IBM POWER5- processoren (2004) [8] . Til sidst bragte Intel Hyper-threading tilbage i deres processorer med Nehalem -arkitekturen (2008) [9] .
I 2021 opdagede et team af forskere, herunder Graz Tech University , Georgia Institute of Technology og Lamarr Security Research, et non-profit forskningscenter, en sårbarhed i SMT-teknologi implementeret i AMDs Zen- , Zen 2- og Zen 3 - processorer . Sårbarheden, kaldet SQUIP [10] (Scheduler Queue Usage via Interference Probing - brug af skemalæggerkøen gennem interferensanalyse ), tillader angribere at få adgang til fortrolige data, som i december 2021 blev rapporteret af AMD. I løbet af at demonstrere sårbarheden "knækkede" forskerne RSA-4096- krypteringsnøglen [11] [12] . AMD, efter at have tildelt sårbarheds-id'et CVE-2021-46778 og en "medium" sværhedsgrad, udgav en rådgivende bulletin i august 2022 [13] .
Ydeevnen af superskalære mikroprocessorer øges ved at udføre flere instruktioner samtidigt i en enkelt cyklus, men den er begrænset af afhængigheder mellem instruktioner (som begrænser mulighederne for parallel eksekvering, som et resultat af hvilket ikke det maksimalt mulige antal instruktioner kan udføres i en cyklus) og operationer med høj latenstid inden for en enkelt eksekveringstråd (hvilket fører til fremkomsten af cyklusser, hvor der ikke udføres en enkelt instruktion - pipeline går i stå ).
Arkitekturer med hardware multithreading udfører flere tråde med evnen til hurtigt at skifte kontekster mellem dem. Sådan "traditionel" multithreading skjuler hukommelses- og funktionsblokforsinkelser (reducerer antallet af "tomme" cyklusser), selvom instruktioner fra en tråd udføres i hver bestemt cyklus. En stigning i antallet af samtidigt eksekverbare instruktioner reducerer imidlertid mulighederne for traditionel multithreading.
Samtidig multithreading kombinerer parallel udførelse af superskalære arkitekturinstruktioner med hardware multithreading. Brugen af simultan multithreading, på grund af den dynamiske fordeling af processorfunktionelle moduler mellem tråde, øger brugen af processoren i nærvær af hukommelsesforsinkelser og begrænset mulighed for parallel udførelse af instruktioner i en tråd.
Multi-core mikroprocessorer i deres organisation er tættest på mikroprocessorer med simultan multithreading - de har flere sæt registre, flere funktionelle moduler og superskalariteten af hver af kernerne. Den største forskel mellem de to er allokeringen af ressourcer - i en multi-core processor modtager hver tråd et fast antal processor funktionelle moduler, mens i en processor med samtidig multithreading ændres fordelingen af moduler i hver cyklus. Som et resultat viser processorer med samtidig multithreading større ydeevne ved maksimal trådbelastning, og med et fald i antallet af tråde falder ydeevnen langsommere sammenlignet med en multi-core processor.
processorteknologier | Digitale|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionssæt arkitektur | |||||||||
maskinord | |||||||||
Parallelisme |
| ||||||||
Implementeringer | |||||||||
Komponenter | |||||||||
Strømstyring |