PowerPC

A PowerPC az Apple, az IBM és a Motorola összefogásából született RISC elvű processzor-architektúra. A PowerPC CPU az eredetileg tervezett AIM platform egyetlen, napjainkban is (2004. november) létező eleme.

Történet 

A PowerPC története az IBM által kifejlesztett POWER architektúrával kezdődött, mely az 1990-ben bejelentett RS/6000 családdal debütált. A PowerPC ötletét korábbi RISC processzorok, például az IBM 801, és a MIPS-architektúra inspirálta. Az eredeti POWER mikroprocesszor volt az egyik első szuperskalár RISC megvalósítás, kellően nagy teljesítménnyel és többcsipes felépítéssel. Az IBM hamar rájött, hogy sürgősen szüksége lesz egy egycsipes változatra is, amely képes lesz kiszolgálni a tervezett RS/6000 családot, a belépő szintű munkaállomásoktól a legnagyobb vállalati kiszolgálókig. 1991-ben az is láthatóvá vált, hogy a PowerPC architektúra, illetve csip, hamarosan komoly piaci szerephez juthat.

Az IBM ekkor felkereste a Motorolát azzal a céllal, hogy működjenek együtt egy az IBM POWER architektúráján alapuló egycsipes mikroprocesszor kifejlesztésén. Hamarosan az Apple is csatlakozott a csapathoz. A háromoldalú együttműködést később a résztvevők neveinek kezdőbetűjéből alkotott betűszóval AIM-nek keresztelték.

A Motorola számára a POWER architektúra megszerzése remek üzlet volt. Lehetővé tette, hogy egy kipróbált és nagy teljesítményű RISC processzort dobjon piacra kis anyagi befektetés árán. Az sem volt mellékes, hogy az új processzorral szorosabbra fűzhette kapcsolatait az Apple-lel, és ehhez nem kellett újabb processzort kifejlesztenie.

Ekkorra a Motorola már rendelkezett egy saját RISC architektúrájú processzorral, az üzletileg nem túl sikeres 88000-essel. A 88000 rossz szereplésének okai közt első helyen állt az elterjedt és az Apple számítógépekben is felhasznált 68000-essel való kompatibilitás hiánya. A sikertelenség ellenére a 88000-es processzor már gyártásban volt és az Apple pedig fel is használta. Számukra igen kedvező lett volna, ha az új egycsipes processzor hardveresen jobban közelít a 88000-hez, mert így sokkal gyorsabban dobhatta volna piacra új termékeit.

A különféle követelmények eredőjeként megszületett a PowerPC (Performance Computing) specifikáció. Mindenki jól járt:
 az IBM szinte ingyen megkapta az egycsipes CPU-t,
 az Apple megkapta a piac legnagyobb teljesítményű RISC processzorát és komoly sajtóvisszhangot az IBM hírnevének köszönhetően,
 a Motorola megszerezte a legmodernebb RISC csipet, melyet potenciálisan eladhatott számos gyártónak, többek között az IBM-nek és az Apple-nek is.

Tervezési alapelvek 

A PowerPC alapvetően a RISC architektúrára épít oly módon, hogy megvalósítható legyen a szuperskalár felépítés. Mind 32, mind pedig 64 bites változat létezik. Az eredeti POWER architektúrát a PowerPC az alábbiakban módosítja:

 Támogatja a big-endian és a little-endian bájtsorrendű üzemmódkat is; a PowerPC futásidőben képes e módok között átkapcsolni
 Néhány lebegőpontos műveletet egyszeres és kétszeres pontosságú változatban is megvalósítottak
 Az Apple kérésére néhány plusz lebegőpontos műveletet is beépítettek
 Teljes 64 bites megvalósítás, mely lefelé kompatibilis a 32 bites változattal
 Megszüntettek néhány egzotikusabb műveletet az eredeti POWER utasításkészletből, melyeket, ha szükséges, az operációs rendszer könnyen emulálhat

Little-endian és big-endian üzemmódok

Little-endian módban a valós címek három legalacsonyabb helyiértékű bitjén logikai kizáró-vagy (XOR) művelet végződik el egy, az operandus hosszától függő hárombites értékkel. Ez nem igazán a valódi little-endian működés és problémákat is okozhat a külső eszközökkel való kommunikációban.

