Cell (mikroprotsessor)

**Cell** on mitmetuumaline mikroprotsessori arhitektuur, milles on kombineeritud üldotstarbeline keskmise võimekusega Poweri arhitektuuril kesktöötlusseade ning kaastöötlusseadmed, mis kiirendavad tuntavalt multimeedia ja vektortöötluse programme.

Selle on välja töötanud Sony, Toshiba ja IBM (nende firmade liit on tuntud kui STI). Algne arhitektuuri väljatöötamine ja rakendamine leidsid aset STI arenduskeskuses Texases nelja aasta jooksul. Arendus algas 2001. aasta märtsis ligikaudse eelarvega 400 miljonit USD. Cell on lühivariant täielikust nimetusest **Cell Broadband Engine Architecture**, mida lühendatakse ka kui **CBEA** või **Cell BE**.

Celli protsessori esimene suur kommertsrakendus oli Sony mängukonsool PlayStation 3. Mercury Systems toodab mitmeid seadmeid, näiteks servereid ja PCIe kiirenduskaarte, mis kasutavad Celli protsessoreid. Toshiba kavatses kasutada Celli kõrglahutusega telerites, kuid hiljem siiski loobus sellest kavatsusest. Celli silmapaistvamad omadused, nagu XDR DRAM ja Element Interconnect Bus (EIB), võivad kindlustada protsessorile tuleviku superarvutite valdkonnas. Celli arhitektuur sisaldab mälukoherentsusarhitektuuri, mis annab läbilaskevõimele suurema prioriteedi kui latentsusele ning eelistab suuremat jõudlust lihtsamale programmeerimisele. Sel põhjusel loetakse Celli väljakutset pakkuvaks keskkonnaks tarkvaraarendajatele.

## Ajalugu

2000. aastal moodustasid Sony Computer Entertainment, Toshiba Corporation ja IBM liidu, mis on tuntud kui STI, mille eesmärk oli Celli mikroprotsessori arendus ja tootmine.

STI arenduskeskus avati märtsis 2001. Celli arendus kestis neli aastat ning selles osales kokku üle 400 inseneri kõigist kolmest firmast. Perioodi jooksul võttis IBM mitmeid patente, mis puudutavad nii Celli arhitektuuri, tootmisprotsessi kui ka tarkvarakeskkonda. Varajane patenteeritud variant Broadband Engine'ist koosnes neljast "töötluselemendist", mis olid patendis kirjeldatud kui praegu tuntud Power Processing Elementid (PPE). Iga element koosnes 8 APUst, mida praegusel Cellil tuntakse kui SPE. Protsessor töötas kiirusel 4&nbsp;GHz ja 32 APUga, millest igaühe arvutusjõudlus oli 32 GFLOPS (FP8 täpsusega). Seega oli protsessori kogujõudlus lähedane 1 TFLOPSile. Protsessor valmistati 90&nbsp;nm tehnoloogias.

Mais 2005 kinnitas Sony Computer Entertainment osa Celli protsessori spetsifikatsioonist, mis sisaldub tulevases PlayStation 3 mängukonsoolis. Nimetatud protsessoris on üks SPE reserveeritud konsooli operatsioonisüsteemi jaoks, üks SPE on reserveeritud ning kuut SPE-d kasutab mängude programm. Protsessor töötab 3,2&nbsp;GHz taktsagedusel ning selle valmistas IBM, kasutades 90&nbsp;nm tehnoloogiat.

Juunis 2005 teatasid IBM ja Mercury Systems partnerlusleppest, et luua manusarvutisüsteeme meditsiinilises piltdiagnostikas, lennunduses, telekommunikatsioonis ja kaitsesüsteemides kasutamiseks. Sellest ajast on Mercury Systems tootnud labaservereid, seadmepüstiku servereid ja PCIe kiirenduskaarte.

Sügisel 2006 esitles IBM QS20 labamoodulit, millel on kaks Cell BE protsessorit, mis võimaldavad kogujõudlust 410 GFLOPS FP8 täpsusega mooduli kohta.

Märtsis 2007 teatas IBM, et Cell BE protsessorit toodetakse 65&nbsp;nm tehnoloogias nende tehases East Fishkillis New Yorgis.

Veebruaris 2008 teatas IBM, et hakkab tootma Celli protsessorit 45&nbsp;nm tehnoloogiat kasutades.

Aprillis 2008 tutvustas Fixstars Corporation PCIe kiirenduskaarti, mis põhineb PowerXCell 8i protsessoril.

