Simultaneous multithreading

De Intel Pentium 4 was de eerste moderne desktopprocessor die gelijktijdige multithreading implementeerde, vanaf het in 2002 uitgebrachte 3,06 GHz-model, en sindsdien in een aantal van hun processoren is ingevoerd. Intel noemt de functionaliteit Hyper-Threading Technology, en biedt een basis tweedraads SMT-engine. Intel claimt een snelheidsverbetering tot 30% ten opzichte van een verder identieke, niet-SMT Pentium 4. De prestatieverbetering is zeer toepassingsafhankelijk; wanneer echter twee programma’s worden uitgevoerd die de volledige aandacht van de processor vereisen, kan het lijken alsof een of beide programma’s iets langzamer worden wanneer Hyper-threading is ingeschakeld. Dit is te wijten aan het replay systeem van de Pentium 4 dat waardevolle uitvoeringsresources in beslag neemt, waardoor de strijd om bronnen zoals bandbreedte, caches, TLB’s, re-order buffer entries toeneemt, waardoor de processorresources tussen de twee programma’s worden geëgaliseerd, wat een variërende hoeveelheid uitvoeringstijd toevoegt. De Pentium 4 Prescott core heeft een replay wachtrij gekregen, waardoor de uitvoeringstijd die nodig is voor het replay systeem wordt verkort. Dit is voldoende om die prestatie-impact volledig te ondervangen.

De nieuwste Imagination Technologies MIPS architectuur ontwerpen bevatten een SMT systeem dat bekend staat als “MIPS MT”. MIPS MT voorziet in zowel zware virtuele verwerkingselementen als lichtere hardware microthreads. RMI, een startup uit Cupertino, is de eerste MIPS-leverancier die een SOC-processor levert die is gebaseerd op acht kernen, die elk vier threads uitvoeren. De threads kunnen in fine-grain mode worden uitgevoerd, waarbij elke cyclus een andere thread kan worden uitgevoerd. Aan de threads kunnen ook prioriteiten worden toegekend. De MIPS CPU’s van Imagination Technologies hebben twee SMT-threads per core.

IBM’s Blue Gene/Q heeft 4-weg SMT.

De IBM POWER5, aangekondigd in mei 2004, wordt geleverd als dual-core dual-chip module (DCM), of quad-core of oct-core multi-chip module (MCM), waarbij elke core een two-thread SMT engine bevat. IBM’s implementatie is geavanceerder dan de vorige, omdat zij een verschillende prioriteit kan toekennen aan de verschillende threads, fijnmaziger is, en de SMT-engine dynamisch kan worden in- en uitgeschakeld, om die werklasten beter uit te voeren waar een SMT-processor de prestaties niet zou verhogen. Dit is IBM’s tweede implementatie van algemeen beschikbare hardware multithreading. In 2010 bracht IBM systemen uit op basis van de POWER7-processor met acht cores die elk vier Simultaneous Intelligent Threads hebben. Hiermee wordt de threading-modus omgeschakeld tussen één thread, twee threads of vier threads, afhankelijk van het aantal proces-threads dat op dat moment wordt gepland. Dit optimaliseert het gebruik van de core voor minimale responstijd of maximale doorvoer. IBM POWER8 heeft 8 intelligente gelijktijdige threads per core (SMT8).

IBM z13 heeft twee threads per core (SMT-2).

Hoewel velen meldden dat Sun Microsystems’ UltraSPARC T1 (bekend als “Niagara” tot de release op 14 november 2005) en de nu ter ziele gegane processor met de codenaam “Rock” (oorspronkelijk aangekondigd in 2005, maar na vele vertragingen geannuleerd in 2010) implementaties van SPARC zijn die bijna volledig zijn gericht op het exploiteren van SMT- en CMP-technieken, maakt Niagara in feite geen gebruik van SMT. Sun verwijst naar deze gecombineerde benaderingen als “CMT”, en naar het algemene concept als “Throughput Computing”. De Niagara heeft acht kernen, maar elke kern heeft slechts één pijplijn, dus in feite maakt hij gebruik van fijnkorrelige multithreading. In tegenstelling tot SMT, waar instructies van meerdere threads elke cyclus het uitgiftevenster delen, gebruikt de processor een “round robin” beleid om elke cyclus instructies van de volgende actieve thread te geven. Hierdoor lijkt de processor meer op een “barrel processor”. De Rock-processor van Sun Microsystems is anders, deze heeft complexere kernen die meer dan één pijplijn hebben.

De SPARC T3 van Oracle Corporation heeft acht fijnkorrelige threads per kern, SPARC T4, SPARC T5, SPARC M5, M6 en M7 hebben acht fijnkorrelige threads per kern waarvan er twee tegelijk kunnen worden uitgevoerd.

Fujitsu SPARC64 VI heeft grofkorrelige Vertical Multithreading (VMT) SPARC VII en nieuwer hebben 2-weg SMT.

Intel Itanium Montecito gebruikte grofkorrelige multithreading en Tukwila en nieuwer gebruiken 2-weg SMT (met dual-domain multithreading).

Intel Xeon Phi heeft 4-weg SMT (met time-multiplexed multithreading) met hardware-gebaseerde threads die niet kunnen worden uitgeschakeld in tegenstelling tot reguliere Hyperthreading. De Intel Atom, die in 2008 op de markt kwam, is het eerste Intel-product met 2-weg SMT (op de markt gebracht als Hyper-Threading) zonder ondersteuning voor het herschikken van instructies, speculatieve uitvoering of het hernoemen van registers. Intel herintroduceerde Hyper-Threading met de Nehalem microarchitectuur, na afwezigheid op de Core microarchitectuur.

AMD Bulldozer microarchitectuur FlexFPU en Shared L2 cache zijn multithreaded, maar integer cores in module zijn single threaded, dus het is slechts een gedeeltelijke SMT implementatie.

AMD Zen-microarchitectuur heeft 2-weg SMT.

VISC-architectuur gebruikt de Virtual Software Layer (vertaallaag) om een enkele instructiedraad naar de Global Front End te sturen, die instructies opsplitst in virtuele hardwarematige threadlets die vervolgens naar afzonderlijke virtuele kernen worden gestuurd. Deze virtuele kernen kunnen ze dan naar de beschikbare bronnen op elk van de fysieke kernen sturen. Meerdere virtuele kernen kunnen threadlets in de reorderbuffer van een enkele fysieke kern duwen, die gedeeltelijke instructies en gegevens van meerdere threadlets tegelijkertijd door de uitvoeringspoorten kan splitsen. Elke virtuele kern houdt de positie van de relatieve uitvoer bij. Deze vorm van multithreading kan de single threaded prestaties verhogen door een enkele thread in staat te stellen alle bronnen van de CPU te gebruiken.De toewijzing van bronnen is dynamisch op een bijna-single cycle latency niveau (1-4 cycli afhankelijk van de verandering in toewijzing afhankelijk van de individuele applicatiebehoeften. Daarom, als twee virtuele kernen concurreren om middelen, zijn er passende algoritmen om te bepalen welke middelen waar moeten worden toegewezen.