Szerző: Bodnár Ádám

2011. december 27. 12:27

Tranzakcionális memóriakezelés lesz a Haswellben

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".

Hogyan akadályoz meg egy fejlesztő 14 karakterrel egy hackertámadást (x)

Sokszor gondoljuk, hatalmas erőfeszítés ellehetetleníteni egy támadást, pedig nem feltétlenül.

Hogyan akadályoz meg egy fejlesztő 14 karakterrel egy hackertámadást (x) Sokszor gondoljuk, hatalmas erőfeszítés ellehetetleníteni egy támadást, pedig nem feltétlenül.

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.

4 alkalmas, 12 órás biztonságos szoftverfejlesztés alapjai és Scrum otthonról képzésekkel köszönünk el 2020-tól.

a címlapról