Explicitly parallel instruction computing

Explicitly parallel instruction computing (EPIC) è un paradigma di architettura per microprocessori sviluppata verso la fine degli novanta. Questo paradigma è stato sviluppato da Intel e HP e ha portato allo sviluppo dell'architettura dell'Intel IA-64 utilizzata nei processori Itanium e Itanium 2. L'obiettivo di EPIC è lo sviluppo di processori in grado di eseguire in modo nativo ed efficiente codice parallelo senza dover utilizzare complesse strutture hardware all'interno del processore ma demandando la maggior parte dei problemi di parallelizzazione al compilatore. Questo permette di ottenere un aumento regolare e costante delle prestazioni senza innalzare eccessivamente la frequenza di funzionamento dei processori evitando consumi eccessivi e problemi di dissipazione.

Storia

L'architettura EPIC è un derivato dell'architettura VLIW e difatti lo sviluppo di questa architettura è inscindibilmente legato con lo sviluppo dell'architettura VLIW. Le principali innovazioni sono state:

VLIW

L'esecuzione fuori ordine e l'esecuzione speculativa ha permesso negli anni passati di incrementare significativamente le prestazioni dei processori. Tuttavia queste tecniche hanno presto mostrato i loro limiti, richiedono unità funzionali sempre più costose e complesse per ottenere aumenti prestazionali sempre più ridotti. Nella metà degli anni 1990 si svilupparono diverse ricerche per arginare o eliminare il problema e le ricerche portarono allo sviluppo di set di istruzioni ove il parallelismo delle singole istruzioni fosse dichiarato in modo esplicito in modo da eliminare le unità di esecuzione fuori ordine e di analisi speculativa del codice. Questi set di istruzioni portarono alle architetture VLIW.

Nelle architetture VLIW le istruzioni sono impacchettate in gruppi che vengono eseguiti in parallelo. In ogni gruppo la dipendenza tra le varie istruzioni è già stata analizzata e risolta dal compilatore e quindi il processore deve solo prendere il gruppo di istruzioni, separare le singole operazioni ed eseguile in parallelo senza dover utilizzare complesse unità di analisi del codice. Tutta l'analisi del codice per ottenerne una versione parallela è stata effettuata dal compilatore che avendo molto più tempo del microprocessore effettua analisi molto più approfondite e performanti.

Le architetture VLIW però hanno diversi difetti che attualmente ne limitano la diffusione, le principali sono:

Superare i limiti del VLIW

L'architettura EPIC al fine di risolvere i principali problemi segue sei principi base:

  1. Caricamenti anticipati delle istruzioni
  2. Esecuzione predicativa al fine di eliminare molte condizioni di salto
  3. Ampio numero di registri
  4. Indipendenza dall'architettura
  5. Predizione dei salti
  6. Rotazione dei registri

Al fine di seguire i principi base l'architettura EPIC utilizza le seguenti tecniche:

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.
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.
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.
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.
Otto registri per la predizione delle diramazioni, i registri permettono all'unità di prevedere salti multipli e salti annidati
L'architettura IA-64 utilizza la register window, una tecnica utilizzata nei 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

Il progetto EPIC si basa su ricerche prodotte da molti gruppi, tra le più influenti si segnalano:

EPIC nel mercato

L'architettura EPIC dopo un avvio molto stentato ha raggiunto un certo successo in alcuni segmenti di mercato, dove i server ad alte prestazioni la fanno da padrona. Secondo un'analisi di IDC del 2007 i server basati su Itanium generavano un giro d'affari di 2,2 miliardi di dollari statunitensi e si stimava che il giro d'affari avrebbe raggiunto i 7 miliardi di dollari nel 2010.

Note

  1. ↑ linea del tempo estratta da Historical background for HP/Intel EPIC and IA-64 -- Mark Smotherman
  2. ↑ Some scheduling techniques and an easily schedulable horizontal architecture for high performance scientific computing International Symposium on Microarchitecture archive Proceedings of the 14th annual workshop on Microprogramming table of contents Chatham, Massachusetts, United States Pages: 183 - 198 anno: 1981 ISSN 1050-916X (WC · ACNP)
  3. ↑ Very Long Instruction Word architectures and the ELI-512 IEEE-CS : Computer SoħĒēĕĊČÄÈăĂāĜciety, SIGARCH: ACM Special Interest Group on Computer Architecture Pages: 140 - 150 anno: 1983 ISBN 0-89791-101-6
  4. ↑ The Cydra 5 departmental supercomputer: design philosophies, decisions, and trade-offs Rau, B.R.; Yen, D.W.L.; Wei Yen; Towle, R.A.; Computer Volume 22, Issue 1, Jan. 1989 Page(s):12 - 35 Digital Object Identifier 10.1109/2.19820
  5. ↑ Intel Brings Dual-Core Capabilities to Itanium 2 with Montecito Processor, su manufacturing-insights.com (archiviato dall'url originale il 27 settembre 2007).

Voci correlate

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica