Míg a Cell chip számos különböző konfigurációval rendelkezhet, az alapkonfiguráció egy többmagos chip, amely egy “Power Processor Element” (“PPE”) (néha “Processing Element” vagy “PE”) és több “Synergistic Processing Elements” (“SPE”) elemből áll. A PPE-ket és SPE-ket egy belső nagysebességű busz, az “Element Interconnect Bus” (“EIB”) köti össze.
Power Processor Element (PPE)Szerkesztés
A PPE a PowerPC-alapú, kétutas, sorrendben kétutas, egyidejűleg többszálú CPU-mag, amelynek 23 fokozatú pipeline-ja a nyolc SPE vezérlőjeként működik, amelyek a számítási terhelés nagy részét kezelik. A PPE korlátozott sorrenden kívüli végrehajtási képességekkel rendelkezik; képes sorrenden kívüli terheléseket végrehajtani, és késleltetett végrehajtási csővezetékkel rendelkezik. A PPE a többi 64 bites PowerPC processzorhoz való hasonlósága miatt hagyományos operációs rendszerekkel működik, míg az SPE-ket vektorizált lebegőpontos kód végrehajtására tervezték. A PPE 64 KiB 1. szintű gyorsítótárat (32 KiB utasítás és 32 KiB adat) és 512 KiB 2. szintű gyorsítótárat tartalmaz. Egy gyorsítótársor mérete 128 bájt. Ezenkívül az IBM beépített egy AltiVec (VMX) egységet, amely teljes mértékben pipelines az egyszeres pontosságú lebegőpontos számításhoz (az Altivec 1 nem támogatja a kétszeres pontosságú lebegőpontos vektorokat.), 32 bites Fixed Point Unit (FXU), szálanként 64 bites regiszterfájllal, Load and Store Unit (LSU), 64 bites Floating-Point Unit (FPU), Branch Unit (BRU) és Branch Execution Unit(BXU).A PPE három fő egységből áll: Instruction Unit (IU), Execution Unit (XU) és vektor/skalár végrehajtó egység (VSU). Az IU tartalmazza az L1 utasítás gyorsítótárat, az elágazás-előrejelző hardvert, az utasításpuffereket és a függőségi ellenőrző bejelentkezést. Az XU tartalmazza az egész számok végrehajtási egységét (FXU) és a betöltő-tároló egységet (LSU). A VSU tartalmazza az FPU és a VMX összes végrehajtási erőforrását. Minden PPE órajelciklusonként két kétszeres pontosságú művelet elvégzésére képes skalár fused-multiply-add utasítással, ami 3,2 GHz-en 6,4 GFLOPS-ot jelent; vagy nyolc egyszeres pontosságú művelet elvégzésére órajelciklusonként vektor fused-multiply-add utasítással, ami 25 GFLOPS-ot jelent.6 GFLOPS 3,2 GHz-en.
Xenon az Xbox 360-banSzerkesztés
A PPE-t kifejezetten a Cell processzorhoz tervezték, de a fejlesztés során a Microsoft megkereste az IBM-et, hogy nagy teljesítményű processzormagot szeretne az Xbox 360 számára. Az IBM eleget tett a kérésnek, és elkészítette a hárommagos Xenon processzort, amely a PPE némileg módosított és VMX128 kiterjesztésekkel kiegészített változatán alapul.
Synergistic Processing Elements (SPE)Edit
Minden SPE egy kettős kiadású processzor, amely egy “Synergistic Processing Unit”, SPU, és egy “Memory Flow Controller”, MFC (DMA, MMU és buszinterfész) egységből áll. Az SPE-k nem rendelkeznek elágazás-előrejelző hardverrel (ezért nagy teher hárul a fordítóra). Minden SPE 6 végrehajtó egységgel rendelkezik, amelyek minden SPE-n páratlan és páros csővezetékek között oszlanak meg : Az SPU egy speciálisan kifejlesztett utasításkészletet (ISA) futtat 128 bites SIMD szervezéssel az egyszeres és kétszeres pontosságú utasításokhoz. A Cell jelenlegi generációjánál minden egyes SPE tartalmaz egy 256 KiB-os beágyazott SRAM-ot az utasítások és adatok számára, amelyet “Local Storage”-nek neveznek (nem tévesztendő össze a Sony dokumentumaiban a VRAM-ra utaló “Local Memory”-val), amely látható a PPE számára, és a szoftver által közvetlenül megcímezhető. Minden SPE legfeljebb 4 GiB helyi tároló memóriát támogat. A helyi tároló nem úgy működik, mint egy hagyományos CPU gyorsítótár, mivel nem átlátható a szoftver számára, és nem tartalmaz olyan hardverstruktúrákat, amelyek előre jelzik, hogy mely adatokat kell betölteni. Az SPE-k 128 bites, 128 bejegyzésű regiszterfájlt tartalmaznak, és 14,5 mm2 méretűek a 90 nm-es eljáráson. Egy SPE egyetlen órajelciklusban tizenhat 8 bites egész számmal, nyolc 16 bites egész számmal, négy 32 bites egész számmal vagy négy egypontos lebegőpontos számmal, valamint egy memória művelettel tud operálni. Megjegyzendő, hogy az SPU nem tud közvetlenül hozzáférni a rendszermemóriához; az SPU által képzett 64 bites virtuális memóriacímeket az SPU-tól át kell adni az SPE memóriaáramlás-vezérlőnek (MFC), hogy a rendszer címtartományán belül DMA műveletet állítson be.
Egy tipikus felhasználási forgatókönyv szerint a rendszer az SPE-ket kis programokkal (a szálakhoz hasonlóan) tölti be, és az SPE-ket egymáshoz láncolja, hogy egy összetett művelet minden egyes lépését kezelje. Például egy set-top box betölthet programokat a DVD olvasásához, a videó- és hangdekódoláshoz, valamint a megjelenítéshez, és az adatok SPE-ről SPE-re szállnak, míg végül a tévében landolnak. Egy másik lehetőség a bemeneti adathalmaz felosztása, és az, hogy több SPE párhuzamosan végzi ugyanazt a műveletet. 3,2 GHz-en minden egyes SPE elméletileg 25,6 GFLOPS egyszeres pontosságú teljesítményt nyújt.
A személyi számítógépes kortársaihoz képest a Cell processzor viszonylag magas általános lebegőpontos teljesítménye látszólag eltörpül a Pentium 4 és az Athlon 64 CPU-k SIMD egységének képességei mellett. Egy rendszer lebegőpontos képességeinek összehasonlítása azonban egydimenziós és alkalmazásspecifikus mérőszám. A Cell processzorral ellentétben az ilyen asztali CPU-k jobban megfelelnek a személyi számítógépeken általában futtatott általános célú szoftvereknek. Az Intel és az AMD processzorai az órajelenkénti több utasítás végrehajtása mellett elágazás-előrejelzőkkel is rendelkeznek. A Cell úgy van kialakítva, hogy ezt kompenzálja fordítói segítséggel, amelyben prepare-to-branch utasítások jönnek létre. A személyi számítógépekben néha használt és a tudományos számítástechnikában gyakran használt kétszeres pontosságú lebegőpontos műveletek esetén a Cell teljesítménye egy nagyságrenddel csökken, de még így is eléri a 20,8 GFLOPS-ot (1,8 GFLOPS SPE-nként, 6,4 GFLOPS PPE-nként). A PowerXCell 8i változat, amelyet kifejezetten kettős pontosságú számításokhoz terveztek, 102,4 GFLOPS-t ér el kettős pontosságú számításoknál.
Az IBM tesztjei azt mutatják, hogy az SPE-k optimalizált párhuzamos mátrixszorzást végezve az elméleti csúcsteljesítmény 98%-át képesek elérni.
A Toshiba kifejlesztett egy négy SPE-vel működő, de PPE nélküli társprocesszort, a SpursEngine-t, amelyet a fogyasztói elektronikában használt 3D és filmes effektek gyorsítására terveztek.
Minden SPE 256 KB-os helyi memóriával rendelkezik. Az SPE-k összesen 2 MB helyi memóriával rendelkeznek.
Element Interconnect Bus (EIB)Edit
Az EIB a Cell processzoron belüli kommunikációs busz, amely összeköti a különböző chipen belüli rendszerelemeket: a PPE processzort, a memóriavezérlőt (MIC), a nyolc SPE társprocesszort és két chipen kívüli I/O interfészt, így a PS3-ban összesen 12 résztvevő van (az SPU-k száma ipari alkalmazásokban változhat). Az EIB tartalmaz egy arbitrációs egységet is, amely egy sor közlekedési lámpaként működik. Egyes dokumentumokban az IBM az EIB résztvevőire “egységként” hivatkozik.
Az EIB jelenleg egy körkörös gyűrűként van megvalósítva, amely négy 16 bájt széles egyirányú csatornából áll, amelyek páronként ellenkező irányban forognak. Ha a forgalmi minták lehetővé teszik, minden csatorna akár három tranzakciót is közvetíthet egyidejűleg. Mivel az EIB a rendszer órajelének felével működik, a tényleges csatornasűrűség 16 bájt minden második rendszeróra után. Maximális párhuzamosság esetén, amikor mind a négy gyűrűn három aktív tranzakció van, az EIB pillanatnyi maximális sávszélessége 96 bájt/óra (12 egyidejű tranzakció × 16 bájt széles / 2 rendszeróra/átvitel). Bár ezt a számot gyakran idézik az IBM szakirodalmában, nem reális, hogy ezt a számot egyszerűen a processzor órajele szerint skálázzuk. Az arbitrációs egység további korlátokat támaszt.
Az IBM vezető mérnöke, David Krolak, az EIB vezető tervezője magyarázza az egyidejűségi modellt:
Egy gyűrű három ciklusonként indíthat új műveletet. Minden átvitel mindig nyolc ütemet vesz igénybe. Ez volt az egyik egyszerűsítés, amit csináltunk, sok adat áramoltatására optimalizáltuk. Ha kis opsokat csinálsz, akkor nem működik ilyen jól. Ha arra gondolsz, hogy nyolckocsis vonatok futnak ezen a pályán, amíg a vonatok nem futnak egymásba, addig együtt tudnak létezni a pályán.
Az EIB minden résztvevőjének van egy 16 bájtos olvasóportja és egy 16 bájtos íróportja. Egyetlen résztvevő esetében az olvasás és írás korlátja 16 bájt/ EIB-óra (az egyszerűség kedvéért gyakran 8 bájt/rendszeróra). Minden SPU processzor tartalmaz egy dedikált DMA-kezelési várólistát, amely képes hosszú tranzakciósorozatokat ütemezni a különböző végpontokhoz anélkül, hogy megzavarná az SPU folyamatban lévő számításait; ezek a DMA-várak helyileg vagy távolról is kezelhetők, ami további rugalmasságot biztosít a vezérlési modellben.
Az adatok egy EIB-csatornán lépésenként áramlanak a gyűrű körül. Mivel tizenkét résztvevő van, a csatorna körül a kiindulópontig visszavezető lépések száma összesen tizenkettő. Hat lépés a legnagyobb távolság bármely résztvevőpár között. Egy EIB-csatornán nem lehet hat lépésnél több lépést igénylő adatot továbbítani; az ilyen adatoknak a rövidebb útvonalon kell megkerülniük a kört a másik irányba. A csomag elküldéséhez szükséges lépések száma nagyon kis hatással van az átviteli késleltetésre: a lépéseket vezérlő órajelek sebessége más szempontokhoz képest nagyon gyors. A hosszabb kommunikációs távolságok azonban hátrányosan befolyásolják az EIB általános teljesítményét, mivel csökkentik az elérhető párhuzamosságot.
Az IBM eredeti szándéka ellenére, hogy az EIB-t nagyobb teljesítményű keresztsávként valósítsa meg, az erőforrások kímélése érdekében elfogadott körkörös konfiguráció ritkán jelent korlátozó tényezőt a Cell chip egészének teljesítményére nézve. A legrosszabb esetben a programozónak extra gondot kell fordítania arra, hogy olyan kommunikációs mintákat ütemezzen, ahol az EIB képes magas párhuzamossági szinteken működni.
David Krolak kifejtette:
A kezdetekben, a fejlesztési folyamat elején többen is keresztsávos kapcsolót szorgalmaztak, és a busz kialakításának módja alapján tulajdonképpen ki lehetett volna venni az EIB-t, és be lehetett volna tenni egy keresztsávos kapcsolót, ha hajlandóak lennénk a chipen több szilíciumhelyet szentelni a vezetékezésnek. Meg kellett találnunk az egyensúlyt a csatlakoztathatóság és a terület között, és egyszerűen nem volt elég hely egy teljes keresztsávos kapcsoló beépítéséhez. Ezért találtuk ki ezt a gyűrűs szerkezetet, amely szerintünk nagyon érdekes. Beleillik a területkorlátozásba, és mégis nagyon lenyűgöző sávszélességgel rendelkezik.
Sávszélesség értékeléseSzerkesztés
3,2 GHz-en minden csatorna 25,6 GB/s sebességgel áramlik. Az EIB-t az általa összekötött rendszerelemektől elszigetelten vizsgálva, tizenkét egyidejű tranzakció elérése ezzel az áramlási sebességgel 307,2 GB/s absztrakt EIB-sávszélességet jelent. Ennek alapján számos IBM-kiadványban a rendelkezésre álló EIB-sávszélességet “300 GB/s-nál nagyobbnak” írják le. Ez a szám a processzorfrekvenciával skálázott pillanatnyi EIB-sávszélesség csúcsértékét tükrözi.
A buszra felvett csomagok arbitrációs mechanizmusában azonban más technikai korlátozások is szerepet játszanak. Az IBM Systems Performance csoport kifejtette:
Az EIB-n minden egység minden buszciklusban egyszerre 16 bájt adatot küldhet és fogadhat. A teljes EIB maximális adatsávszélességét a rendszerben lévő összes egységre kiterjedő címek szaglászásának maximális sebessége korlátozza, ami buszciklusonként egy bájt. Mivel minden egyes kiszimatolt címkérés potenciálisan akár 128 bájtot is továbbíthat, az EIB elméleti maximális adatsávszélessége 3,2 GHz-en 128Bx1,6 GHz = 204,8 GB/s.
Az idézet nyilvánvalóan az IBM által e mechanizmusról és annak hatásáról nyilvánosságra hozott teljes terjedelmét jelenti. Az EIB arbitrációs egységet, a snooping mechanizmust és a szegmens- vagy lapfordítási hibák esetén történő megszakításgenerálást az IBM által eddig nyilvánosságra hozott dokumentáció nem írja le megfelelően.
A gyakorlatban a tényleges EIB-sávszélességet a gyűrű résztvevői is korlátozhatják. Míg a kilenc feldolgozómag mindegyike egyidejűleg 25,6 GB/s-os olvasási és írási sebességre képes, a memória interfészvezérlő (MIC) egy pár XDR memóriacsatornához van kötve, ami az olvasás és írás esetében együttesen legfeljebb 25,6 GB/s-os áramlást tesz lehetővé, és a két IO-vezérlő a dokumentáció szerint 25,6 GB/s-os kombinált bemeneti csúcssebességet és 35 GB/s-os kombinált kimeneti csúcssebességet támogat.
A zavart tovább fokozandó, egyes régebbi publikációk 4 GHz-es rendszerórajelet feltételezve említik az EIB sávszélességét. Ez a referenciakeret 384 GB/s pillanatnyi EIB-sávszélességet és 256 GB/s arbitrációval korlátozott sávszélességet eredményez.
Mindent összevetve a leggyakrabban említett 204,8 GB/s elméleti szám a legjobb, amit szem előtt kell tartani. Az IBM Systems Performance csoportja demonstrálta, hogy az SPU-központú adatáramlások 197 GB/s sebességet érnek el egy 3,2 GHz-es Cell processzoron, így ez a szám a gyakorlatot is jól tükrözi.
Memória- és I/O-vezérlőkSzerkesztés
A Cell kétcsatornás Rambus XIO makrót tartalmaz, amely a Rambus XDR memóriához csatlakozik. A memória interfész vezérlő (MIC) különálló az XIO makrótól, és az IBM tervezte. Az XIO-XDR kapcsolat tűnként 3,2 Gbit/s sebességgel működik. Két 32 bites csatornával elméleti maximum 25,6 GB/s érhető el.
A szintén Rambus tervezésű I/O interfész FlexIO néven ismert. A FlexIO interfész 12 sávra van szervezve, minden sáv egy egyirányú, 8 bites széles pont-pont útvonal. Öt 8 bit széles pont-pont útvonal a Cell-be bejövő sáv, míg a fennmaradó hét a kimenő sáv. Ez 2,6 GHz-en 62,4 GB/s elméleti csúcssávszélességet biztosít (36,4 GB/s kimenő, 26 GB/s bejövő). A FlexIO-interfész önállóan, tipikusan 3,2 GHz-es órajelen is működtethető. 4 bejövő + 4 kimenő sáv támogatja a memóriakoherenciát.