A Sun UltraSPARC új generációja: Rock
Hamarosan elkészül és jövőre már szerverekben a piacon is debütál a Sun Microsystems vadonatúj fejlesztésű mikroprocesszora, amelyet egyelőre Rock kódnéven ismerhetünk. A különleges kialakítású, tizenhat magos chip összesen hatvannégy programszál párhuzamos végrehajtására képes. Cikkünkben összefoglaljuk a Rock legfontosabb újdonságait.
Miért különleges a Rock? Az okokat a tervezési alapelvekben kell keresni. A processzor tervezési koncepciója az volt, hogy egy rendkívül erős többfonalas (multithread) végrehajtást és több magot is tartalmazó processzort készítsen a Sun, de úgy, hogy közben ne kelljen kompromisszumokat kötnie a nem multithreades alkalmazások teljesítménye terén sem. Sőt, ha már a processzor magjai több szál kezelésére is képesek, akkor ezen kontextusokkal probáljunk meg valami olyasmit is kezdeni, amit korábban még senki nem probált.
A Rock különlegessége, hogy összesen 16 magot tartalmaz, ami az univerzális, általános célú processzorok esetében mindenképpen világrekord. Minden mag négyutas szuperskalár architektúrájú, hat funkcionális egységgel. A magok négyes csoportokba szerveződnek és minden négy mag közösen használ egy 32kB nagyságú elsőszintű utasítás gyorsítótárat, mely ciklusonként 16 utasítás továbbítására alkalmas. A négy magból álló csoportok ugyancsak osztoznak egy 16 bankra osztott 32kB-os elsőszintű adat-gyorsítótáron.
Az elsőszintű adatcache minden bankja két olvasás és egy írás elvégzésére alkalmas minden órajelben. Az elsőszintű gyorsítótárak egy on-chip crossbar rendszeren keresztül négy 512 kilobájtos egységes, másodszintű on-chip gyorsítótárhoz kapcsolódnak. Minden másodszintű gyorsítótár bank 64 byte adat forgalmazására képes minden második ütemciklusban. A másodszintű gyorsítótár bankok közvetlenül kapcsolódnak egy-egy memória interfészhez, melyek mindegyike 9,6 GB/sec olvasási és 4,8 GB/sec írási sávszélességgel rendelkezik. A processzorhoz a memóriainterfészeken keresztül külső memóriavezérlők kapcsolódnak, melyek egyben az elosztott harmadszintű gyorsítótárat is kezelik.
A Sun Rock processzor felépítése
A Rock processzor nem elégszik meg a 16 mag nyújtotta párhuzamossággal, ezért minden magja két szálkontextust kezel szimultán többfonalas végrehajtási technológiával. A magok fonalainak futását azonban a nagy késleltetésű események, így például egy másodszintű gyorsítótár vagy egy TLB miss megállítja. Ezen események kiszolgálási ideje akár több száz ütemciklusig is eltarthat, mely nagyon hosszú idő lenne, ha nem végezne alatta semmi hasznosat a mag. Éppen ezért a Sun tervezői úgy döntöttek, hogy a magokban további fonál erőforrásokat is elhelyeznek: ez a processzor második különlegessége.
[oldal:Titkos segítők]
Minden mag két, ún. shadow, azaz árnyék fonalat is kezel. Az árnyékok a valódi fonalakkal párokat alkotnak és azokkal együtt futnak, vagyis teljes egészében követik a fonál normál üzemének kontextusát, akár az árnyékok a tárgyakat. Abban az esetben, amikor a processzor kénytelen a fonál futását felfüggeszteni, az árnyékok önálló életre kelnek és spekulatív módon tovább futtatják a fonál által reprezentált kontextust. Ez a futtatás számos teljesítmény növelő tevékenységre használható fel úgy, hogy közben nincs káros mellékhatása.
Az árnyékok kedvező hatása megmutatkozik az utasítás gyorsítótár és az ugráselőrejelző "trenírozásában", hiszen az árnyék fonál is folyamatosan olvassa és dekódolja a fonál kontextusának jövőbeli utasításait, így frissíti és tanítja a gyorsítótárat és az elágazásbecslő logikát. A dekódolás során az árnyék másra is képes, hiszen az adatbetöltő (load) utasításokat ártalmatlan, de igen hasznos prefetch-ekké konvertálja, melyek aztán az adat gyorsítótárat frissítik.
Ha ezek után a fonál futását átmenetileg gátló esemény teljesül és a tényleges fonál végrehajtása újra tud indulni, úgy abban a kellemes meglepetésben lesz része, hogy mind az utasítás, mind az adat gyorsítótárban igen jó eséllyel számos utasítás és adat azonnal megtalálható lesz, vagyis a fonál hosszabb ideig lesz képes újabb "megakadás" nélkül futni. Az árnyékok mivel valójában nem hajtanak végre utasításokat, csak dekódolják azokat, ezért igen mélyen képesek a fonál "jövőjébe" tekinteni. A jövőbetekintés mélysége a Sun szimulációi szerint általában sok száz, de akár ezres nagyságrendű utasítás is lehet, melynek hatása a fonál futási teljesítménye szempontjából óriási.
Az árnyék fonalak felfoghatóak úgy is, mint egy limitált képességekkel bíró soron kívüli végrehajtási (out-of-order) motor, melynek ablaka több száz, vagy akár ezres nagyságrendű utasítás is lehet. Az árnyékok szépsége pont ebben rejlik, hiszen napjaink legfejlettebb soron kívüli végrehajtási technológiát támogató processzorai is csak 120-150 utasítás nagyságú ablakban dolgoznak.
Az árnyékok azonban még ennél is többre képesek, ha egy kisebb hardveres segítséget is adunk nekik. Ha dekódoljuk az utasításokat, akkor találhatunk olyanokat, melyeket akár végre is lehet hajtani, hiszen a végrehajtásukhoz szükséges adatok már rendelkezésre állnak, vagyis bent vannak a gyorsítótárakban. Ha minden adatunk megvan akkor az ilyen utasítások biztosan nem függenek korábbi utasításoktól, vagyis valóban végrehajthatóak. Ha találunk még egy szabad végrehajtó egységet is -- amit általában lehet találni egy modern processzorban -- akkor semmi akadálya nincs, hogy ezt az utasítást előre végrehajtsuk.
Nos, a Rock magjainak árnyék fonalai képesek erre, mert futásukat egy kisebb átmeneti tároló támogatja, melybe pontosan az ilyen független utasítások végrehajtási eredményeit lehet eltárolni. Később, ha a fonál futását akadályozó esemény teljesül és a mag folytatja a végrehajtást ott, ahol abbahagyta, sok esetben kellemes meglepetések érik, hiszen bizonyos utasítások eredménye már az átmeneti tárolóban megvan, így azokat nem kell újra végrehajtani, hanem csupán át kell venni az eredményeket.
A folyamat persze nem ennyire egyszerű, számos buktatóra figyelnie kell a mag vezérlő elektronikájának. Ha egy ugrást tévesen becsült a prediktor és így az árnyék is hibás irányban hajtotta végre az utasításokat, úgy az átmeneti tároló eredményeit el kell dobni. A logikának figyelnie kell a futás közben megváltozó memória tartalmakat is és az attól függő utasításokat nem hajthatja végre, még akkor sem, ha látszólag megvan a memória tartalma valamelyik gyorsítótárban. Ugyanakkor az árnyékok képességei által keletkező teljesítmény növekedés óriási lehet, meglepő módon még alacsony órajelek mellett is -- noha a Rock középkategóriásnak számít majd ezen a téren, mert 2,5 GHz környéki órajellel fog megjelenni.
Kellemes meglepetés az is, hogy a támogató logika, mely ezt a látszólag egyszerű, de valójában eléggé komplex megoldást elvégzi, nem túl nagy, kényelmesen elfér mind a 16 magon, s csak pár százalék terület növekedést okoz. Sőt, az árnyékok jövőbe látó utasítás végrehajtási képessége még újabb teljesítmény növelő technológiákat is magával tud hozni. A Rock későbbi változatainak tervei között CPU-ba integrált spekulatív parallelizáció, vagyis az egyszálú programok automatikus párhuzamosítása és az eredmény becslés is szerepel.
Fischer Erik
Principal Engineer
Sun Microsystems
Véleménye van?