PowerPC
PowerPC – architektura mikroprocesorów typu RISC oraz nazwa handlowa mikroprocesorów zgodnych z tą architekturą.
Architektura mikroprocesora PowerPC została stworzona przez konsorcjum firm Apple-IBM-Motorola znane pod skrótem AIM. Z początku mikroprocesory tej architektury przeznaczone były na rynek komputerów osobistych, z czasem stały się często używanymi w zastosowaniach serwerowych, klastrowych oraz w systemach wbudowanych. Mikroprocesor stał się podstawą opublikowanych przez AIM specyfikacji platform referencyjnych PReP oraz CHRP. Popularność przyniósł mu wybór na CPU komputerów osobistych Macintosh produkowanych przez firmę Apple w latach 1994-2006.
Mikroprocesor stosowany jest także w komputerach Pegasos, AmigaOne (uprzednio w kartach procesorowych dla komputera Amiga), również w kilku projektach komputerów zgodnych Atari Falcon. Na bazie mikroprocesora PowerPC oraz jego sieciowej wersji PowerQUICC oparte były niektóre serie urządzeń sieciowych firmy Cisco. Stosowany jest chętnie w systemach wbudowanych, gdzie używana jest specjalna, nieznacznie różniąca się od oryginalnej w zakresie specyfikacji mikroarchitektury, wersja mikroprocesora.
Historia
IBM
Historia PowerPC zaczęła się od prototypowego układu IBM 801, który implementował pomysły uważanego przez wielu za ojca mikroarchitektury RISC – Johna Cocke'a. Pochodne układu IBM 801 stosowane były w systemach wbudowanych produkowanych przez IBM. Niewystarczająca wydajność mikroprocesorów wytwarzanych przez IBM skłoniła firmę do uruchomienia projektu budowy najszybszego procesora na rynku. W rezultacie prac otrzymano architekturę POWER wprowadzoną po raz pierwszy do użytku na początku lat 90. XX wieku w systemach RISC System/6000.
Oryginalny mikroprocesor POWER, jedna z pierwszych implementacji superskalarnego procesora RISC, był konstrukcją wieloukładową. Inżynierowie firmy IBM szybko doszli do wniosku, że warto skupić się na budowie jednostki jednoukładowej przy jednoczesnej rezygnacji z kilku nadmiarowych instrukcji procesora.
AIM Alliance
Niedługo potem firma Apple została włączona do projektu rozwoju rodziny jednoukładowego mikroprocesora opartego o mikroarchitekturę POWER. Apple, jako jeden z największych klientów firmy Motorola zaprosił ją do wspólnych rozmów nad rozwojem mikroarchitektury POWER, co było podyktowane uprzednią, długą współpracą obydwu firm. Powstałe konsorcjum nazwano AIM od początkowych liter nazw Apple-IBM-Motorola.
W tym czasie Motorola posiadała własną architekturę RISC w postaci serii 88000, która jednak nie zdobyła uznania na rynku. Z drugiej strony mikroprocesory serii 88000 były już w produkcji; Data General dostarczał komputery z 88k a Apple posiadał prototypowe wersje maszyn pracujących na bazie tego mikroprocesora.
W rezultacie prac nad architekturą nowego procesora stworzono specyfikację PowerPC (Performance Computing), dzięki której:
- IBM uzyskał wiarygodnego i doświadczonego producenta układów,
- Apple zdobyło dla swoich komputerów jeden z najszybszych procesorów RISC na rynku i wsparcie marketingowe ze względu na światową znajomość marki IBM,
- Motorola uzyskała nowoczesną architekturę procesora RISC i pomoc technologiczną ze strony IBM
Pierwsze urządzenia oparte o PowerPC zostały przyjęte przez rynek z entuzjazmem. Oprócz komputerów Apple Macintosh, zarówno Motorola jak i IBM dostarczały systemy zbudowane na jego podstawie. Microsoft stworzył wersję Windows NT przeznaczoną dla architektury PowerPC, który był sprzedawany w zestawie z serwerami produkowanymi przez Motorolę, zaś Sun Microsystems wprowadził do sprzedaży przeznaczoną pod ten procesor wersję swojego sztandarowego systemu Solaris OS. IBM przeportował swój system AIX i planował wydać działającą na komputerach z zainstalowanym procesorem PowerPC wersję OS/2. W połowie lat 90. wyniki benchmarków odnoszących się do procesorów architektury PowerPC dawały lepsze rezultaty niż te przeprowadzane dla najszybszych procesorów architektury IA-32.
Zapotrzebowanie na mikroprocesory nowej architektury na maszynach desktopowych nigdy nie osiągnęło spodziewanego poziomu. Po krótkiej obecności na rynku zniknęły napisane pod PowerPC wersje systemów: Windows NT, Solaris OS, OS/2. Fakt ten był spowodowany brakiem dostępności aplikacji możliwych do uruchomienia przy użyciu nowej architektury procesora. Jedynie komputery Macintosh produkowane przez Apple pozostawały wierne mikroprocesorom PowerPC.
W 2004 roku Motorola zaprzestała produkcji układów mikroprocesorowych przenosząc dział rozwoju i produkcji do wydzielonej spółki pod nazwą Freescale Semiconductor. W tym samym czasie IBM zaprzestał całkowicie produkcji komputerów osobistych (opartych o procesory architektury IA-32) na rzecz chińskiego producenta Lenovo. IBM skupił się na przeprojektowaniu układu PowerPC zgodnie z oczekiwaniami producentów konsoli do gier takich jak: Sony PlayStation 3, Nintendo Wii oraz Xbox 360 produkcji Microsoftu. 6 czerwca roku 2005 Apple zapowiedziało, że w następnych wersjach komputerów Macintosh będą stosowane jedynie procesory marki Intel. Od 12 stycznia roku 2006 dostępne są komputery Apple z procesorami marki Intel.
Charakterystyka
PowerPC został zaprojektowany zgodnie z filozofią RISC. Mikroarchitektura procesora pozwoliła na zastosowanie superskalarności. Obecnie w użyciu znajdują się zarówno zarówno wersje 64-bitowe jak i 32-bitowe procesora. W stosunku do architektury POWER w PowerPC wprowadzono:
- Obsługa trybów Big Endian oraz Little Endian, które mogą być przełączane w trakcie pracy procesora. Obsługa ta została zarzucona w PowerPC G5,
- Uzupełnienie operacji na danych zmiennoprzecinkowych podwójnej precyzji o operacje na danych zmiennoprzecinkowych pojedynczej precyzji,
- Kompletna specyfikacja 64-bitowej architektury,
- Usunięcie niektórych, rzadko używanych, instrukcji procesora POWER.
Big endian/Little endian
Niektóre z układów PowerPC produkcji IBM przeznaczonych na rynek systemów wbudowanych posiadają bit kolejności bajtowej dla każdej obsługiwanej strony pamięci. Poniższy opis nie odnosi się do tych układów.
Większość z dostępnych układów PowerPC może przełączać tryb kolejności bajtów pamięci (ang. endianess) za pomocą bitu w rejestrze MSR. Osobny bit w tym rejestrze odpowiada za kolejność bajtów w przypadku pracy procesora w trybie nadzorcy. Procesor po inicjalizacji startuje w trybie big endian a tablica stron pamięci dla TLB zawsze przechowuje dane w trybie big endian.
Systemy komputerowe firm Matrox oraz Mercury Computer Systems wykorzystują PowerPC działający w trybie little endian. Wynika to z faktu, że układ PowerPC pracuje w tych systemach jako koprocesor na szynie PCI i współdzieli dane z głównym procesorem zgodnym z mikroarchitekturą IA-32. Zarówno systemy Sun Solaris jak i Windows NT w wersji dla układów PowerPC używały tego procesora w trybie little endian.
Rejestry wewnętrzne
Poniższa tabela prezentuje rejestry jednostki stałopozycyjnej mikroprocesora PowerPC (wspólne dla wszystkich wersji)
Nazwa rejestru | Opis rejestru | Uwagi |
r0 | Rejestr ogólnego przeznaczenia | Specjalny tryb użycia dla niektórych dyrektyw asemblera |
r1 | Rejestr ogólnego przeznaczenia. | W niektórych ABI wykorzystywany jako wskaźnik stosu |
r2-r31 | Rejestry ogólnego przeznaczenia | ABI definiuje sposób ich użycia |
CR (Condition Register) | Obsługa dyrektyw warunkowych | Dostępny jako 8 niezależnych, 4-bitowych pól |
CTR (CounTer Register) | Licznik | Używany w pętlach |
LR (Link Register) | Obsługa powrotu z procedury | – |
XER (eXcEption Register) | Wykrywanie sytuacji wyjątkowych związanych z operacjami algebraicznymi (przepełnienie, przeniesienie) | – |
MSR (Machine State Register) | Kontrola stanu mikroprocesora. Obsługa stanu translacji pamięci, przerwań itp. | Dostępny z poziomu nadzorcy |
SRR0-SRR1 (Save/Restore Register) | Obsługa wyjątków | Dostępny z poziomu nadzorcy |
SPRG0-SPRG3 (Special Purpose ReGister) | Przeznaczone do użycia przez system operacyjny | Dostępny z poziomu nadzorcy |
PVR (Processor Version Register) | Udostępnia informację o wersji mikroprocesora | Dostępny z poziomu nadzorcy |
DAR (Data Address Register) | Obsługa wyjątków | Tylko dla wyjątków DSI (Data Store Interrupt) oraz ALI (Alignment Interrupt). Dostępny z poziomu nadzorcy |
DSISR (Data Storage Interrupt Status Register) | Obsługa wyjątków | Tylko dla wyjątków DSI (Data Store Interrupt) oraz ALI (Alignment Interrupt). Dostępny z poziomu nadzorcy |
TBR (Time Base Register) | Licznik cykli procesora (zwiększający swoją zawartość) | Dostępny z poziomu nadzorcy |
DEC (Decrementer Register) | Kontrolowany przez nadzorcę licznik cykli procesora (zmniejszający swoją zawartość) | Wywołuje wyjątek DEC przy osiągnięciu wartości 0. Dostępny z poziomu nadzorcy. |
IBAT0-IBAT3 (Instruction Block Address Translation) | Obsługa translacji pamięci dla instrukcji | Dostępny z poziomu nadzorcy |
DBAT0-DBAT3 (Data Block Address Translation) | Obsługa translacji pamięci dla danych | Dostępny z poziomu nadzorcy |
Licencjobiorcy
Firmy, które produkowały lub wykorzystywały na licencji układy zgodne z architekturą PowerPC.
- Motorola (obecnie Freescale Semiconductor), jako członek konsorcjum AIM
- Nintendo dla procesora w konsoli do gier GameCube,
- Sony i Toshiba, dla procesora Cell
- Huawei
- Cisco Systems
- Samsung
- Applied Micro Circuits Corporation (AMCC)
- Microsoft dla Xbox 360
- Nintendo dla Wii
- PA-Semi
- HCL
- Xilinx – układy FPGA Virtex-II Pro posiadają zintegrowany procesor zgodny z wersją embedded IBM PowerPC
- Altera
- Apple Computer
i inni.
Procesory ogólnego przeznaczenia
- PowerPC G1
- 601, 601v
- PowerPC G2
- x704 implementacja w technologii BiCMOS zaprojektowana przez Exponential Technologies
- PowerPC G3
- PowerPC G4
- 7400/7410 (PowerPC G4) (1999) do 550 MHz, wyposażona w układ AltiVec, rozszerzenie typu SIMD oryginalnej specyfikacji PowerPC
- 7450 rodzina procesorów z zegarem do 1,5 GHz i 256 KiB Cache L2 oraz z ulepszonym układem AltiVec (PowerPC G4)
- 7447/7457 rodzina procesorów z zegarem do 1,8 GHz oraz 512 KiB Cache L2 (PowerPC G4)
- 7448 rodzina procesorów produkowana w technologii 90nm z 1 MiB Cache L2 (PowerPC G4)
- 8641S i 8641D jedno- i dwurdzeniowe procesory zbudowane na bazie jądra e600, użytego wcześniej w 7448.
- PowerPC G5
- 970 (2003) 64-bitowa implementacja oparta na mikroprocesorze IBM POWER4 rozszerzona o jednostkę VMX (kompatybilna z AltiVec jednostka wykonawcza typu SIMD) z 512 KiB Cache L2 z zegarami pracującymi z częstotliwościami 1,4 GHz, 1,6 GHz, 1,8 GHz, 1,9 GHz, 2,0 GHz, 2,1 GHz, 2,3 GHz, 2,5 GHz oraz 2,7 GHz wykonana w technologii 130 nm.
- 970FX (2001) 512 KiB Cache L2, produkowany w technologii 90 nm.
- 970GX (2003) 1 MiB Cache L2
- 970MP (2005) z zegarem 1,6-2,5 GHz z 1 MiB Cache L2, pierwszy dwurdzeniowy procesor PowerPC ogólnego przeznaczenia
- Gekko 485 MHz (używany w Nintendo GameCube)
- PA6T-1682M (PWRficient) dwurdzeniowa jednostka pracująca z zegarem 2 GHz
Nowa generacja procesorów PowerPC, o planowanej nazwie POWER6, jest projektowana do pracy z zegarami z zakresu 4-5 GHz oraz udostępni funkcjonalność Simultaneous MultiThreading.
Procesory dla systemów wbudowanych
- 440SP: 533-667 MHz, 10/100/1G Ethernet, (2) 64bit PCI-X, 32bit PCI-X, XOR engine, 32k L1 Cache.
- 440SPe: 533-667 MHz, 10/100/1G Ethernet, (3) 64bit PCI-Express, 64bit PCI-X, XOR engine, 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, 32 KiB L1 Cache.
- RAD750: wersja do celów militarnych i misji kosmicznych, oparta na mikroprocesorze PowerPC 750 ze zwiększoną odpornością na promieniowanie elektromagnetyczne
- V-Dragon oparta na rdzeniu mikroprocesora PowerPC 405.
- 401
- 403: układ MMU dołączony w wersji 403GCX.
- 405: MMU, Ethernet, UART, PCI, SRAM, SDRAM; wersja NPe405 została wzbogacona o nowe urządzenia sieciowe.
- 440xx: seria mikroprocesorów opartych o rdzeń Book E.
- MPC 860/8xx (PowerQUICC): kontrolery sieciowe i telekomunikacyjne
- MPC 550/5xx (rdzeń 8xx): kontrolery przemysłowe
- MPC 5200/5200B (rdzeń 603e): kontrolery przemysłowe
- MPC 8260/82xx (PowerQUICC II) rdzeń 603, kontrolery sieciowe i telekomunikacyjne z wbudowaną w układ wysokowydajną, przełączaną szyną danych.
- MPC 8560/85xx (PowerQUICC III) rdzeń procesora PowerPC Book E, kontrolery sieciowe i telekomunikacyjne z wbudowaną w układ wysokowydajną, przełączaną szyną danych.
- PA6T-1682M (PWRficient): dwurdzeniowa jednostka pracująca z częstotliwością zegara 2 GHz (nigdy nie wprowadzona do sprzedaży)
- Virtex-II Pro i Virtex-4, układy FPGA zawierające do czterech rdzeni PowerPC 405.
- Virtex-5, układy FPGA zawierające co najwyżej dwa rdzenie PowerPC 440.