Mais 2008 esitles IBM esimest topelttäpsusega ujukoma versiooni protsessorist, PowerXCell 8i, mis oli valmistatud 65&nbsp;nm tehnoloogiat kasutades.

Mais 2008 sai Opteroni protsessoril ning PowerXCell 8i-l (QS22 labamoodulitel) põhinevast IBM RoadRunner superarvutist esimene superarvuti, mille jõudlus ületas 1 PFLOPS. IBM RoadRunner oli maailma kiireim arvuti kuni 2009. aasta kolmanda kvartalini, kui kiireimaks arvutiks sai Cray Jaguar.

Augustis 2008 esitles Sony ZEGO meediatöötlusserverit, mis kasutab 3,2&nbsp;GHz taktsagedusel töötavat Cell BE protsessorit.

Augustis 2009 jõudis müügile PlayStation 3 Slim, mis sisaldas 45&nbsp;nm tehnoloogias valmistatud Cell BE protsessorit.

Novembris 2009 teatas IBM, et Celli protsessori aktiivne arendus on lõppenud.

## Ülevaade
**Cell Broadband Engine** on mikroprotsessor, mis sisaldab üldotstarbelist kesktöötlusseadet (sarnaneb näiteks Athlon 64 ja Core 2 protsessoritega) ja kõrge jõudlusega spetsialiseeritud protsessoreid (sarnanevad NVIDIA ja ATI graafikaprotsessoritega). Selline protsessor on sobilik kasutamiseks rakendustes, kus on vajalik suur jõudlus ning kus on võimalik arvutusi teha paralleelselt, näiteks digitaalne pildi- ja videotöötlus ning füüsiliste protsesside simuleerimine.

Celli protsessori saab põhimõtteliselt jagada neljaks eraldi osaks: välised sisend-väljundliidesed, põhiprotsessor (*Power Processing Element* – PPE), kaheksa kaastöötlusseadet (*Synergistic Processing Element* – SPE) ja spetsiaalseks kõrge läbilaskevõimega tsirkulaarseks andmesiiniks (*Element Interconnect Bus* – EIB), mis ühendab sisend-väljundelemendid, põhiprotsessori ja kaasprotsessorid omavahel.

Igal PPE-l ja SPE-l on oma DMA-kontroller, mille abil on võimalik andmete lugemine/kirjutamine nii põhimällu kui ka muudele andmekandjatele. Erinevalt PPE-st, millel on olemas lugemise/kirjutamise käsud nii põhimällu kui ka iga SPE kohalikku mällu pöördumiseks, on SPE-l võimalik põhimälu poole pöörduda ainult DMA operatsiooni kasutades. Üks DMA operatsioon on võimeline lugema/kirjutama kuni 2048 mäluplokki, mille suurus võib ulatuda kuni 16 kB-ni.

PPE peal töötab tavaliselt operatsioonisüsteem, millel on kontroll SPE-de üle ning mis saab alustada, peatada, planeerida ja katkestada SPE peal töötavaid protsesse. Nii PPE kui SPE on mõlemad kärbitud käsustikuga protsessorid, millel on 32-bitine käsuformaat. PPE-l on 64-bitised üldotstarbelised registrid, 64-bitised ujukomaregistrid ja 128-bitised Altiveci registrid. SPE-del on ainult 128-bitised registrid. Süsteemi mäluaadressid on 64-bitised.

### PowerXCell 8i
Aastal 2008 tutvustas IBM Celli uuendatud versiooni PowerXCell 8i, mis on valmistatud 65&nbsp;nm tehnoloogias ning millele on lisatud kuni 32 GB DDR2 RAMi tugi, sellel on ka tunduvalt suurem jõudlus topelttäpsusega ujukomaarvutustes (kuni 102,4 GFLOPS enam). Maailma kiireim superarvuti aastatel 2008–2009, IBM RoadRunner, sisaldas 12 240 PowerXCell 8i protsessorit ja 6562 AMD Opteron protsessorit. PowerXCell 8i protsessorit kasutavad ka kuus kõige "rohelisemat" superarvutit Green500 nimekirjas.

## Arhitektuur
Kuigi on olemas eri konfiguratsioonidega Celli mikroprotsessoreid, on nende aluseks konfiguratsioon, kus on põhiprotsessor (PPE), mitu kaasprotsessorit (SPE) ning neid omavahel ühendav andmesiin (EIB).

