# PowerPC

PowerPC (dove PC sta per di Performance Computing) è un'architettura di microprocessori RISC creata nel 1991 dall'alleanza Apple-IBM-Motorola (conosciuta come AIM). PowerPC era il settore CPU della piattaforma dell'AIM.
La linea Power PC è stata interrotta dopo che nell'aprile 2008 IBM ha ufficialmente unito le due linee di server e workstation con lo stesso nome, Power, e successivamente Power Systems, con hardware identico e una scelta di sistemi operativi, software e contratti di servizio, basati in precedenza su un'architettura POWER6.
Le specifiche tecniche sono gestite dell'organizzazione Power.org di cui IBM e Freescale Semiconductor sono membri. I processori della famiglia sono realizzati secondo l'architettura Performance Optimization With Enhanced RISC (POWER).

## Storia

Il primo prototipo di PowerPC fu l'IBM 801, un prototipo di processore RISC progettato da John Cocke alla fine degli anni settanta per conto della IBM che lo adoperò in molti sistemi embedded e fu la base del processore ROMP utilizzato nei computer IBM RT. Dopo l'insuccesso dell'IBM RT per via delle ridotte prestazioni IBM avviò il progetto America volto allo sviluppo del più rapido processore disponibile sul mercato. Il progetto portò allo sviluppo dell'architettura POWER utilizzata dai sistemi RISC System 6000 all'inizio degli anni 90.
Il primo processore POWER fu uno dei primi processori RISC ad alte prestazioni su più integrati. IBM decise che una versione su singolo chip era preferibile e quindi ne sviluppò una versione più semplice eliminando dal set di istruzioni alcune istruzioni POWER e sviluppò il processore RISC Single Chip per le macchine di fascia bassa dei server RS/6000. I manager IBM sapevano di avere un processore potenzialmente molto scalabile. Il processore poteva scalare dai server di fascia alta fino alle applicazioni embedded.
IBM contattò Apple con l'obiettivo di stringere un'alleanza per sviluppare una famiglia di processori su singolo chip basati su set di istruzioni POWER per personal computer. Apple contattò Motorola per coinvolgerla nello sviluppo dei processori. Motorola era un fornitore di lunga data di Apple, aveva esperienza nella produzione e nella gestione di processori prodotti in milioni di esemplari e inoltre Apple riteneva vantaggiosa la possibilità di avere un secondo fornitore di microprocessori.
Nel 1991 il PowerPC era solo uno dei componenti dell'alleanza tra le società. In quel periodo il mercato era dominato dalla Microsoft e Intel, tramite il sistema operativo Microsoft Windows e i processori 80386 e 80486. Intel inoltre stava sviluppando il Pentium che pur essendo compatibile con i predecessori forniva un notevole incremento di prestazioni. L'alleanza AIM mirava a rompere il monopolio Microsoft-Intel nel settore dei personal computer.
Per Motorola l'alleanza era un'ottima possibilità. L'alleanza permetteva alla società di poter utilizzare un'architettura RISC ad alte prestazioni e già testata investendo solo un modesto budget in ricerca. Inoltre l'alleanza permetteva a Motorola di mantenere un grosso cliente come Apple nel suo portafoglio clienti. Inoltre Motorola sperava di vendere a IBM le versioni a basso costo dei processori, ritenendo che IBM avrebbe trovato più conveniente comprare i processori da sé piuttosto che svilupparseli in proprio.
In quegli anni Motorola aveva già un proprio design RISC incarnato nel 88000 che non stava andando bene nel mercato. Una spesso citata ragione per il suo fallimento era la mancanza di compatibilità con la loro diffusa serie 68000, già usata su Amiga, Atari ST e Macintosh. Inoltre i processori 88000 erano arrivati in ritardo sul mercato rispetto ai processori MIPS e SPARC.
Tuttavia l'88000 era già in produzione e alcuni produttori come Data General avevano già sviluppato delle macchine basate sul processore. Inoltre la stessa Apple aveva sviluppato dei prototipi basati su 88000 e questo spinse IBM e Motorola a rendere il nuovo processore compatibile a livello di bus con il Motorola 88000 in modo da rendere veloce la conversione delle macchine basate su 88000 in macchine basate su PowerPC.
I primi processori basati sulle specifiche PowerPC ricevettero un'accoglienza molto calorosa da parte del mercato. Oltre a IBM e Apple anche il gruppo Motorola dedicato allo sviluppo di computer sviluppò sistemi basati su PowerPC. Microsoft portò Windows NT 3.51 su PowerPC, Sun Microsystems portò Solaris su PowerPC, IBM sviluppò una versione di AIX per PowerPC e pianificò una versione di OS/2 per i nuovi processori. Alla metà degli anni 90 i PowerPC erano i più potenti processori disponibili per personal computer.
Lo sviluppo delle nuove architetture su PowerPC comunque non ebbe il successo sperato. I clienti dei sistemi operativi Windows, OS/2 e Solaris vista la scarsità di software per PowerPC ignorarono la piattaforma. Le versioni di OS/2, Solaris e Windows NT vennero dismesse rapidamente e solo i Macintosh completarono la transizione sulle nuove macchine basate su PowerPC. Le prestazioni del PowerPC rispetto agli altri processori erano per Apple più importanti della mancanza di compatibilità con il passato.
Tuttavia il ridotto successo dell'alleanza (rispetto agli obiettivi iniziali) fece pensare a IBM e Motorola che era ora di riconsiderare le priorità. Motorola durante gli anni 90 aveva sviluppato i processori G3 e G4, mentre IBM aveva sviluppato i processori G5 nel 2003. Nel 2004 Motorola decise di dismettere la divisione dedicata alla produzione dei semiconduttori e creò la società Freescale Semiconductor mentre IBM vendette la propria divisione dedicata allo sviluppo dei personal computer a Lenovo e concentrò lo sviluppo dei processori PowerPC per applicazioni specializzate come il mercato delle console. IBM sviluppò i processori per le console Wii, PlayStation 3 e Xbox 360. Nel 2005 vista la situazione incerta dei processori per computer Apple decise di abbandonare lo sviluppo di macchine basate su PowerPC e strinse con Intel un'alleanza per utilizzare i suoi nuovi processori basati sull'architettura Intel Core. Apple completò la transizione in meno di un anno e durante il mese di agosto dell'anno successivo smise di commercializzare prodotti con processori PowerPC.

