Mens Cell-chippen kan have en række forskellige konfigurationer, er den grundlæggende konfiguration en multi-core-chip bestående af et “Power Processor Element” (“PPE”) (undertiden kaldet “Processing Element” eller “PE”) og flere “Synergistic Processing Elements” (“SPE”). PPE’erne og SPE’erne er forbundet med hinanden via en intern højhastighedsbus kaldet “Element Interconnect Bus” (“EIB”).
Power Processor Element (PPE)Rediger
PPE er den PowerPC-baserede, dual-issue in-order to-vejs simultaneous-multithreaded CPU-kerne med en 23-trins pipeline, der fungerer som controller for de otte SPE’er, som håndterer det meste af den beregningsmæssige arbejdsbyrde. PPE har begrænsede muligheder for udførelse uden for rækkefølge; den kan udføre belastninger uden for rækkefølge og har pipelines med forsinket udførelse. PPE vil fungere med konventionelle styresystemer på grund af sin lighed med andre 64-bit PowerPC-processorer, mens SPE’erne er designet til vektoriseret udførelse af floating point-kode. PPE’en indeholder en 64 KiB niveau 1-cache (32 KiB instruktion og 32 KiB data) og en 512 KiB niveau 2-cache. Størrelsen af en cache-linje er 128 bytes. Derudover har IBM inkluderet en AltiVec (VMX) enhed, som er fuldt pipelined til single precision floating point (Altivec 1 understøtter ikke double precision floating point vektorer.), 32-bit Fixed Point Unit (FXU) med 64-bit registerfil pr. tråd, Load and Store Unit (LSU), 64-bit Floating-Point Unit (FPU), Branch Unit (BRU) og Branch Execution Unit (BXU). PPE består af tre hovedenheder: PPE består af tre hovedenheder: Instruction Unit (IU), Execution Unit (XU) og Vector/scalar Execution Unit (VSU). IU indeholder L1-instruktionscache, hardware til forudsigelse af forgrening, instruktionsbuffere og login til kontrol af afhængighed. XU indeholder heltalsudførelsesenheder (FXU) og load-store-enhed (LSU). VSU indeholder alle eksekveringsressourcerne for FPU og VMX. Hver PPE kan udføre to dobbeltpræcisionsoperationer pr. clockcyklus ved hjælp af en skalar fused-multiply-add-instruktion, hvilket svarer til 6,4 GFLOPS ved 3,2 GHz, eller otte enkeltpræcisionsoperationer pr. clockcyklus med en vektor fused-multiply-add-instruktion, hvilket svarer til 25 GFLOPS ved 3,2 GHz.6 GFLOPS ved 3,2 GHz.
Xenon i Xbox 360Rediger
PPE blev designet specielt til Cell-processoren, men under udviklingen henvendte Microsoft sig til IBM for at få en højtydende processorkerne til sin Xbox 360. IBM indvilligede og lavede den trekernet Xenon-processor, der er baseret på en let modificeret version af PPE med tilføjede VMX128-udvidelser.
Synergistic Processing Elements (SPE)Rediger
Hver SPE er en processor med to spørgsmål i orden, der består af en “Synergistic Processing Unit”, SPU, og en “Memory Flow Controller”, MFC (DMA, MMU og busgrænseflade). SPE’er har ikke nogen hardware til at forudsige forgreninger (derfor er der en stor byrde på compileren). Hver SPE har 6 eksekveringsenheder fordelt på ulige og lige pipelines på hver SPE : SPU’en kører et specielt udviklet instruktionssæt (ISA) med 128-bit SIMD-organisation for enkelt- og dobbeltpræcisionsinstruktioner. Med den nuværende generation af Cell indeholder hver SPE en 256 KiB indbygget SRAM til instruktioner og data, kaldet “Local Storage” (ikke at forveksle med “Local Memory” i Sonys dokumenter, der henviser til VRAM), som er synlig for PPE’en og kan adresseres direkte af software. Hver SPE kan understøtte op til 4 GiB lokal lagerhukommelse. Den lokale hukommelse fungerer ikke som en konventionel CPU-cache, da den hverken er gennemsigtig for software eller indeholder hardwarestrukturer, der forudsiger, hvilke data der skal indlæses. SPE’erne indeholder en registerfil med 128 bit og 128 indgange og måler 14,5 mm2 på en 90 nm-proces. En SPE kan behandle seksten 8-bit-integritetstal, otte 16-bit-integritetstal, fire 32-bit-integritetstal eller fire enkeltpræcisions-flydepunktstal i en enkelt clockcyklus samt en hukommelsesoperation. Bemærk, at SPU’en ikke kan få direkte adgang til systemets hukommelse; de 64-bit virtuelle hukommelsesadresser, der dannes af SPU’en, skal sendes fra SPU’en til SPE-hukommelsesflowcontrolleren (MFC) for at oprette en DMA-operation inden for systemets adresseområde.
I et typisk brugsscenarie vil systemet indlæse SPE’erne med små programmer (svarende til tråde) og kæde SPE’erne sammen for at håndtere hvert trin i en kompleks operation. F.eks. kan en set-top-boks indlæse programmer til læsning af en dvd, video- og audiodekodning og visning, og dataene vil blive sendt fra SPE til SPE, indtil de ender på tv’et. En anden mulighed er at opdele inputdatasættet og lade flere SPE’er udføre den samme type operation parallelt. Ved 3,2 GHz giver hver SPE en teoretisk ydelse på 25,6 GFLOPS i enkeltpræcision.
Sammenlignet med de samtidige pc’er overgår den relativt høje samlede floatingpoint-ydelse i en Cell-processor tilsyneladende SIMD-enhedens evner i CPU’er som Pentium 4 og Athlon 64. Men en sammenligning af et systems egenskaber inden for floating-point er en endimensionel og applikationsspecifik måling. I modsætning til en Cell-processor er sådanne desktop-CPU’er mere velegnede til den generelle software, der normalt køres på personlige computere. Ud over at udføre flere instruktioner pr. clock er processorer fra Intel og AMD udstyret med branch predictors. Cell-processoren er designet til at kompensere for dette med compilerassistance, hvor der oprettes “prepare-to-branch”-instruktioner. Ved operationer med flydende komma med dobbelt præcision, som det undertiden anvendes i personlige computere og ofte i videnskabelige beregninger, falder Cell-ydelsen med en størrelsesorden, men når stadig op på 20,8 GFLOPS (1,8 GFLOPS pr. SPE, 6,4 GFLOPS pr. PPE). PowerXCell 8i-varianten, som er specielt designet til dobbelt præcision, når 102,4 GFLOPS ved beregninger med dobbelt præcision.
Test udført af IBM viser, at SPE’erne kan nå 98 % af deres teoretiske maksimale ydeevne ved optimeret parallel matrixmultiplikation.
Toshiba har udviklet en co-processor drevet af fire SPE’er, men ingen PPE, kaldet SpursEngine, der er designet til at fremskynde 3D- og filmeffekter i forbrugerelektronik.
Hver SPE har en lokal hukommelse på 256 KB. I alt har SPE’erne 2 MB lokal hukommelse.
Element Interconnect Bus (EIB)Edit
EIB er en kommunikationsbus internt i Cell-processoren, som forbinder de forskellige systemelementer på chippen: PPE-processoren, hukommelsescontrolleren (MIC), de otte SPE-coprocessorer og to off-chip I/O-interfaces, hvilket giver i alt 12 deltagere i PS3 (antallet af SPU’er kan variere i industrielle applikationer). EIB omfatter også en arbitreringsenhed, der fungerer som et sæt trafiklys. I nogle dokumenter omtaler IBM EIB-deltagerne som “enheder”.
EIB er i øjeblikket implementeret som en cirkulær ring bestående af fire 16-byte brede ensrettede kanaler, der er ensrettede og roterer parvis i modsat retning. Når trafikmønstrene tillader det, kan hver kanal overføre op til tre transaktioner samtidig. Da EIB kører med halvdelen af systemets clockfrekvens, er den effektive kanalhastighed 16 bytes hver anden systemclock. Ved maksimal samtidighed med tre aktive transaktioner på hver af de fire ringe er den maksimale øjeblikkelige EIB-båndbredde 96 bytes pr. clock (12 samtidige transaktioner × 16 bytes i bredden / 2 systemclocks pr. overførsel). Selv om dette tal ofte nævnes i IBM-litteraturen, er det urealistisk blot at skalere dette tal efter processorens taktfrekvens. Arbitreringsenheden pålægger yderligere begrænsninger.
IBM Senior Engineer David Krolak, EIB-chefdesigner, forklarer konkurrencemodellen:
En ring kan starte en ny operation hver tredje cyklus. Hver overførsel tager altid otte takter. Det var en af de forenklinger, vi lavede, det er optimeret til streaming af en masse data. Hvis du laver små ops, fungerer det ikke helt så godt. Hvis du tænker på otte-vognstog, der kører rundt på dette spor, så længe togene ikke kører ind i hinanden, kan de eksistere side om side på sporet.
Hver deltager på EIB har én 16-byte læseport og én 16-byte skriveport. Grænsen for en enkelt deltager er at læse og skrive med en hastighed på 16 bytes pr. EIB-ur (for enkelhedens skyld ofte betragtet som 8 bytes pr. systemur). Hver SPU-processor indeholder en dedikeret DMA-håndteringskø, der er i stand til at planlægge lange sekvenser af transaktioner til forskellige slutpunkter uden at forstyrre SPU’ens igangværende beregninger; disse DMA-køer kan også administreres lokalt eller eksternt, hvilket giver yderligere fleksibilitet i kontrolmodellen.
Data flyder på en EIB-kanal trinvis rundt i ringen. Da der er tolv deltagere, er det samlede antal trin rundt om kanalen tilbage til oprindelsespunktet tolv. Seks trin er den længste afstand mellem et hvilket som helst deltagerpar. En EIB-kanal må ikke overføre data, der kræver mere end seks trin; sådanne data skal tage den kortere rute rundt om cirklen i den anden retning. Antallet af trin i forbindelse med afsendelse af pakken har kun en meget lille indvirkning på overførselslatenstiden: den takthastighed, der driver trinene, er meget hurtig i forhold til andre overvejelser. Længere kommunikationsafstande er imidlertid skadelige for EIB’s samlede ydeevne, da de reducerer den tilgængelige samtidighed.
Trods IBM’s oprindelige ønske om at implementere EIB som en mere kraftfuld tværstang, udgør den cirkulære konfiguration, som de vedtog for at spare ressourcer, sjældent en begrænsende faktor for Cell-chippens ydeevne som helhed. I værste fald skal programmøren være ekstra omhyggelig med at planlægge kommunikationsmønstre, hvor EIB er i stand til at fungere ved høje samtidighedsniveauer.
David Krolak forklarede:
I begyndelsen, tidligt i udviklingsprocessen, var der flere, der pressede på for at få en crossbar switch, og på den måde, som bussen er konstrueret, kunne man faktisk trække EIB ud og sætte en crossbar switch ind, hvis man var villig til at afsætte mere siliciumplads på chippen til ledningsføring. Vi var nødt til at finde en balance mellem tilslutningsmuligheder og areal, og der var simpelthen ikke plads nok til at sætte en fuld crossbar switch ind. Så vi fandt frem til denne ringstruktur, som vi synes er meget interessant. Den passer inden for arealbegrænsningerne og har stadig en meget imponerende båndbredde.
BåndbreddevurderingRediger
Ved 3,2 GHz strømmer hver kanal med en hastighed på 25,6 GB/s. Hvis man betragter EIB isoleret fra de systemelementer, den forbinder, kan man opnå tolv samtidige transaktioner ved denne strømningshastighed, hvilket svarer til en abstrakt EIB-båndbredde på 307,2 GB/s. Baseret på dette synspunkt beskriver mange IBM-publikationer den tilgængelige EIB-båndbredde som “større end 300 GB/s”. Dette tal afspejler den maksimale øjeblikkelige EIB-båndbredde, der er skaleret med processorfrekvensen.
Der er imidlertid andre tekniske begrænsninger involveret i arbitreringsmekanismen for pakker, der accepteres på bussen. IBM Systems Performance Group forklarede:
Hver enhed på EIB kan samtidig sende og modtage 16 bytes data hver buscyklus. Den maksimale databåndbredde for hele EIB er begrænset af den maksimale hastighed, hvormed adresser snydes på tværs af alle enheder i systemet, hvilket er én pr. buscyklus. Da hver snooped adresseanmodning potentielt kan overføre op til 128 bytes, er den teoretiske maksimale databåndbredde på EIB ved 3,2 GHz 128Bx1,6 GHz = 204,8 GB/s.
Dette citat repræsenterer tilsyneladende hele omfanget af IBM’s offentlige afsløring af denne mekanisme og dens virkning. EIB-arbitreringsenheden, snooping-mekanismen og interrupt-generering ved segment- eller sideoversættelsesfejl er ikke godt beskrevet i den dokumentation, som IBM endnu ikke har offentliggjort.
I praksis kan den effektive EIB-båndbredde også begrænses af de involverede ringdeltagere. Mens hver af de ni processorkerner kan opretholde en læse- og skrivehastighed på 25,6 GB/s samtidig, er memory interface controller (MIC) bundet til et par XDR-hukommelseskanaler, der tillader et maksimalt flow på 25,6 GB/s for læsning og skrivning kombineret, og de to IO-controllere er dokumenteret som understøttende en maksimal kombineret indgangshastighed på 25,6 GB/s og en maksimal kombineret udgangshastighed på 35 GB/s.
For at øge forvirringen yderligere nævner nogle ældre publikationer EIB-båndbredde under forudsætning af et 4 GHz systemur. Denne referenceramme resulterer i en øjeblikkelig EIB-båndbredde på 384 GB/s og en arbitreringsbegrænset båndbredde på 256 GB/s.
Alt taget i betragtning er det teoretiske tal på 204,8 GB/s, der oftest nævnes, det bedste at have i tankerne. IBM Systems Performance Group har demonstreret SPU-centrerede datastrømme, der opnår 197 GB/s på en Cell-processor, der kører ved 3,2 GHz, så dette tal er også en rimelig afspejling af praksis.
Hukommelses- og I/O-controllereRediger
Cell indeholder en Rambus XIO-makro med to kanaler, der har grænseflade til Rambus XDR-hukommelse. Hukommelsesgrænsefladekontrolleren (MIC) er adskilt fra XIO-makroen og er designet af IBM. XIO-XDR-forbindelsen kører med 3,2 Gbit/s pr. pin. To 32-bit kanaler kan give et teoretisk maksimum på 25,6 GB/s.
I/O-grænsefladen, som også er et Rambus-design, er kendt som FlexIO. FlexIO-grænsefladen er organiseret i 12 lanes, hvor hver lane er en unidirektionel 8-bit bred punkt-til-punkt-sti. Fem 8-bit brede punkt-til-punkt-stier er indgående baner til Cell, mens de resterende syv er udgående. Dette giver en teoretisk spidsbåndbredde på 62,4 GB/s (36,4 GB/s udadgående, 26 GB/s indadgående) ved 2,6 GHz. FlexIO-interfacet kan clockes uafhængigt, typisk ved 3,2 GHz. 4 indgående + 4 udgående lanes understøtter hukommelseskohærens.