Table of Contents

Arhitectura Cell Broadband Engine

Descrierea arhitecturii Cell Broadband Engine

<imgcaption image1|Diagrama bloc a arhitecturii Cell Broadband Engine>[]</imgcaption>

Asa cum se observa in <imgref image1>, magistrala EIB cu acces coerent la memorie are doua interfete externe:

Dezvoltarea de software in limbajul C/C++ este sustinuta de catre un set bogat de extensii de limbaj care definesc tipurile de date din C/C++ pentru operatii SIMD si contin C/C++ intrinsics (comenzi sub forma de apeluri de functii) spre una sau mai multe instructiuni de asamblare.

Aceste extensii de limbaj ofera programatorilor in C/C++ un control mai mare asupra performantelor ce pot fi obtinute din cod, fara a fi nevoie de programare in limbaj de asamblare. Dezvoltarea de software este sustinuta si de existenta:

Power Processor Element (PPE)

Power Processor Element (PPE) este un procesor cu scop general, dual-threaded, cu arhitectura RISC pe 64 de biti conforma cu arhitectura Power, versiunea 2.02, avand setul de extensii Multimedia Vector/SIMD.

Programele scrise pentru procesorul Power 970, de exemplu, pot fi rulate pe Cell Broadband Engine fara nici o modificare.

Asa cum reiese si din Figura 6, procesorul PPE are doua unitati principale:

Power Processor Element (PPE) este responsabil de controlul general asupra sistemului si ruleaza sistemele de operare pentru toate aplicatiile ce ruleaza pe Cell Broadband Engine. <imgcaption ppe|Diagrama Bloc a Power Processor Element (PPE)> []</imgcaption>

Power Processor Unit (PPU) se ocupa de controlul si executia instructiunilor. Acesta contine:

Power Processor Unit (PPU) suporta executia simultana a doua threaduri si poate fi privit ca un multiprocesor 2-way cu flux de date partajat (shared dataflow). Din punct de vedere software, acesta este vazut ca doua unitati de procesare independente.

Power Processor Storage Subsystem (PPSS) se ocupa cu cererile de acces la memorie venite din partea PPE si cererile externe pentru PPE venite din partea altor procesoare si dispozitive I/O. Acesta contine:

Memoria este vazuta ca vector liniar de bytes indexati de la 0 la 264 - 1. Fiecare byte este identificat prin indexul sau, numit adresa, si contine o valoare. Se face cate un singur acces la memorie o data.

Cache-ul de nivel 2 (L2) si cache-urile folosite pentru translatarea adreselor tabele de management care permit controlul lor din software. Acest control software asupra resurselor de cache este in special util pentru programarea de timp real.

Synergistic Processor Elements (SPE-uri)

Fiecare dintre cele opt Synergistic Processor Elements (SPE-uri) este un procesor RISC pe 128 biti specializat in aplicatii SIMD ce necesita calcul intens asupra unor seturi multiple de date.

Asa cum reiese si din <imgref spe>, fiecare Synergistic Processor Element (SPE) contine doua unitati principale:

<imgcaption spe|Diagrama Bloc a Synergistic Processor Element (SPE)> []</imgcaption>

Synergistic Processor Unit (SPU) se ocupa in primul rand de controlul si executia instructiunilor. Contine:

Synergistic Processor Element (SPU) implementeaza un nou set de instructiuni SIMD, numit SPU Instruction Set Architecture, care e specific pentru Broadband Processor Architecture.

