Cell (mikroprosessori)

Cell-sirulla voi olla useita eri kokoonpanoja, mutta peruskokoonpano on moniytiminen siru, joka koostuu yhdestä ”tehoprosessorielementistä” (”PPE”) (toisinaan ”prosessorielementti” tai ”PE”) ja useammasta ”synergistisestä prosessorielementistä” (Synergistic Processing Elements, ”SPE”). PPE:t ja SPE:t on yhdistetty toisiinsa sisäisellä nopealla väylällä, jota kutsutaan nimellä ”Element Interconnect Bus” (”EIB”).

Power Processor Element (PPE)Edit

Pääartikkeli: Power Processing Element

PPE on PowerPC:hen perustuva, kaksoistoiminnolla varustettu, järjestyksessä kaksisuuntainen simultaanisesti monisäikeistetty prosessoriydin, jonka 23-vaiheinen putkisto toimii ohjaimena kahdeksalle SPE:lle, jotka käsittelevät suurimman osan laskennallisesta työmäärästä. PPE:llä on rajoitetut järjestyksen ulkopuoliset suoritusominaisuudet; se voi suorittaa kuormia järjestyksen ulkopuolella ja sillä on viivästetyt suoritusputket. PPE toimii tavanomaisten käyttöjärjestelmien kanssa, koska se on samanlainen kuin muut 64-bittiset PowerPC-prosessorit, kun taas SPE:t on suunniteltu vektoroidun liukulukukukoodin suorittamiseen. PPE:ssä on 64 KiB:n tason 1 välimuisti (32 KiB:n käsky- ja 32 KiB:n datavälimuisti) ja 512 KiB:n tason 2 välimuisti. Välimuistirivin koko on 128 tavua. Lisäksi IBM on sisällyttänyt AltiVec-yksikön (VMX), joka on täysin putkitettu yhden tarkkuuden liukulukuja varten (Altivec 1 ei tue kaksoistarkkuuden liukulukuvektoreita.), 32-bittisen kiintopisteyksikön (FXU), jossa on 64-bittinen rekisteritiedosto säikeittäin, lataus- ja varastointiyksikön (LSU), 64-bittisen liukulukuyksikön (FPU), haarautumisyksikön (BRU) ja haarautumissuoritusyksikön (BXU).PPE koostuu kolmesta pääyksiköstä: Instruction Unit (IU), Execution Unit (XU) ja vector/scalar execution unit (VSU). IU sisältää L1-käskyvälimuistin, haarautumisen ennustamislaitteiston, käskypuskurit ja riippuvuuden tarkistuksen kirjautumisen. XU sisältää kokonaislukujen suoritusyksikön (FXU) ja latausvarastoyksikön (LSU). VSU sisältää kaikki FPU:n ja VMX:n suoritusresurssit. Kukin PPE voi suorittaa kaksi kaksoistarkkuusoperaatiota kellosykliä kohti käyttämällä skalaarista fuusio-multiply-add-käskyä, mikä vastaa 6,4 GFLOPSia 3,2 GHz:n kellotaajuudella, tai kahdeksan yksitarkkuusoperaatiota kellosykliä kohti käyttämällä vektorista fuusio-multiply-add-käskyä, mikä vastaa 25 GFLOPSia.6 GFLOPS 3,2 GHz:n kellotaajuudella.

Xenon Xbox 360:ssäEdit

PPE suunniteltiin nimenomaan Cell-prosessoria varten, mutta kehitystyön aikana Microsoft lähestyi IBM:ää, joka halusi Xbox 360:eensa tehokkaan prosessoriytimen. IBM suostui ja valmisti kolmiytimisen Xenon-prosessorin, joka perustui PPE:n hieman muokattuun versioon, johon oli lisätty VMX128-laajennuksia.

Synergistiset prosessointielementit (SPE)Edit

