Explicitly parallel instruction computing: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 37:
 
== Superare i limite del VLIW ==
L'architettura EPIC al fine di risolvere i principali problemi segue sei principi base:
EPIC introduce diverse innovazioni all'architettura VLIW classica per superarne i limiti, le principali innovazioni sono:
#Caricamenti anticipati delle istruzioni
*Ogni gruppo di istruzioni viene chiamato ''bundle''. Ogni bundle contiene al suo interno oltre alle istruzioni anche delle informazioni aggiuntive che specificano se i risultati del bundle servono a un bundle successivo. Queste informazioni sono utilizzate del processore per gestire in parallelo i vari bundle. Le dipendenze dei bundle sono calcolate dal compilatore in modo da non occupare transistor del processore.
#Esecuzione predicativa al fine di eliminare molte condizioni di salto
*L'analisi speculativa dei dati viene utilizzata anche per precaricare i dati nelle cache. Questo incrementa la possibilità di trovare i dati già in cache e quindi riduce i lenti accessi alla memoria.
#Ampio numero di registri
*Il precaricamento dei dati inoltre aiuta l'esecuzione speculativa verificando in anticipo se vi siano delle dipendenze da precedenti caricamenti.
#Indipendenza dall'architettura
#Predizione dei salti
L'architettura EPIC inoltre prevede una serie di flag utilizzati per mantenere le pipeline cariche.
#Rotazione dei registri
*L'esecuzione predicativa serve per ridurre l'incidenza dei salti sulle prestazioni delle pipeline e aumentare l'esecuzione speculativa. Il processore converte la condizione di salto in un predicato che viene utilizzato per decidere quali istruzioni vadano eliminate dato che il processore esegue entrambi i cammini e poi deve eliminare le istruzioni del ramo non eseguito.
*L'esecuzione ritardata viene utilizzata per migliorare l'esecuzione speculativa e su appoggia a dei registri di uso generale del processore.
*Il processore è dotato di moltissimi registri (diverse centinaia) in modo da non dover utilizzare tecniche di [[rinominazione dei registri]].
*Istruzioni di salto a più vie.
 
Al fine di seguire i principi base l'architettura EPIC utilizza le seguenti tecniche:
L'architettura [[IA-64]] inoltre aggiunge la [[register window]], una tecnica utilizzata nei [[Digital Signal Processor|DSP]] che permette di utilizzare subroutine senza dover effettuare continui salvataggi dello stack ma appoggiandosi a una serie di registri che vengono fatti ''vedere'' alle subroutine tramite una specie di finestra scorrevole che mostra alla subroutine solo i registri di sua competenza. Il processore inoltre provvede al salvataggio in memoria dei registri impegnati da subroutine lontane da quella in esecuzione, in modo da aver sempre registri pronti per le subroutine.
*Caricamento anticipato:
:L'architettura introduce il caricamento speculativo delle istruzioni, prima di un salto cerca di prevedere l'esito dell'istruzione e carica le istruzioni conseguenti in cache. Esegue i caricamenti anche prima di aver terminato l'analisi degli alias.
*Esecuzione predicativa:
:Il processore dispone di 64 registri utilizzati per gestire l'esecuzione predicativa delle istruzioni, questo permette di eliminare molti dei più comuni salti e quindi permette di incrementare sensibilmente le istruzioni eseguite in parallelo. Ogni istruzione può essere eseguita in modo predicativo.
*Ampio numero di registri
:Al fine di non dover includere strutture di [[ridenominazione dei registri]] l'architettura include 128 registri per gli interi e 128 registri per i numeri in virgola mobile.
*Indipendenza dall'architettura:
*:Al fine di eliminare uno dei maggiori vincoli delle architetture VLIW, EPIC è un architettura pienamente VLIW senza cicli di ritardo. Ogni gruppo di istruzioni viene chiamato ''bundle''. Ogni bundle contiene al suo interno oltre alle istruzioni anche delle informazioni aggiuntive che specificano se i risultati del bundle servono a un bundle successivo. Queste informazioni sono utilizzate del processore per gestire in parallelo i vari bundle. Le dipendenze dei bundle sono calcolate dal compilatore in modo da non occupare transistor del processore. I bundle sono di 128 bit mentre ogni istruzione è di 41 bit e i bit di gestione dei bundle sono 5.
*Predizione dei salti
:Otto registri per la predizione delle diramazioni, i registri permettono all'unità di prevedere salti multipli e salti annidati
*Rotazione dei registri
:L'architettura [[IA-64]] inoltre aggiungeutilizza la [[register window]], una tecnica utilizzata nei [[Digital Signal Processor|DSP]] che permette di utilizzare subroutine senza dover effettuare continui salvataggi dello stack ma appoggiandosi a una serie di registri che vengono fatti ''vedere'' alle subroutine tramite una specie di finestra scorrevole che mostra alla subroutine solo i registri di sua competenza. Il processore inoltre provvede al salvataggio in memoria dei registri impegnati da subroutine lontane da quella in esecuzione, in modo da aver sempre registri pronti per le subroutine. L'architettura prevede che i 48 registri inferiori utilizzati per la predicazione e i 96 registri interi inferiori possano ruotare.
 
==Ricerca e sviluppo continuo ==