Hlavní navigace

Architektúra procesora Cell

30. 11. 2009
Doba čtení: 6 minut

Sdílet

Článok sa venuje popisu architektúry RISCových procesorov pochádzajúcej od spoločnosti Sony, Toshiba a IBM. Procesory tejto architektúry sa označujú ako Cell Broadband Engine. Nájdeme ich v hernej konzole Playstation 3, alebo v superpočítači Roadrunner, ktorý obsahuje najnovšiu verziu PowerXCell 8i.

Práve ich prítomnosť v PS3 otvára spolu s možnosťou inštalovať na PS3 Linux (ktorá už ale bohužiaľ na najnovšom modeli – PS3 Slim, nie je) cestu k zaujímavej a relatívne lacnej výpočetnej sile.

Architektúra bola navrhovaná s cieľom vytvoriť preklenovací mostík medzi “klasickými” procesormi a úzko špecializovanými grafickými procesormi (veľmi podobná téma je CUDA, ktorá tu už popisovaná bola. Rozdiel je v tom, že v našom prípade nie je nutné kupovať a inštalovať žiadne nové zariadenie).

Procesory Cell obsahujú niekoľko výpočetných elementov. Rozdeľujeme ich podľa typu na 2 skupiny:

  1. PPE – Power PC Processor Element

  2. SPE – Synergistic Processor Element

Prvý typ je architektúry PowerPC64, je vhodný na prevádzku OS a aplikácií (32 aj 64 bitových), je to teda bežný procesor z rodiny PowerPC, s ktorým sa stretneme aj mimo Cellov. Druhý typ je optimalizovaný pre výpočetne zložité SIMD aplikácie, ale nehodia sa napríklad na prevádzku OS, keďže prepínanie kontextu nie je ich obľúbená činnosť. V Celloch montovaných do Playstation nájdeme zostavu 1 PPE a 6 (v nainštalovanom PSLinuxe) použiteľných SPE (fyzicky ich je 8, ale 1 je zablokovaný z výroby a druhý je rezervovaný pre účely GameOS).

Uvedené typy sa líšia aj prístupom k pamäti. PPE pracuje s adresami z tzv. efektívneho adresového priestoru, ktorý reprezentuje hlavnú pamäť. SPE pracujú s adresami z lokálnej pamäte (každý SPE disponuje 256K lokálnej pamäte) a s hlavnou pamäťou komunikujú pomocou DMA. Každý SPE má vlastný DMA radič, ktorý je schopný kontrolovať 16 paralelných DMA prenosov.

EIB

Elementy Cell procesoru (PPE, 8×SPE, radič pamäte a 2 I/O rozhrania – dohromady 12) sú prepojené zbernicou EIB (Element Interconnect Bus).

EIB má kruhovú topológiu so 4 “kruhmi” a jedným arbitrom, ktorý prenos po zbernici riadi. Každý kruh má šírku 16 bytov, kruhy sú jednosmerné, po dvojiciach opačne orientované. Takt (doba jedného tiku hodín) EIB je dvojnásobný oproti taktu PPE a SPE, teda je schopná preniesť 16 bytov na 2 takty. Na každom kruhu môžu naraz prebiehať 3 transakcie (1 transakcia trvá 8 taktov hodín t.j. 4 takty EIB, v EIB je zapojených 12 účastníkov. Teda na zbernicu môžu vysielať traja naraz, vo vhodných “vzdialenostiach” – predstavte si 3 tramvaje so 4 vagónmi jazdiacimi dokola po trati dĺžky 12), čo nám dáva maximálny prenos 96 bytov na jeden takt hodín (4 kruhy* 3 transakcie*16 bytov / 2 takty EIB na takt procesora). Z pohľadu aplikácie sa po EIB prenášajú 128bytové kusy dat, 128 bytov zodpovedá šírke jedného riadku v cache PPE.

Ilustrácia architekúry je na nasledujúcom obrázku.

Cell procesor

PPE

Ako už bolo spomenuté, PowerPC Processor Element je RISC-ový procesor architektúry PowerPC, rozšírený o vektorové inštrukcie. Má pod kontrolou celý systém, beží na ňom OS, aplikácie a prideľuje úlohy SPU elementom.

Skladá sa z dvoch časí – PowerPC Processor Unit (PPU) a PowerPC Processor Storage Subsystem (PPSS). Obsahuje 32kB L1 oddelenú inštrukčnú a dátovú cache a 512kB spoločnú L2 cache.

Ich umiestnenie je vidieť na obrázku.

Cell procesor

PPU

PPU sa skladá z niekoľkých funkčných blokov:

1 – Instruction Unit, stará sa o vyzdvihovanie, dekódovanie, rozdeľovanie a ukončovanie inštrukcií. Obsahuje inštrukčnú L1 cache šírky 128 bytov.

2 – Load and Store Unit, stará sa o prístup k dátam, vykonáva load a store inštrukcie (zápis a čítanie z pamäti/cache) a obsahuje spomínanú L1 dátovú cache (write-through).

3 – Fixed Point Unit, ktorá má na starosti aritmetiku celých čísel.

4 – Vector/Scalar Unit, ktorá sa stará o aritmetiku čísel s plávajúcou rádovou čiarkou a aritmetiku so 128-bitovými vektory.

5 – Memory Management Unit, ktorej funkcia je zrejmá z jej názvu. Má na starosti preklady adries pomocou SLB (s kapacitou 64 záznamov) a TLB (s kapacitou 1024 záznamov).

PPSS

