Temporal multithreading är en av de två huvudformerna av multithreading som kan implementeras i hårdvara i processorer. Den andra formen är simultan multithreading . Skillnaden mellan dessa två former är det maximala antalet trådar som körs i varje steg av beräkningspipelinen i en given processorklockcykel. Med temporär flertrådning körs endast en tråd vid varje givet tillfälle, och med samtidig flertrådning finns det flera. Vissa experter använder termen super-threading som en synonym för transient multithreading. [ett]
På en konventionell processor hanteras trådkontroll av operativsystemet . Tråden exekveras tills ett hårdvaruavbrott inträffar , ett systemanrop inträffar eller tills den tid som tilldelats för den av operativsystemet löper ut. Därefter växlar processorn till operativsystemets kod, som sparar tillståndet för tråden (dess sammanhang) och växlar till tillståndet för nästa tråd i kön, som också ges tid att exekvera. Med sådan multithreading spenderas ett tillräckligt stort antal processorcykler på operativsystemets kod som byter sammanhang. Om trådstöd är implementerat i hårdvara kommer processorn själv att kunna växla mellan trådar och i det ideala fallet exekvera flera trådar samtidigt för varje klockcykel.
Temporal multithreading är uppdelad i två huvudsakliga underformer:
Grovkornig flertrådning ( CGMT) , blockerad flertrådning )
Endast en tråd körs i en processorpipeline under en lång tidsperiod. I det ögonblick då denna tråd behöver data från minnet, till exempel, och data inte finns i cachen, sparar processorn trådens tillstånd och växlar automatiskt till en annan tråd tills den också behöver något från minnet. Ett annat skäl för att byta till en annan tråd kan vara en given gräns för antalet processorcykler. Processorns pipeline är alltså inte ledig och är nästan alltid upptagen med att exekvera koden för en viss tråd.Finkornig ( FGMT ) , interfolierad multitrådning )
Processorn växlar mellan programtrådar vid varje klockcykel. Finkornig multitrådning garanterar exekvering av alla trådar som tilldelats processorn. Exekveringen av varje specifik tråd saktar ner, men den totala processorkapaciteten ökar. Flertrådiga processorer som implementerar finkornig multitrådning är bra på att köra program där det finns många trådar, såsom databasservrar, webbservrar, applikationsservrar, som behandlar många av samma förfrågningar från många klienter. Sådana processorer kallas också barrel-processorer (utförandet av trådar i processorn växlar varje cykel som fatnitar i en cirkel).Grovkorniga flertrådsprocessorer: 1998 släppte IBM RS64-II ( Northstar ), den första mikroprocessorn på marknaden som stöder multitrådning i hårdvara . Processorn stödde alternativ exekvering av 2 trådar. Nyligen: Intels dual-core Montecito (2006) med Itanium 2 - baserade kärnor , där varje kärna kör två grovkorniga trådar; Fujitsu SPARC64 VI (2007).
Exempel på processorer som har implementerat finkornig multitrådning inkluderar Denelcor HEP (1982) - 8 trådar. Cray /Tera MTA (1988) -processorn kunde köra 128 trådar i tur och ordning. Nyligen: Sun UltraSPARC T1 (2005, 4 trådar per kärna) och T2 (2008), Oracle SPARC T3 (2010, 8 trådar), SPARC M7 (2015, 8 trådar).
Temporal multithreading har en fördel jämfört med simultan multithreading genom att den värmer upp processorn mindre; nackdelen är dock att endast en tråds kod exekveras vid varje given processorcykel.
På en skalär processor går finkornig multithreading inte att skiljas från simultan. För att implementera simultan multithreading behöver processorn en superskalär pipeline , och ju fler trådar som planeras att köras samtidigt, desto högre måste pipeline -superskalären vara , vilket ökar komplexiteten i processorlogiken.
Processor Technologies | Digital|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionsuppsättning arkitektur | |||||||||
maskinord | |||||||||
Parallellism |
| ||||||||
Genomföranden | |||||||||
Komponenter | |||||||||
Energihantering |