## Caratteristiche

Il PowerPC è stato progettato con principi RISC, e consente un'implementazione superscalare. Esistono versioni sia con implementazione 32 bit che a 64 bit.
Partendo dalla specifica di base POWER, il PowerPC ha aggiunto:
* modalità big o little-endian (che richiedono un reboot per lo switch). Questa modalità non è gestita dal PowerPC G5.
* singola precisione in virgola mobile in aggiunta alla doppia precisione.
* istruzioni floating point (su richiesta di Apple).
* una specifica completa a 64 bit, compatibile con la modalità a 32 bit
* rimozione di alcune istruzioni POWER particolarmente complesse, emulate dal sistema operativo se necessario.

## Implementazioni

La prima implementazione su singolo chip del design fu l'MCP601 nel 1992, un ibrido delle specifiche POWER1 e PowerPC. Questo consentì l'utilizzo del chip da parte di IBM nei sistemi già esistenti basati su POWER1, anche se portò a delle difficoltà nel passaggio alla seconda generazione di processori completamente basati sul design PowerPC. Apple continuò il lavoro su una nuova linea di computer Macintosh basata sul chip, e li lanciò come "Power Macintosh" basati sul 601 il 14 marzo 1994.
Anche IBM ebbe la sua linea completa di desktop basati su PowerPC costruita e pronta per essere venduta; sfortunatamente non avevano un sistema operativo pronto. IBM decise di riscrivere completamente OS/2 specificamente per il PowerPC. IBM impiegò 2 anni a riscrivere OS/2 per PowerPC ed allora fu troppo tardi. I desktop PowerPC non furono mai immessi sul mercato. La rivista Byte (aprile 1994) pubblicò un lungo articolo su Apple e i desktop IBM PowerPC.
Apple, che non aveva un OS basato su PowerPC, prese una strada diversa. Riscrisse solo i pezzi essenziali del sistema operativo e quindi scrisse un emulatore 680x0 che poteva eseguire le altre parti dell'OS e le applicazioni basate su 68000.
La seconda generazione del processore, che seguiva integralmente le specifiche PowerPC, incluse il 603 di fascia bassa e il 604 di fascia alta. Il 603 è noto per il suo basso costo e per i consumi molto ridotti. L'obiettivo di Motorola, infatti, era quello di usare il progetto 603 come modello di base di tutte le successive implementazioni dei chip PowerPC. Apple tentò di utilizzare il 603 nella serie di laptop PowerBook 5300 ma con scarsi risultati a causa delle ridotte dimensioni (8 kB) della cache di primo livello del processore. L'emulatore 68K del sistema operativo non riusciva ad utilizzarla e ciò comportava una drastica riduzione delle prestazioni. Il problema fu risolto con la versione 603e del PowerPC che essendo dotata di una cache di primo livello di 16KB, ne consentiva l'utilizzo all'emulatore.
Nel 1993 ingegneri IBM a Burlington iniziarono lo sviluppo di una nuova versione di processore PowerPC con incluso il supporto del set di istruzioni x86. Lo sviluppo del processore venne svolto da IBM senza la collaborazione dell'alleanza AIM, il processore venne denominato all'interno di IBM PowerPC 615. Tuttavia seri dubbi sulle reali prestazioni del processore e sulla sua convenienza economica spinsero IBM a cancellare il progetto nel 1995 dopo che un numero limitato di processori erano stati prodotti. Tuttavia versioni contrastanti affermano che il processore impiegava 5 cicli di clock a commutare set di istruzioni, questo tempo sommato al tempo di riempimento delle pipeline rendeva il processore lento, inoltre sembra che uno scarso supporto di Microsoft abbia contribuito all'abbandono del progetto.
La prima implementazione a 64 bit del PowerPC fu il 620 nel 1997, ma ebbe uno scarso successo commerciale. Apple non lo acquistò poiché era un processore molto grande e costoso, senza contare le non molto elevate prestazioni, inferiori a quelle del 604 col software a 32-bit. IBM riutilizzò parte del progetto per il POWER3.
Nel 1997 IBM introdusse anche una famiglia di processori a 64-bit per server: la RS64. Pur derivata dalle specifiche PowerPC adottava tutta una serie di caratteristiche aggiuntive dedicate. Venne utilizzata, in quattro differenti generazioni, nei server della serie RS/6000 e AS/400 fino all'introduzione dell'architettura POWER4 nel 2001.
Nel 1998 IBM commercializzò l'architettura POWER3 a 64 bit destinato esclusivamente alla sua linea di server RS/6000 affiancando la serie RS64.
Alla fine del 2002 IBM introdusse il PowerPC 970. Si trattò del primo processore PowerPC a 64-bit destinato al mercato di consumo. Il 970 era basato sull'architettura multicore POWER4 di IBM adattata a singolo core. Il 970, per garantire ai sistemi Apple la retrocompatibilità, includeva una unità vettoriale (simile alle estensioni AltiVec nella serie Motorola 74xx) ed era stato modificato per eseguire codice a 32-bit in modo nativo.
Numericamente, il PowerPC è il più diffuso nei controllori delle auto. In questo ruolo, Motorola ha offerto un enorme numero di versioni costruite attorno al core 603 chiamate MPC5xx. A questo hanno aggiunto diverso hardware custom, per consentire l'I/O sul singolo chip.
I dispositivi di rete sono un altro settore dove i processori PowerPC sono stati utilizzati ampiamente. MSIL utilizzò in nucleo QUICC del MC68302 per sviluppare il PowerQUICC MPC860 e i MPC823/MPC823e. Tutte le varianti includono un gestore RISC separato chiamato CPM che gestisce le comunicazioni e riduce il lavoro della CPU. CPM accede in DMA alla memoria centrale. I processore successivo fu l'MPC8260 basato su core 603 e dotato di un nuovo CPM.

