Very long instruction word: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m robot Aggiungo: sv:VLIW |
mNessun oggetto della modifica |
||
Riga 1:
[[Immagine:Itanium2.JPG|thumb|right|L'Itanium 2 una CPU VLIW]]
==Progetto==
In un processore superscalare il numero di unità di calcolo non è visibile nel set di istruzioni. Ogni istruzione in formato binario codifica una sola istruzione da eseguire, che normalmente è di 32-64 bit o meno.
Invece le istruzioni VLIW vengono raggruppate in bundle, ciascuno dei quali contiene più istruzioni elementari, specificando
[[Immagine:CPU VLIW e tradizionale.png|thumb|right|300px|Confronto tra una CPU tradizionale e una CPU VLIW]]
Sin dalle prime architetture ci si è resi conto che aggiungendo unità di calcolo alle macchine si potevano incrementare le prestazioni senza aumentare i costi in maniera eccessiva. Nelle CPU superscalari è la CPU stessa che durante l'esecuzione decide dinamicamente quali istruzioni mandare in esecuzione in parallelo. nelle CPU VLIW è il compilatore che durante la fase di traduzione decide quali istruzioni vadano eseguite in parallelo.
In un'istruzione VLIW
Una dipendenza tipica si ha, ad esempio, quando un'istruzione assembly X deve elaborare il risultato di un'altra istruzione Y. In questa circostanza le due non possono venir eseguite in parallelo.
Il compilatore VLIW rileva questa dipendenza ed attua politiche di risoluzione dei conflitti.
Riga 18:
Un altro problema si presenta se il risultato di un'istruzione viene utilizzato per definire se uscire da un ciclo o no. Molte CPU moderne scelgono in anticipo un percorso in modo da poter caricare i dati corrispondenti. Alcune CPU sono dotate di una unità di [[predizione delle diramazioni]] che effettua una analisi del codice per prevedere la diramazione più probabile. Questi metodi incrementano la complessità del progetto e corrompono la filosofia originaria delle architetture RISC anche perché la CPU deve contenere anche l'elettronica che in caso di errore della predizione elimina le istruzioni in esecuzione e elimina le eventuali modifiche già eseguite (undo).
In un'architettura VLIW il compilatore utilizza delle euristiche o dei profili per predeterminare in anticipo il ramo più probabile. Avendo il compilatore molto più tempo della CPU e la possibilità di analizzare tutto il codice e non solo qualche istruzione, le sue previsioni sono molto più precise di quelle effettuate da una CPU in tempo reale. Il compilatore sviluppa il codice inserendo le istruzioni relative al ramo più probabilmente scelto in cascata nel codice, e codifica l'algoritmo necessario per fare l'undo nel caso le previsione non sia quella corretta.
== Problematiche ==
|