# PowerPC

PowerPC is een RISC-processorarchitectuur gemaakt door de Apple-IBM-Motorola-alliantie van 1991, beter bekend als de AIM. De processoren waren oorspronkelijk bedoeld voor workstations, maar zijn later populair geworden in geïntegreerde systemen en ook voor krachtige processoren. De PowerPC was het processorgedeelte van het gehele AIM-platform en is het onderdeel dat het langst is blijven bestaan. De architectuur kende haar succes in de pc-markt vooral in Apples Power Macintosh-reeks van 1994 tot 2006.
De PowerPC was hoofdzakelijk gebaseerd op IBM's eerdere POWER-architectuur, en bleef hier sterk compatibel mee; de architecturen bleven zo dicht bij elkaar dat dezelfde programma's en besturingssystemen, met enige voorzichtigheid bij het overzetten, op beide konden draaien.
Van deze processorarchitectuur is een 32 bits- en een 64 bits-variant gemaakt.

## Geschiedenis

De geschiedenis van de PowerPC begint met IBM's 801-prototypechip gebaseerd op John Cockes ideeën over RISC aan het eind van de jaren zeventig. Op de 801 gebaseerde kernen werden gebruikt in een aantal embedded producten van IBM, uitmondend in de ROMP-processor met 16 registers, die gebruikt werd in de IBM RT. De prestaties van de RT waren teleurstellend, en IBM startte het America Project met als doel de snelste processor te maken, die verkrijgbaar was. Het resultaat was de POWER-architectuur, die begin 1990 geïntroduceerd werd in de RISC System/6000. Deze architectuur werd oorspronkelijk door IBM "PowerPC" gedoopt. De term "POWER" werd een aantal jaren later gebruikt, om onderscheid te maken tussen IBM's processoren voor servers en die voor desktop- en embedded systemen.
De oorspronkelijke POWER-microprocessor, een van de eerste superscalar RISC-implementaties, was een multi-chip design, voor hoge prestaties. Bij IBM realiseerde men zich snel dat het noodzakelijk was om de hele microprocessor in één enkele chip te integreren en een aantal POWER-processorinstructies moesten verdwijnen om hun RS/6000-lijn op te kunnen schalen naar een krachtiger machine, en zo begon het werk aan de POWER-microprocessor in één enkele chip. Begin 1991 realiseerde men zich bij IBM dat het ontwerp de potentie had om in grote aantallen geproduceerd en gebruikt te worden in de gehele industrietak.
IBM benaderde Apple met het doel samen te werken aan de ontwikkeling van een familie van uit één chip bestaande microprocessoren die gebaseerd was op de POWER-architectuur. Kort daarna vroeg Apple Motorola zich bij de discussies te voegen, omdat Apple een van de grootste afnemers was van Motorola's microprocessoren voor desktopsystemen, vanwege de lange relatie die ze hadden, hun grotere ervaring met de productie van grote aantallen microprocessoren dan IBM en om als tweede leverancier te gaan dienen voor de microprocessor. Dit samenwerkingsverband werd bekend als de AIM-alliantie, naar de eerste letters van de namen van de drie partners, Apple, IBM, Motorola.
Voor Motorola was POWER een ongelooflijke overeenkomst. Het stelde het bedrijf in staat een uitgebreid geteste en krachtige RISC-CPU af te zetten, zonder zelf grote investeringen te hoeven doen. Bovendien bleven de banden met een belangrijke klant, Apple, behouden, en de mogelijkheid leek te bestaan dat ze een extra klant erbij konden krijgen, die kleinere versies zou afnemen, in plaats van ze zelf te maken.
Toentertijd had Motorola al zijn eigen RISC-ontwerp, in de vorm van de 88000 die slecht verkocht. Een vaak genoemde reden hiervoor is dat de processor niet compatibel was met hun beroemde 68000, die o.a. gebruikt werd in de Apple Macintosh. Een waarschijnlijkere reden is dat de Motorola-chips stelselmatig te laat op de markt verschenen als gevolg van slechte ontwerpmethodes en productieproblemen, om levensvatbare concurrenten te kunnen zijn voor ontwerpen als de MIPS en de SPARC, die de 88000 versloegen.
De 88000 was echter al in productie; Data General distribueerde al op de 88000 gebaseerde AViiON-computers en Apple had al op de 88000 gebaseerde prototypes draaiend. Als de nieuwe POWER-chip op hardwareniveau buscompatibel gemaakt kon worden met de 88000 chip, dan zou dat zowel Apple als Motorola in staat stellen hun machines sneller op de markt te brengen, omdat ze de moederbordarchitectuur niet opnieuw hoefden te ontwerpen.
Het resultaat van deze verschillende eisen was de PowerPC (Performance Computing)-specificatie. Het leek er op dat iedereen er winst uit haalde:
* IBM kreeg de CPU in één chip die ze zochten, praktisch voor niets.
* Apple kreeg beschikking over een van de krachtigste RISC-CPU's die leverbaar waren, en een enorme hoeveelheid publiciteit als gevolg van de reputatie van IBM.
* Motorola een bijdetijdse RISC-chip voor niets, en hulp bij hun ontwerpmethodes van IBM.
Maar dezelfde productieproblemen waar Motorola eerder mee te kampen had gehad, speelden de AIM-alliantie parten, waardoor de toepassing van nieuwe processoren door Apple en andere computerfabrikanten steeds vertraagd werd: eerst voor Motorola in de jaren negentig met de G4-processoren, en later IBM met de 64 bits-G5-processor in 2003. In 2004 stapte Motorola uit de industrietak door de productie van processors te verzelfstandigen in het bedrijf Freescale Semiconductor. Rond dezelfde tijd verliet IBM de personalcomputermarkt door zijn productlijn (die op Intel-processoren gebaseerd is) te verkopen aan de Chinese computerfabrikant Lenovo en richtte zich met op het PowerPC-chipontwerp gebaseerde CPU's op spelcomputers en hun makers, zoals Nintendo's Wii, Sony's PlayStation 3 en Microsofts Xbox 360. In 2005 kondigde Apple aan dat ze de PowerPC-processoren niet meer zouden gebruiken in hun Macintosh-computer, en voortaan Intel-processoren zouden gebruiken, waarbij als redenen werden genoemd de prestatiebeperkingen van de chip voor de toekomstige personalcomputerhardware als gevolg van warmteontwikkeling en het stijgende energieverbruik, en omdat IBM niet in staat bleek de 970 (PowerPC G5)-processor op te waarderen naar een kloksnelheid van rond 3 GHz. Dit werd beschouwd als een PR-probleem voor IBM, omdat de beslissing genomen was vanwege hun onvermogen zich te meten met Intel en andere concurrenten wat betreft snelheid en verbeteringen aan de architectuur. Dit was het feitelijke einde van de AIM-alliantie, waarbij IBM doorgaat met het gebruik en ontwikkeling van de PowerPC-processor voor spelcomputers en Freescale Semiconductor zich uitsluitend richt op embedded apparatuur.
Dit maakt de toekomst van het PowerPC-platform voor iets anders dan embedded apparatuur onzeker. De oorspronkelijke POWER-architectuur die IBM ontwikkeld heeft, en waarvan de PowerPC is afgeleid leeft nog steeds, en wordt door IBM nog steeds aangeboden op servers voor grote bedrijven. Tot op de dag van vandaag wordt deze architectuur verder ontwikkeld.

