Mellékleteink: Unix / Linux | Gamekapocs
Keres
>> Developer 2014 kutatás: vegyél részt a kutatásunkban és segíts megismerni a hazai szoftverfejlesztők szokásait! <<

Tranzakcionális memóriakezelés lesz a Haswellben

Bodnár Ádám, 2011. december 27. 12:27
Ez a cikk több évvel ezelőtt születetett, ezért előfordulhat, hogy a tartalma már elavult.
Frissebb anyagokat találhatsz a keresőnk segítségével:

Az H-Online szerint "az iparág legrosszabbul őrzött titka", hogy tranzakcionális memóriakezelés lesz az Intel következő generációs mikroarchitektúrájában, a 2013 elején bemutatkozó Haswellben.

Az éve óta működő "tik-tak" stratégia keretében várhatóan 2013 elejére születik meg az Intel vadonatúj mikroarchitektúrája, a Haswell, amelyet az Ivy Bridge-hez hasonlóan 22 nanométeres csíkszélességen, 3D tranzisztorok felhasználásával fognak gyártani. Az őszi Supercomputing Conference rendezvényen már mindenki tényként kezelte, és az Intel képviselői is nyíltan beszéltek róla, hogy a processzor hardveresen támogatni fogja a tranzakcionális memóriakezelést, írja az H-Online. Ez lesz az első x86 processzor, amely az új megközelítést alkalmazza.

Párhuzamos programozás a népeknek

A tranzakcionális memóriakezelés napjaink egyik legnagyobb szoftverfejlesztési kihívására kíván választ adni, mégpedig a hatékony párhuzamos programozásra. A párhuzamosítás rendkívül összetetté válik abban az esetben, ha a programszálak egymástól nem függetlenek, például mert egymás eredményeit használják fel vagy közös adatokon dolgoznak. Jelenleg a párhuzamos programozásban a "locking" módszer a legelterjedtebb, ilyenkor a programozó explicite zárolja a több szál által érintett adatokat addig, amíg az adott szál futása be nem fejeződik.

A "locking" módszer a pesszimista megközelítés: egy másik szál semmiképp nem nyúlhat az adathoz még akkor sem, ha a zároló szál végül nem módosítja azokat. A tranzakcionális memóriakezelés a relációs adatbázisokból vette kölcsön az optimista szemléletet: ilyenkor a szálak memóriaműveletei nem várnak a zárolt adatokra, hanem a futás után ellenőrzik, hogy a használt adatok időközben megváltoztak-e. Amennyiben nem, úgy a szál futásának eredményeit a tranzakciókezelő érvényesíti ("commit"), amennyiben igen, akkor az eredményeket eldobja és újrakezdi a futást. A tranzakcionális megközelítésben a szálak nem várnak egymásra, így jobb lehet a rendszer erőforrásainak kihasználtsága és az "átbocsátási képessége" (throughput).

A tranzakcionális memóriakezelés legnagyobb előnye azonban a programozó szintjén jelentkezik, akinek többé nem kell a zárolásokkal törődnie, a memóriaműveletekre ugyanúgy tekinthet, mintha sorosan programozna. A zárolások leggyakoribb problémáinak, a "deadlockok" és a "livelockok", azaz az egymásra váró programszálak kezelésének problémáját is leveszi a programozó válláról a tranzakciókezelő. A végeredmény: a szoftverek párhuzamosítása könnyebbé válik, így azok anélkül tudnak profitálni a többszálú vagy többmagos processzorokból, hogy a programozónak kézzel kelljen a párhuzamosságot kezelni. A tranzakcionális memóriakezelés hívei szerint a megközelítés "demokratizálja" a párhuzamos programozást - a hozadéka elsősorban az egyszerűbb "kezelhetőség".

A tranzakcionális memóriakezelés ötlete egyáltalán nem új, a témában az első publikációk még a 90-es évek elején jelentek meg, hardveresen támogatott megoldása azonban jelenleg kereskedelmi forgalomban kapható processzorban még nem létezik, az első ilyen lapka a Sun Rock lett volna, amelyet végül töröltek. Szoftveres megoldások már születtek a memória tranzakcionális kezelésére, azonban ezek sebessége tragikus - a hardveres támogatással ezt elfogadható szintre lehetne emelni, így a használatát nem kellene a teljesítményveszteség miatt feladni.

Új hardver, új utasítások

Egyelőre az Intel nem hozott nyilvánosságra információkat arról, milyen megoldást vonultat fel a Haswell a tranzakcionális memóriakezelés érdekében, de az iparág várakozásai szerint a vállalat (a Rockhoz hasonlóan) egy hibrid megoldás mellett tör majd pálcát, vagyis hardver és szoftver egyszerre szükséges hozzá - ez afféle kompromisszumot jelent a tisztán hardveres megközelítés teljesítménye és az architektúra-specifikus korlátai között. Szoftveres oldalon feltehetően az AVX2 részeként érkező új utasítások biztosítják a tranzakcionális memóriakezelést a Haswellben.

Az Intel a Tera-Scale Computing program keretén belül a tranzakcionális memóriazeléssel kapcsolatos kutatásokat is folytat, illetve támogat. A cég az Itanium processzorcsaládban egyébként már alkalmazott a tranzakcionális memóriakezeléshez hasonló technikát ("predication"): a chipek egy elágazás esetén mindkét ágat végrehajtják, majd utólag, a feltétel kiértékelésekor döntik el, hogy melyik volt a "helyes út". Mindkét ág kap egy megkülönböztető jelzést, és a feltétel kiértékelődése után a jelzés alapján a processzor eldönti, melyik ág futtatását kell tovább folytatni, a feleslegesen végrehajtott utasítások eredményei pedig törlődnek. Az Itaniummal szerzett tapasztalatokat feltehetően a Haswellben (és utódaiban) is felhasználja az Intel.

Az IBM az augusztusi Hot Chips konferencián mutatta be BlueGene/Q kódnevű, kimondottan nagy teljesítményű mérnöki-tudományos (HPTC) rendszerekbe szánt chipjét, az erre épülő első szuperszámítógépek még 2012 során üzembe állnak az amerikai kormányzat által működtetett kutatólaborokban. Noha a BlueGene/Q lesz az első kereskedelmi processzor hardveres tranzakcionális memóriakezeléssel, valószínűleg az Intel Haswell lesz az első, amely szélesebb körben elterjed és talán új korszakot nyit a párhuzamos programozásban.

A tranzakcionális memóriakezelésből elsősorban azok az alkalmazások profitálnak majd, amelyek sok szálon képesek futni, a mérnöki-tudományos szoftverek mellett ilyenek a különféle szerverek, például az adatbázisok és alkalmazásszerverek - ugyanakkor a működéshez szükség van az operációs rendszer és a programozási könyvtárak támogatására is.

Mit gondolsz? Mondd el!

Adatvédelmi okokból az adott hír megosztása előtt mindig aktiválnod kell a gombot! Ezzel a megoldással harmadik fél nem tudja nyomon követni a tevékenységedet a HWSW-n, ez pedig közös érdekünk.
Egy kis türelmet kérünk, töltjük a kommenteket...

Új komment írásához be kell jelentkezned!

A Fórumos azonosítódat is használhatod.

Ha még nem vagy tagunk, regisztrálj! Csak 2 perc az egész.

Tipp #1: több formázási lehetőséged van, ha a Fórumban szólsz hozzá a témához!
Tipp #2: készítettünk egy gyűjtőoldalt, ahol az összes friss kommentet megtekintheted.