A TRIPS egy mikroprocesszor-architektúra volt, melyet a Texasi Egyetem egy kutatócsoportja tervezett az IBM, Intel és a Sun Microsystems vállalatokkal együttműködve. A fejlesztés fő szponzora a DARPA volt. A TRIPS egy olyan utasításkészlet-architektúrát alkalmaz, melyben az utasítássorozatokat nagy utasításcsoportokra bontják fel (gráfok), és ezeket a csoportokat független feldolgozóelemek hajtják végre. Az architektúra a kapcsolódó adatokat gráfokba gyűjti össze, igyekezve elkerülni a költséges adatolvasásokat és -írásokat, és az adatokat a feldolgozóelemek közelében lévő nagy sebességű memóriában tárolja. A prototípus TRIPS processzor 16 ilyen feldolgozóelemet tartalmaz. A TRIPS deklarált célja volt, hogy egyetlen processzoron elérje az -os teljesítményt (a 2003-tól 2006-ig publikált cikkek szerint).

A TRIPS projekt 2001-től körülbelül 2010-ig tartott, mikor a projekt aktív szakasza lezárult, a kifejlesztett szoftvereszközök és szimulátorok hivatalos támogatása és terjesztése megszűnt.

EDGE

A TRIPS az explicit adatgráf végrehajtás (EDGE) fogalmán alapuló processzor. Az EDGE célja a modern rendszerekben fennálló bizonyos teljesítménybeli szűk keresztmetszetek elkerülése.

Az EDGE tervezési elv azon alapul, hogy a processzor jobban képes értelmezni a hozzá továbbított utasításfolyamot, ha azt nem az utasítások lineáris sorozataként értelmezi, hanem az adott feladathoz kapcsolódó, elkülönített adatokat felhasználó utasításblokkokra bontja. Az EDGE megpróbálja az utasításokat egy blokként végrehajtani, belsőleg elosztva azokat a feldolgozásukhoz szükséges adatokkal együtt. A fordítóprogramok megvizsgálják a kódot és megkeresik azokat a kódblokkokat, amelyek meghatározott módon cserélnek információkat. Ezután lefordított „hiperblokkokká” állítják össze és továbbítják a CPU-ba. Mivel a fordítóprogram garantálja, hogy ezen blokkok között fennálljanak a specifikus kölcsönös függőségek, a processzor a kódot egyetlen elkülönített, saját „lokális” memóriával rendelkező funkcionális egységbe helyezi.

Egy feltételezett program esetén, mely összead két, a memóriában elhelyezkedő számot, majd az eredményt hozzáadja egy memóriában lévő harmadik értékhez, egy hagyományos processzornak fel kell ismernie a függőséget, és az utasításokat úgy ütemezni, hogy egymás után fussanak le, regiszterekben tárolva az átmeneti eredményeket. Egy EDGE processzor esetén a kódban található adatok közötti kölcsönös függőségeket a fordítóprogram ismeri fel, mely az utasításokat egyetlen blokkba fordítja. Ezt a felügyelőprogram feltölti a processzorba, a végrehajtásához szükséges összes adattal együtt, egyetlen funkcionális egységbe és annak saját, privát regiszterkészletébe. Ez biztosítja azt, hogy ne legyen szükség további memóriahivatkozásra (adatlekérésre), valamint hogy a regiszterek az adatokat felhasználó funkcionális egység fizikailag közvetlen közelében legyenek.

A kódok, melyek nem támaszkodnak a köztes adatokra, külön hiperblokkba kerülnek lefordításra. Természetesen előfordulhat, hogy egy teljes program ugyanazt az adatot használja, ezért a fordítók olyan eseteket is keresnek, amikor az adatok át vannak adva egy másik kódnak, majd az eredeti blokk gyakorlatilag elhagyja azokat, ami gyakori hozzáférési minta. Ez esetben a fordítóprogram továbbra is két különálló hiperblokkot hoz létre, de explicit módon kódolja az adatok átadását, ahelyett, hogy egyszerűen valamely megosztott memóriaterületen tárolná azokat. Ezáltal a processzor „láthatja” ezeket a kommunikációs eseményeket és képes úgy ütemezni őket, hogy megfelelő sorrendben fussanak. A jelentős kölcsönös függőségekkel rendelkező blokkokat a fordítóprogram átrendezi, hogy szétossza/szétterítse a kommunikációt, és ezzel elkerülje a szűk keresztmetszetet az adatátvitelben.

A módszer megköveteli az egyes funkcionális egységek nagy mértékű elkülönítését. Az EDGE processzorok párhuzamosságát a fordítóprogram képességei korlátozzák, nem a csipre integrált rendszerek. Míg a modern processzorok a négy szélességű párhuzamosságnál elérik határaikat, az EDGE kialakítások horizontálisan sokkal szélesebbre skálázhatók. „Mélyebbre” is skálázhatók, blokkokat átadva egyik egységből a másikba valamely ütemezett láncban, melynek ütemezése úgy van kialakítva, hogy csökkentse a megosztott értékekből adódó versengést.

TRIPS

A Texasi Egyetem a TRIPS processzorral valósította meg az EDGE-koncepciót. A TRIPS a Tera-op, Reliable, Intelligently adaptive Processing System (Tera-op, megbízható, intelligensen adaptív feldolgozó rendszer) rövidítése. A TRIPS CPU felépítésében egyetlen alapvető funkcionális egységet ismétel, a tervezett működéshez szükséges számban. A TRIPS kialakításban alkalmazott, tömegesen betölthető hiperblokkok használata drámaian megnöveli a spekulatív végrehajtás teljesítményét. Egy hagyományos kialakításnak néhány száz utasítást kell megvizsgálnia a funkcionális egységekbe való esetleges ütemezés céljából, a TRIPS típusú rendszernél ez a szám több ezres nagyságrendű, több száz hiperblokkot vizsgálva, hiperblokkonként több száz utasítással. Ez a funkcionális egységek kihasználtságának nagy mértékű javulásához vezet; teljesítményét egy tipikus négyszeres kibocsátású szuperskalár kialakításhoz viszonyítva, a TRIPS ciklusonként körülbelül háromszor annyi utasítást képes feldolgozni.

