EPIC (mikroprocessorarkitektur)
Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från
versionen som granskades den 23 december 2016; kontroller kräver
12 redigeringar .
EPIC ( engelsk explicit parallel instruction computing - " beräkning med explicit parallellism av maskininstruktioner ") är en klass av mikroprocessorarkitekturer med explicit parallellism av instruktioner. Termen introducerades 1997 av HP och Intel alliansen [1] för den kommande Intel Itanium-arkitekturen [2] . EPIC tillåter mikroprocessorn att exekvera instruktioner parallellt baserat på information från kompilatorn , snarare än att upptäcka möjligheten till parallell drift av instruktioner med hjälp av speciella kretsar vid körning. I teorin kan detta göra det lättare att skala processorkraften utan att öka klockhastigheten.
Ursprunget till VLIW
1989 kom Hewlett-Packards forskare till slutsatsen att antalet instruktioner som en RISC-processor kan utföra i en cykel är begränsat. Utveckling av en ny arkitektur baserad på VLIW-arkitekturen och kallad EPIC [2] påbörjades . För VLIW- arkitekturprocessorer kodar en instruktion (ett instruktionsord) flera operationer; operationer utförs samtidigt av olika exekveringsenheter hos processorn.
EPIC utvecklingsmål:
- borttagning av instruktionsschemaläggaren från processorn ;
- en ökning av antalet instruktioner som processorn kan exekvera samtidigt ( engelsk instruktionsnivå parallellism - instruktion parallellism ).
Instruktionsschemaläggaren är en enhet med komplex logik som är en del av processorn och är utformad för att bestämma i vilken ordning instruktionerna exekveras. Borttagningen av instruktionsschemaläggaren frigjorde utrymme inuti processorn för andra enheter (som en ALU ). Funktionerna för instruktionsschemaläggaren tilldelades kompilatorn .
En ökning av graden av instruktionsparallellism uppnås genom att använda kompilatorns förmåga att söka efter oberoende instruktioner.
VLIW -arkitekturen i sin ursprungliga form hade flera nackdelar som hindrade deras massantagande:
- VLIW-instruktionsuppsättningar var inte kompatibla över processorgenerationer (ett program kompilerat för en processor som innehåller fler exekveringsenheter (t.ex. fler ALU ) kunde inte exekveras av en processor som innehåller färre enheter);
- förseningar i att ladda data från minneshierarkin ( cacher , DRAM ) var inte helt förutsägbara (på grund av detta blev implementeringen av statisk schemaläggning av instruktioner för att ladda och använda data mer komplicerad).
Utvecklingen av VLIW
EPIC - arkitekturen har följande funktioner för att åtgärda bristerna i VLIW:
- Varje grupp med flera instruktioner kallas en bunt . Varje bunt kan ha en stoppbit, vilket indikerar att nästa grupp beror på resultaten av denna. En sådan bit gör att du kan skapa framtida generationer av arkitektur med möjlighet att köra fler buntar parallellt. Beroendeinformationen beräknas av kompilatorn, så hårdvaran behöver inte göra extra kontroll för operandoberoende.
- Programvaran förhämtningsinstruktion används för att förhämta data . Prepaging ökar chansen att data redan finns i cachen när laddningskommandot körs . Även i denna instruktion kan det finnas ytterligare instruktioner för att välja olika nivåer av cache för data.
- Den spekulativa laddningsinstruktionen används för att ladda data innan det är känt om det kommer att användas ( förbigående kontrollberoenden ) eller ändras före användning ( förbikoppling av databeroende ).
- Kontrollera laddningsinstruktioner hjälper spekulativa laddningsinstruktioner genom att kontrollera om en laddningsinstruktion berodde på en efterföljande skrivning. Om det finns ett sådant beroende måste den spekulativa nedladdningen upprepas.
EPIC -arkitekturen innehåller också flera koncept ( grab-bag ) för att öka ILP (Instruction Parallelism):
- Grenprediktion används för att minska grenfrekvensen och för att öka den spekulativa exekveringen av instruktioner. I det senare fallet omvandlas villkorlig förgrening till att fylla predikatregister, sedan exekveras båda förgreningarna. Resultatet av grenen som inte borde ha exekverats avbryts av värdet på predikatregistret.
- Uppskjutna undantag med hjälp av biten Inte en sak i allmänna register. De tillåter spekulativ avrättning att fortsätta även efter undantag.
- Extremt stor registerfil för att slippa byta namn på register .
- Instruktioner för gren för flera destinationer förbättrar grenförutsägelse genom att kombinera flera alternerande grenar till ett enda paket.
Itanium -arkitekturen lade också till en roterande registerfil [3] , som behövs för att förenkla mjukvarupipelining av loopar ( programvarupipelining ). Med en sådan fil finns det inget behov av manuell avveckling av cykler och manuellt byte av register [4] .
Annan utveckling och forskning
Det har gjorts en del forskning om EPIC-arkitekturer som inte är relaterad till Itanium-utveckling.
- IMPACT - projektet vid University of Illinois i Urbana-Champaign, ledd av Wen-mei Hwu , har starkt påverkat senare forskning.
- PlayDoh-arkitektur från HP-labs.
- Gelato Federation , en gemenskap av utvecklare för att utveckla bättre kompilatorer för Linux på Itanium-servrar. ( Gelato Federation )
Se även
Anteckningar
- ↑ Schlansker och Rau EPIC: An Architecture for Instruction-Level Parallel Processors (PDF) (länk ej tillgänglig) . HP Laboratories Palo Alto, HPL-1999-111 (februari 2000). Hämtad 8 maj 2008. Arkiverad från originalet 27 april 2012. (obestämd)
- ↑ 1 2 Uppfinna Itanium: Hur HP Labs hjälpte till att skapa nästa generations chiparkitektur (död länk) . HP Labs (juni 2001). Hämtad 14 december 2007. Arkiverad från originalet 27 april 2012. (obestämd)
- ↑ Moderna serverprocessorer. Del 2. Intel Itanium, HP PA8700, Alpha Arkiverad 12 januari 2012.
- ↑ De Gelas, Johan Itanium–Finns det ljus i slutet av tunneln? (inte tillgänglig länk) . AnandTech (9 november 2005). Hämtad 8 maj 2008. Arkiverad från originalet 27 april 2012. (obestämd)
Länkar