Támogatja a tranzakcionális memóriát az IBM új processzora
Szuperszámítógépes környezetben kísérletezik az IBM egy új memóriaarchitektúrával. Az elméletek szerint a tranzakcionális memória drámaian javítja a párhuzamos végrehajtás teljesítményét, az eddigi próbálkozások azonban megbuktak. Az IBM újra próbálkozik.
Bemutatta új, BlueGene/Q kódnevű szuperszámítógépes processzorát az augusztusi Hot Chips konferencián az IBM. A lapkák első felhasználója az amerikai Lawrence Livermore Nemzeti Laboratórium lesz, amelynek Sequoia nevű szuperszámítógépét az IBM építi. A chip érdekessége, hogy az első, kereskedelmi forgalomba kerülő processzor lesz, amely hardveresen támogatja a tranzakcionális memóriát.
A tranzakcionális memória elegáns megoldás a legfontosabb, párhuzamos feldolgozást érintő problémákra, hardveres megvalósítását azonban eddig senki nem tudta megoldani. Ugyan a kutatókat évek óta komolyan foglalkoztatja a probléma és több nagy nemzetközi tudományos konferenciát is rendeznek a témában, egyelőre csak szoftveres megoldásokat sikerült készíteni - ezek teljesítménye azonban messze elmarad a hardveres támogatású tranzakcionális memóriáétól. A BlueGene/Q így nem csak a Livermore kutatóközpont energetikai kutatásai számára, hanem a számítógépes tudományok számára kiváló laboratórium lehet, ahol az elméleteket végre gyakorlatban és nagy méretben is tesztelni lehet.
Hatalmas szilícium
A BlueGene/Q egy 18 magos, 64 bites processzor, melynek alapját a PowerPC A2 architektúra adja. A lapka érdekessége, hogy egy magot az operációs rendszer futtatására tart fenn, 16-ot az aktuális HPC-feladat futtatása köt le, egy mag pedig tartalékban marad. Az IBM szerint a tartalék mag sokat segít a magas rendelkezésre állás elérésében, a mintegy százezer processzort (1,7 millió magot) tartalmazó gépben ugyanis átlagosan háromhetente mondja fel egy CPU-mag a szolgálatot. Ilyen esetben a tartalék mag transzparens módon átveszi a hibás egység feladatát, a sokszor rendkívül hosszú ideig zajló szimulációs munkafolyamatokat pedig nem kell megszakítani.
A processzor 1,47 milliárd tranzisztort tartalmaz, a tervezett 1,6 gigahertzes sebesség mellett pedig 204 GFLOPS elméleti teljesítményre lesz képes 55 wattos fogyasztási keret mellett - a bejelentés szerint a BlueGene/Q integráltan tartalmazza a memóriavezérlőket és az I/O-csatolókat is. Az informatikai szakma számára azonban a legnagyobb érdekesség a tranzakcionális memória hardveres támogatása lesz. A technológia használatával a párhuzamos feldolgozást használó alkalmazások írása jóval egyszerűbbé tehető, másrészt az ilyen alkalmazások teljesítménye is jelentősen megnőhet.
Szent Grál?
A párhuzamosított alkalmazások írása akkor egyszerű, ha a munkafolyamat egymástól teljesen független elemekre bontható. Ebben az esetben a rendelkezésre álló számítási kapacitás egésze felhasználható, a külön programszálak egymástól független adathalmazon dolgoznak. A processzormagok mindegyike hozzárendelhető egy ilyen szálhoz, a magok között pedig szinte semmilyen koordinációra nincs szükség.
A helyzet azonban könnyen rendkívül összetetté válik, ha a különböző programszálak nem függetlenek egymástól és közös adatokon dolgoznak. Ilyen esetben jelenleg a közösen használt adatokat a programszálak felváltva zárolják arra az időre, míg dolgoznak vele. A megközelítés hátránya, hogy az ugyanazzal az adattal dolgozó programszálak várakozni kényszerülnek arra az időre, míg az előző művelet be nem fejeződik. Ez komplex műveletek esetén hosszúra is nyúlhat, ami brutálisan visszafogja az ilyen alkalmazások teljesítményét.
A tranzakcionális memória ezt a problémát oldja meg. A megközelítést használó alkalmazásokat "atomizálni" kell, vagyis olyan építőelemekre kell lebontani, amelyek egyszerre, egymástól függetlenül hajthatóak végre. Az "atomnyi" programblokk beolvashatja a közös adatot zárolás nélkül, elvégezheti a számításokat, majd visszaírhatja a kapott értéket. A visszaírás előtt azonban a program ellenőrzi, hogy a kiindulási adat megváltozott-e a művelet elvégzése során. Ha nem változott, akkor kiírja az új értéket és az alkalmazás folytatja tovább a futást, ha viszont megváltozott, a korábban kapott értéket eldobja, a programszál futását visszaállítja az előző állapotba és újrakezdi a művelet végrehajtását.
A tranzakcionális memóriát használva így a feldolgozóegységek nem várnak egymásra, hanem a rendelkezésre álló adatokkal folyamatosan dolgoznak. Így kiküszöbölhető a szálak egymásra várakozása, a végrehajtást csak indokolt esetben kell megismételni. Ezzel szemben a hagyományos modell szerint a szálak "biztos ami biztos" alapon mindig zárolják a felhasznált adatokat, ami sok esetben nem indokolt. A megközelítés hatalmas előnye, hogy a párhuzamos szálak között nem alakul ki patthelyzet, nem fordulhat elő, két szál között konfliktus alakul ki.
Machine recruiting: nem biztos, hogy szeretni fogod Az AI visszafordíthatatlanul beépült a toborzás folyamatába.
A tranzakcionális memória persze önmagában nem oldja meg a párhuzamosítással kapcsolatos összes problémát, és alkalmazása újabb komplexitást visz a rendszerbe. A tudományos kutatások tárgya például az olyan műveletek eredménye, amelyek esetében nem lehet (vagy nehézkes) a program korábbi állapotát visszaállítani. Az IBM processzora végleges, gyakorlati választ adhat az ilyen és ehhez hasonló kérdésekre - amelyek együtt akár a megközelítés jövőjét is meghatározhatják. A processzor jelentőségét ebben a tekintetben nem lehet eléggé hangsúlyozni, eddig ugyanis elsősorban szoftveresen, fordítók és keretrendszerek szintjén próbálták megvalósítani a tranzakcionális hozzáférést - katasztrofális sebesség mellett.
Első verzió
Az IBM megvalósításában a processzor működésében testesül meg a tranzakcionális memóriaelérés, elsősorban a 32 megabájtos, másodszintű gyorsítótár esetében. A cache-ben található adatok verziószámmal rendelkeznek, és a gyorsítótár több verziót is el tud tárolni ugyanabból az adatból. Ahogy a programszál befejezi a megfelelő műveletet és kiírná az új adatot, a processzor ellenőrzi, hogy a kiinduló adatokból csupán egy verzió van-e - amennyiben több verzió is található, a szál állapotát visszaállítja és a megfelelő adatokkal újra elvégzi a műveletet. Ha csak egy verzió található, a program az adatot kiírhatja és folytathatja működését.
A verziós megközelítés lehetővé teszi a spekulatív végrehajtást is: a programszál az éppen rendelkezésre álló adatok alapján végrehajthatja a műveletet, amelyet ki is írhat ha a bemeneti adatok nem változtak meg közben. Az IBM megvalósításában egyelőre a tranzakcionális memória csupán korlátozott formában van jelen, így csak az egy processzoron futó alkalmazások profitálnak belőle, processzorok közötti ütközéseket az első megvalósítás képtelen innovatív módon megoldani.
A technológia támogatását először a Sun jelentette be, a gyártó Rock kódnéven fejlesztett processzorai lettek volna az első kereskedelmi forgalomba kerülő termékek, amelyek hardveresen támogatják a tranzakcionális memóriát - a processzor azonban sosem került piacra.Amennyiben a tranzakcionális memória beváltja a hozzá fűzött reményeket, akkor a párhuzamos feldolgozás gyorsan hatalmas teret nyerhet a mindennapi programozásban is. A többmagos processzorok egyelőre nemigen váltották be a hozzájuk fűzött reményeket, a imédiafeldolgozáson, renderelésen és néhány másik területen kívül ugyanis a több feldolgozó egység megjelenése nem emelt jelentősen az szoftverek teljesítményén.