Fiecare Synergistic Processor Unit (SPU) este un procesor independent cu numarator (counter) propriu de program si este optimizat pentru rularea de threaduri SPE lansate de catre Power Processor Element (PPE). Instructiunile pentru Synergistic Processor Unit (SPU) sunt aduse din memoria locala (local store – LS) iar datele sunt aduse si salvate tot in memoria locala (local store – LS). Fiind proiectata pentru a fi accesata in primul de catre SPU-ul propriu, memoria locala (local store – LS) este neprotejata si netranslatata. Memory Flow Controller (MFC) contine un controller DMA pentru transferurile DMA. Programele care ruleaza pe SPU, pe PPE sau pe alt SPU, folosesc transferuri DMA controlate de MFC pentru mutarea datelor si instructiunilor intre memoria locala (local store –LS) a SPU-urilor si spatiul principal de stocare (main storage). Spatiul principal de stocare (main storage) este format din spatiul de adrese efective care include memoria principala (main memory), memoriile locale ale altor SPE-uri si registri mapati in memorie cum ar fi registrii I/O [MMIO]. Memory Flow Controller (MFC) interfateaza Synergistic Processor Unit (SPU) cu Element Interconnect Bus (EIB), implementeaza facilitatile de rezervare bandwidth pe magistrala si sincronizeaza operatiile dintre Synergistic Processor Unit (SPU) si celelalte procesoare din sistem.

Pentru transferurile DMA, Memory Flow Controller (MFC) foloseste cozi de comenzi DMA. Dupa ce o comanda DMA a fost transmisa catre Memory Flow Controller (MFC), Synergistic Processor Unit (SPU) poate continua executia instructiunilor in timp ce Memory Flow Controller (MFC) proceseaza comenzile DMA autonom si asincron. Executia de comenzi DMA de catre Memory Flow Controller (MFC) autonom fata de executia de instructiuni de catre Synergistic Processor Unit (SPU) permite planificarea eficienta a transferurilor DMA pentru a acoperi latenta de memorie.

Fiecare transfer DMA poate avea maxim 16 KB. Totusi, doar SPU-ul asociat MFC-ului poate lansa lista de comenzi DMA. Acestea pot contine pana la 2048 transferuri DMA, fiecare de cate 16 KB. Informatia cu privire la translatarea adreselor de memorie virtuala este pusa la dispozitia MFC de catre sistemul de operare ce ruleaza pe PPE. Atributele sistemului de stocare (translatarea si protectia adreselor) sunt controlate prin tabelele de segmentare si paginare ale arhitecturii Power. Totusi exista software special pentru PPE care poate mapa adresele si memoriile locale (local store – LS) si anumite resurse MFC in spatiul de adrese din main-storage, permitand astfel PPE si altor SPU-uri din sistem sa acceseze aceste resurse.

SPE-urile ofera un mediu de operare determinist. Acestea nu au memorii cache, astfel ca nu exista cache miss-uri care sa le afecteze performanta. Regulile de planificare pe pipeline sunt simple, astfel ca performantele codului sunt usor de evaluat static. Desi memoria locala (local store – LS) este partajata intre operatiile DMA de citire si scriere, load and store si de prefetch de instructiuni, operatiile DMA sunt cumulate si pot accesa memoria locala (LS) cel mult unul din 8 cicluri. La prefetch de instructiuni sunt aduse cel putin 17 instructiuni secventiale de pe ramura tinta. In acest mod, impactul operatiilor DMA asupra timpilor de operatii load and store si de executie a programelor este limitata din designul arhitecturii.

Ordonarea byte-ilor si numerotarea bitilor

Setul de instructiuni pentru PPE este o versiune extinsa a setului de instrutiuni Power. Extensiile sunt reprezentate de catre setul de instructiuni Multimedia Vector/SIMD plus cateva adaugari si schimbari aduse setului de instructiuni Power. Setul de instructiuni pentru SPE este asemanator cu setul de instructiuni Multimedia Extins Vector/SIMD al PPE. Desi PPE si SPE-urile executa instructiuni SIMD, seturile de instructiuni sunt diferite pentru fiecare din ele (PPE si SPE), iar programele scrise pentru PPE si SPE-uri trebuie compilate cu compilatoare diferite.

Stocarea datelor si instructiunilor in Cell Broadband Engine respecta ordonarea big-endian. Acest tip de ordonare are urmatoarele caracteristici:

<imgcaption endianness|Ordonarea Big-endian a byte-ilor si numerotarea bitilor in arhitectura Cell BE> [] </imgcaption>