Articolo pubblicato sul n. 161 di MCmicrocomputer (Edizioni Technimedia Srl - Roma) nell'aprile 1996

MCmicrocomputer


Viva la Par Silicio

di Andrea de Prisco

La copertina del numero scorso di MC era quasi interamente dedicata ai processori dell'architettura Intel. Oltre a recensire tre macchine basate sui processori Pentium, Copertina del numero di MCmicrocomputer contenente l'articoloAMD K5 e Cyrix M1, abbiamo affrontato piu' approfonditamente alcune argomentazioni riguardanti le tre architetture dei processori trattati, mettendoli a confronto (scontro?) diretto per valutare le differenze di performance.

Invocando la "Par Silicio" non possiamo questo mese tralasciare l'architettura PowerPC, che tanto ha rivoluzionato la vita dei Macintosh e che altrettanto (se non di piu') promette riguardo altre piattaforme hardware ormai sulla rampa di lancio. Per le solite ragioni di spazio non possiamo dedicare questo mese a PowerPC un intero articolo (che lo meriterebbe e come!) ma dovrete accontentarvi "solo" di questo grosso riquadro all'interno della prova Power Computing. Ma non temete, torneremo presto (e piu' approfonditamente) sull'argomento.

 

Tutto e' nato, almeno ufficialmente, nell'ormai lontanissimo ottobre '91. In quella data, per certi versi destinata a fare storia, tre colossi dell'informatica e della microelettronica (Motorola, IBM e Apple) annunciarono un accordo per lo sviluppo di una comune architettura RISC denominata PowerPC. L'obiettivo prioritario era la creazione di una nuova piattaforma destinata ad interessare tutti gli ambienti di calcolo (dai portatili ai supercomputer, dai mainframe agli embedded controller per applicazioni in real time) mantenendo attraverso tutti questi "mondi" la piena compatibilita' software.

 

P... come Power

 

Power e' l'acronimo di Performance Optimized With Enhanced RISC ed e' l'architettura sviluppata da IBM per le sue macchine RS/6000. PowerPC e', se vogliamo, un'implementazione single chip a basso costo della prima e rispetta i concetti fondamentali delle architetture RISC: istruzioni a lunghezza fissa, operazioni registro-registro, lettura/scrittura registri-memoria, Istruzioni semplici e modi di indirizzamento elementare, un set di registri esteso, istruzioni anche a tre operandi (non distruttive).

