Samtidig multitrådning

Intel Pentium 4 var den första moderna stationära processorn som implementerade samtidig multitrådning, från och med den 3,06 GHz-modell som släpptes 2002, och som sedan dess har införts i ett antal av deras processorer. Intel kallar funktionaliteten Hyper-Threading Technology och tillhandahåller en grundläggande SMT-motor med två trådar. Intel hävdar en hastighetsförbättring på upp till 30 % jämfört med en identisk Pentium 4 utan SMT. Den prestandaförbättring som ses är mycket applikationsberoende. När man kör två program som kräver processorns fulla uppmärksamhet kan det dock faktiskt verka som om ett eller båda programmen saktar ner något när Hyper-threading är aktiverat. Detta beror på att Pentium 4:s återspelningssystem binder upp värdefulla exekveringsresurser, ökar konkurrensen om resurser som bandbredd, cacheminnen, TLB:er, omordnar buffertposter och jämnar ut processorresurserna mellan de två programmen, vilket ger en varierande mängd exekveringstid. Pentium 4 Prescott-kärnan fick en återspelningskö, vilket minskar den exekveringstid som krävs för återspelningssystemet. Detta är tillräckligt för att helt och hållet övervinna denna prestandaskada.

Den senaste konstruktionen av Imagination Technologies MIPS-arkitektur innehåller ett SMT-system som kallas ”MIPS MT”. MIPS MT ger möjlighet till både tunga virtuella bearbetningselement och lättare hårdvarumikrotrådar. RMI, ett Cupertino-baserat nystartat företag, är den första MIPS-leverantören som tillhandahåller en processor-SOC baserad på åtta kärnor som var och en kör fyra trådar. Trådarna kan köras i finkornigt läge där en annan tråd kan exekveras varje cykel. Trådarna kan också tilldelas prioriteringar. Imagination Technologies MIPS-processorer har två SMT-trådar per kärna.

IBM:s Blue Gene/Q har 4-vägs SMT.

BIM POWER5, som tillkännagavs i maj 2004, kommer antingen som en dubbelkärnig dual-chip-modul (DCM) eller en fyrkärnig eller åttkärnig multi-chip-modul (MCM), där varje kärna har en SMT-motor med två trådar. IBM:s implementering är mer sofistikerad än de tidigare, eftersom den kan tilldela de olika trådarna olika prioritet, är mer finkornig och SMT-motorn kan slås på och stängas av dynamiskt, för att bättre kunna utföra de arbetsbelastningar där en SMT-processor inte skulle öka prestandan. Detta är IBM:s andra implementering av allmänt tillgänglig maskinvarumångtrådning. År 2010 släppte IBM system baserade på POWER7-processorn med åtta kärnor som var och en har fyra simultana intelligenta trådar. Detta växlar trådningsläget mellan en tråd, två trådar eller fyra trådar beroende på antalet processtrådar som planeras för tillfället. Detta optimerar användningen av kärnan för minimal svarstid eller maximal genomströmning. IBM POWER8 har 8 intelligenta samtidiga trådar per kärna (SMT8).

IBM z13 har två trådar per kärna (SMT-2).

Och även om många har rapporterat att Sun Microsystems UltraSPARC T1 (känd som ”Niagara” fram till dess lansering den 14 november 2005) och den numera nedlagda processorn med kodnamnet ”Rock” (som ursprungligen tillkännagavs 2005, men som efter många förseningar avbröts 2010) är implementeringar av SPARC som nästan helt och hållet är inriktade på att utnyttja SMT- och CMP-tekniker, så använder Niagara faktiskt inte SMT. Sun kallar dessa kombinerade metoder för ”CMT” och det övergripande konceptet för ”Throughput Computing”. Niagara har åtta kärnor, men varje kärna har bara en pipeline, så i själva verket används finkornig multithreading. Till skillnad från SMT, där instruktioner från flera trådar delar på utgivningsfönstret varje cykel, använder processorn en round robin-strategi för att utfärda instruktioner från nästa aktiva tråd varje cykel. Detta gör att den mer liknar en barrel-processor. Sun Microsystems Rock-processor är annorlunda, den har mer komplexa kärnor som har mer än en pipeline.

The Oracle Corporation SPARC T3 har åtta finkorniga trådar per kärna, SPARC T4, SPARC T5, SPARC M5, M6 och M7 har åtta finkorniga trådar per kärna varav två kan exekveras samtidigt.

Fujitsu SPARC64 VI har grovkornig Vertical Multithreading (VMT) SPARC VII och nyare har 2-vägs SMT.

Intel Itanium Montecito använde sig av grovkornig multithreading och Tukwila och nyare använder 2-vägs SMT (med dual-domain multithreading).

Intel Xeon Phi har 4-vägs SMT (med tidsmultiplexad multitrådning) med hårdvarubaserade trådar som inte kan inaktiveras till skillnad från vanlig Hyperthreading. Intel Atom, som släpptes 2008, är den första Intel-produkten med 2-vägs SMT (som marknadsförs som Hyper-Threading) utan stöd för omordnande av instruktioner, spekulativt utförande eller omdöpning av register. Intel återinförde Hyper-Threading med Nehalem-mikroarkitekturen, efter att den saknats i Core-mikroarkitekturen.

AMD Bulldozer-mikroarkitekturen FlexFPU och Shared L2 cache är multitrådade men heltalskärnorna i modulen är enkeltrådade, så det är bara en partiell SMT-implementering.

AMD Zen-mikroarkitektur har 2-vägs SMT.

VISC-arkitekturen använder det virtuella programvaruskiktet (översättningsskiktet) för att skicka en enskild instruktionstråd till Global Front End som delar upp instruktionerna i virtuella maskinvarutrådar som sedan skickas till separata virtuella kärnor. Dessa virtuella kärnor kan sedan skicka dem till de tillgängliga resurserna på någon av de fysiska kärnorna. Flera virtuella kärnor kan skicka in trådar i omordningsbufferten för en enda fysisk kärna, som kan dela upp delinstruktioner och data från flera trådar genom exekveringsportarna samtidigt. Varje virtuell kärna håller reda på positionen för den relativa utgången. Denna form av multithreading kan öka prestandan för en enda tråd genom att låta en enda tråd använda alla CPU:s resurser. tilldelningen av resurser är dynamisk på en latensnivå som ligger nära en enda cykel (1-4 cykler beroende på ändringen av tilldelningen beroende på individuella applikationsbehov). Om två virtuella kärnor konkurrerar om resurser finns det därför lämpliga algoritmer för att avgöra vilka resurser som ska tilldelas var.