27. 11. 2004 Procesory PowerPCAutor: Luky (Lukáš Stehlík)
2. Srovnání PowerPC a x86 architektury2.1. Historické rozdíly
První z rodiny x86 procesorů se objevil roku 1978 - mikroprocesor Intel 8086 vznikl jako 16ti bitové
rozšíření CISC (procesor s kompletní instrukční sadou) 8bitového procesoru Intel 8080. Dnešní x86 počítače
jsou s tímto procesorem stále kompatibilní. Jak jsem se již zmiňoval, procesory PowerPC se začaly vyvíjet
až o čtvrtstoletí později a mají od začátku RISC 32-bitovou architekturu plánovanou do budoucnosti pro 64-bit.
2.2. Architektura CISC versus RISCV 70. letech, když se CISC x86 mikroprocesory začaly poprvé vyrábět, bylo důležité snížit velikost software kvůli malým a velmi drahým kapacitám a to se odráželo v instrukční sadě x86 procesorů, která je hodně složitá s mnoha instrukcemi a adresovými módy. Navíc mají x86 32 bitové procesory nízký počet GPR registrů (general purpose register - umožnuje ukládat data i adresy) a některé z nich dokonce jen pro speciální účel. Nejmodernější 64 bitové procesory AMD jsou konečně rozšířené oproti tomuto starému x86 standardu a mají k dispozici v 64 bitovém režimu celkem 16 GPR registrů (ve 32-bitovém stále 8). Pro porovnání, RISC PowerPC má k dispozici 32 GPR registrů pro libovolný účel a vektorová rozšíření PowerPC disponují také větším počtem registrů (podrobněji v kap 2.5). RISC architektura používá redukovanou instrukční sadu s pevnou délkou instrukcí, díky které mají procesory značně jednodušší návrh a jsou rychlejší. K dalším zlepšením patří např. pipelining (viz. 2.3), superscalar (technologie umožňující procesoru vykonat několik instrukcí naráz díky většímu počtu výkonných jednotek v procesoru), vykonávání instrukcí mimo pořadí a předpověď větvení. RISC procesory se díky těmto technologiím staly značně výkonnějšími než jakýkoliv CISC procesor.
V polovině 90.let vyrobila společnost NextGen x86 procesor, který rozkládá složité CISC x86 instrukce na jednodušší
instrukce pro vlastní "RISC jádro". Netrvalo to dlouho a dnes používá tuto hybridní architekturu téměř každý x86 procesor.
Architektura x86 je však opět složitější o překladače instrukcí z "CISC na RISC" a k tomu nutné větší vyrovnávací
paměti (asi o 40%).
Navíc překlad x86 instrukcí na jednodušší RISC instrukce není jednoduchá operace, obzvlášť pokud to musí procesor
dělat velmi rychle.
Procesory x86 také používají velký počet adresových módů, což situaci ještě více komplikuje. Rozkládání instrukcí
u x86 procesorů
z nich tedy neodstraňuje složitou x86 instrukční sadu a s ní spojené problémy, na druhou stranu jim to umožňuje zvýšení frekvence.
2.3. PipeliningProcesory rozkládají instrukce do několika fází – ve škole nebo v kurzech o hardware se většinou učí u moderních procesorů 4 fáze:
Jednotlivé fáze jsou součástí takzvané pipeline (někdy překládané jako "instrukční potrubí"). Fáze pipeline mohou mít různou délku a na jejich počtu pak závisí, kolik práce se v jednotlivé části pipeline vykoná. Kratší fáze vykoná část instrukce rychleji, ale je potom potřeba více fází a delší pipeline. Pokud se v jedné fázi vykoná víc, pro provedení instrukce je potřeba méně jednotlivých fází a pipeline je kratší. Frekvence procesoru je omezená dobou, kterou zabírá jednotlivá fáze pipeline. Procesor s jednoduchými fázemi, ale s větším počtem fází může operovat na vyšší frekvenci než procesor s fází účinnější - práce vykonají stejně, ale u procesorů s velkým počtem fází častěji vznikají kvůli různým závislostem prázdná místa (tzv. bubliny), které snižují výkon.
AMD Athlon a Intel Pentium 4 používají velmi dlouhé pipeline oproti PowerPC a to je jeden z hlavních důvodů tzv. "megahertz mýtu".
Vyšší frekvence procesoru nezaručuje jeho větší výkonnost a už vůbec nelze porovnávat procesory různých architektur (x86, PowerPC)
podle frekvence. Dovolím si malé srovnání: MHz můžeme brát jako RPM (otáčky za minutu) u motoru automobilu. U stejného motoru
znamenají vyšší otáčky i větší sílu motoru. Stejný motor, který ale zvládne více otáček za minutu, má větší sílu.
Ale u dvou odlišných motorů nelze tuto logiku použít. Např. motor motorky při 10000 RPM nemá obvykle větší sílu než motor
nákladního automobilu při 5000 RPM.
2.4. Spotřeba procesorů
Dlouhá pipeline s vysokou frekvencí u x86 procesorů je velmi neefektivní z hlediska spotřeby. Intel u svého nejnovějšího modelu
procesoru Pentium 4 dokonce délku pipeline zdvojnásobil oproti předchozímu modelu a výsledkem tohoto "pipeline triku" je sice
procesor Pentium 4 s frekvencí nad 3GHz, ale se spotřebou 80 až 100W. PowerPC na 2x nižší frekvenci může být ve výpočtech
v plovoucí řadové čárce dokonce výkonnější, navíc se spotřebou pod 10W (u zmiňovaného PowerPC G4 7447A) bez nutnosti aktivního chlazení.
Lze namítnout, že i x86 platforma má své elektricky úsporné reprezentanty, např. často zmiňovaný procesor VIA C3.
VIA však používá odlišnou a velmi jednoduchou architekturu, která nepodporuje vykonávání instrukcí mimo pořadí
a dokonce ani více výkonných jednotek (tzv. superscalar) – nejbližší ekvivalent, co se týče podpory těchto technologií,
je 486 z roku 1989. Zjednodušený návrh x86 je kompromis mezi výkonem a spotřebou, přesto i VIA C3 na 1GHz vyžaduje aktivní
chlazení a ve výpočtech v porovnání s procesory Athlon, Pentium a PowerPC je absolutně nejhorší.
2.5. Vektorové jednotky (SIMD)Další součást procesoru, která prohlubuje rozdíly mezi x86 a PowerPC architekturou, je již zmiňovaná vektorová jednotka Altivec. Altivec je soubor 162 SIMD instrukcí (viz. poznámka), má k dispozici 32 vlastních 128-bitových registrů, což je podstatně více než různá řešení na platformě x86, umí pracovat s vektory dvojnásobné délky a na více výkonných jednotkách zároveň spolu s operacemi v pohyblivé čárce. Oproti tomu obdobné sady instrukcí pro vektorové výpočty na PC x86 platformě mají k dispozici jen 8 společně sdílených 64-bitových registrů s jednotkou pro operace v pohyblivé čárce v případě MMX, SSE má 8 vlastních 128-bit registrů. Tyto instrukce jsou v procesoru vlastně jen pro zpětnou kompatibilitu, doplněné o další vylepšené sady SIMD instrukcí (MMX2, SSE2, SSE3, u AMD procesorů navíc o 3Dnow!). Pro všechna tato rozšíření se však jen s obtížemi plně optimalizuje program. Pozn. SIMD = procesor může jednou instrukcí zpracovat více dat naráz v jednom cyklu, z angl. Simple Instruction Multiple Data. Vysvětlím to raději ještě na příkladě: pokud má procesor přičíst např. ke 32 číslům jedničku, může to provést postupně a s každým číslem provést příslušnou sekvenci operací pro načtení čísla do registru, přičtení jedničky a uložení výsledku zpět do paměti, což si vyžádá mnoho cyklů procesoru a nebo použije specializovanou vektorovou jednotku, zaplní naráz všechny její registry a v jednom cyklu procesoru také ke všem příslušným číslům v registrech přičte jedničku. Následující 2 grafy znázorňují výpočetní výkon PowerPC procesorů s jednotkou Altivec, oproti PC x86 procesorům také s použitím vektorových rozšíření MMX/SSE atd. v programu pro dešifrování zakódované zprávy 72-bitovým klíčem, kde se hodně uplatní paralelní zpracování a tím vynikne kvalita zpracování vektorového rozšíření u jednotlivých procesorů. Výsledky jsou brány z průměru na několika počítačích po celém světě a srovnávám pouze 32-bitové procesory (tedy max. PowerPC G4) a to nejdříve na stejné frekvenci 1GHz pro názorné popření „megahertz mýtu“ a po té je na hodnoty z tabulky převzaté z Distributed Net aplikována lineární regrese (tzn. daty je proložená přímka) a výsledek je zobrazen do grafu. RC5-72 32-bit 1GHz cPU
Jen pro zajímavost, u šifry RC5-56 (56-bit) prolomené v roce 1997 zněla skrytá zpráva: 'The unknown message is: It's time to move to a longer key length', je čas na zvětšení délky šifrovacího klíče. Rozluštění této zprávy hrubou silou pomocí celosvětové sítě počítačů trvalo 250 dní. V roce 2002 byla za 1757 dní rozluštěna i RC5-64 (64-bit) zpráva: 'The unknown message is: Some things are better left unread', některé věci je lepší nechat nepřečtené. Na rozluštění RC5-72 (72-bit) šifry pracují tisíce počítačů již přes 3 roky a zatím jen s velmi malým pokrokem. Složitost šifry totiž vzrůstá exponenciálně.
2.6. Výkon PowerPC ve SPEC2000Předchozím testem jsem chtěl pouze upozornit na to, jak extrémně se může architektura procesoru projevit ve specifickém výpočtu a pro překonání PowerPC G4 na "pouhých" 1.5GHz zdaleka nestačí ani 4GHz Intel/AMD procesor. Samozřejmě netvrdím, že PowerPC je za všech okolností několikanásobně výkonnější než PC x86 procesor na mnohem vyšší frekvenci, ale ve spoustě aplikacích lze vysokého potenciálu PowerPC Altivecu využít. Pokud na chvíli zapomeneme na používání vektorových jednotek a porovnáme procesory např. pomocí programů SPECint2000 pro rychlost celočíselných výpočtů procesoru a SPECfp2000 pro rychlost výpočtů v plovoucí řádové čárce je situace již vyrovnanější.
PowerPC 970 1.8GHz je tedy i bez použití vektorového rozšíření o více než 50% výkonnější v celočíselných výpočtech
i ve výpočtech v pohyblivé řádové čárce než Intel Pentium 4 1.8GHz. Dvakrát vyšší taktovací frekvence u procesorů
Intel/AMD však umožňuje výkonnostní dorovnání, případně i překonání procesoru IBM PowerPC 970 v těchto číselných testech.
Pokračování: 3. PowerPC procesory v praxi...Příště se podíváme podrobněji na využití PowerPC procesorů v praxi.
Článek nesmí být použit na jiných WWW stránkách, ani bez souhlasu autora
distribuován v jiné podobě!
|