IBM Cell – procesor budoucnosti

Celý svět si vzrušeně povídá o nových superprocesorech, které trhají výkonnostní rekordy a jejich tvůrci konečně ukázali tradičním výrobcům procesorů, jak se to dělá. Nebo je to trošku jinak?

Tvůrce procesoru má jednoduché zadání – jakýmkoli způsobem dostat z toho kousku křemíku co nejvyšší výpočetní výkon. Měli jsme procesor, postupně jsme přidali matematický koprocesor, SIMD pro celá čísla a SIMD pro plovoucí desetinnou čárku. Jsme vlastně na úrovni mnoha současných procesorů. Co je výkonnější než jeden takto vybavený procesor? Ano, jsou to procesory dva. Právě tak vznikly víceprocesorové počítače. Protože se jedná o úplně stejné procesory, vznikl pojem symetrický multiprocesing. Mezi nejznámější patří Intel Pentium Pro, AMD Opteron, Intel Xeon a další.

Mít ale pro čtyři procesory také čtyři patice a čtyřnásobný prostor, to není zrovna nejlepší. Proč tedy na jeden kousek křemíku, do jedné patice, do jednoho pouzdra nedat dva procesory (nebo víc)? Právě s takovou myšlenkou byly uvedeny procesory IBM Power4, IBM PowerPC 970MP, Intel Pentium D nebo AMD Opteron Dual-Core.

Protože ani dvoujádrové procesory nám nestačí, začali jsme se ptát. Proč musí mít každý procesor (každé jádro) tolik součástí, nestačí mít nějakou ořezanou verzi, ale vícekrát? Třeba jeden procesor (řídicí) by byl kompletní, ostatní ořezané. Právě to je typickým znakem mnoha průmyslových procesorů včetně IBM Cell.

Zkuste zaměstnat více jader

Vytvořit procesor s desítkami jader (či výkonných částí obecně) není pro návrháře hardwaru žádný problém. Ale dát všem práci, to už je problém stále větší. Záleží totiž na tom co vlastně chceme dělat.

Představme si sebe jako program a počítač jako jádro procesoru. Jeden uživatel samozřejmě pracuje na jednom počítači (který ho zdržuje). Přidáme mu tedy druhý počítač. Pomůže mu zvýšit jeho výkon? Jak kdy? Pokud píše ve Wordu, tak ani omylem. Pokud na jednom počítači třeba píše a zároveň potřebuje defragmentovat/odvirovat druhý počítač, tak ano. A co přidat další dva počítače? Právě jsme se krásně vžili do pocitů programátora, který se snaží mermomocí rozdělit program tak, aby se zaměstnaly všechny části procesoru. Ale pokaždé to prostě nejde. Je to tím obtížnější, čím více je jader v procesoru. A právě to nám prozatím brání, abychom měli třeba 16jádrový procesor v každém počítači.

Doslova brutální výkon shromážděný na několika čtverečních centimetrech křemíku lze tedy využít překvapivě málo. Do kanceláře se hodí asi tak jako formule F1 do pražských silnic. Kdo ale najde způsob, jak výkon využít, může si blahem pomlaskávat. Typicky se jedná o aplikace s extrémním nárokem na 3D výkon. Zde může plesat srdce každého hráče, protože přesně ví, jak výkon využít. Ale nemusíme se omezovat jen tím, miřme daleko výš. Takový výkon je nutný pro profesionální 3D simulace, například v leteckých trenažérech (hlavně vojenských). Stále větší množství superpočítačů má jako základ některý ze zde jmenovaných procesorů, což také něco znamená.

Představte si několik počítačů… a máte Cell

Projekt firem Sony, Toshiba a IBM dostal název Cell (buňka) podle vnitřní architektury tohoto procesoru. Skládá se z devíti jader PowerPC; nejedná se ale o symetrický multiprocessing. Jedno jádro je privilegované a ostatním nadřazené s názvem PPE (Power Processor Element). Ostatní jádra jsou silně ochuzena o nepotřebné části, označují se jako SPE (Synergistic Processing Element). PPE má parametry průměrného 64bitového procesoru. Velikost cache L1 je 32 + 32 KB, L2 má kapacitu 512 KB, podporuje cosi jako Hyper-Threading.

