EPIC (mikroprocessorarkitektur)
Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den
version , der blev gennemgået den 23. december 2016; checks kræver
12 redigeringer .
EPIC ( engelsk eksplicit parallel instruction computing - " computation with explicit parallelism of machine instruktioner ") er en klasse af mikroprocessorarkitekturer med eksplicit parallelisme af instruktioner. Udtrykket blev introduceret i 1997 af HP og Intel-alliancen [1] for den kommende Intel Itanium-arkitektur [2] . EPIC giver mikroprocessoren mulighed for at udføre instruktioner parallelt baseret på information fra compileren i stedet for at detektere muligheden for parallel drift af instruktioner ved hjælp af specielle kredsløb under kørsel. I teorien kunne dette gøre det lettere at skalere processorkraften uden at øge clockhastigheden.
Oprindelsen af VLIW
I 1989 kom Hewlett-Packard- forskere til den konklusion, at antallet af instruktioner , som en RISC-processor kan udføre i én cyklus, er begrænset. Udvikling af en ny arkitektur baseret på VLIW-arkitekturen og kaldet EPIC [2] blev påbegyndt . For VLIW - arkitekturprocessorer koder én instruktion (et instruktionsord) flere operationer; operationer udføres samtidigt af forskellige eksekveringsenheder i processoren.
EPIC udviklingsmål:
- fjernelse af instruktionsplanlæggeren fra processoren ;
- en stigning i antallet af instruktioner, som processoren er i stand til at udføre samtidigt ( engelsk instruktionsniveau parallelism - instruction parallelism ).
Instruktionsplanlæggeren er en enhed med kompleks logik, der er en del af processoren og er designet til at bestemme rækkefølgen, hvori instruktionerne udføres. Fjernelsen af instruktionsplanlæggeren frigjorde plads inde i processoren til andre enheder (såsom en ALU ). Funktionerne i instruktionsplanlæggeren blev tildelt compileren .
En stigning i graden af instruktionsparallelisme opnås ved at bruge compilerens evne til at søge efter uafhængige instruktioner.
VLIW - arkitekturerne i deres oprindelige form havde flere ulemper, der forhindrede deres massevedtagelse:
- VLIW-instruktionssæt var ikke kompatible på tværs af processorgenerationer (et program kompileret til en processor indeholdende flere eksekveringsenheder (f.eks. flere ALU'er ) kunne ikke udføres af en processor indeholdende færre enheder);
- forsinkelser i indlæsning af data fra hukommelseshierarkiet ( caches , DRAM ) var ikke fuldstændig forudsigelige (på grund af dette blev implementeringen af statisk planlægning af instruktioner til indlæsning og brug af data mere kompliceret).
Udviklingen af VLIW
EPIC - arkitekturen har følgende funktioner til at afhjælpe manglerne ved VLIW:
- Hver gruppe af flere instruktioner kaldes et bundt . Hvert bundt kan have en stopbit, hvilket indikerer, at den næste gruppe afhænger af resultaterne af denne. Sådan en smule giver dig mulighed for at skabe fremtidige generationer af arkitektur med mulighed for at køre flere bundter parallelt. Afhængighedsinformationen beregnes af compileren, så hardwaren behøver ikke at foretage ekstra kontrol for operand-uafhængighed.
- Software-forhentningsinstruktionen bruges til at forhåndshente data . Forberedelse øger chancen for, at dataene allerede vil være i cachen , når indlæsningskommandoen udføres . Også i denne instruktion kan der være yderligere instruktioner til at vælge forskellige niveauer af cache for data.
- Den spekulative indlæsningsinstruktion bruges til at indlæse data, før det vides, om det vil blive brugt ( omgå kontrolafhængigheder ) eller ændret før brug ( omgå dataafhængigheder ).
- Tjek belastningsinstruktioner hjælper spekulative belastningsinstruktioner ved at kontrollere, om en belastningsinstruktion afhang af en efterfølgende skrivning. Hvis der er en sådan afhængighed, skal den spekulative download gentages.
EPIC - arkitekturen inkluderer også flere koncepter ( grab-bag ) for at øge ILP (Instruction Parallelism):
- Grenforudsigelse bruges til at reducere grenfrekvens og til at øge den spekulative udførelse af instruktioner. I sidstnævnte tilfælde konverteres betinget forgrening til at udfylde prædikatregistre, hvorefter begge forgreninger udføres. Resultatet af grenen, der ikke skulle have været udført, annulleres af værdien af prædikatregisteret.
- Udskudte undtagelser ved hjælp af Not a thing bit i registre til generelle formål. De tillader spekulativ henrettelse at fortsætte selv efter undtagelser.
- Ekstremt stor registerfil for at undgå behovet for at omdøbe registre .
- Instruktioner for multi-destinationsgrene forbedrer forudsigelse af gren ved at kombinere flere skiftende forgreninger i et enkelt bundt.
Itanium - arkitekturen tilføjede også en roterende registerfil [3] , som er nødvendig for at forenkle softwarepipelining af loops ( softwarepipelining ). Med en sådan fil er der ikke behov for manuel afvikling af cyklusser og manuel omdøbning af registre [4] .
Anden udvikling og forskning
Der har været noget forskning i EPIC-arkitekturer, der ikke er relateret til Itanium-udvikling.
- IMPACT - projektet ved University of Illinois i Urbana-Champaign, ledet af Wen-mei Hwu , har stærkt påvirket senere forskning.
- PlayDoh-arkitektur fra HP-labs.
- Gelato Federation , et fællesskab af udviklere til at udvikle bedre compilere til Linux på Itanium-servere. ( Gelato Federation )
Se også
Noter
- ↑ Schlansker og Rau EPIC: An Architecture for Instruction-Level Parallel Processors (PDF) (link ikke tilgængeligt) . HP Laboratories Palo Alto, HPL-1999-111 (februar 2000). Hentet 8. maj 2008. Arkiveret fra originalen 27. april 2012. (ubestemt)
- ↑ 1 2 Opfinder Itanium: Hvordan HP Labs hjalp med at skabe næste generations chiparkitektur (dødt link) . HP Labs (juni 2001). Hentet 14. december 2007. Arkiveret fra originalen 27. april 2012. (ubestemt)
- ↑ Moderne serverprocessorer. Del 2. Intel Itanium, HP PA8700, Alpha Arkiveret 12. januar 2012.
- ↑ De Gelas, Johan Itanium – Er der lys for enden af tunnelen? (utilgængeligt link) . AnandTech (9. november 2005). Hentet 8. maj 2008. Arkiveret fra originalen 27. april 2012. (ubestemt)
Links