Vai al contenuto

Explicitly parallel instruction computing

Da Wikipedia, l'enciclopedia libera.

Explicitly Parallel Instruction Computing (EPIC) è un paradigma di architettura per microprocessori sviluppata verso al fine degli '90.Questo paradigma è stata 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[1]:

  • 1981 - Bob Rau sviluppa il Polycyclic Architecture project at TRW/ESL[2]
  • 1983 - Josh Fisher descrive il progetto ELI-512 una macchina VLIW con compilatore che implementa il trace scheduling[3]
  • 1983-1988 - Rau alla Cydrome sviluppa il sistema Cydra-5, la compagnia chiuderà nel 1998[4]
  • 1984-1990 - Fisher alla Multiflow sviluppa i sistemi Trace, la compagnia chiuderà nel 1990
  • 1988 - Dick Lampman presso la Hewlett Packard assume Bob Rau e Mike Schlansker dalla Cydrome e acquisisce i brevetti della Cydrome
  • 1989 - Rau e Schlansker avviono il progetto di ricerca FAST (Fine-grained Architecture and Software Technologies), in seguito svilupperanno l'architettura HP PlayDoh
  • 1990-1993 - Bill Worley sviluppa l'architettura PA-WW (Precision Architecture Wide-Word) presso i laboratori Hewlett Packard come architettura successore di quella utilizzata dai processori PA-RISC, in seguito questa prenderà il nome SP-PA (Super-Parallel Processor Architecture) e produrrà il SWS (Super WorkStation)
  • Hewlett Packard assume Josh Fisher e lo inserisce nel progetto PA-WW
  • Hitachi collabora al progetto PA-WW, il capoprogetto Hitachi è Yasuyuki Okada
  • Novembre 1991 - Hans Mulder si unisce all'Intel per sviluppare un'architettura a 64 bit
  • Luglio 1992 - Worley consiglia i vertici di Hewlett Packard di cercare un partner per la produzione dei semiconduttori.
  • 1993 - Hewlett Packard inizia a sviluppare prodotti basati su PA-WW
  • Dicembre 1993 - Hewlett Packard avvia contatti con Intel per una collaborazione
  • Giugno 1994 - Hewlett Packard e Intel annunciano una collaborazione; il progetto PA-WW verrà usato come punto di partenza per lo sviluppo di prodotti comuni; John Crawford da Intel diventa direttore del progetto
  • 1997 - viene coniato il termine EPIC
  • Ottobre 1997 - Presentazione di Interl e Hewlett Packard al Microprocessor Forum
  • Giugno 1998 - Carole Dulong da parte Intel "The IA-64 Architecture at Work," IEEE Computer, pp. 24-32.
  • Febbraio 1999 - pubblicazione dei dettagli sull'ISA IA-64
  • 2001 - Intel rinomina per questioni di marketing l'IA-64 come Itanium Processor Family
  • Maggio 2001 - Itanium (Merced)
  • Giugno 2002 - Itanium 2 (McKinley)

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 meta degli anni 90 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 un 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:

  • I programmi VLIW non sono totalmente retrocompatibili. Codice scritto per un processore non risulta compatibile con le generazioni precedenti del processore dato che le generazioni precedenti hanno meno unità funzionali della generazione attuale. Il processore è invece in grado di eseguire codice compilato per generazioni precedenti sebbene con una riduzione delle prestazioni.
  • Le moderne architetture basate su DRAM e cache rendono il tempo di accesso alla memoria non predicibile e quindi molte delle ottimizzazioni applicate dal compilatore vengono vanificate.

Superare i limite del VLIW

EPIC introduce diverse innovazioni all'architettura VLIW classica per superarne i limiti, le principali innovazioni sono:

  • 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.
  • 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.
  • Il precaricamento dei dati inoltre aiuta l'esecuzione speculativa verificando in anticipo se vi siano delle dipendenze da precedenti caricamenti.

L'architettura EPIC inoltre prevede una serie di flag utilizzati per mantenere le pipeline cariche.

  • 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.

L'architettura IA-64 inoltre aggiunge 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.

Ricerca e sviluppo continuo

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

  • IMPAC, un progetto dalla University of Illinois at Urbana-Champaign gestito da Wen-mei Hwu che ha prodotto molte idee e tecniche utilizzate da EPIC.
  • L'architettura PlayDoh prodotta da HP nei suoi laboratori.
  • Gelato.org un progetto open source che mira a sviluppare una comunità di aziende e università per creare compilatori ad alte prestazioni per i processori Itanium su piattaforma Linux

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 i server basati su Itanium hanno generato un giro d'affari di 2.2 miliardi di dollari statunitensi e lo studio stima che il giro d'affari raggiunga i 7 miliardi di dollari nel 2010. [1] L'architettura EPIC si sta diffondendo ma se questa architettura dominerà il futuro è tutto da vedere.

Note

  1. ^ linea del tempo estratta da http://www.cs.clemson.edu/~mark/epic.html
  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
  3. ^ Very Long Instruction Word architectures and the ELI-512 IEEE-CS : Computer Society, 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

Voci correlate

Collegamenti esterni

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