Pojďme se zahloubat do vnitřku výkonných dělníků, do SPE. Jde vlastně o vyfiltrovanou SIMD část pro plovoucí desetinnou čárku s obvyklou šířkou 128 bitů. Uvádí se, že při frekvenci 3,2 GHz vydá teoreticky výkon až 26,5 GFLOPS! A teď si to vynásobte sedmi (protože jich je sedm, osmý SPE je běžně vypnutý). V praxi se toto číslo samozřejmě zmenšuje. Podle IBM lze získat až 76 % teoretického maxima. To je možné hlavně díky 256 KB cache L2 pro každý SPE.

Protože pomocných procesorů je osm, znamená to 8× 256 kB = 2 MB L2 cache pro tuto část. Celý procesor má tedy 2,5 MB cache druhé úrovně. Že je L2 cache nositelkou výkonu si vzpomene každý, kdo si pořídil úplně první Celeron a s úlevou přešel na jeho „A“ podobu. Rozdíl byl ve 128 kB cache L2 (mít či nemít). IBM tedy neudělala stejnou chybu v návrhu jako spousta jiných. Čím více cache je k dispozici, tím svobodněji lze programovat a o to více aplikací potom vznikne. Cache v Cellu navíc nepracuje jako běžná vyrovnávací paměť procesoru x86, nejsou v ní tedy uloženy poslední položky čtené z paměti, ale je to spíše rychlá lokální paměť každé vektorové jednotky, označení cache tedy pro ni ani není přesné.

Jak si takový procesor představit? Vezměme si počítač Apple PowerMac jednojádrovým PowerPC G5 a přetaktujme jej na 3,2 GHz. K tomu připojme osm zhruba stejně upravených počítačů (ale s menší cache pamětí). Vytvořili jsme tak procesorovou obdobu IBM Cell.

Klíč k rychlosti

A proč je právě řešení IBM tak extrémně výkonné? Odpověď tkví ve využití cache paměti. Právě práce s RAM v roli hlavní paměti nebo cache je klíčem k podržení nebo naopak zašlapání výkonu. IBM využila jednu z nejrychlejších pamětí na světě (XDR DRAM) a připojila ji k procesoru Cell. Navíc rozdělila L2 cache tak, aby každé jádro mělo vlastní (přesněji lokální paměť). Procesory si tak svými požadavky na paměť „nelezou do zelí“ a mohou se soustředit na svou práci. Další klad je v tom, že jednotek není mnoho. Sestava 1 + 8 je sice velká, ale stále existují i složitější. A do nekonečna to jít nemůže; čím víc se dělí úloha, tím obtížněji to jde.

SIMD jednotka zvaná VMX (AltiVec) je upravena do podoby VMX-128. Číslo napovídá nejen datovou šířku, ale také počet registrů, který je obrovský (tedy pro SIMD). Opět z toho těží programátor, který nemusí s několika registry šetřit a vše honem ukládat do RAM paměti (která je dnes opravdu daleko i přes všechny ty cache).

To nejlepší na konec – procesor Cell dokáže ze sebe vydat při 3,2 GHz výpočetní výkon až 218 GFLOPS, po přetaktování na 4 GHz až 256 GFLOPS! Pro představu – Clearspeed CSX600 má 25 GFLOPS, nVidia GeForce 6800 na 550 MHz má 106 GFLOPS, GeForce FX 5900 má 40 GFLOPS, Riva 128 má 5 GFLOPS, Intel Itanium 2 na 1,6 GHz s 9 MB cache L3 má špičkový výkon 24,2 GFLOPS, Itanium 300 MHz má 13 GFLOPS, Pentium 4 na 3 GHz až 12 GFLOPS, první modely AMD Opteron měly 11,264 GFLOPS, Athlon XP 2200+ má 7,2 GFLOPS, Athlon 600 MHz má 2,4 GFLOPS.

Článek v nezkrácené podobě a s obrázky najdete na computer.zive.cz v sekci pro předplatitele.

Článek vznikl
ve spolupráci
s časopisem
Computer
a čerpá
z čísla 2/06.

Diskuze (46) Další článek: InfoBox Titulka

Témata článku: , , , , , , , , , , , , , , , , , , ,