Hogyan működik a tömörítés az objektum-orientált memóriaarchitektúrában
Az MIT mérnökeiből álló csapat objektum-orientált memóriahierarchiát fejlesztett ki az adatokkal való hatékonyabb munka érdekében. A cikkből megértjük, hogyan van elrendezve.
/ Háttérkép /PD
Mint ismeretes, a modern CPU-k teljesítménynövekedése nem jár együtt a memória elérésekor a késleltetés megfelelő csökkenésével. A mutatók évről évre történő változásának különbsége akár a 10-szeresét is elérheti (PDF, 3. oldal). Ennek eredményeként megjelenik egy szűk keresztmetszet, amely nem teszi lehetővé a rendelkezésre álló erőforrások teljes kihasználását, és lassítja az adatfeldolgozást.
A teljesítménybüntetés az úgynevezett dekompressziós késleltetés. Egyes esetekben az előkészítő adatkicsomagolás akár 64 processzorciklust is igénybe vehet.
Összehasonlításképpen: lebegőpontos számok összeadása és szorzása elfoglalni legfeljebb tíz ciklus. A probléma az, hogy a memória fix méretű adatblokkokkal működik, míg az alkalmazások olyan objektumokkal, amelyek különböző típusú adatokat tartalmazhatnak, és méretükben különböznek egymástól. A probléma megoldására az MIT mérnökei egy objektumorientált memóriahierarchiát fejlesztettek ki, amely optimalizálja az adatfeldolgozást.
Hogyan működik a technológia
A megoldás három technológián alapul: Hotpad, Zippad és a COCO tömörítési algoritmus.
A hotpadok a scratchpad regisztermemóriájának szoftver által vezérelt hierarchiája (karcolás). Ezeket a regisztereket padoknak (padoknak) nevezik, és három van belőlük - L1-től L3-ig. Különböző méretű objektumokat, metaadatokat és mutatótömböket tárolnak.
Lényegében az architektúra egy gyorsítótár-rendszer, de az objektumokkal való együttműködésre van kihegyezve. Az alátét szintje, amelyen az objektum található, a használat gyakoriságától függ. Ha az egyik szint "túlcsordul", a rendszer a Java vagy a Go "szemétgyűjtőihez" hasonló mechanizmust indít el. Elemzi, hogy mely objektumokat használják ritkábban, mint mások, és automatikusan áthelyezi őket a szintek között.
A Zippads a Hotpad-ek alapján működik – archiválja és kibontja azokat az adatokat, amelyek a hierarchia utolsó két szintjére – az L3 pad és a fő memória – belépnek vagy elhagyják. Az első és a második padban az adatok változatlanul tárolódnak.
A Zippads legfeljebb 128 bájt méretű objektumokat tömörít. A nagyobb objektumokat részekre osztják, amelyeket aztán a memória különböző területeire helyeznek. Ahogy a fejlesztők írják, ez a megközelítés növeli a hatékonyan használt memória együtthatóját.
Az objektumok tömörítésére a COCO (Cross-Object COmpression) algoritmust használjuk, amelyről később még szó lesz, bár a rendszer képes együttműködni Alap-Delta-Azonnali vagy FPC. A COCO algoritmus a differenciális tömörítés egy változata (differenciális tömörítés). Összehasonlítja az objektumokat az "alappal" és eltávolítja az ismétlődő biteket – lásd az alábbi diagramot:
Az MIT mérnökei szerint az objektum-orientált memóriahierarchiájuk 17%-kal gyorsabb, mint a klasszikus megközelítések. Szerkezetében sokkal közelebb áll a modern alkalmazások architektúrájához, így az új módszerben van lehetőség.
Várhatóan mindenekelőtt a big data és gépi tanulási algoritmusokkal dolgozó cégek kezdhetik meg a technológia használatát. Egy másik lehetséges irány a felhőplatformok. Az IaaS-szolgáltatók hatékonyabban tudnak majd dolgozni a virtualizációval, a tárolórendszerekkel és a számítási erőforrásokkal.