Tento subsystém sa stará o prístup do pamäte, komunikáciu s EIB a zaisťuje koherenciu cache (pomocou snoopingu, t.j. sledovaním diania na zbernici a označovaním riadkov v cache na platné, zapísané (s týmito dvoma sa stretneme aj bez použitia snoopingu) a zdieľané). Obsahuje 512 kB L2 cache (write-back) so šírkou 128 bytov.

Detailné usporiadanie PPU a PPSS je na nasledujúcom obrázku.

Cell procesor

Na záver pre úplnosť ešte niečo o registrovej sade PPE. Aplikácia má k dispozícii viacero registrov, väčšinu z nich 64 bitových. Výnimku tvoria registre pre vektory, ktoré majú 128 bitov a niektoré špeciálne registry, ktoré majú iba 32 bitov (napríklad register, do ktorého sa zaznamenávajú informácie o výsledkoch aritmetiky čísel s plávajúcou rádovou čiarkou).

SPE

SPE je 128 bitový RISC procesor určený na intenzívne matematické výpočty. Pozostáva z dvoch častí – synergistic prcessor unit (SPU) a Memory Flow Controller (MFC, viď ďalej). SPE neobsahuje žiadne cache, na SPU je pamäť veľkosti 256kB nazývaná Local Store Area (ďalej len LS). SPU spracováva inštrukcie aj dáta z LS. S hlavnou pamäťou SPU spolupracuje použitím DMA prenosov realizovaných MFC. Schematické znázornenie SPE je na obrázku.

Cell procesor

Prístup do LS

Do LS pristupuje SPU pomocou Load/Store inštrukcií. Takisto má do LS prístup MFC, ktorý zapisuje a číta dáta potrebné pre DMA. Je možný ešte jeden spôsob – aliasing. Software na PPE môže namapovať LS do efektívneho adresového priestoru. Prístupy PPE na tieto adresy potom v skutočnosti znamenajú zápis do LS bez použitia DMA.

SPU

Čo sa týka vnútornej štruktúry SPU, podobá sa zhruba na PPU, jeho registry sú ale všetky dlhé 128 bitov. Štruktúra SPU je na nasledujúcom obrázku. V hornej časti vidíme spomínanú LS pamäť a funkčné bloky sú označené súhrnným názvom SXU – Synergistic Execution Unit.

Cell procesor

MFC

Memory Flow Controller umožňuje SPU prístup do hlavnej pamäti pomocou DMA (inú priamu možnosť SPU nemá). Toto je veľmi potrebné pri náročných výpočtoch, pretože procesor strávi len pár taktov nastavením DMA prenosu a môže sa ďalej venovať svojej pôvodnej práci – MFC dáta prenesie bez jeho účasti. Okrem funkcie DMA radiča má MFC na starosti ešte synchronizáciu dát medzi LS a hlavnou pamäťou a komunikáciu (schránky a signály).

MFC poskytuje tieto služby:

1– Kanály

Software bežiaci na SPE komunikuje so svojim okolím cez kanály. Kanál je jednosmerné rozhranie na prenos správ, schopné prenášať 32 bitové hodnoty.

2 – Schránky a signály

Nad kanálmi sú postavené rozhrania, ktoré reprezentujú schránky (mailbox) a umožňujú posielanie signálov. Každý SPE má k dispozícii 2 schránky na prenos správ smerom k PPE a jednu na prenos správ v opačnom smere. Schránka slúži na posielanie správ medzi PPE a SPE. Správou sa rozumie 32 bitová celočíselná hodnota. Tento mechanizmus je vhodný na prenos malých kusov dát, najčastejšie na parametre funkcií.

Kanály tiež poskytujú rozhranie pre signály (signál je skrátený názov pre signálový kanál, signál je teda len obyčajný kanál so špecifickými dátami – ktoré nazývame signálmi). MFC má vyhradené 2 kanály na príjem signálov od PPE. (poznámka: na signalizáciu od SPE k PPE sa používa jedna zo schránok určených k prenosu správ smerom k PPE.)

3 – Príkazy pre MFC a fronty

Software na PPE aj SPE používa príkazy pre MFC (MFC commands) na vyvolanie DMA prenosu, synchronizáciu, dotazy na DMA status, komunikáciu cez schránky alebo signály. MFC príkaz pre DMA prenos budeme nazývať DMA príkaz.

MFC si udržiava dve fronty príkazov. V jednej fronte čakajú všetky príkazy od SPU, ktorý je súčasťou toho istého SPE ako daný MFC, v druhej potom MFC príkazy od ostatných SPE a PPE.

MFC podporuje vykonávanie DMA príkazov mimo poradia (out of order execution) a umožňuje označovať jednotlivé DMA príkazy tagom. Software vďaka tomu je schopný zistiť stav DMA prenosov pre celú skupinu príkazov. Príkazy v jednej skupine sa dajú synchronizovať pomocou bariéry.

4 – DMA radič

MFC je schopný viesť paralelne až 16 DMA prenosov vyžiadaných od jeho pridruženého SPU.

UX DAy - tip 2

Týmto by som rád uzavrel prvý diel seriálu. Mali by sme mať predstavu, ako to vo vnútri Cell-u vyzerá, z čoho sa skladá a čím je zaujímavý. V najbližšom dieli si ukážeme, ako na procesoroch Cell programovať s využitím SPE.

Literatúra

1 – Cell Broadband Engine Programming Handbook Including the PowerXCell 8i Processor , v 1.11

Byl pro vás článek přínosný?

Autor článku

Matej Dioszegi pracuje v Laboratořích CZ.NIC. Věnuje se především technologii DNSSEC, o které také přednáší.