Cell (mikroprocessor)

Cell-chipet kan ha ett antal olika konfigurationer, men den grundläggande konfigurationen är ett flerkärnigt chip som består av ett ”Power Processor Element” (”PPE”) (ibland kallat ”Processing Element” eller ”PE”) och flera ”Synergistic Processing Elements” (”SPE”). PPE och SPE är sammankopplade genom en intern höghastighetsbuss kallad ”Element Interconnect Bus” (”EIB”).

Power Processor Element (PPE)Edit

Huvaartikel: PPE är den Power Processing Element

PPE är den PowerPC-baserade, dubbel-issue in-order tvåvägs simultant-multitrådiga CPU-kärnan med en 23-stegs pipeline som agerar som styrenhet för de åtta SPE:erna, som hanterar det mesta av beräkningsarbetsbelastningen. PPE har begränsade möjligheter till utförande i fel ordning; den kan utföra belastningar i fel ordning och har fördröjda pipelines för utförande. PPE kommer att fungera med konventionella operativsystem på grund av sin likhet med andra 64-bitars PowerPC-processorer, medan SPE:erna är utformade för vektoriserad exekvering av flyttalskod. PPE innehåller en 64 KiB nivå 1-cache (32 KiB instruktion och 32 KiB data) och en 512 KiB nivå 2-cache. Storleken på en cachelinje är 128 bytes. Dessutom har IBM inkluderat en AltiVec-enhet (VMX) som är helt pipelinerad för flyttal med enkel precision (Altivec 1 stöder inte vektorer för flyttal med dubbel precision.), 32-bitars Fixed Point Unit (FXU) med 64-bitars registerfil per tråd, Load and Store Unit (LSU), 64-bitars Floating-Point Unit (FPU), Branch Unit (BRU) och Branch Execution Unit (BXU).PPE består av tre huvudenheter: PPE består av tre huvuddelar: instruktionsenhet (IU), exekveringsenhet (XU) och vektor/skalar-exekveringsenhet (VSU). IU innehåller L1 instruktionscache, hårdvara för grenförutsägelse, instruktionsbuffertar och inloggning för kontroll av beroenden. XU innehåller heltalsexekveringsenheter (FXU) och lastlagringsenheter (LSU). VSU innehåller alla exekveringsresurser för FPU och VMX. Varje PPE kan utföra två dubbelprecisionsoperationer per klockcykel med en skalär fused-multiply-add-instruktion, vilket motsvarar 6,4 GFLOPS vid 3,2 GHz, eller åtta enkelprecisionsoperationer per klockcykel med en vektorfused-multiply-add-instruktion, vilket motsvarar 25 GFLOPS.6 GFLOPS vid 3,2 GHz.

Xenon i Xbox 360Edit

PPE utformades specifikt för Cell-processorn, men under utvecklingen kontaktade Microsoft IBM som ville ha en högpresterande processorkärna för sin Xbox 360. IBM följde med och tillverkade den trekärniga Xenon-processorn, baserad på en något modifierad version av PPE med tillagda VMX128-tillägg.

Synergistic Processing Elements (SPE)Redigera

Varje SPE är en processor med dubbla frågor i ordning som består av en ”Synergistic Processing Unit”, SPU, och en ”Memory Flow Controller”, MFC (DMA, MMU och bussgränssnitt). SPE har ingen hårdvara för förgreningsförutsägelse (vilket innebär en tung börda för kompilatorn). Varje SPE har 6 exekveringsenheter fördelade på udda och jämna pipelines på varje SPE: SPU:n kör en specialutvecklad instruktionsuppsättning (ISA) med 128-bitars SIMD-organisation för enkel- och dubbelprecisionsinstruktioner. Med den nuvarande generationen av Cell innehåller varje SPE ett 256 KiB inbäddat SRAM för instruktioner och data, kallat ”Local Storage” (inte att förväxla med ”Local Memory” i Sonys dokument som hänvisar till VRAM) som är synligt för PPE och som kan adresseras direkt av programvara. Varje SPE kan stödja upp till 4 GiB lokalt lagringsminne. Det lokala lagret fungerar inte som en konventionell CPU-cache eftersom det varken är transparent för programvaran eller innehåller hårdvarustrukturer som förutsäger vilka data som ska laddas. SPE:erna innehåller en 128-bitars registerfil med 128 poster och mäter 14,5 mm2 på en 90 nm-process. En SPE kan bearbeta sexton 8-bitars heltal, åtta 16-bitars heltal, fyra 32-bitars heltal eller fyra enkelprecisionstal med flytande punkter i en enda klockcykel, samt en minnesoperation. Observera att SPU:n inte kan få direkt tillgång till systemminne; de 64-bitars virtuella minnesadresser som bildas av SPU:n måste skickas från SPU:n till SPE:s minnesflödeskontrollant (MFC) för att ställa in en DMA-operation inom systemets adressutrymme.