## Ontwerpeigenschappen

De PowerPC is ontworpen volgens de RISC-beginselen, en maakt een superscalarimplementatie mogelijk. Er zijn 32 bits- en 64 bitsversies. Uitgaande van de POWER-specificatie, is aan de PowerPC het volgende toegevoegd:
* Ondersteuning voor gebruik zowel in de Big-Endian als de Little-Endian-modus; de PowerPC kan tijdens het draaien (run-time) omschakelen van de ene naar de andere modus. (zie hieronder). Deze eigenschap wordt niet ondersteund door de PowerPC G5. (Dit was de reden dat het zo lang duurde voordat Virtual PC werkte op Macintoshes die op de G5 gebaseerd waren.)
* Vormen in enkelvoudige nauwkeurigheid van sommige instructies voor zwevendekommagetallen, naast de bestaande vormen.
* Bijkomende instructies voor zwevendekommagetallen ten behoeve van Apple.
* Een volledige 64 bitspecificatie, die achterwaarts compatibel is met de 32 bitmodus.
* Verwijderen van de meer esoterische POWER-instructies, waarvan er een aantal indien nodig geëmuleerd kon worden door het besturingssysteem.

### Endian-modi

In de Little-Endian-modus zijn de drie minst significante bits van het effectieve adres zijn exclusive-ORed met de drie-bitswaarde die gekozen wordt op basis van de lengte van de operand. Dit is niet helemaal hetzelfde als een echt little-endian-modus, en het kan problemen veroorzaken bij de communicatie met externe apparaten.
Theoretisch kan de volgorde van de bytes van de processor omgeschakeld worden terwijl de computer loopt, waardoor Big- en Little-Endian-programma's tegelijkertijd ondersteund worden, en het is hierdoor mogelijk een programma in de ene modus te draaien, en de exception handler (m.a.w. het besturingssysteem) in de andere. Normaal gesproken zou dit zeer moeilijk zijn als gevolg van de interactie met externe apparaten die hun eigen bytevolgorde hebben.
Een interessant neveneffect van deze implementatie is dat een programma een 64 bitswaarde (het grootste gangbare formaat voor een operand) naar een adres A kan schrijven in de ene endian modus, naar de andere modus kan omschakelen, en als de waarde weer gelezen wordt uit adres A, dan is die identiek, hoewel de processor nu ogenschijnlijk in de andere endian modus is.

