Articolo pubblicato sul n. 140 di MCmicrocomputer (Edizioni Technimedia Srl - Roma) nel maggio 1994

MCmicrocomputer


Anteprima:
IBM PowerPC 604

di Andrea de Prisco

Non c'e' due senza tre! Rispettando ancora una volta la tabella di marcia da lungo fissata, IBM e Motorola annunciano il completamento dello sviluppo e la realizzazione dei primi esemplari su silicio funzionanti del terzo componente della famiglia PowerPC, il 604. Con prestazioni quasi doppie rispetto al PowerPC 601, grazie alle quali diviene il microprocessore piu' potente attualmente offerto in grandi volumi sul mercato, il nuovo nato si propone come microprocessore ideale per desktop di alte prestazioni, workstation e server. Copertina del numero di MCmicrocomputer contenente l'articolo

 

Potenza eccezionale

 

Il microprocessore PowerPC 604 e' un'implementazione a 32 bit dell'architettura PowerPC, compatibile sia a livello software che a livello di bus con i microprocessori PowerPC 601 e PowerPC 603. Grazie alla 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.

Le sue massime prestazioni sono possibili grazie anche all'utilizzo di 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. Grazie all'implementazione della tecnica dinamica di branch prediction anche i salti non creano alcun rallentamento nell'esecuzione del flusso di istruzioni.

Il 604 ha una MMU separata e due cache da ben 16 kilobyte l'una per istruzioni e dati. All'interno del microprocessore 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 "domand page", con dimensione variabile dei blocchi trattati. L'algoritmo di aggiornamento sia delle cache che dei TLB e' di tipo LRU, least recently used.

Riguardo la costruzione, 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.

Le prestazioni raggiungibili da nuovo PowerPC 604 sono sicuramente entusiasmanti. Per la versione a 100 MHz si parla, infatti, di ben 160 SPECint92 e 165 SPECfp92. Per la cronaca, Pentium alla stessa velocita' di clock si ferma a 100 riguardo SPECint92 e 105 SPECfp92.

 

L'architettura

 

La velocita' di un processore e' determinata principalmente da tre fattori: numero di istruzioni in un task, numero medio di istruzioni per ciclo di clock, frequenza di clock utilizzata. Il primo obiettivo e' centrato dalla stessa architettura PowerPC che e' ottimizzata per produrre codice molto compatto, pur aderendo completamente alla filosofia RISC. PowerPC 604 centra gli altri due obiettivi utilizzando una alta frequenza di clock (100 MHz) e un alto numero di istruzioni per ciclo di clock grazie all'architettura superscalare, l'esecuzione speculare con una sofisticata branch prediction e alle tecniche di serializzazione.

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 quest' 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. Quando, nell'esecuzione delle istruzioni, vi sono di mezzo una o piu' pipeline (come nel caso di PowerPC), l'esecuzione di una istruzione inizia prima che l'istruzione precedente sia completata, con un meccanismo simile a quello della catena di montaggio. Quando un'istruzione di salto condizionato entra nella pipeline non si sa ancora (fino a quando l'esecuzione della stessa non verra' completata) quale sara' l'istruzione successiva. Dipende, come facilmente verificabile, dall'esito stesso del salto condizionato. 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 601 a 100 MHz

 

Motorola e IBM annunciano una nuova versione del microprocessore PowerPC 601, piu' veloce, piu' piccola e con un consumo inferiore rispetto a qualsiasi altro processore CISC per desktop.

Utilizzando i benchmark standard per l'industria, la nuova versione del PowerPC 601 offerta dalla Divisione Microelettronica di IBM e dalla Divisione Microprocessori RISC di Motorola, raggiunge alla frequenza di 100 MHz un livello di prestazioni stimato in 105 SPECint92 e 125 SPECfp92 utilizzando una cache secondaria. Nella nuova versione il die e' stato ridotto da 120 a 74 millimetri quadrati e il consumo tipico scende da 8 a 4 W, rispetto alla versione originaria del PowerPC 601.

Con il PowerPC 601 a 100 MHz, IBM Microelectronics e Motorola introducono nella famiglia PowerPC una nuova generazione basata sulla tecnologia di punta dei CMOS da 0.5 micron. Ne deriva un nuovo dispositivo dalle prestazioni ineguagliate per i computer desktop.

Quantita' limitate del nuovo microprocessore saranno disponibili nel secondo trimestre presso IBM Microelectronics e Motorola, mentre la produzione in volumi e' prevista per l'ultimo trimestre 1994. PowerPC 601 e' oggi disponibile nelle versioni a 80, 66 e 50 MHz.

 

 

 

Da Power a PowerPC

 

Power sta per Performance Optimized With Enhanced RISC: altro non e' che l'architettura sviluppata da IBM per le sue macchine RS/6000.  PowerPC e' un'implementazione single chip a basso costo dell'architettura Power. Questa, essendo superscalare, dispone di tre unita' esecutive indipendenti (una branch unit, una integer unit e una floating-point unit) grazie alle quali istruzioni differenti possono essere eseguite parallelamente e nel medesimo ciclo di clock.

Diversamente dalle comuni architetture RISC, nei processori Power 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. 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 di 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 PowerPC, partendo da una piattaforma sufficiente a coprire tutte le esigenze di calcolo dei prossimi dieci anni.

Per garantire comunque la totale compatibilita' con le applicazioni Power, tutte le funzioni non piu' residenti possono essere implementate attraverso meccanismi di "trap & emulate". A fronte delle relative esemplificazioni, troviamo d'altro canto un potenziamento del set di istruzioni per schedulare esplicitamente i dati da introdurre ed estrarre sotto il controllo dell'utente, nonche' l'aggiunta di istruzioni floating point in singola precisione (Power supporta solo la doppia precisione). Ma il cambiamento piu' significativo da Power a PowerPC riguarda, come detto, l'estensione dell'architettura da 32 a 64 bit: esisteranno sia PowerPC a 32 che a 64 bit, ma tutti i processori saranno in grado di lavorare a 32. Le versioni a 64 bit avranno uno switch selezionabile a livello di codice utente per passare da 32 a 64 bit e viceversa. Cio' consentira' alle implementazioni a 32 bit di girare anche su quelle a 64 bit con un kernel di sistema operativo a 64 bit, permettendo nel contempo alle nuove applicazioni a 64 bit di utilizzare le vecchie librerie a 32.

 


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