Elméletben a processzor bájtsorrendje futásidőben úgy kapcsolható át, hogy egyszerre tudjon futtatni big-endian és little-endian programokat egyaránt. És valóban lehetséges alkalmazást futtatni az egyik módban, míg kivételkezelőket (exception handler), például operációs rendszert, a másikban. A gyakorlatban ez azonban problémás volna a perifériákkal való kommunikációban, mert azoknak meghatározott bájtsorrendjük van.

Ezen implementáció egyik érdekes jelensége, hogy egy program egy A címre eltárol egy 64 bites értéket az egyik fajta bájtsorrenddel, majd üzemmódot vált és az értéket ugyanarról az A címről visszaolvassa, a két érték megegyezik, holott a processzor most látszólag az ellenkező bájtsorrend-üzemmódban van.

Megvalósítás 

A terv legelső megvalósulása az MPC601 volt, amely az 1992-ben kibocsátott POWER1 és PowerPC specifikációk kereszteződéséből jött létre. Az IBM számára ez azt jelentette, hogy felhasználhatta a már meglévő POWER1 platformhoz, de egy kis nehézséget is okozott a második generációs, immár "tiszta" PowerPC architektúrára való áttéréskor. Az Apple tovább dolgozott az MPC601-en alapuló új Macintosh fejlesztésén, amit 1994. március 14-én piacra is dobott Power Macintosh néven.

Az IBM ekkor már rendelkezett egy sor PowerPC-n alapuló asztali géppel, azonban nem volt a gépekhez megfelelő operációs rendszere. Ekkor úgy döntöttek, hogy a teljes OS/2 operációs rendszert portolják a PowerPC platformra. Az Apple-nek szintén szüksége volt egy PowerPC-n működő operációs rendszerre. Ők más utat választott. Újraírták rendszerük legfontosabb részeit és csatoltak hozzá egy 680x0 emulátort, amely futtathatta az Classic Mac OS többi részét és a 68K-ra írott alkalmazásokat. Az IBM-nek két évébe került az OS/2 portolása, s mire kész lett, már késő volt. Az IBM sosem dobott piacra PowerPC alapú asztali gépet. A Byte Magazin 1994. áprilisi száma nagy terjedelemben tárgyalta az IBM és az Apple PowerPC-n alapuló asztali gépeit.

A második generációt a már „tiszta“, alsó kategóriás 603 és a felső kategóriás 604 alkotta. A 603 rendkívül alacsony árával és kis energiafogyasztásával tűnt ki. A Motorola azzal a határozott céllal tervezte ilyennek, hogy alapjául szolgáljon minden további PowerPC csipnek. Az Apple megpróbálkozott a 603 felhasználásával egy hordozható gép tervezésével, de nem járt sikerrel, mert a 8 KiB első szintű (L1) gyorsítótár (L1 cache) elégtelen volt. A 680x0 emulátor nem fért bele 8 kilobájtba, és ez drasztikusan lelassította a működést. A problémát a 603e chip oldotta meg, amely már 16 KiB első szintű gyorsítótárral rendelkezett, ez már elegendő volt az emulátor hatékony működéséhez.

Az első 64 bites implementáció a nem túl sikeres 620-as volt. Sajnos nem jött időben és lassabb is volt a vártnál. Az IBM is inkább saját POWER3-as architektúráját használta RS/6000-es szervereiben, és 2002 végéig – a PowerPC 970 megjelenéséig – nem is dobott piacra alsó kategóriás 64 bites szervert. A 970-es valójában a POWER4 processzor módosulata. Létrehozásához a POWER4 magot úgy alakították át, hogy visszafelé kompatibilis legyen a 32 bites PowerPC processzorokkal, továbbá hozzáadtak még egy vektoros egységet is (hasonlóan a Motorola 74xx AltiVec egységéhez).

Az RS64 processzorcsalád is a PowerPC architektúra egy módosulata. Változatai az RS/6000 és az AS/400 szerverekben üzemelnek.

Számszerűen a legtöbb PowerPC chip gépkocsikban található. Erre a szerepre a Motorola a 603-as modell több változatát is megalkotta. Többek között olyan hardvermódosításokat is végrehajtott, melyek eredményeképpen az I/O-t is az maga a chip végezhette.

PowerPC processzort használt az Apple, az IBM RS/6000, a Pegasos, az Amiga gyorsítókártyák, a Nintendo GameCube, a Nintendo Wii, a Nintendo Wii U és sok egyéb beágyazott rendszer, például a TiVo. A Sonnet Technologies és a Daystar PowerPC alapú bővítéseket gyártottak a Macintosh-hoz. Valamint Microsoft Xbox konzoljában is PowerPC csipet használt.