## Implementaties en voordelen van het ontwerp

De eerste implementatie in één chip van het ontwerp was de MPC601, die was gebaseerd op zowel de POWER1- als de PowerPC-specificaties, en kwam uit in 1992. Hierdoor kon IBM de chip gebruiken in hun bestaande op POWER1 gebaseerde platform, hoewel het problemen tot gevolg had toen werd overgeschakeld naar de tweede generatie 'pure' PowerPC-ontwerpen. Apple ging door met de ontwikkeling van een nieuwe serie Macintosh-computers die op de chip gebaseerd waren en bracht ze uit als de op de 601 gebaseerde Power Macintosh op 14 maart 1994.
IBM had ook een volledige serie op de PowerPC gebaseerde bureausystemen gebouwd en klaar voor distributie; helaas was het besturingssysteem dat IBM wilde installeren – Microsoft Windows NT – begin 1993 nog niet klaar, terwijl de machines al wel klaar waren om op de markt gebracht te worden. Omdat IBM ook onenigheid had gekregen met Microsoft, besloot het OS/2 te herschrijven voor de PowerPC. Dit nam twee jaar in beslag, en tegen de tijd dat het besturingssysteem klaar was, was de markt voor OS/2 voor de PowerPC verdampt. Daarom werd de IBM PowerPC-bureaucomputer niet uitgebracht, hoewel het referentieontwerp (codenaam Sandalbow), dat gebaseerd was op de PowerPC 601-processor werd uitgebracht als een RS/6000-model.
Apple, dat ook een besturingssysteem voor de PowerPC ontbeerde, nam een andere route. Ze herschreven essentiële delen van hun Mac OS besturingssysteem voor de PowerPC-architectuur, en schreven verder een 680X0 emulator, waarop de rest van het onveranderde besturingssysteem en voor de 68K bestemde applicaties konden lopen.
De tweede generatie was "puur" en bevatte een "low end" 603 en een "high end" 604. De 603 opvallend vanwege zijn lage prijs en energieverbruik. Dit was met een ontwerpdoel van Motorola, die het 603-project gebruikte om de basis te leggen voor alle toekomstige generaties PPC-chips. Apple probeerde de 603 toe te passen in een nieuw ontwerp laptop, maar ze waren daartoe niet in staat als gevolg van het kleine 8KB level 1 cache. De 68000-emulator in het Mac-besturingssysteem paste niet in 8 kB, wat de computer dramatisch traag maakte. Dit probleem werd in de 603e opgelost met een 16kB l1-cachegeheugen, waardoor de emulator efficiënt kon lopen.
In 1993 begonnen ontwikkelaars bij IBM's vestiging in Burlington, Vermont een versie van de PowerPC te ontwikkelen die de Intel x86-instructieset direct ondersteunde. Terwijl er bij IBM zonder ondersteuning van de AIM-alliantie aan gewerkt werd, werd deze chip binnen IBM en in de media als de PowerPC 615. Omdat het te weinig profijt opleverde, en er problemen met de prestaties wat betreft het schakelen tussen de x86 en de eigen PowerPC-instructiesets waren, werd het project in 1995 gestopt, nadat er een beperkt aantal chips geproduceerd was voor interne testen.
De eerste 64 bitsimplementatie was de 620, maar deze blijkt weinig gebruikt te zijn, omdat Apple hem niet wilde afnemen. Door de grote omvang van het geïntegreerd circuit was hij te duur voor de embedded markt. Hij was later en langzamer dan beloofd, en IBM gebruikte zijn eigen POWER3-ontwerp, waardoor geen "kleine" 64 bitsoplossing werd aangeboden tot aan de introductie van de PowerPC 970 aan het eind van 2002. De 970 is een 64 bitsprocessor die is afgeleid van de POWER4 server processor. Om hem te maken werd de POWER4-kern veranderd om achterwaarts compatibel te zijn met de 32 bits-PowerPC-processoren, en een vector eenheid, vergelijkbaar met de AltiVec-uitbreidingen in Motorola's 74xx serie, werd toegevoegd.
IBM's RS64-familie is een gemodificeerde PowerPC-architectuur. Deze processoren worden gebruikt in de RS/6000- en AS/400-computerfamilies.
Getalsmatig wordt de PowerPC het meest aangetroffen in controllers in auto's. In deze rol heeft Freescale Semiconductor een groot aantal versies aangeboden, die de MPC5xx-familie genoemd worden, zoals de MPC555, gebaseerd op een variant van de 601-kern die 8xx heet en ontworpen is in Israël door MSIL (Motorola Silicon Israel Limited). De 601-kern is een single issue, wat betekent dat het slechts één instructie kan geven in één klokcyclus. Hieraan worden verschillende stukken speciale hardware toegevoegd, om I/O op een enkele chip mogelijk te maken.
Netwerken is een andere belangrijk toepassingsgebied waar embedded PowerPC-processoren worden aangetroffen. MSIL nam de QUICC-engine van de MC68302 en ontwikkelde hieruit de PowerQUICC MPC860. Dit was een erg befaamde processor die in veel Cisco-edgerouters werd toegepast aan het eind van de jaren 90. Varianten van de PowerQUICC omvatten de MPC850, en de MPC823/MPC823e. Alle varianten bevatten een aparte RISC-microengine, die de CPM genoemd wordt, die de centrale processor van alle communicatie verwerkingstaken ontlast en die DMA-functies heeft. De opvolger van in deze familie, de MPC8260, heeft een op de 603e gebaseerde kern en een afwijkende CPM.
De besturingssystemen die gebruikt worden in PowerPC-systemen omvatten het LynxOS real-time besturingssysteem en BlueCat embedded Linux van LynuxWorks.

