Ačkoli čip Cell může mít řadu různých konfigurací, základní konfigurací je vícejádrový čip složený z jednoho „výkonného procesorového prvku“ („PPE“) (někdy nazývaného „zpracovatelský prvek“ nebo „PE“) a několika „synergických zpracovatelských prvků“ („SPE“). PPE a SPE jsou vzájemně propojeny vnitřní vysokorychlostní sběrnicí nazvanou „Element Interconnect Bus“ („EIB“).
Power Processor Element (PPE)Upravit
P PPE je dvouvláknové dvouřadé simultánně vícevláknové jádro procesoru na bázi PowerPC s 23stupňovou potrubní řadou, které funguje jako řadič pro osm SPE, jež zpracovávají většinu výpočetní zátěže. PPE má omezené možnosti provádění mimo pořadí; může provádět zátěž mimo pořadí a má zpožděné prováděcí potrubí. PPE bude pracovat s běžnými operačními systémy díky své podobnosti s ostatními 64bitovými procesory PowerPC, zatímco SPE jsou určeny pro vektorové provádění kódu s plovoucí desetinnou čárkou. PPE obsahuje 64 KiB cache 1. úrovně (32 KiB instrukcí a 32 KiB dat) a 512 KiB cache 2. úrovně. Velikost řádku cache je 128 bajtů. Kromě toho IBM zahrnula jednotku AltiVec (VMX), která je plně pipelined pro plovoucí desetinnou čárku s jednoduchou přesností (Altivec 1 nepodporuje vektory s plovoucí desetinnou čárkou s dvojitou přesností.), 32bitovou jednotku pevné desetinné čárky (FXU) s 64bitovým souborem registrů na vlákno, jednotku načítání a ukládání (LSU), 64bitovou jednotku plovoucí desetinné čárky (FPU), jednotku větvení (BRU) a jednotku provádění větvení (BXU).PPE se skládá ze tří hlavních jednotek: Instruction Unit (IU), Execution Unit (XU) a vector/scalar execution unit (VSU). IU obsahuje instrukční cache L1, hardware pro predikci větvení, vyrovnávací paměť instrukcí a přihlášení pro kontrolu závislostí. Jednotka XU obsahuje celočíselnou prováděcí jednotku (FXU) a jednotku pro ukládání zátěže (LSU). VSU obsahuje všechny prostředky pro vykonávání FPU a VMX. Každá PPE může provést dvě operace s dvojitou přesností za takt pomocí skalární instrukce fused-multiply-add, což při frekvenci 3,2 GHz znamená 6,4 GFLOPS; nebo osm operací s jednou přesností za takt pomocí vektorové instrukce fused-multiply-add, což znamená 25.6 GFLOPS při frekvenci 3,2 GHz.
Xenon v konzoli Xbox 360Edit
Procesor PPE byl navržen speciálně pro procesor Cell, ale během vývoje se společnost Microsoft obrátila na IBM, která chtěla vysoce výkonné procesorové jádro pro svou konzoli Xbox 360. IBM vyhověla a vyrobila tříjádrový procesor Xenon, založený na mírně upravené verzi PPE s přidanými rozšířeními VMX128.
Synergistic Processing Elements (SPE)Edit
Každý SPE je procesor se dvěma čísly v pořadí složený ze „Synergistic Processing Unit“, SPU, a „Memory Flow Controller“, MFC (DMA, MMU a rozhraní sběrnice). SPE nemají žádný hardware pro predikci větvení (proto je zde velká zátěž pro kompilátor). Každý SPE má 6 exekučních jednotek rozdělených mezi liché a sudé pipelines na každém SPE : SPU používá speciálně vyvinutou instrukční sadu (ISA) se 128bitovou organizací SIMD pro instrukce s jednoduchou a dvojitou přesností. U současné generace Cell obsahuje každý SPE vestavěnou paměť SRAM o velikosti 256 KiB pro instrukce a data, nazývanou „Local Storage“ (nezaměňovat s „Local Memory“ v dokumentech Sony, které odkazují na VRAM), která je viditelná pro PPE a může být adresována přímo softwarem. Každý SPE může podporovat až 4 GiB místní paměti. Místní paměť nefunguje jako běžná mezipaměť procesoru, protože není transparentní pro software ani neobsahuje hardwarové struktury, které by předpovídaly, která data se mají načíst. SPE obsahují 128bitový soubor registrů se 128 záznamy a měří 14,5 mm2 na 90nm procesu. SPE může pracovat s šestnácti 8bitovými celými čísly, osmi 16bitovými celými čísly, čtyřmi 32bitovými celými čísly nebo čtyřmi čísly s plovoucí desetinnou čárkou s jednou přesností v jednom taktu, stejně jako s paměťovou operací. Všimněte si, že jednotka SPU nemůže přímo přistupovat k systémové paměti; 64bitové adresy virtuální paměti vytvořené jednotkou SPU musí být předány z jednotky SPU do řadiče toku paměti (MFC) jednotky SPE, aby bylo možné nastavit operaci DMA v rámci systémového adresového prostoru.
V jednom typickém scénáři použití systém načte jednotky SPE malými programy (podobně jako vlákna) a zřetězí jednotky SPE dohromady, aby zpracovaly každý krok složité operace. Například set-top box by mohl načíst programy pro čtení DVD, dekódování videa a zvuku a zobrazení a data by se předávala z SPE do SPE, až by nakonec skončila v televizoru. Další možností je rozdělit sadu vstupních dat a mít několik SPE provádějících stejný druh operace paralelně. Při frekvenci 3,2 GHz poskytuje každý SPE teoretický výkon 25,6 GFLOPS s jednou přesností.
V porovnání se současníky z oblasti osobních počítačů se zdá, že relativně vysoký celkový výkon procesoru Cell s plovoucí desetinnou čárkou překonává schopnosti jednotky SIMD v procesorech, jako jsou Pentium 4 a Athlon 64. Porovnávání pouze schopností systému s plovoucí desetinnou čárkou je však jednorozměrný a aplikačně specifický ukazatel. Na rozdíl od procesoru Cell jsou takové stolní procesory vhodnější pro univerzální software, který se obvykle provozuje na osobních počítačích. Kromě provádění více instrukcí za takt jsou procesory Intel a AMD vybaveny prediktory větvení. Cell je navržen tak, aby to kompenzoval pomocí kompilátoru, v němž jsou vytvořeny instrukce prepare-to-branch. Pro operace s plovoucí desetinnou čárkou s dvojí přesností, které se někdy používají v osobních počítačích a často se používají ve vědeckých výpočtech, klesá výkon procesoru Cell o řád, ale stále dosahuje 20,8 GFLOPS (1,8 GFLOPS na SPE, 6,4 GFLOPS na PPE). Varianta PowerXCell 8i, která byla speciálně navržena pro výpočty s dvojitou přesností, dosahuje 102,4 GFLOPS při výpočtech s dvojitou přesností.
Testy společnosti IBM ukazují, že SPE mohou dosáhnout 98 % svého teoretického maximálního výkonu při optimalizovaném paralelním násobení matic.
Toshiba vyvinula koprocesor poháněný čtyřmi SPE, ale bez PPE, nazvaný SpursEngine určený k akceleraci 3D a filmových efektů ve spotřební elektronice.
Každý SPE má lokální paměť 256 KB. Celkem mají SPE 2 MB místní paměti.
Element Interconnect Bus (EIB)Edit
EIB je komunikační sběrnice interní pro procesor Cell, která propojuje různé prvky systému na čipu: procesor PPE, řadič paměti (MIC), osm koprocesorů SPE a dvě vstupně-výstupní rozhraní mimo čip, celkem 12 účastníků PS3 (počet SPU se může v průmyslových aplikacích lišit). EIB zahrnuje také arbitrážní jednotku, která funguje jako sada semaforů. V některých dokumentech IBM označuje účastníky EIB jako „jednotky“.
EIB je v současné době implementována jako kruhový prstenec sestávající ze čtyř jednosměrných kanálů o šířce 16 bajtů, které se protisměrně otáčejí v párech. Umožňuje-li to struktura provozu, může každý kanál přenášet až tři transakce současně. Vzhledem k tomu, že EIB pracuje s poloviční rychlostí systémových hodin, je efektivní rychlost kanálů 16 bajtů každé dva systémové hodiny. Při maximální souběžnosti se třemi aktivními transakcemi na každém ze čtyř kruhů je špičková okamžitá šířka pásma EIB 96 bajtů na jeden takt (12 souběžných transakcí × 16 bajtů na šířku / 2 systémové takty na přenos). Ačkoli je tento údaj často uváděn v literatuře IBM, je nereálné jej jednoduše škálovat podle taktovací frekvence procesoru. Arbitrážní jednotka klade další omezení.
Senior inženýr IBM David Krolak, vedoucí návrhář EIB, vysvětluje model souběžnosti:
Kruh může zahájit novou operaci každé tři cykly. Každý přenos trvá vždy osm taktů. To bylo jedno ze zjednodušení, které jsme provedli, je optimalizováno pro přenos velkého množství dat. Pokud děláte malé opy, nefunguje to úplně dobře. Když si představíte osmivozové vlaky, které jezdí po této trati, tak dokud do sebe vlaky nenarážejí, mohou na trati koexistovat.
Každý účastník na EIB má jeden 16bajtový port pro čtení a jeden 16bajtový port pro zápis. Limitem pro jednoho účastníka je čtení a zápis rychlostí 16 bajtů za hodiny EIB (pro zjednodušení se často považuje 8 bajtů za systémové hodiny). Každý procesor SPU obsahuje vyhrazenou frontu pro správu DMA, která je schopna plánovat dlouhé sekvence transakcí do různých koncových bodů, aniž by zasahovala do probíhajících výpočtů SPU; tyto fronty DMA lze spravovat také lokálně nebo vzdáleně, což poskytuje další flexibilitu v modelu řízení.
Data proudí kanálem EIB postupně po kruhu. Protože je dvanáct účastníků, celkový počet kroků kolem kanálu zpět do výchozího bodu je dvanáct. Šest kroků je nejdelší vzdálenost mezi libovolnou dvojicí účastníků. Kanál EIB nesmí přenášet data vyžadující více než šest kroků; taková data musí jít kratší cestou kolem kruhu v opačném směru. Počet kroků spojených s odesláním paketu má velmi malý vliv na zpoždění přenosu: taktovací rychlost, která řídí kroky, je v porovnání s ostatními hledisky velmi vysoká. Delší komunikační vzdálenosti jsou však na úkor celkového výkonu EIB, protože snižují dostupnou souběžnost.
Přes původní snahu IBM implementovat EIB jako výkonnější křížovou příčku představuje kruhová konfigurace, kterou přijali, aby ušetřili zdroje, zřídkakdy omezující faktor výkonu čipu Cell jako celku. V nejhorším případě musí programátor věnovat zvýšenou péči plánování komunikačních vzorů, při kterých je EIB schopna fungovat při vysokých úrovních souběhu.
David Krolak vysvětlil:
No, na začátku, na počátku vývojového procesu, několik lidí prosazovalo křížový přepínač, a vzhledem k tomu, jak je sběrnice navržena, byste vlastně mohli vytáhnout EIB a dát tam křížový přepínač, pokud byste byli ochotni věnovat více křemíkového prostoru na čipu na zapojení. Museli jsme najít rovnováhu mezi konektivitou a plochou a na umístění plnohodnotného příčného přepínače prostě nebylo dost místa. Proto jsme přišli s touto kruhovou strukturou, která je podle nás velmi zajímavá. Vejde se do omezené plochy a přesto má velmi působivou šířku pásma.
Posouzení šířky pásmaEdit
Při frekvenci 3,2 GHz protéká každý kanál rychlostí 25,6 GB/s.
Při frekvenci 3,2 GHz protéká každý kanál rychlostí 25,6 GB/s. Pokud se na EIB podíváme izolovaně od systémových prvků, které spojuje, vychází dosažení dvanácti souběžných transakcí při této rychlosti toku na abstraktní šířku pásma EIB 307,2 GB/s. Na základě tohoto pohledu se v mnoha publikacích IBM uvádí dostupná šířka pásma EIB jako „větší než 300 GB/s“. Toto číslo odráží špičkovou okamžitou šířku pásma EIB odstupňovanou podle frekvence procesoru.
S arbitrážním mechanismem pro pakety přijímané na sběrnici jsou však spojena další technická omezení. Skupina IBM Systems Performance vysvětlila:
Každá jednotka na EIB může současně odeslat a přijmout 16 bajtů dat v každém cyklu sběrnice. Maximální datová propustnost celé EIB je omezena maximální rychlostí slídění po adresách všech jednotek v systému, která je jedna za cyklus sběrnice. Protože každý snoopovaný požadavek na adresu může potenciálně přenést až 128 bajtů, teoretická maximální datová šířka pásma EIB při frekvenci 3,2 GHz je 128Bx1,6 GHz = 204,8 GB/s.
Tato citace zřejmě představuje plný rozsah veřejného zveřejnění tohoto mechanismu a jeho dopadu společností IBM. Arbitrážní jednotka EIB, mechanismus snoopingu a generování přerušení při poruchách překladu segmentů nebo stránek nejsou v sadě dokumentace, kterou IBM dosud zveřejnila, dobře popsány.
V praxi může být efektivní šířka pásma EIB omezena také zapojenými účastníky kruhu. Zatímco každé z devíti výpočetních jader dokáže udržet souběžné čtení a zápis rychlostí 25,6 GB/s, řadič paměťového rozhraní (MIC) je vázán na dvojici paměťových kanálů XDR umožňujících maximální tok 25,6 GB/s pro čtení a zápis dohromady a oba řadiče IO podle dokumentace podporují špičkovou kombinovanou vstupní rychlost 25,6 GB/s a špičkovou kombinovanou výstupní rychlost 35 GB/s.
K dalším nejasnostem přispívá, že některé starší publikace uvádějí šířku pásma EIB za předpokladu systémového taktu 4 GHz. Z tohoto referenčního rámce vyplývá okamžitá šířka pásma EIB 384 GB/s a šířka pásma omezená arbitráží 256 GB/s.
Při zvážení všech okolností je nejlepší mít na paměti teoretické číslo 204,8 GB/s, které se nejčastěji uvádí. Skupina IBM Systems Performance Group demonstrovala datové toky zaměřené na SPU dosahující 197 GB/s na procesoru Cell běžícím na frekvenci 3,2 GHz, takže toto číslo věrně odráží i praxi.
Paměťové a I/O řadičeUpravit
Cell obsahuje dvoukanálové makro Rambus XIO, které se připojuje k paměti Rambus XDR. Řadič paměťového rozhraní (MIC) je oddělen od makra XIO a je navržen společností IBM. Propojení XIO-XDR pracuje rychlostí 3,2 Gbit/s na pin. Dva 32bitové kanály mohou poskytnout teoretické maximum 25,6 GB/s.
Rozhraní I/O, které je rovněž návrhem společnosti Rambus, se nazývá FlexIO. Rozhraní FlexIO je uspořádáno do 12 linek, přičemž každá linka je jednosměrná 8bitová široká cesta bod-bod. Pět 8bitových cest typu point-to-point je příchozích cest do buňky, zatímco zbývajících sedm je odchozích. To poskytuje teoretickou špičkovou šířku pásma 62,4 GB/s (36,4 GB/s směrem ven, 26 GB/s směrem dovnitř) při frekvenci 2,6 GHz. Rozhraní FlexIO lze taktovat nezávisle, typicky na frekvenci 3,2 GHz. 4 příchozí + 4 odchozí linky podporují koherenci paměti.