Explicit Data Graph Execution
Explicit Data Graph Execution o EDGE è un instruction set che invece di utilizzare il tradizionale approccio istruzione/registro tipico delle architetture RISC e CISC segue una nuova strada. I processori basati su EDGE dividono i programmi in blocchi base, questi blocchi sono dei gruppi di istruzioni che lavorano su operandi comuni e che non hanno al loro interno condizioni di salto o altre condizioni che fermino il flusso di istruzioni. Questi blocchi vengono distribuiti all'interno di unità che li processano in modo indipendente, i risultati vengono passati ai blocchi che ne necessitano per continuare l'elaborazione. La distribuzione dei blocchi viene effettuata in modo dinamico e questa filosofia di esecuzione permette di sviluppare programmi che non devono costantemente accedere ai registri per scambiare dati tra i blocchi, questo elimina un collo di bottiglia presente nei microprocessori classici. Inoltre questa tipologia di processore dividendo il programma in blocchi indipendenti dimostra una maggior capacità di eseguire codice parallelo.ì
Il set di istruzioni EDGE definisce una serie di istruzioni atte a semplificare le gestione dei singoli blocchi, il set di istruzione semplifica la codifica dei dati all'interno del blocco al fine di ridurre le dipendenze dai dati e permette di specificare le dipendenze tra i blocchi. I dati sono utilizzati per definire il flusso di controllo delle istruzioni, i dati definiscono un grafico delle dipendenze che il processore deve soddisfare durante l'esecuzione. Le singole istruzioni definite con EDGE sono mediamente più costose di quelle definite da un processore RISC o CISC ma il maggior costo viene mitigato con l'utilizzo di blocchi mediamente grandi (l'implementazione di EDGE utilizza blocchi di 1024 istruzioni).
Il set di istruzioni EDGE utilizza come elemento base i blocchi e ogni blocco viene mappati in una singola unità di esecuzione. I singoli blocchi non hanno al loro interno istruzioni di controllo del flusso, queste intervengono solo tra i blocchi, comunque i blocchi possono avere delle istruzioni predicative al fine poter inserire all'interno dei blocchi le istruzioni di flusso più comuni (come gli IF). Il grafo che definisce l'esecuzione del programma è definito con le relazioni di concorrenza tra i blocchi, queste relazioni specificano il flusso dei dati da un blocco a un altro o da un blocco a un'area di memoria comune. Ogni blocco può essere un singolo programma sequenziale o un programma SIMD.
Voci correlate
Collegamenti esterni
- (EN) Overview of the TRIPS project An implementation of an EDGE architecture.