Jokainen SPE on järjestyksessä kaksoiskysymyksiä käsittelevä prosessori, joka koostuu ”Synergistisestä prosessointiyksiköstä” (Synergistic Processing Unit, SPU) ja ”Muistivirtaohjaimesta” (Memory Flow Controller, MFC) (DMA, MMU ja väyläliitäntä). SPE:ssä ei ole haarautumisen ennustamislaitteistoa (joten kääntäjälle aiheutuu suuri taakka). Kussakin SPE:ssä on 6 suoritusyksikköä, jotka on jaettu parittomien ja parillisten putkistojen kesken kussakin SPE:ssä : SPU käyttää erityisesti kehitettyä käskykokonaisuutta (ISA), jossa on 128-bittinen SIMD-organisaatio yhden ja kahden tarkkuuden käskyjä varten. Nykyisessä Cell-sukupolvessa kussakin SPE:ssä on 256 kilotavun upotettu SRAM-muisti käskyjä ja dataa varten, jota kutsutaan nimellä ”Local Storage” (ei pidä sekoittaa ”Local Memory” (paikallismuisti) Sonyn asiakirjoissa, joissa viitataan VRAM-muistiin), joka on näkyvissä PPE:lle, ja sitä voidaan osoitteistaa suoraan ohjelmistolla. Kukin SPE voi tukea jopa 4 GiB:n suuruista paikallista tallennusmuistia. Paikallinen muisti ei toimi kuten perinteinen prosessorin välimuisti, koska se ei ole läpinäkyvä ohjelmistolle eikä se sisällä laitteistorakenteita, jotka ennustavat, mitä tietoja ladataan. SPE:t sisältävät 128-bittisen, 128-alkuisen rekisteritiedoston, ja niiden koko on 14,5 mm2 90 nm:n prosessissa. SPE voi toimia kuudellatoista 8-bittisellä kokonaisluvulla, kahdeksalla 16-bittisellä kokonaisluvulla, neljällä 32-bittisellä kokonaisluvulla tai neljällä yhden tarkkuuden liukuluvulla yhdessä kellojaksossa, samoin kuin muistioperaatiolla. Huomaa, että SPU ei voi käyttää suoraan järjestelmän muistia; SPU:n muodostamat 64-bittiset virtuaaliset muistiosoitteet on välitettävä SPU:lta SPE:n muistivirtaohjaimelle (MFC) DMA-operaation asettamiseksi järjestelmän osoiteavaruuteen.

Yksi tyypillisessä käyttöskenaariossa järjestelmä lataa SPE:t pienillä ohjelmilla (jotka muistuttavat säikeitä) ja ketjuttaa SPE:t toisiinsa, jotta ne voivat käsitellä jokaista vaihetta monimutkaisessa operaatiossa. Esimerkiksi digisovitin voi ladata ohjelmia DVD-levyn lukemiseen, videon ja äänen dekoodaukseen ja näyttöön, ja data siirtyy SPE:ltä SPE:lle, kunnes se lopulta päätyy televisioon. Toinen mahdollisuus on jakaa syöttötietojoukko osiin, jolloin useat SPE:t suorittavat samantyyppisiä toimintoja rinnakkain. 3,2 GHz:n kellotaajuudella kukin SPE tuottaa teoreettisesti 25,6 GFLOPS:n yksitarkkuussuorituskyvyn.