I ett typiskt användningsscenario kommer systemet att ladda SPE:erna med små program (som liknar trådar), och kedja ihop SPE:erna för att hantera varje steg i en komplex operation. Till exempel kan en set-top-box ladda program för läsning av en DVD, avkodning av video och ljud samt visning, och data skickas från SPE till SPE för att slutligen hamna på TV:n. En annan möjlighet är att dela upp den inmatade datamängden och låta flera SPE:er utföra samma typ av operation parallellt. Vid 3,2 GHz ger varje SPE en teoretisk prestanda på 25,6 GFLOPS i enkel precision.

Jämfört med sina motsvarigheter i persondatorer verkar den relativt höga totala floatingpoint-prestandan hos en Cell-processor överträffa SIMD-enhetens förmåga i CPU:er som Pentium 4 och Athlon 64. Att bara jämföra ett systems flytpunktsförmåga är dock en endimensionell och applikationsspecifik mätning. Till skillnad från en Cell-processor är sådana stationära CPU:er mer lämpade för den programvara för allmänna ändamål som vanligtvis körs på persondatorer. Förutom att utföra flera instruktioner per klocka har processorer från Intel och AMD grenprediktorer. Cell-processorn är utformad för att kompensera för detta med hjälp av kompilatorhjälp, där instruktioner för att förbereda för förgrening skapas. För operationer med flytande punkter med dubbel precision, som ibland används i persondatorer och ofta i vetenskapliga beräkningar, sjunker Cell-prestandan med en storleksordning, men når ändå upp till 20,8 GFLOPS (1,8 GFLOPS per SPE, 6,4 GFLOPS per PPE). PowerXCell 8i-varianten, som är särskilt utformad för dubbelprecision, når 102,4 GFLOPS i beräkningar med dubbelprecision.

Tester av IBM visar att SPE:erna kan nå 98 % av sin teoretiska topprestanda vid optimerad parallell matrismultiplikation.

Toshiba har utvecklat en samprocessor som drivs av fyra SPE:er, men ingen PPE, och som kallas SpursEngine och är utformad för att påskynda 3D- och filmeffekter i konsumentelektronik.

Varje SPE har ett lokalt minne på 256 KB. Totalt har SPE:erna 2 MB lokalt minne.

Element Interconnect Bus (EIB)Edit

Elit Interconnect Bus (EIB) är en kommunikationsbuss internt i Cell-processorn som ansluter de olika systemelementen på chipet: PPE-processorn, minneskontrollen (MIC), de åtta SPE-coprocessorerna och två I/O-gränssnitt utanför chipet, vilket ger sammanlagt 12 deltagare i PS3 (antalet SPU:er kan variera i industriella tillämpningar). EIB innehåller också en arbitreringsenhet som fungerar som en uppsättning trafikljus. I vissa dokument hänvisar IBM till EIB-deltagarna som ”enheter”.

EIB är för närvarande implementerad som en cirkulär ring som består av fyra 16 byte breda enkelriktade kanaler som motroterar parvis. När trafikmönstret tillåter det kan varje kanal överföra upp till tre transaktioner samtidigt. Eftersom EIB körs med halva systemklockfrekvensen är den effektiva kanalfrekvensen 16 byte varannan systemklocka. Vid maximal samtidighet, med tre aktiva transaktioner på var och en av de fyra ringarna, är den högsta momentana EIB-bandbredden 96 bytes per klocka (12 samtidiga transaktioner × 16 bytes bredd / 2 systemklockor per överföring). Även om denna siffra ofta citeras i IBM:s litteratur är det orealistiskt att helt enkelt skala denna siffra med processorns klockfrekvens. Arbitrageenheten medför ytterligare begränsningar.

IBM Senior Engineer David Krolak, EIB Lead Designer, förklarar konkurensmodellen:

En ring kan starta en ny operation var tredje cykel. Varje överföring tar alltid åtta slag. Det var en av förenklingarna vi gjorde, den är optimerad för att strömma mycket data. Om man gör små ops fungerar det inte riktigt lika bra. Om du tänker på tåg med åtta vagnar som kör runt det här spåret, så länge tågen inte kör in i varandra kan de samexistera på spåret.

Varje deltagare på EIB har en läsport på 16 byte och en skrivport på 16 byte. Gränsen för en enskild deltagare är att läsa och skriva med en hastighet av 16 byte per EIB-klocka (för enkelhetens skull betraktas ofta 8 byte per systemklocka). Varje SPU-processor innehåller en särskild DMA-hanteringskö som kan schemalägga långa sekvenser av transaktioner till olika slutpunkter utan att störa SPU:s pågående beräkningar; dessa DMA-köer kan också hanteras lokalt eller på distans, vilket ger ytterligare flexibilitet i styrmodellen.

Data flödar på en EIB-kanal stegvis runt ringen. Eftersom det finns tolv deltagare är det totala antalet steg runt kanalen tillbaka till utgångspunkten tolv. Sex steg är det längsta avståndet mellan ett par deltagare. En EIB-kanal får inte överföra data som kräver mer än sex steg; sådana data måste ta den kortare vägen runt cirkeln i andra riktningen. Antalet steg som krävs för att skicka paketet har mycket liten inverkan på överföringslatensiteten: klockfrekvensen som driver stegen är mycket snabb i förhållande till andra överväganden. Längre kommunikationsavstånd är dock till nackdel för EIB:s totala prestanda eftersom de minskar den tillgängliga samtidigheten.

