Virtuális mag
A Soft Machines neve nem sok olvasónk számára lehet ismerős, de a cég már 2006 óta létezik, és nagyjából 250 alkalmazottjuk van. A vállalatot Mahesh Lingareddy és Mohammad Abdallah alapította, akik korábban az Intel mérnökei voltak.
A Soft Machines megalakulása óta több cég (Samsung Ventures, GlobalFoundries és AMD) is támogatja a fejlesztéseket. Máig összesen 125 millió dollárral sikerült segíteni az úgynevezett VISC architektúra megszületését. Utóbbi Mohammad Abdallah szerint a megfelelő teljesítmény kulcsa. A vállalat technikai igazgatója a Linley Processor Conference eseményen elmondta, hogy a hagyományos processzorskálázás halálra van ítélve a fizika törvényei és a szoftverfejlesztés nehézségei által. Az előadáson felmerült, hogy ezen a problémán a CMOS gyártástechnológia fejlesztése már nem segít, ugyanis megközelítettük azt a fizikai határt, ahol extrém anyagi befektetés szükséges elhanyagolható előrelépésért. Ezért fordult az ipar az egyre több maggal rendelkező processzorok tervezése felé, de Mohammad Abdallah szerint ezek sem fognak megváltást hozni, ugyanis rengeteg problémát nem lehet nagymértékű és rossz elvre alapozó többszálú optimalizálással megoldani.
Hirdetés
A VISC (virtual instruction set computer, azaz virtuális utasításkészletű számítógép) architektúra a fenti problémákra jelent megoldást. Mint ismeretes ma alapvetően kétféle processzortervezési filozófiát különböztetünk meg, amelyek RISC és CISC néven ismertek. Ezek főbb tulajdonságait persze már keverik a mai tényleges implementációk, de a modern processzorokra egységesen jellemző, hogy több fizikailag elkülöníthető processzormaggal rendelkeznek, és azokon egy vagy pár szoftveres processzorszál fut. A Soft Machines vezetői szerint a ma fennálló probléma megoldásához ezt a két tényezőt kell alapjaiban újragondolni. Az említett konferencián bemutatott „dual virtual core VISC” prototípus erre rögtön megoldást is kínál, így eltűnnek a fizikailag elkülöníthető processzormagok, illetve a szoftveres processzorszálakat hardveresek váltják fel. Utóbbi elv nem egyedi, ugyanis a mai grafikus vezérlők is hardveres processzorszálakat futtatnak, továbbá a szükséges szinkronizáció is a hardveren belül valósul meg a programozó beavatkozása nélkül. Ezért is skálázódnak ezek a rendszerek olyan hihetetlenül jól.
A Soft Machines elmondása szerint a hardveres szálkezelés a programozók számára is egyszerűbb. A problémát az jelenti, hogy az elmúlt évtizedben az oktatás a szálszintű párhuzamosítást helyezte előtérbe, ami azt tanítja, hogy a programozó miképp futtasson számos párhuzamosan programszálat, és ezek manuális szinkronizációját hogyan oldja meg. Ezzel szemben sokkal logikusabb az adatpárhuzamosítást előnyben részesíteni, mert a mai megoldandó problémák adatkomplexitása folyamatosan nő, és a programozó számára is egyszerűbb egy szálra levetített kódot írni általános aritmetikai operátorokkal.
Az előadás során felmerült, hogy az oktatás sem tartja a lépést a hardvergyártók ajánlásaival, ugyanis a legtöbb programozó még mindig abban a képzésben részesül, amely a rendelkezésre álló processzormagok teljes kihasználására buzdít. Ugyanakkor ma már ismert tényező, hogy a párhuzamosan futtatott programszálak közötti manuális szinkronizáció egy idő után ront a sebességen, vagyis azt kellene oktatni, hogy miképp lehet felmérni az adott algoritmus skálázási maximumát. Érthetőbben fogalmazva itt arról van szó, hogy jórészt a manuális szinkronizációtól függ, hogy az adott algoritmus szálszintű párhuzamosítása meddig skálázódik. Elvi szinten logikus, hogy egy 16 szálat futtató processzor esetében az összes erőforrást kihasználja a programozó, de ha az algoritmus csak hat szálig skálázódik optimálisan, akkor a hetedik és innentől az összes többi programszál bevetése már nem gyorsítja, hanem lassítja a feldolgozást. Ez az a tényező, ami extrém módon megnehezíti a mai sokmagos központi processzorok kihasználását.
A Soft Machines megoldása – ahogy említettük – hardveres szálkezelést használ, tehát mindig a futtatott program számára optimális működési módot választja. Ennek alapja az úgynevezett virtuális mag. A fizikai implementáció szintjén a VISC architektúra nem épít a fizikailag elkülöníthető processzormagokra. Természetesen a lapka dizájnjában ugyanúgy fellelhetők az általános részegységek, így természetesen bizonyos definíció szerint megkülönböztethetők a magok, ugyanakkor itt pont az a lényeges, hogy egy virtuálisan kétmagos dizájn képes kétmagosként vagy egymagosként is működni, illetve akár az is lehetséges, hogy eltérő teljesítményű virtuális magok keletkeznek a programfuttatás során.
Az egész koncepció a programozó számára transzparens, mivel a „varázslat” az operációs rendszer mögött történik. A működéshez egyszálú programkódra van szükség, de ilyenkor a hardver kihasználása nem lesz optimális, mert egy virtuális mag alakul meg a hardveren belül. Optimalizálásra tehát most is szükség van, de közel sem olyan vállalhatatlan formában, mint a mai központi processzoroknál. A jó eredményhez az úgynevezett SIMT modellhez hasonló párhuzamosítási forma ajánlott, ami ismerős lehet a modern GPU-architektúrákon dolgozó programozók számára. Ráadásul ez nagymértékű hardveres skálázhatóságot biztosít a folyamatosan növekvő adatmennyiség feldolgozására való igény kielégítése szempontjából.
A cikk még nem ért véget, kérlek, lapozz!