Cell-prosessorin suhteellisen korkea liukulukusuoritus näyttää olevan Pentium 4:n ja Athlon 64:n kaltaisten prosessoreiden SIMD-yksikön kyvyissä kääpiönä verrattuna henkilökohtaisten tietokoneiden aikalaisiinsa. Järjestelmän pelkkien liukulukutaitojen vertailu on kuitenkin yksiulotteinen ja sovelluskohtainen mittari. Toisin kuin Cell-prosessori, tällaiset pöytätietokoneiden suorittimet soveltuvat paremmin yleiskäyttöisiin ohjelmistoihin, joita yleensä käytetään henkilökohtaisissa tietokoneissa. Sen lisäksi, että Intelin ja AMD:n prosessorit suorittavat useita käskyjä kelloa kohden, niissä on myös haarautumisen ennakoijat. Cell on suunniteltu kompensoimaan tämä kääntäjän avulla, jossa luodaan prepare-to-branch-käskyjä. Kaksoistarkkuuden liukulukuoperaatioissa, joita joskus käytetään henkilökohtaisissa tietokoneissa ja usein tieteellisessä laskennassa, Cellin suorituskyky laskee kertaluokkaa, mutta saavuttaa silti 20,8 GFLOPSia (1,8 GFLOPSia SPE:tä kohti, 6,4 GFLOPSia PPE:tä kohti). PowerXCell 8i -muunnos, joka on suunniteltu erityisesti kaksoistarkkuutta varten, saavuttaa 102,4 GFLOPS:ia kaksoistarkkuuslaskennassa.

IBM:n tekemät testit osoittavat, että SPE:t voivat saavuttaa 98 prosenttia teoreettisesta huippusuorituskyvystään optimoidun rinnakkaisen matriisikerronnan avulla.

Toshiba on kehittänyt SpursEngine-nimisen rinnakkaisprosessorin, joka toimii neljällä SPE:llä, mutta ei PPE:llä, ja joka on suunniteltu kiihdyttämään 3D- ja elokuvatehosteita kuluttajaelektroniikassa.

Kullakin SPE:llä on 256 kilotavun lähimuisti. Kaikkiaan SPE:llä on 2 Mt paikallismuistia.

Element Interconnect Bus (EIB)Edit

EIB on Cell-prosessorin sisäinen tietoliikenneväylä, joka yhdistää eri piirissä olevat järjestelmäelementit: PPE-prosessorin, muistinohjaimen (MIC), kahdeksan SPE:n rinnakkaisprosessoria ja kaksi piirin ulkopuolista I/O-liitäntää, eli PS3:ssa on kaikkiaan 12 osallistujaa (SPU:iden määrä voi vaihdella teollisuussovelluksissa). EIP sisältää myös välimiesyksikön, joka toimii liikennevalojen sarjana. Joissakin asiakirjoissa IBM viittaa EIP:n osallistujiin ”yksiköinä”.

EIB on tällä hetkellä toteutettu pyöreänä renkaana, joka koostuu neljästä 16 tavun levyisestä yksisuuntaisesta kanavasta, jotka pyörivät vastakkain pareittain. Liikennemallien salliessa kukin kanava voi välittää enintään kolme transaktiota samanaikaisesti. Koska EIP toimii puolet järjestelmän kellotaajuudesta, tehollinen kanavanopeus on 16 tavua kahden järjestelmäkellon välein. Suurimmalla samanaikaisuudella, kun kullakin neljällä renkaalla on kolme aktiivista transaktiota, EIP:n hetkellinen kaistanleveyden huippuarvo on 96 tavua per kello (12 samanaikaista transaktiota × 16 tavun levyinen / 2 järjestelmäkelloa per siirto). Vaikka tämä luku mainitaan usein IBM:n kirjallisuudessa, on epärealistista skaalata tämä luku yksinkertaisesti prosessorin kellotaajuudella. Arbitraatioyksikkö asettaa lisärajoituksia.

IBM:n vanhempi insinööri David Krolak, EIB:n johtava suunnittelija, selittää samanaikaisuusmallia:

Rengas voi aloittaa uuden operaation kolmen syklin välein. Jokainen siirto kestää aina kahdeksan lyöntiä. Se oli yksi yksinkertaistuksista, jonka teimme, se on optimoitu suuren datamäärän suoratoistoon. Jos teet pieniä opsia, se ei toimi aivan yhtä hyvin. Jos ajattelet kahdeksanvaunuisia junia, jotka kulkevat tätä rataa pitkin, niin kauan kuin junat eivät törmää toisiinsa, ne voivat olla rinnakkain radalla.