## Sistemi operativi

I sistemi operativi che supportano i processori PowerPC sono il Mac OS 7, 8, Mac OS 9 e macOS fino alla versione Leopard per i computer Macintosh e compatibili. Linux, FreeBSD, OpenBSD, NetBSD, Windows NT 3.51, Windows NT 4, Solaris, MorphOS ed AmigaOS 4.x per le macchine PowerPC. Inoltre molti sistemi operativi in tempo reale come QNX, VxWorks e Linux per applicazioni embedded come LynuxWorks.
Ultimamente altre macchine che utilizzano questo tipo di processori sono la Xbox 360 (Xenon), PlayStation 3 (Cell), Wii (IBM Broadway), Wii U (IBM Espresso).

## Processori PowerPC

* 601 MPC601 50 e 66 MHz
* 602 prodotti consumer (multiplexed data/address bus)
* 603 portatili
* 603e
* 604
* 604e
* 620 la prima implementazione a 64-bit
* x704 implementazione PowerPC BiCOMOS della Exponential Technologies
* 750 PowerPC G3 (1997) 233 MHz e 266 MHz
* 7400 PowerPC G4 (1999) 350 MHz
* 750FX annunciato da IBM nel 2001 e disponibile all'inizio del 2002 nella versione a 1 GHz.
* 970 PowerPC G5 (2003) implementazione 64-bit derivata dall'IBM POWER4 alle velocità di 1.4 GHz, 1.6 GHz, 1.8 GHz, 2.0 GHz, 2.5 GHz e 2.7 GHz.
* 970MP Processore G5 Dual Core introdotto a fine 2005. È disponibile nelle versioni da 2.0 GHz, 2.3 GHz e 2.5 GHz.
* Gekko 485 MHz (usato nel Nintendo GameCube)
* Power4+ IBM processore a 1.4 GHz installato sui server Regatta (RS/6000 o pSeries)
* IBM Broadway processore utilizzato nella console Nintendo Wii.
* Xenon processore basato su PowerPC dotato di tre core e utilizzato nelle Xbox 360.
* PA6T-1682-a prodotto da P.A. SEMI su licenza IBM del G5 consuma 15 Watt per core (fino ad 8) ed ha il supporto per memoria e crittografia incorporati.
* Cell, il processore utilizzato dalla PlayStation 3.