Általános célú PowerPC processzorok 

 601: az MPC601 50 és 66 MHz órajellel
 602: fogyasztási cikkekhez (multiplexelt adat/cím busszal) 
 603: kéziszámítógépekhez
 603e
 604
 604e
 620: az első 64 bites implementáció
 x704 BiCOMOS: az Exponential Technologies PowerPC implementációja
 750: (PowerPC G3) (1997) 233 MHz és 266 MHz órajellel, 740, 745, 755
 7400: (PowerPC G4) (1999) 350 MHz órajellel
 7410: AltiVec kiegészítéssel
 750FX: az IBM 2001-ben jelentette be, órajele 1 GHz
 7450 mikroarchitektúra-család
 970: (PowerPC G5) (2003) a POWER4-ből átalakított 64 bites implementáció, órajele 1,4 GHz, 1,6 GHz, 1,8 GHz, 2,0 GHz és 2,5 GHz
 Gekko 485 MHz: a Nintendo gameCube processzora
 POWER4+: az IBM Regatta sorozatú szervereinek (RS/6000 és pSeries) processzora, órajele 1–1,9 GHz
 POWER5: az IBM i5 és a p5 szervercsaládjainak processzora
 POWER6: kétmagos processzor, órajele 3,5 GHz, 4,2 GHz, 4,7 GHz, megjelenés: 2006 február
 POWER6+: órajel 5 GHz, megjelenés: 2008 október
 POWER7: 2–6–8 mag processzoronként és maximum 2 processzor modulonként, órajel 3–4,14 GHz megjelenés: 2010 február 8

Beágyazott PowerPC mikrokontrollerek 

A beágyazott rendszerek tervezőinek nagy kedvence a 32 bites PowerPC. A nagy sorozatban előállított egységek költségeinek minimalizálása érdekében a CPU magot egy komplett rendszert tartalmazó csipbe integrálták (system-on-chip, SOC), mely a magon kívül tartalmazta a gyorsítótárat (cache), a processzor saját adatterületét, az órajel-generátort, időzítőket, memóriát (SDRAM), perifériákat (hálózat, soros I/O) és buszvezérlőket (PCI, PCI-X, ROM/Flash sín, I2C). Új fejlemény a BookE PowerPC specifikáció, melyet az IBM és a Motorola is elfogadott és amely néhány beágyazott kiegészítéssel bővíti a PowerPC programozási modellt.

IBM 
 401
 403: a legfejlettebb változata, a 403GCX, MMU-val bővített
 405: MMU-val, ethernet-tel, soros vezérlővel, PCI vezérlővel, SRAM- és SDRAM-kezeléssel bővített változat
 NPe405: több hálózati eszközt kezelni képes változat
 440GP: (BookE) MMU-val, több ethernet-tel, soros vezérlővel, PCI-X vezérlővel, SRAM- és SDRAM-kezeléssel bővített változat
 440GX: nagyobb SRAM/L2 gyorsítótár

Motorola 
 MPC 860/8xx (PowerQUICC): hálózati és telekommunikációs vezérlővel bővített változat
 MPC 550/5xx család: (8xx mag) járművekbe és ipari területekre kifejlesztett változat
 MPC 8260/82xx (PowerQUICC II) 603-as mag, hálózati és telekommunikációs vezérlővel és nagy teljesítményű kapcsolt busszal ellátott változat
 MPC 8560/85xx (PowerQUICC III) BookE mag, hálózati és telekommunikációs vezérlővel és a 82xx változaténál is nagyobb teljesítményű kapcsolt busszal ellátott változat

Jegyzetek

Források 
 May, Cathy (editor) et.al. (1994). The PowerPC Architecture: A Specification for A New Family of RISC Processors. Morgan Kaufmann Publishers.  (2nd ed.). 
 Hoxey, Steve (editor) et.al. The PowerPC Compiler Writer's Guide. Warthman Associates. .
 Motorola. Programming Environments Manual for 32-bit Implementations of the PowerPC Architecture. P/N MPCFPE32B/AD .
 IBM (2000). Book E: Enhanced PowerPC™ Architecture (3rd ed.)

További információk 
 A developer's guide to the PowerPC architecture – IBM Developerworks (angol nyelvű)

Kapcsolódó szócikkek 
 PowerPC 600

Utasításkészlet-architektúrák
CPU-architektúrák
IBM mikroprocesszorok