Architetture dei processori/Very Long Instruction Word: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Diablo (discussione | contributi)
mNessun oggetto della modifica
Hellisp (discussione | contributi)
mNessun oggetto della modifica
Riga 1:
{{avanzamento|100%}}
{{Architettura dei processori}}
 
[[Image:Intel i860 XP A80860XP-50 L4190197 top.jpg|thumb|300px|L'Intel i860 uno dei primi processori VLIW prodotti]]
[[Image:Vliwpipeline.png|thumb|right|300px|Pipeline di un processore VLIW]]
Line 24 ⟶ 22:
== Problematiche ==
Il principale problema di questa architettura è l'estrema dipendenza dei programmi dal compilatore. Un programma ottimizzato per un processore VLIW per lavorare in modo efficiente sulla generazione successiva di microprocessori va quasi sempre ricompilato. Questo rende problematico per un utente cambiare il computer dato che anche il suo parco software andrebbe adattato al nuovo processore a meno che i programmi non siano in grado scritti con un linguaggio come il [[w:Java (linguaggio)|Java]] che essendo in realtà compilato durante l'esecuzione possa essere adattato alla macchina durante l'esecuzione. Un'altra strategia è utilizzare uno strato software che interpreti il vecchio codice e lo adatti al nuovo processore ma in questo caso si ha un deperimento delle prestazioni che può essere anche molto marcato. Questa strategia viene utilizzata per esempio dal processore [[w:Efficeon|Efficeon]] della [[w:Transmeta|Transmeta]] che interpreta codice [[w:Architettura x86|Intel X86]] standard e internamente lo traduce in codice VLIW per la CPU.
 
== Evoluzioni ==
[[Image:Itanium2.JPG|thumb|300px|L'Itanium 2, l'ultimo esponente della famiglia basata su architettura EPIC]]
L'architettura VLIW ha indubbiamente molti vantaggi ma i suoi problemi ne rendono problematico l'utilizzo in processori per computer. La necessita di ricompilare il codice per ogni generazione di processori in particolare si scontra con la necessita degli utenti di poter mantenere il parco software. Per eliminare questi problemi diverse società hanno sviluppato delle evoluzioni dell'architettura VLIW, tra le varie evoluzioni la più famosa è l'architettura EPIC sviluppata da Intel e HP congiuntamente. L'architettura EPIC (Explicitly Parallel Instruction Computing) raggruppa le istruzioni elementari in parole come una classica architettura VLIW e inserisce inoltre delle informazioni sul parallelismo tra le varie parole. In questo modo le varie generazioni del processore possono variare internamente la loro architettura senza troppi problemi. Le informazioni sul parallelismo permettono di realizzare unità di decodifica che sfruttano il parallelismo efficientemente ma sono nel contempo semplici dato che l'analisi del codice parallelo e la sua suddivisione è stata effettuata dal compilatore. Inoltre l'architettura EPIC per migliorare le prestazioni aggiunge molti registri (diverse centinaia) per evitare di implementare l'unità di ridenominazione dinamica dei registri, aggiunge delle istruzioni predicative per evitare lo svuotamento delle pipeline e altre innovazioni per velocizzare i cambi di contento tra le subroutine e per migliorare la gestione della cache. L'architettura EPIC è stata implementata da Intel nei processori Itaniun e Itanium 2. Questa famiglia di processori dopo un avvio molto stentato nel settore dei server ha ultimamente conquistato quote di mercato. La prima versione dell'Itanium forniva prestazioni deludenti, la cache di primo e secondo livello era piccola ed il codice EPIC per via delle istruzioni aggiuntive risulta più grande dell'equivalente codice per x86. Quindi le cache potevano contenere porzioni di codice ridotto e i continui accessi alla memoria penalizzavano il processore. Le successive generazioni dell'Itanium fornirono i processori di cache generose per arrivare fino all'Itanium 2 MP 9050, un processore dotato di core separati con cache di primo livello da
32 Kilobyte per core, 512 Kilobyte di cache di secondo livello per core e 24 Megabyte di cache di terzo livello unificata. Ovviamente tutta questa memoria incide sul numero di transistor che in questo modello arrivano ad essere 1.72 Miliardi.
 
{{avanzamento|100%}}