Diversamente dalle comuni architetture RISC, nei processori Power (da non confondere, piu' di tanto, con PowerPC) il formato floating point e' compreso tra i tipi di dato di prima classe: non viene considerato come una caratteristica opzionale e trattato da un coprocessore, ma e' direttamente implementato nel set istruzioni del processore stesso esattamente come i tipi di dato standard, interi e  logici. Power supporta il formato standard floating point IEEE-754, utilizza un set di 32 registri in doppia precisione che fanno parte dell'unita' a virgola mobile e che sono separati dai registri generali dell'unita' intera. Il set di istruzioni floating point comprende una serie di istruzioni "moltiplica-e-somma" che consentono di migliorare drasticamente le prestazioni di molti algoritmi.

Nell'implementazione PowerPC, il set di istruzioni di Power e' stato ridimensionato per facilitare la realizzazione di versioni single chip a basso costo. Contemporaneamente alcune funzioni sono state eliminate per semplificare la futura realizzazione di versioni superscalari molto aggressive. Inoltre, l'architettura e' stata estesa integralmente a 64 bit, per prolungare il ciclo di vita di questa nuova famiglia, partendo da una piattaforma sufficiente a coprire tutte le esigenze di calcolo dei prossimi dieci anni.

Dopo il PPC 601 presentato e lanciato nel 1993 e utilizzato (tanto per non fare nomi) nelle macchine Power Macintosh di prima generazione, e' stata la volta del 603, un microprocessore RISC in grado di offrire le performance tipiche di una workstation in un design a basso costo, basso consumo, ideale per computer desktop di fascia medio/bassa, notebook o, piu' in generale, sistemi portatili. La sua architettura superscalare (comune a tutti i processori PowerPC) consente di eseguire tre istruzioni per ciclo di clock per mezzo di cinque unita' di esecuzione indipendenti: unita' intera, unita' floating point, unita' branch, load/store e system register. Alla sua massima potenza consuma appena 3 W offrendo, per la versione a 66 MHz, performance dell'ordine dei 60 SPECint92 e 70 SPECfp92. All'interno del chip e' implementato un sofisticato meccanismo di risparmio energetico che permette di impostare quattro distinti modi di funzionamento agendo su opportuni registri interni del processore. Il primo, Full-Power, e' quello di default e fa si' che tutte le unita' interne del chip siano utilizzate alla massima velocita' di clock disponibile. Il primo dei tre stati Low-Power si chiama "Doze" e provoca la disabilitazione di tutte le unita' interne ad eccezione della sola logica di controllo bus e dei registri della base dei tempi. Nel secondo stato Low-Power, denominato "Nap", l'MPC603 disabilita anche la logica di controllo del bus, riducendo ulteriormente la potenza assorbita. Nel terzo stato Low-Power, non a caso denominato "Sleep", tutte le unita' funzionali interne vengono disabilitate ed e' possibile fermare completamente anche il clock di sistema.

 

PowerPC 604: il salto di qualita'

 

Terzo componente della famiglia PowerPC e' il 604, utilizzato dalla macchina in prova questo mese e dai Power Macintosh 8500 e 9500: con la sua architettura superscalare, e' in grado di eseguire fin a 4 istruzioni per ciclo di clock, fornendo alte prestazioni sia in campo integer che floating point. Per offrire performance elevatissime utilizza una pipeline a 6 stadi: fetch, decode, dispatch, execute, completion e writeback. Altrettante sono le unita' di esecuzione indipendenti: salto, floating point, load/store e ben tre unita' integer, due a ciclo singolo e una a ciclo multiplo. Al suo interno troviamo due buffer associativi a 128 posizioni con doppio accesso, denominati TLB (Translation Lookaside Buffer), uno per le istruzioni e l'altro per i dati, per l'utilizzo della memoria virtuale "demand page", con dimensione variabile dei blocchi trattati. L'algoritmo di aggiornamento sia delle cache che dei TLB e' di tipo LRU, least recently used.

PowerPC 604 e' realizzato in tecnologia da 0.5 micron, processo CMOS con 4 livelli di metallizzazione, e incorpora 3.6 milioni di transistor su una superficie di 196 millimetri quadrati. Supporta il protocollo MESI a 4 stati, cosi' come una cache esterna di secondo livello. Il 604 utilizza tecniche PLL (phase locked loop)  che facilitano la progettazione di sistemi multi processor. Il clock del processore puo' essere fermato tramite meccanismi coordinati hardware/software per ridurre il consumo di corrente, pur lasciando la cache dati coerente con il contenuto della memoria.

Il microprocessore PowerPC 604 preleva, invia e completa fino a 4 istruzioni per ciclo di clock. Puo' tenere pronte per l'invio fino ad 8 istruzioni e altre 16 possono trovarsi in vari stadi di esecuzione. Utilizzando codice ottimizzato per questa architettura e' possibile mantenere le quattro istruzioni per ciclo di clock non come valore massimo ma per tutta l'esecuzione.

Le istruzioni, prelevate dalla cache interna, sono inviate alle varie unita' nel loro ordine ma possono essere eseguite anche fuori ordine. Con un funzionamento che ricorda quello delle macchine Data Flow piuttosto che le comuni Von Neumann, ogni istruzione puo' arrivare all'unita' di esecuzione anche prima degli operandi: quando questi saranno disponibili verra' completata l'esecuzione dell'istruzione.

Un altro elemento che contribuisce in maniera significativa al raggiungimento di tali massime prestazioni e' la tecnica di branch prediction. Visto che non si puo' conoscere l'istruzione successiva ad un salto condizionato fino a quando questo non e' completamente eseguito, quando un'istruzione di questo tipo e' incontrata PowerPC 604 percorre entrambe le possibili strade iniziando a decodificare e ad eseguire entrambi i flussi di istruzioni. Quando l'esecuzione del salto condizionato e' terminata, e si conosce l'esito solo il flusso di istruzione corrispondente viene tenuto in considerazione e completamente scartato quello non verificato. In questo modo, iniziando contemporaneamente sia l'esecuzione delle istruzioni per cosi' dire "giuste" che quelle "sbagliate" si riesce a mantenere alto il numero di istruzioni per ciclo di clock anche in presenza di numerosi salti condizionati.

 

PowerPC 620: l'iperspazio

 

Il 620, quarto componente della famiglia, rappresenta la massima espressione dell'eccezionale potenza elaborativa della nuova piattaforma. E' la prima realizzazione a 64 bit dell'architettura PowerPC, pur mantenendo la piena compatibilita' software con tutte le esistenti applicazioni a 32 bit. Grazie alle sue capacita' di multielaborazione, di calcolo numerico intensivo e di calcolo in virgola mobile, il PowerPC 620 rappresenta il microprocessore ideale per le esigenze dei server e delle workstation piu' potenti. Dai test effettuati, il PowerPC 620 a 133 MHz (ma e' prevista anche la versione a 150 MHz) ha raggiunto lo strabiliante risultato di 225 SPECin92 e 300 SPECfp92. Per fare un paragone, la versione a 100 megahertz del 601 fornisce i valori, rispettivamente, di 105 e 125, il 604 arriva a 160 e 165.

Come per il 604, anche il 620 e' realizzato in tecnologia CMOS da 0.5 micron, funziona a 3.3 volt, ma incorpora ben sette milioni di transistor. Al suo interno sono presenti due cache per dati e istruzioni da 32 kbyte l'una dotate di altri 4 kbyte di bit di parita' per l'integrita' dei dati e delle istruzioni mantenute all'interno del chip.

Dotato di un'interfaccia ad alta velocita' con la memoria, il PowerPC 620 integra al suo interno anche il controller della cache di secondo livello (esterna al processore), un bus a 128 bit ed ampie capacita' di multielaborazione. Grazie alla sua architettura superscalare puo' inviare contemporaneamente fino a quattro istruzioni in parallelo a sei unita' di esecuzione indipendenti. Queste sono l'unita' in virgola mobile (FPU), l'unita' di processo per i salti (BPU), l'unita' load/store piu' tre unita' intere, due a ciclo singolo e una a ciclo multiplo. Le sei unita', in quanto indipendenti, operano assolutamente in parallelo e possono quindi completare l'esecuzione di ben sei istruzioni contemporaneamente.

L'interfacciamento esterno di avvale di un bus di indirizzamento a 40 bit e puo' essere configurato per utilizzare un bus dati da 64 o 128 bit. Per entrambi i bus sono previsti rispettivamente 3 e 16 bit di parita' oltre naturalmente ad una serie di segnali di controllo per l'ottimizzazione a vari livelli di sistema.

Gli accessi in memoria da parte del PowerPC 620 non avvengono secondo un ordine rigido. Sequenze di operazioni, incluso la lettura/scrittura multipla di stringhe, non necessariamente viene completata nello stesso ordine in cui sono iniziate, massimizzando l'efficienza del bus senza sacrificare la coerenza dei dati.  E' anche possibile, se non sussistono problemi di dipendenza, che le operazioni di lettura precedano quelle di scrittura quando questo provochi un aumento delle prestazioni generali. 


Impaginato originale...


Clicca per ingrandire...

Clicca per ingrandire...


Articolo pubblicato su www.digiTANTO.it - per ulteriori informazioni clicca qui