### Power Processor Element (PPE)
PPE on Power arhitektuuril baseeruv mitmelõimeline protsessorituum, millel on 23-astmeline konveier ning mille peamiseks ülesandeks on juhtida kaheksat Celli protsessoris sisalduvat SPE-d. PPE suudab töötada levinud operatsioonisüsteemidega tänu oma sarnasusele teiste 64-bitiste PowerPC protsessoritega. PPE-l on 64 KiB L1-vahemälu (32 KiB käskudele ning 32 KiB andmetele) ja 512 KiB L2-vahemälu. Vahemälu rea pikkus on 128 baiti. PPE on võimeline tegema kaks topelttäpsusega operatsiooni iga taktiga, mis on võrdne jõudlusega 6,4 GFLOPS (taktsagedusel 3,2&nbsp;GHz) või kaheksa tavatäpsusega operatsiooni iga taktiga, mis on võrdne jõudlusega 25,6 GFLOPS (taktsagedusel 3,2&nbsp;GHz). Celli protsessori arenduse käigus arendas IBM Microsofti palvel nende Xbox 360 jaoks kolmetuumalise Xenon protsessori, mis baseerub vähesel määral muudetud PPE-l, millele on lisatud VMX128 laiendus.

### Synergistic Processing Element (SPE)
Iga SPE sisaldab töötlusseadet (*Synergistic Processing Unit* – SPU) ja mälukontrollerit (*Memory Flow Controller* – MFC). SPE-del puudub siirete ennustusriistvara. Igal SPE-l on kuus teostamisüksust, mis on jagatud kahe SPE konveieri vahel. Tänapäevasel Celli põlvkonnal on igal SPE-l 256 KiB staatilist RAM-mälu. SPE-l on 128-realine registrifail, iga registri pikkus on 128 bitti. SPE suudab teostada 16 operatsiooni 8-bitiste täisarvudega, 8 operatsiooni 16-bitiste arvudega, 4 operatsiooni 32-bitiste arvudega või 4 operatsiooni tavatäpsusega ujukomaarvudega ühe takti jooksul.

Tüüpilisel kasutusel laaditakse igasse SPE üksusse erinev programm, mis teostab mingi osa keerulisemast ülesandest, näiteks võib DVD-mängija puhul üks SPE tegeleda plaadi lugemisega, üks video dekodeerimisega, üks heli dekodeerimisega jne. Teise võimalusena võib suure hulga sisendandmeid jagada mitme SPE vahel, et neid paralleelselt töödelda.

Toshiba on välja töötanud kaasprotsessori SpursEngine. See koosneb neljast SPE-st, kuid ei sisalda PPE-d. See on mõeldud videoefektide jaoks ja 3D-kiirenduseks kasutajaelektroonikas.

IBM testid näitavad, et SPE-d suudavad väga hästi optimeeritud programmidega, mis teostavad paralleelseid maatrikskorrutamisi, saavutada 98% oma teoreetilisest maksimumjõudlusest.

### Element Interconnect Bus (EIB)
EIB ühendab eraldiseisvaid protsessori osasid omavahel. Tegemist on ringikujulise siiniga, mis koosneb neljast ühesuunalisest "ringist". Iga "ring" on 128-bitine ning andmed liiguvad paarikaupa vastassuunas. EIB töötab kaks korda madalamal taktsagedusel kui ülejäänud süsteem ning iga kanal on võimeline teostama kuni kolm andmeedastusoperatsiooni korraga. Reeglina on siinil 12 üksust: PPE, kaheksa SPE-d, mälukontroller ja kaks sideüksust. Kuna andmeedastus siinil toimub "hüpetena" ühest üksusest teise, on maksimaalne hüpete arv kahe üksuse vahel kuus. Siini maksimaalne teoreetiline läbilaskevõime 3,2&nbsp;GHz protsessori taktsageduse juures on 204,8 GB/s.

### Mälu ja sisend-väljundliides
Cell suhtleb välise XDR operatiivmäluga kahekanalise Rambus XIO liidese abil. Mälukontroller on XIO liidesest eraldi ning selle on disaininud IBM. Mäluliidese teoreetiline maksimaalne läbilaskevõime on 25,6 GB/s.

Sisend-väljundliides on tuntud ka kui FlexIO. FlexIO liides on organiseeritud 12 kanalina, millest iga kanal on 8 bitti lai ühesuunaline ühendus. Viis kanalit sisenevad Celli protsessorisse ning ülejäänud seitse töötavad väljunditena. FlexIO liidest on võimalik takteerida eraldi ülejäänud protsessorist.

## Viited