Temporal multithreading er en af de to hovedformer for multithreading , der kan implementeres i hardware i processorer. Den anden form er simultan multithreading . Forskellen mellem disse to former er det maksimale antal tråde, der udføres i hvert trin af beregningspipelinen i en given processorklokcyklus. Med midlertidig multithreading udføres kun én tråd på et givet tidspunkt, og med samtidig multithreading er der flere. Nogle eksperter bruger udtrykket super-threading som et synonym for transient multithreading. [en]
På en konventionel processor håndteres trådstyring af operativsystemet . Tråden udføres, indtil der opstår en hardwareafbrydelse , et systemkald forekommer, eller indtil den tid, der er tildelt den af operativsystemet, udløber. Derefter skifter processoren til operativsystemets kode, som gemmer trådens tilstand (dens kontekst) og skifter til tilstanden for den næste tråd i køen, som også får tid til at udføre. Med en sådan multithreading bruges et tilstrækkeligt stort antal processorcyklusser på operativsystemkoden, der skifter kontekst. Hvis trådunderstøttelse er implementeret i hardware, så vil processoren selv være i stand til at skifte mellem tråde og i det ideelle tilfælde udføre flere tråde samtidigt for hver clock-cyklus.
Temporal multithreading er opdelt i to hovedunderformer:
Grovkornet multithreading ( CGMT) , blokeret multithreading
Kun én tråd kører i en processorpipeline i lang tid. I det øjeblik, hvor denne tråd for eksempel har brug for data fra hukommelsen, og dataene ikke er i cachen, gemmer processoren trådens tilstand og skifter automatisk til en anden tråd, indtil den også har brug for noget fra hukommelsen. En anden grund til at skifte til en anden tråd kan være en given grænse for antallet af processorcyklusser. Processorpipelinen er således ikke inaktiv og er næsten altid optaget af at udføre koden for en bestemt tråd.Finkornet ( FGMT ) , interleaved multithreading )
Processoren skifter mellem programtråde ved hver clock-cyklus. Finkornet multithreading garanterer udførelse af alle tråde, der er tildelt processoren. Udførelsen af hver specifik tråd bliver langsommere, men den samlede processorgennemstrømning øges. Multi-threaded processorer, der implementerer finkornet multi-threading, er gode til at køre programmer, hvor der er mange tråde, såsom databaseservere, webservere, applikationsservere, der behandler mange af de samme anmodninger fra mange klienter. Sådanne processorer kaldes også tøndeprocessorer (udførelsen af tråde i processoren skifter hver cyklus som tøndenitter i en cirkel).Grovkornede multithreading-processorer: I 1998 udgav IBM RS64-II ( Northstar ), den første mikroprocessor på markedet til at understøtte multithreading i hardware . Processoren understøttede alternativ udførelse af 2 tråde. Seneste: Intels dual-core Montecito (2006) med Itanium 2 - baserede kerner , hvor hver kerne udfører to grovkornede tråde; Fujitsu SPARC64 VI (2007).
Eksempler på processorer, der har implementeret finkornet multithreading, omfatter Denelcor HEP (1982) - 8 tråde. Cray /Tera MTA (1988) -processoren kunne køre 128 tråde efter tur. Seneste: Sun UltraSPARC T1 (2005, 4 gevind pr. kerne) og T2 (2008), Oracle SPARC T3 (2010, 8 gevind), SPARC M7 (2015, 8 gevind).
Temporal multithreading har en fordel i forhold til simultan multithreading, idet den opvarmer processoren mindre; Ulempen er imidlertid, at kun én tråds kode udføres ved en given processorcyklus.
På en skalær processor kan finkornet multithreading ikke skelnes fra simultan. For at implementere simultan multithreading har processoren brug for en superskalær pipeline , og jo flere tråde der planlægges at køre samtidigt, jo højere skal pipeline -superskalaren være , hvilket øger kompleksiteten af processorlogikken.
processorteknologier | Digitale|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionssæt arkitektur | |||||||||
maskinord | |||||||||
Parallelisme |
| ||||||||
Implementeringer | |||||||||
Komponenter | |||||||||
Strømstyring |