close

Explicit datagrafexekvering

Hoppa till navigering Hoppa till sökning

Explicit Data Graph Execution eller EDGE är en instruktionsuppsättning som istället för att använda den traditionella instruktions-/registermetoden som är typisk för RISC- och CISC- arkitekturer följer en ny väg. EDGE-baserade processorer delar in program i grundläggande block, dessa block är grupper av instruktioner som fungerar på vanliga operander och som inte har inuti sig hoppförhållanden eller andra tillstånd som stoppar flödet av instruktioner. Dessa block distribueras inom enheter som bearbetar dem oberoende, resultaten skickas till de block som behöver dem för att fortsätta bearbetningen. Fördelningen av blocken utförs dynamiskt och denna exekveringsfilosofi gör det möjligt att utveckla program som inte behöver ständigt komma åt registren för att utbyta data mellan blocken, detta eliminerar en flaskhals som finns i klassiska mikroprocessorer. Denna typ av processor som delar upp programmet i oberoende block visar en större förmåga att exekvera parallell kod.

EDGE-instruktionsuppsättningen definierar en serie instruktioner för att hantera de individuella blocken, instruktionsuppsättningen hanterar kodningen av data inom blocket för att minska beroenden av data (genom predikativ exekvering ) och låter dig specificera beroenden mellan blocken. Data används för att definiera styrflödet för instruktionerna, data definierar en graf över de beroenden som processorn måste uppfylla under exekvering. De enskilda instruktionerna som definieras med EDGE är i genomsnitt dyrare än de som definieras av en RISC- eller CISC-processor, men den högre kostnaden minskas med användningen av medelstora block (EDGE-implementeringen använder block med 1024 instruktioner) och med möjlighet till användning många parallella beräkningsenheter.

EDGE.png
Bilden visar ett C- kodfragment (grön ruta), motsvarande monteringskod (blå ruta) och beroendegrafen som genereras av EDGE-instruktionerna (vit ruta). Observera att det villkorliga hoppet (IF) omvandlas till predikativa påståenden (markerade med de streckade segmenten)

EDGE-instruktionsuppsättningen använder block som sin bas, och varje block mappas till en enda exekveringsenhet. De enskilda blocken har inga flödesstyrningsinstruktioner inuti sig, dessa intervenerar endast mellan blocken, dock kan blocken ha predikativa instruktioner för att infoga de vanligaste flödesinstruktionerna (som IFs) inuti blocken. Grafen som definierar programexekvering definieras med samtidiga relationer mellan block, dessa relationer anger flödet av data från ett block till ett annat eller från ett block till ett gemensamt minnesområde. Varje block kan vara ett enstaka sekventiellt program eller ett SIMD- program . Kompilatorn samlar in instruktionerna som använder samma data i block och placerar instruktionerna som behöver resultat från andra block bredvid dem för att minimera dataöverföringstiden mellan blocken.

Relaterade artiklar

Externa länkar