Trots IBM:s ursprungliga önskan att implementera EIB som en kraftfullare crossbar utgör den cirkulära konfiguration som de antog för att spara resurser sällan en begränsande faktor för Cell-chipets prestanda som helhet. I värsta fall måste programmeraren vara extra noga med att schemalägga kommunikationsmönster där EIB kan fungera vid höga samtidighetsnivåer.

David Krolak förklarade:

Nja, i början, tidigt i utvecklingsprocessen, var det flera personer som tryckte på för att få till stånd en tvärstångsväxel, och så som bussen är utformad kunde man faktiskt dra ut EIB och sätta in en tvärstångsväxel om man var villig att avsätta mer kiselutrymme på chippet för kablage. Vi var tvungna att hitta en balans mellan konnektivitet och yta, och det fanns helt enkelt inte tillräckligt med utrymme för att sätta in en hel crossbar switch. Så vi kom fram till denna ringstruktur som vi tycker är mycket intressant. Den ryms inom de begränsade arealkraven och har ändå en mycket imponerande bandbredd.

BandbreddsbedömningRedigera

Vid 3,2 GHz flödar varje kanal med en hastighet av 25,6 GB/s. Om man betraktar EIB isolerat från de systemelement som den ansluter, blir tolv samtidiga transaktioner med denna flödeshastighet en abstrakt EIB-bandbredd på 307,2 GB/s. Baserat på detta synsätt beskriver många IBM-publikationer den tillgängliga EIB-bandbredden som ”större än 300 GB/s”. Denna siffra återspeglar den högsta momentana EIB-bandbredden skalad med processorfrekvensen.

Det finns dock andra tekniska begränsningar i skiljemekanismen för paket som accepteras på bussen. IBM Systems Performance group förklarade:

Varje enhet på EIB kan samtidigt sända och ta emot 16 bytes data varje busscykel. Den maximala databandbredden för hela EIB begränsas av den maximala hastigheten med vilken adresser snokas över alla enheter i systemet, vilket är en per busscykel. Eftersom varje snoopad adressförfrågan potentiellt kan överföra upp till 128 byte är den teoretiska maximala databandbredden på EIB vid 3,2 GHz 128Bx1,6 GHz = 204,8 GB/s.

Detta citat representerar tydligen hela omfattningen av IBM:s offentliga avslöjande av denna mekanism och dess inverkan. EIB-arbiteringsenheten, snooping-mekanismen och avbrottsgenerering vid segment- eller sidöversättningsfel är inte väl beskrivna i den dokumentation som IBM ännu inte offentliggjort.

I praktiken kan den effektiva EIB-bandbredden också begränsas av de inblandade ringdeltagarna. Medan var och en av de nio processorkärnorna kan klara av 25,6 GB/s läsning och skrivning samtidigt, är minnesgränssnittskontrollen (MIC) kopplad till ett par XDR-minneskanaler som tillåter ett maximalt flöde på 25,6 GB/s för läsning och skrivning tillsammans, och de två IO-kontrollerna är dokumenterade som stödjande för en högsta kombinerad inmatningshastighet på 25,6 GB/s och en högsta kombinerad utmatningshastighet på 35 GB/s.

För att öka förvirringen ytterligare anger vissa äldre publikationer EIB-bandbredd med en systemklocka på 4 GHz som utgångspunkt. Denna referensram resulterar i en momentan EIB-bandbredd på 384 GB/s och en arbitreringsbegränsad bandbredd på 256 GB/s.

Totalt sett är den teoretiska siffra på 204,8 GB/s som oftast citeras den bästa siffran att ha i åtanke. IBM Systems Performance group har visat att SPU-centrerade dataflöden uppnår 197 GB/s på en Cell-processor som körs på 3,2 GHz, så denna siffra är också en rättvisande återspegling av praktiken.

Minnes- och I/O-kontrollerRedigera

Cell innehåller ett dubbelkanals Rambus XIO-makro som har ett gränssnitt till Rambus XDR-minne. Minnesgränssnittskontrollen (MIC) är skild från XIO-makrot och är konstruerad av IBM. XIO-XDR-länken körs med 3,2 Gbit/s per stift. Två 32-bitars kanaler kan ge ett teoretiskt maximum på 25,6 GB/s.

I/O-gränssnittet, som också är en konstruktion från Rambus, är känt som FlexIO. FlexIO-gränssnittet är organiserat i 12 körfält, där varje körfält är en enkelriktad 8-bitars bred punkt-till-punkt-bana. Fem 8-bitars breda punkt-till-punkt-banor är inkommande banor till Cell, medan de återstående sju är utgående. Detta ger en teoretisk toppbandbredd på 62,4 GB/s (36,4 GB/s utgående, 26 GB/s inkommande) vid 2,6 GHz. FlexIO-gränssnittet kan klockas oberoende, typ. vid 3,2 GHz. 4 inkommande + 4 utgående körfält stöder minnessammanhållning.

Lämna ett svar

Din e-postadress kommer inte publiceras.