Míg a hagyományos kialakítások többféle különböző egységet használnak, ezzel nagyobb párhuzamosságot elérve, mint amit a négymagos ütemezők egyébként lehetővé tennének, a TRIPS – annak érdekében, hogy minden egységet aktív állapotban tartson – minden típusú utasítást beenged az utasításfolyamba. A hagyományos CPU-kban a működés során sok funkcionális egység gyakran kihasználatlan. A TRIPS kialakításban az egyes egységek általános célúak, lehetővé téve, hogy bármely utasítás bármely magon futhasson. Ebből következik, hogy nem kell a különböző típusú magok számát gondosan kiegyensúlyozni, valamint hogy egy TRIPS típusú rendszer tetszőleges számú maggal felépíthető, amennyi az adott teljesítménykövetelmény eléréséhez szükséges. Egy egymagos, egyszerűsített (vagy kihagyott) ütemezővel rendelkező TRIPS CPU pontosan ugyanúgy futtatja a hiperblokk-csoportot, mint egy több száz maggal rendelkező processzor, csak lassabban.

A teljesítmény nem függ a bemenő adattípusoktól sem, tehát egy TRIPS CPU ugyanolyan teljesítményszinten sokkal szélesebb feladatkört képes végrehajtani. Például, ha egy hagyományos CPU-t nagy mennyiségű matematikai feladattal terhelünk, akkor az lelassul, mikor az összes lebegőpontos egysége foglalt lesz, miközben az integer/fixpontos egységek tétlenül állnak. Ha a processzor egy adatigényes programot kap, például egy adatbázis-feladatot, a lebegőpontos egységek állnak tétlenül, miközben az integer/fixpontos egységek terhelődnek. Egy TRIPS CPU-ban minden funkcionális egység minden feladat teljesítményéhez hozzájárul, mivel minden feladat minden egységen futtatható. A tervezők erre a „polimorf processzor” elnevezést használják.

A TRIPS-hez hasonlóan, a DSP-k is további teljesítményjavulást mutatnak az adatok közötti függőségek korlátozásával, de a TRIPS-szel ellentétben ezt úgy érik el, hogy csak nagyon korlátozott munkafolyamatok futtatását teszik lehetővé (nem univerzális programvégrehajtók). A TRIPS ezekben a feladatokban ugyanolyan gyors lenne, mint egy egyedi DSP, de ugyanúgy képes lenne futtatni egyidejűleg más feladatokat is. Bár egy TRIPS processzor valószínűleg nem helyettesíthetné a nagy mértékben testreszabott kialakításokat, mint a modern grafikus kártyák GPU-i, képes lehet helyettesíteni vagy felülmúlni sok alacsonyabb teljesítményű eszközt, például a médiafeldolgozásban használatos eszközöket.

A globális regiszterfájl méretének csökkentése további nem nyilvánvaló előnyökkel is jár. A modern processzorokba beépített új áramkörök mennyiségéből következett, hogy teljes méretük nagyjából azonos maradt, még akkor is, mikor kisebb folyamatméretre tértek át. Ennek eredményeként nőtt a regiszterfájlhoz viszonyított relatív távolság, ez pedig korlátozza az elérhető ciklussebességet a kommunikációs késések miatt. Az EDGE-ben az adatok általában lokálisabbak vagy izoláltabbak a jól meghatározott magok közötti kapcsolatokban, kiküszöbölve a nagy „csipek közötti” késleltetéseket. Ez azt jelenti, hogy az egyes magok nagyobb sebességen futhatnak, melyet a sokkal rövidebb adatútvonalak jelátviteli ideje korlátoz.

A két tervezési változtatás kombinált hatása jelentősen javítja a rendszer teljesítményét. Ugyanakkor, a 2008-as állapot szerint, az ATI és az Nvidia GPU-k már átlépték az 1 teraflopos határt (bár csak speciális alkalmazások esetében). A hagyományos CPU-k esetében, egy korabeli (2007) egy 2 magos Intel Xeon processzort használó Mac Pro csupán körülbelül teljesítményre képes egyes alkalmazásokban.

A TRIPS csapat 2003-ban kezdte meg egy prototípus megvalósítását. A gyártott csip két teljes processzormagot tartalmaz, mindegyikben 16 funkcionális egység található, négyszer négyes elrendezésben. A legutóbbi megvalósításban a fordítóprogram egyenként 128 utasításból álló hiperblokkokat állít össze, és lehetővé teszi a rendszernek, hogy egyidejűleg nyolc blokkot tartson „futásban”, így összesen 1024 utasítást magonként. Az alapvető kialakítás legfeljebb 32 összekapcsolt csipet tartalmazhat, amivel megközelíti a -os teljesítményt.

Jegyzetek

Fordítás

Források

– a TRIPS projekt áttekintése 2025-ben További információk A projekt weboldala (cs.utexas.edu) Kapcsolódó szócikkek

Cell Intel Tera-Scale UltraSPARC T1 „Niagara” Párhuzamosság (számítástudomány) Párhuzamos számítástechnika

Kategória:CPU-architektúrák Kategória:Utasításkészlet-architektúrák Kategória:Mikroprocesszorok