Kullakin EIB:n osallistujalla on yksi 16 tavun luku- ja yksi 16 tavun kirjoitusportti. Yhden osallistujan rajoituksena on lukea ja kirjoittaa 16 tavua EIP:n kelloa kohti (yksinkertaisuuden vuoksi usein pidetään 8 tavua järjestelmän kelloa kohti). Jokaisessa SPU-prosessorissa on oma DMA-hallintajono, joka pystyy ajoittamaan pitkiä transaktiosarjoja eri päätepisteisiin häiritsemättä SPU:n käynnissä olevia laskutoimituksia; näitä DMA-jonoja voidaan hallinnoida myös paikallisesti tai etänä, mikä tuo lisää joustavuutta hallintamalliin.

Data kulkee EIB-kanavalla asteittain renkaan ympäri. Koska osallistujia on kaksitoista, askelten kokonaismäärä kanavan ympäri takaisin lähtöpisteeseen on kaksitoista. Kuusi askelta on pisin etäisyys minkä tahansa osallistujaparin välillä. EIP-kanava ei saa välittää dataa, joka vaatii enemmän kuin kuusi askelta; tällaisen datan on kuljettava lyhyempää reittiä ympyrän ympäri toiseen suuntaan. Paketin lähettämiseen liittyvien askelten lukumäärällä on hyvin vähän vaikutusta siirtoviiveeseen: askelia ohjaava kellotaajuus on hyvin nopea suhteessa muihin seikkoihin. Pidemmät tiedonsiirtomatkat vaikuttavat kuitenkin haitallisesti EIP:n kokonaissuorituskykyyn, koska ne vähentävät käytettävissä olevaa samanaikaisuutta.

Huolimatta IBM:n alkuperäisestä halusta toteuttaa EIB tehokkaampana poikkipalkkina, heidän resurssien säästämiseksi omaksumansa ympyräkokoonpano on harvoin rajoittava tekijä koko Cell-piirin suorituskyvylle. Pahimmassa tapauksessa ohjelmoijan on oltava erityisen huolellinen ajoittaessaan kommunikaatiokuvioita, joissa EIB pystyy toimimaan korkeilla samanaikaisuustasoilla.

David Krolak selitti:

Alussa, kehitysprosessin alkuvaiheessa, useat ihmiset painostivat ristikkokytkennän puolesta, ja väylän suunnittelutavan mukaan EIB:n voisi itse asiassa vetää pois ja laittaa ristikkokytkennän sisään, jos haluttaisiin uhrata enemmän piitilaa piirillä johdotuksille. Meidän oli löydettävä tasapaino liitettävyyden ja pinta-alan välille, ja tilaa ei vain ollut tarpeeksi täydellisen crossbar-kytkimen asentamiseen. Niinpä päädyimme tähän rengasrakenteeseen, joka on mielestämme erittäin mielenkiintoinen. Se mahtuu pinta-alarajoitusten sisään ja tarjoaa silti erittäin vaikuttavan kaistanleveyden.

Kaistanleveyden arviointi Muokkaa

3,2 GHz:n taajuudella kukin kanava kulkee 25,6 Gt/s nopeudella. Kun EIP:tä tarkastellaan erillään sen yhdistämistä järjestelmäelementeistä, kahdentoista samanaikaisen tapahtuman saavuttaminen tällä virtausnopeudella tarkoittaa, että EIP:n abstrakti kaistanleveys on 307,2 GB/s. Tähän näkemykseen perustuen monissa IBM:n julkaisuissa EIP:n käytettävissä oleva kaistanleveys on ”yli 300 GB/s”. Tämä luku kuvastaa EIP:n hetkellistä huippukaistanleveyttä, joka on skaalattu prosessorin taajuudella.

Väylään hyväksyttyjen pakettien sovittelumekanismiin liittyy kuitenkin muita teknisiä rajoituksia. IBM Systems Performance -ryhmä selitti:

Jokainen EIB:n yksikkö voi lähettää ja vastaanottaa samanaikaisesti 16 tavua dataa joka väyläjaksolla. Koko EIB:n maksimidatakaistanleveyttä rajoittaa osoitteiden nuuskimisen enimmäisnopeus kaikissa järjestelmän yksiköissä, joka on yksi osoite väyläjaksoa kohti. Koska jokainen nuuskittava osoitepyyntö voi mahdollisesti siirtää jopa 128 tavua, EIP:n teoreettinen maksimidatakaistanleveys 3,2 GHz:n taajuudella on 128Bx1,6 GHz = 204,8 Gt/s.

Tämä sitaatti edustaa ilmeisesti koko IBM:n julkista tietoa tästä mekanismista ja sen vaikutuksista. IBM:n toistaiseksi julkistetussa dokumentaatiossa ei ole hyvin kuvattu EIP:n sovitteluyksikköä, snooping-mekanismia eikä keskeytysten tuottamista segmentti- tai sivukäännösvirheiden yhteydessä.

Käytännössä EIP:n tehokasta kaistanleveyttä voivat rajoittaa myös mukana olevat rengasosapuolet. Vaikka kukin yhdeksästä prosessoriytimestä voi ylläpitää 25,6 GB/s luku- ja kirjoitusnopeutta samanaikaisesti, muistiliitännän ohjain (MIC) on kytketty pariin XDR-muistikanavaan, mikä mahdollistaa 25,6 GB/s maksimivirran luku- ja kirjoitusnopeuden yhdistettynä, ja molempien IO-ohjainten on dokumentoitu tukevan yhteenlaskettua huipputulonopeutta 25,6 GB/s ja yhteenlaskettua huippulähdönopeutta 35 Gt/s.

Sekaannusta lisää se, että joissakin vanhemmissa julkaisuissa mainitaan EIB-kaistanleveys olettaen, että järjestelmäkellotaajuudeksi oletetaan 4 GHz:n kellotaajuudella toimiva järjestelmä. Tästä viitekehyksestä saadaan EIP:n hetkelliseksi kaistanleveydeksi 384 GB/s ja arbitraatiorajoitetuksi kaistanleveydeksi 256 GB/s.

Kaiken kaikkiaan useimmiten mainittu teoreettinen 204,8 GB/s on paras pitää mielessä. IBM:n Systems Performance -ryhmä on osoittanut SPU-keskeisten tietovirtojen saavuttavan 197 GB/s nopeuden 3,2 GHz:n kellotaajuudella toimivalla Cell-prosessorilla, joten tämä luku kuvastaa reilusti myös käytäntöä.

Muisti- ja I/O-ohjaimetMuutos

Cellissä on kaksikanavainen Rambus XIO-makro, joka on liitetty Rambus XDR -muistiin. Muistiliitäntäohjain (MIC) on XIO-makrosta erillinen ja IBM:n suunnittelema. XIO-XDR-linkki toimii 3,2 Gbit/s nopeudella nastaa kohti. Kahdella 32-bittisellä kanavalla voidaan saavuttaa teoreettinen maksimi 25,6 Gt/s.

I/O-liitäntä, joka on myös Rambuksen suunnittelema, tunnetaan nimellä FlexIO. FlexIO-rajapinta on järjestetty 12 kaistaan, joista jokainen on yksisuuntainen 8 bitin levyinen point-to-point-polku. Viisi 8 bittiä leveää pisteestä pisteeseen -väylää on Celliin saapuvia väyliä, kun taas loput seitsemän ovat lähteviä väyliä. Näin saadaan teoreettinen 62,4 GB/s:n huippukaistanleveys (36,4 GB/s ulospäin, 26 GB/s sisäänpäin) 2,6 GHz:n taajuudella. FlexIO-liitäntä voidaan kellottaa itsenäisesti, tyypillisesti 3,2 GHz:n taajuudella. 4 saapuvaa + 4 lähtevää kaistaa tukevat muistikoherenssia.

Vastaa

Sähköpostiosoitettasi ei julkaista.