### Toepassing

PowerPC-processoren zijn toegepast in vele producten, waaronder de volgende: Apple Macintosh post-68k-modellen (PowerMacs genoemd), IBM RS/6000 UNIX-workstations, Cisco-routers, Amiga post-68k-modellen (AmigaOne genoemd), Amiga "Classic"-acceleratorboards, Pegasos (een Commodore Amiga-kloon), de Nintendo GameCube videogameconsole, en vele embedded systemen zoals de TiVo personal video recorder. PowerPC-gebaseerde CPU-upgrades voor gebruik in Macintosh-systemen worden gefabriceerd door Sonnet Technologies, Daystar en voordien door Newer Technology dat toen marktleider was. Ook binnen de industriele markt, met name in de PLC techniek, werd het PowerPC platform veelvuldig toegepast, vaak in cominatie met een CODESYS V23 gebaseerd programmeeromgeving. In 2003, lanceerde NASA twee Mars-verkenners (Spirit en Opportunity) met PowerPC-processoren, in feite een tegen zware omstandigheden bestendige 604e.
Alle drie grote fabrikanten van spelcomputers hebben aangekondigd dat hun zesde generatie consoles op de PowerPC gebaseerde processoren zullen bevatten:
* Sony's PlayStation 3-console, die in de lente van 2007 is uitgekomen, heeft een Cell-processor, waarin een 3,2 GHz-PowerPC-controleprocessor zit, met acht closely-coupled DSP-achtige 3,2 GHz-versnellerprocessors, zeven actief en één reserve.
* Microsofts Xbox 360-console, die rond de feestdagen van 2005 uit kwam, bevat een aangepaste 3,2 GHz-IBM PowerPC-chip met drie symmetrische kernen.
* De Nintendo Wii-console, die in december 2006 is uitgekomen, maakt gebruik van de IBM Broadway-processor, gemaakt met 90 nm SOI CMOS-technologie.

## General-purpose PowerPC-processors

