Simultan multithreading

Intel Pentium 4 var den første moderne desktop-processor til at implementere simultan 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 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. Den ydelsesforbedring, der ses, er meget applikationsafhængig; men når man kører to programmer, der kræver fuld opmærksomhed fra processoren, kan det faktisk virke som om et eller begge programmer bliver lidt langsommere, når Hyper-threading er slået til. Dette skyldes, at Pentium 4’s replay-system binder værdifulde eksekveringsressourcer, øger konkurrencen om ressourcer såsom båndbredde, caches, TLB’er, omordner bufferposter og udligner processorressourcerne mellem de to programmer, hvilket giver en varierende mængde eksekveringstid. Pentium 4 Prescott-kernen har fået en replay-kø, hvilket reducerer den nødvendige eksekveringstid for replay-systemet. Dette er nok til helt at overvinde dette ydelseshit.

Den nyeste Imagination Technologies MIPS-arkitekturdesigns omfatter et SMT-system, der er kendt som “MIPS MT”. MIPS MT giver mulighed for både tunge virtuelle behandlingselementer og lettere hardware-mikrotråde med lettere vægt. RMI, en Cupertino-baseret nystartet virksomhed, er den første MIPS-leverandør, der tilbyder en processor-SOC baseret på otte kerner, som hver kører fire tråde. Trådene kan køres i fine-grain-tilstand, hvor en anden tråd kan udføres hver cyklus. Trådene kan også tildeles prioriteter. Imagination Technologies MIPS-CPU’er har to SMT-tråde pr. kerne.

IBM’s Blue Gene/Q har 4-vejs SMT.

IBM POWER5, der blev annonceret i maj 2004, leveres enten som et dual-core dual-chip modul (DCM) med to kerner eller et quad-core eller oct-core multi-chip modul (MCM), hvor hver kerne omfatter en SMT-motor med to tråde. IBM’s implementering er mere sofistikeret end de tidligere, fordi den kan tildele en anden prioritet til de forskellige tråde, 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. I 2010 lancerede IBM systemer baseret på POWER7-processoren med otte kerner med hver fire simultane intelligente tråde (Simultaneous Intelligent Threads). Dette skifter threading-tilstand mellem én tråd, to tråde eller fire tråde afhængigt af antallet af procestråde, der er planlagt på det pågældende tidspunkt. Dette optimerer brugen af kernen med henblik på minimal svartid eller maksimal gennemstrømning. IBM POWER8 har 8 intelligente samtidige tråde pr. kerne (SMT8).

IBM z13 har to tråde pr. kerne (SMT-2).

Og selv om mange har rapporteret, at Sun Microsystems’ UltraSPARC T1 (kendt som “Niagara” indtil udgivelsen den 14. november 2005) og den nu udgåede processor med kodenavnet “Rock” (oprindeligt annonceret i 2005, men efter mange forsinkelser aflyst i 2010) er implementeringer af SPARC, der næsten udelukkende fokuserer på udnyttelse af SMT- og CMP-teknikker, bruger Niagara faktisk ikke SMT. Sun betegner disse kombinerede metoder som “CMT” og det overordnede koncept som “Throughput Computing”. Niagara har otte kerner, men hver kerne har kun én pipeline, så den bruger faktisk finkornet multithreading. I modsætning til SMT, hvor instruktioner fra flere tråde deler udstedelsesvinduet i hver cyklus, anvender processoren en round robin-politik til at udstede instruktioner fra den næste aktive tråd i hver cyklus. Dette gør den mere lig en tøndeprocessor. Sun Microsystems’ Rock-processor er anderledes, den har mere komplekse kerner, der har mere end én pipeline.

The Oracle Corporation SPARC T3 har otte finkornede tråde pr. kerne, SPARC T4, SPARC T5, SPARC M5, M6 og M7 har otte finkornede tråde pr. kerne, hvoraf to kan afvikles samtidigt.

Fujitsu SPARC64 VI har grovkornet Vertical Multithreading (VMT) SPARC VII og nyere har 2-vejs SMT.

Intel Itanium Montecito brugte grovkornet multithreading og Tukwila og nyere bruger 2-vejs SMT (med dual-domain multithreading).

Intel Xeon Phi har 4-vejs SMT (med tidsmultiplexet multithreading) med hardwarebaserede tråde, som ikke kan deaktiveres i modsætning til almindelig Hyperthreading. Intel Atom, der blev lanceret i 2008, er det første Intel-produkt med 2-vejs SMT (markedsført som Hyper-Threading) uden understøttelse af instruktionsomlægning, spekulativ udførelse eller omdøbning af registre. Intel genindførte Hyper-Threading med Nehalem-mikroarkitekturen, efter at det ikke fandtes i Core-mikroarkitekturen.

AMD Bulldozer-mikroarkitekturen FlexFPU og Shared L2-cache er multithreaded, men integer-kerner i modulet er singlethreaded, så det er kun en delvis SMT-implementering.

AMD Zen-mikroarkitektur har 2-vejs SMT.

VISC-arkitekturen bruger det virtuelle softwarelag (oversættelseslag) til at sende en enkelt tråd af instruktioner til Global Front End, som opdeler instruktioner i virtuelle hardwaretråde, som derefter sendes til separate virtuelle kerner. Disse virtuelle kerner kan derefter sende dem til de tilgængelige ressourcer på en hvilken som helst af de fysiske kerner. Flere virtuelle kerner kan skubbe threadlets ind i reorderbufferen på en enkelt fysisk kerne, som kan opdele delinstruktioner og data fra flere threadlets gennem udførelsesportene på samme tid. Hver virtuel kerne holder styr på placeringen af det relative output. Denne form for multithreading kan øge ydeevnen for en enkelt tråd ved at give en enkelt tråd mulighed for at bruge alle CPU’ens ressourcer. tildelingen af ressourcer er dynamisk på et næsten enkeltcyklisk latensniveau (1-4 cyklusser afhængigt af ændringen i tildelingen afhængigt af de individuelle applikationsbehov. Hvis to virtuelle kerner konkurrerer om ressourcerne, er der derfor passende algoritmer på plads til at bestemme, hvilke ressourcer der skal tildeles hvor.