PowerPC-processoren brengen de lokale bus van de chip naar de oppervlakte, en verbinden met een overbruggingschip, die dit vertaalt in andere on-board devicebussen die verbinden met het RAM, PCI en andere devices.
* 601 MPC601 50 en 66 MHz
* 602-consumentenproducten (multiplexed data/addres bus)
* 603-notebooks
* 603e
* 604
* 604e
* 620 de eerste 64 bitsimplementatie (1997)
* x704 BiCOMOS PowerPC-implementatie door Exponential Technologies
* 750 (PowerPC G3) (1997) 233 MHz en 266 MHz, 740, 745, 755
* 7400 (PowerPC G4) (1999) 350 MHz, 7410 gebruikt AltiVec, een SIMD uitbreiding van de oorspronkelijke PPC specificaties
* 750FX aangekondigd door IBM in 2001 en verkrijgbaar vanaf het begin van 2002 op 1 GHz
* 7450 microarchitectuurfamilie
* 970 (PowerPC G5) (2003) Een 64 bitsimplementatie afgeleid van de IBM POWER4 en uitgebreid met VMX (AltiVec compatibele SIMD-uitbreidingen) draaiend op snelheden van 1,4 GHz, 1,6 GHz, 1,8 GHz, 2,0 GHz, 2,1 GHz, 2,3 GHz, 2,5 GHz en 2,7 GHz
* Gekko 485 MHz (gebruikt in de Nintendo GameCube)

## Embedded PowerPC-microcontrollers

32 bits-PowerPC-processoren zijn geliefd geweest bij ontwerpers van embedded computers. Om de kosten laag te houden bij concurrerende producten in grote aantallen, wordt de CVE-kern gewoonlijk geïntegreerd in een system-on-chip (SOC). SOC's bevatten de processorkern, cache en de lokale data van de processor op de chip, samen met de klok, timers, geheugen (SDRAM), perifere controllers (netwerk, seriële I/O), en buscontrollers (PCI, PCI-X, ROM/Flash bus I2C). IBM biedt ook een openbusarchitectuur aan (zogenaamde CoreConnect) om verbinding van de processorkern met het geheugen en randapparatuur in een SOC-ontwerp gemakkelijker te maken. IBM en Motorola hebben geconcurreerd langs parallelle ontwikkellijnen in elkaar overlappende markten. Een recente ontwikkeling is de BookE PowerPC-specificatie, geïmplementeerd door zowel IBM als Freescale Semiconductor, die embedded uitbreidingen definieert voor het PowerPC-programmeermodel.

### IBM (nu AMCC)

* 401
* 403: MMU toegevoegd in de meest geavanceerde versie 403GCX
* 405: MMU, Ethernet, serial, PCI, SRAM, SDRAM; NPe405 voegt meer netwerkdevices toe
* 440xx: Een reeks van processoren gebaseerd op de Book E-kern.
** 440GP: 400-500 MHz, (2) 10/100 Ethernet, PCI-X, DDR, 32k L1 Cache.
** 440GX: 533-800 MHz, (2) 10/100 Ethernet, (2) 10/100/1G Ethernet met TCP/IP hardwareacceleration, PCI-X, DDR, 32k L1 Cache
** 440SP: 533-667 MHz, 10/100/1G Ethernet, (2) 64bit PCI-X, 32bit PCI-X, 32k L1 Cache.
** 440SPe: 533-667 MHz, 10/100/1G Ethernet, (3) 64bit PCI-Express, 64bit PCI-X, 32k L1 Cache.
** 440EP: 333-667 MHz, (2) 10/100 Ethernet, PCI, DDR, FPU, USB 1.1 & 2.0, 32k L1 Cache.
** 440EPx: 333-667 MHz, (2) 10/100/1G Ethernet, Hardware Security, PCI, DDR-II, FPU, USB 2.0, 32k L1 Cache.
** 440GR: 333-667 MHz, (2) 10/100 Ethernet, (4) UART, (2) IIC, 53 GPIO, SPI, 32k L1 Cache.
** 440GRx: 333-667 MHz, (2) 10/100/1G Ethernet, (4) UART, (2) IIC, 53 GPIO, SPI, DDR-II, Hardware Security, 32k L1 Cache.

### Motorola (nu Freescale Semiconductor)

* MPC 860 (PowerQUICC): User's Manual
* MPC 860/8xx (PowerQUICC): netwerk- & telecommunicatiekaartcontrollers
* MPC 550/5xx line: (8xx core) auto & industriële controllers
* MPC 8260/82xx (PowerQUICC II) een 603 kern, netwerk- & telecommunicatiesysteemcontrollers met hogecapaciteit-, onchip-switched-bus
* MPC 8560/85xx (PowerQUICC III) een PowerPC Book E kern, netwerk- & telecommunicatiesysteemcontrollers met nog hogere capaciteit onchip