4. fejezet: GPU memóriarendszer tervezés
A Grafikus Feldolgozó Egységek (GPU-k) nagy párhuzamosságú, programozható gyorsítókká fejlődtek, amelyek képesek magas teljesítményt és energiahatékonyságot elérni a különböző alkalmazások széles körében. A memóriarendszer a modern GPU-architektúrák kritikus komponense, mivel a rengeteg egyidejű szálnak gyors hozzáférést kell biztosítania az adatokhoz. Ebben a fejezetben megvizsgáljuk a GPU memóriarendszer tervezésének kulcsfontosságú elemeit, beleértve az első szintű memóriastruktúrákat, a chipközi összekapcsolási hálózatot, a memóriarészleg-egységeket és a jövőbeli GPU memóriarendszerek kutatási irányait.
Első szintű memóriastruktúrák
A GPU első szintű memóriastruktúrái felelősek a gyakran használt adatok gyors elérésének biztosításáért és az alacsonyabb szintű memóriahierarchiához való hozzáférések számának csökkentéséért. Ezek a struktúrák általában tartalmaznak scratchpad memóriát, L1 adatgyorsítótárat és L1 textúragyorsítótárat.
Scratchpad memória és L1 adatgyorsítótár
A scratchpad memória, más néven megosztott memória a NVIDIA CUDA programozási modellben vagy helyi memória az OpenCL-ben, egy alacsony késleltetésű, szoftver által kezelt memóriatér, amely az együttműködő szálköteg (CTA) vagy munkacsoporton belül minden szál számára közös. A scratchpad memória általában egy bankolt SRAM struktúrával van megvalósítva, hogy lehetővé tegye a párhuzamos hozzáférést több szál számára.
A 4.1. ábra egy egyesített L1 adatgyorsítótár és scratchpad memória szervezést mutat be, hasonlóan a NVIDIA Fermi és Kepler architektúráiban használt kialakításhoz [Minkin et al., 2012].
Címátkapcsoló
|
v
Adattömb (Konfigurálható Scratchpad vagy Gyorsítótár)
|
v
Adatátkapcsoló
|
v
Betöltés/Tárolás Egység
```Ábra 4.1: Egyesített L1 adatgyorsítótár és scratchpad memória szervezet.
A tervezés kulcsfontosságú összetevői:
1. **Adattömb**: Erősen bankolt SRAM-struktúra, amely vagy scratchpad memóriaként, vagy L1 adatgyorsítótárként konfigurálható. Minden bank 32 bites széles, és saját dekódolóval rendelkezik a független hozzáféréshez.
2. **Címkeresztkapcsoló**: Elosztja a memóriacímeket a terhelés/tárolás egységből a megfelelő bankokba az adattömbbe.
3. **Adatkeresztkapcsoló**: Irányítja az adatokat a bankokból a terhelés/tárolás egységbe, amely ezután az adatokat a regiszterfájlba írja.
4. **Terhelés/Tárolás Egység**: Kiszámítja a memóriacímeket, alkalmazza az egyesítési szabályokat, és a memória-hozzáféréseket egyedi egyesített hozzáférésekre bontja.
A scratchpad memória-hozzáférések kihagyják a címke-keresési szakaszt, mivel a memória közvetlenül leképezett. A bank-ütközéseket a konfliktusban lévő hozzáférések több ciklusra bontásával kezelik, a konfliktusban lévő részek pedig a következő ciklusokban kerülnek újrajátszásra.
Az L1 adatgyorsítótár arra szolgál, hogy a globális memóriacím-tér egy részhalmazát tárolja. Az L1 adatgyorsítótárhoz való hozzáférés egy címke-keresést igényel annak megállapítására, hogy a kért adat jelen van-e. A gyorsítótár blokk mérete tipikusan 128 bájt, amely tovább osztható 32 bájtos szektorokra, hogy illeszkedjen a grafikus DRAM-ból (pl. GDDR5) egyetlen hozzáféréssel olvasható minimális adatmérethez.
### L1 Textúra Gyorsítótár
A textúra memória egy csak olvasható memóriatér, amely a térbeli lokalitásra van optimalizálva, és általában grafikus munkaterhekben használják. Az L1 textúra gyorsítótár arra szolgál, hogy kiaknázza a textúra-hozzáférésekben jelen lévő 2D térbeli lokalitást.
A 4.2. ábra egy tipikus L1 textúra gyorsítótár-szervezetet mutat.Szűrés textúrán
|
v
Textúra szűrése
|
v
Szűrt textúra-elemek
4.2. ábra: Az L1 textúra-gyorsítótár felépítése.
Az L1 textúra-gyorsítótár fő komponensei:
-
Címzés: Átalakítja a textúra-koordinátákat gyorsítótár-címekké.
-
Címke-tömb: Tárolja a gyorsítótár-sorok címkéit, hogy meghatározza, jelen van-e a kért adat.
-
Adat-tömb: Tárolja a tényleges textúra-adatokat.
-
Textúra szűrése: Interpolációs és szűrési műveleteket végez a lekért textúra-adatokon, hogy előállítsa a végső szűrt textúra-elemeket.
Az L1 textúra-gyorsítótár általában csempealapú felépítést használ a térbeli lokalitás kihasználására. A gyorsítótár kisebb csempékre (pl. 4x4 vagy 8x8 textúra-elem) van osztva, és minden csempe összefüggő módon van tárolva, hogy minimalizálja a egy adott textúra-lekéréshez szükséges gyorsítótár-sorok számát.
Egyesített textúra- és adat-gyorsítótár
A legújabb GPU-architektúrák, mint az NVIDIA Maxwell és Pascal, bevezették az egyesített textúra- és adat-gyorsítótárat, hogy javítsák a gyorsítótár-kihasználtságot és csökkentsék az összesített gyorsítótár-lábnyomot [Heinrich et al., 2017]. Ebben a kialakításban az L1 adat-gyorsítótár és az L1 textúra-gyorsítótár egyetlen fizikai gyorsítótárba van egyesítve, amely képes dinamikusan elosztani a kapacitást a kettő között a munkaterhelés igényei szerint.
A 4.3. ábra egy egyesített textúra- és adat-gyorsítótár felépítését mutatja.
Memória-kérések
|
v
Gyorsítótár-vezérlő
/ \
/ \
/ \
v v
Adat-gyorsítótár rész Textúra-gyorsítótár rész
|Adatok tömbje Textúra adatok tömbje
4.3. ábra: Egyesített textúra és adatgyorsítótár-szervezet.
Az egyesített gyorsítótár-tervezés fő összetevői:
-
Gyorsítótár-vezérlő: Fogadja a memória-kéréseket, és eldönti, hogy azokat az adatgyorsítótár-partíciónak vagy a textúragyorsítótár-partíciónak kell-e kiszolgálnia.
-
Adatgyorsítótár-partíció: Kezeli a globális memória-hozzáféréseket, hasonlóan a független L1 adatgyorsítótárhoz.
-
Textúragyorsítótár-partíció: Kezeli a textúramemória-hozzáféréseket, hasonlóan a független L1 textúragyorsítótárhoz.
-
Adattömb: Egy megosztott adattömb, amely mind a globális memória-adatokat, mind a textúra-adatokat tárolja.
Az egyesített gyorsítótár-tervezés lehetővé teszi a rendelkezésre álló gyorsítótár-kapacitás jobb kihasználását, mivel a partícióméretek a terhelés hozzáférési mintái alapján állíthatók be. Ez a rugalmasság jobb teljesítményhez és energiahatékonysághoz vezethet a rögzített méretű, különálló L1 gyorsítótárakhoz képest.
Chipszintű összekapcsolási hálózat
A chipszintű összekapcsolási hálózat felelős a GPU-magok (más néven streaming multiprocesszorok vagy számítási egységek) és a memóriapartíciós egységek összekapcsolásáért. Az összekapcsolónak nagy sávszélességet és alacsony késleltetést kell biztosítania a GPU-terhelések masszív párhuzamossága támogatásához.
A modern GPU-k általában keresztkapcsolót vagy rácstopológiát használnak a chipszintű összekapcsoláshoz. A keresztkapcsoló teljes kapcsolatot biztosít minden mag és memóriapartíció között, lehetővé téve a nagy sávszélességű kommunikációt a növekvő terület- és energiafogyasztás árán. A rácstopológia ezzel szemben egy jobban skálázható megoldást kínál, ahol minden mag a szomszédos magokhoz és memóriapartíciókhoz kapcsolódik, rácsszerű struktúrát alkotva.
A 4.4. ábra egy példát mutat egy rácstopológiájú összekapcsolási hálózatra egy GPU-ban.| |
Mag Mag Mag Mag
| | | |
—— —— —— ——
| | | |
Mag Mag Mag Mag
| | | |
—— —— —— ——
| | | |
Mem Mem Mem Mem
Part. Part. Part. Part.
4.4. ábra: Háló-alapú összekapcsolás egy GPU-ban.
A háló-alapú összekapcsolás lehetővé teszi az adatok hatékony átvitelét a magok és a memória partíciók között, miközben minimalizálja a területi és energiafelhasználási túlterhelést. Fejlett útválasztási algoritmusokat és folyamatirányítási mechanizmusokat alkalmaznak a magas teljesítmény biztosítása és a torlódás elkerülése érdekében.
## Memória partíció egység
A memória partíció egység felel a GPU magok memória kéréseinek kezeléséért és a külső DRAM memória kezeléséért. Minden memória partíció általában tartalmaz egy L2 gyorsítótárat, atomos művelet támogatást és egy memória-hozzáférés ütemezőt.
### L2 gyorsítótár
Az L2 gyorsítótár egy megosztott gyorsítótár, amely a GPU magok és a külső DRAM között helyezkedik el. Fő célja, hogy csökkentse a nagy késleltetésű, energiaigényes DRAM-hoz való hozzáférések számát a gyakran elért adatok gyorsítótárazásával.
A GPU L2 gyorsítótárak általában egy készlet-asszociatív, visszaíró gyorsítótárként vannak kialakítva, nagy kapacitással (pl. 2-4 MB) és nagy sávszélességgel. Az L2 gyorsítótár több memória partíció között van felosztva, hogy lehetővé tegye a párhuzamos hozzáférést és javítsa a átviteli sebességet.
A 4.5. ábra bemutatja egy GPU memória partíció L2 gyorsítótárának felépítését.
Memória kérések | v L2 Gyorsítótár Vezérlő | v Címke Tömb | v Adat Tömb | v Memória Ütemező
4.5. ábra: Az L2 gyorsítótár szervezete egy GPU memóriarészlegen.
Az L2 gyorsítótár vezérlő memória kéréseket kap a GPU magokból, és ellenőrzi a címke tömböt, hogy meghatározza, hogy a kért adat jelen van-e a gyorsítótárban. Gyorsítótár találat esetén az adatot a tömb adataiból kinyeri, és visszaküldi a kérő magnak. Gyorsítótár kihagyás esetén a kérést továbbítja a memória ütemezőnek, amely ezután lekéri az adatot a DRAM-ból.
Atomi műveletek
Az atomi műveletek alapvetőek a szálak közötti szinkronizációhoz és kommunikációhoz a párhuzamos terhelések esetén. A GPU-k sokféle atomi műveletet támogatnak, mint például atomi hozzáadás, minimum, maximum és összehasonlítás-és-csere, amelyek garantálják a művelet atomicitását, amikor több szál egyidejűleg fér hozzá ugyanahhoz a memóriahelyhez.
Az atomi műveleteket általában a memóriarészleg egységekben valósítják meg, hogy biztosítsák az alacsony késleltetést és a nagy átviteli sebességet. Dedikált hardver egységeket, mint például atomi művelet egységeket (AOU) alkalmaznak az atomi kérések hatékony kezelésére.
A 4.6. ábra egy példát mutat be egy atomi művelet egységre egy GPU memóriarészlegen.
Atomi kérések
|
v
Atomi Művelet Egység
|
v
L2 Gyorsítótár/DRAM
4.6. ábra: Atomi művelet egység egy GPU memóriarészlegen.
Az AOU atomi kéréseket kap a GPU magokból, és végrehajtja a kért műveletet a célmemória helyen. Ha a memóriahelyet az L2 gyorsítótár tartalmazza, az AOU közvetlenül frissíti a gyorsítótár adatait. Ha a memóriahelyet nem gyorsítótárazták, az AOU lekéri az adatot a DRAM-ból, végrehajtja az atomi műveletet, majd visszaírja az eredményt a DRAM-ba.
Memória hozzáférés ütemező
A memória hozzáférés ütemező felelős aItt a magyar fordítás:
A GPU-memória ütemezők különféle ütemezési algoritmusokat és optimalizálásokat alkalmaznak a magas teljesítmény elérése érdekében. Néhány gyakori technika:
-
Sorrend nélküli ütemezés: A memória-kérések átrendezése a sor puffer találatok maximalizálása és a DRAM előtöltés és aktiválás túlterhelésének minimalizálása érdekében.
-
Bank szintű párhuzamosság: A több DRAM bank között rendelkezésre álló párhuzamosság kihasználása, hogy lehetővé tegye a különböző memória régiókhoz való egyidejű hozzáférést.
-
Írás-olvasás átváltás optimalizálása: Az írás és olvasás műveletek közötti váltáskor felmerülő késleltetési büntetés minimalizálása a DRAM-ban.
-
Címzés közbeiktatás: A memória-hozzáférések elosztása különböző csatornák, rangok és bankok között a párhuzamosság maximalizálása és az ütközések elkerülése érdekében.
A 4.7. ábra egy GPU memória partíció memória-hozzáférés ütemezőjének magas szintű nézetét mutatja be.
Memória-kérések
|
v
Memória Ütemező
|
v
Csatorna Csatorna Csatorna Csatorna
| | | |
v v v v
Rang Rang Rang Rang
| | | |
v v v v
Bank Bank Bank Bank
4.7. ábra: Memória-hozzáférés ütemező egy GPU memória partícióban.
A memória ütemező a L2 gyorsítótárból és az atomi művelet egységekből érkező memória-kéréseket fogadja, és eldönti, hogy mikor és milyen sorrendben küldje ezeket a kéréseket a DRAM-ba. A memória-hozzáférések gondos ütemezésével az ütemező jelentősen javíthatja a DRAM sávszélesség kihasználását és csökkentheti az átlagos memória-hozzáférési késleltetést.
KutatásIrányelvek a GPU memória rendszerekhez
A GPU architektúrák folyamatos fejlődésével és a párhuzamos terhelések növekvő igényeivel párhuzamosan több kutatási irány is célozza a GPU memória rendszerek teljesítményének és hatékonyságának javítását. Néhány kulcsfontosságú kutatási terület:
Memória hozzáférés ütemezés és összekapcsolási hálózat tervezés
Ahogy a magok és memória partíciók száma a GPU-kban folyamatosan növekszik, a memória hozzáférés ütemező és az összekapcsolási hálózat tervezése kulcsfontosságú a magas teljesítmény elérése érdekében. Ebben a területben folyó kutatások új ütemező algoritmusok és összekapcsolási topológiák kifejlesztésére irányulnak, amelyek hatékonyan kezelik a GPU terhelések masszív párhuzamosságát és komplex memória hozzáférési mintázatait.
Például Jia et al. [2012] egy "Szakaszos Memória Ütemezés" (SMS) nevű memória ütemező algoritmust javasolnak, amely a DRAM bank szintű párhuzamosság javítását és a memória hozzáférési késleltetés csökkentését célozza. Az SMS a memória kérések sorát két szakaszra osztja: köteg képzés és köteg ütemezés. A köteg képzés szakaszában a kérések bankokba és sorszámokba csoportosítva kerülnek, kihasználva a sor lokalitást. A köteg ütemezés szakaszában a kötegek életkoruk és kritikusságuk alapján kerülnek priorizálásra, biztosítva a méltányosságot és a leállások csökkentését.
Egy másik példa Kim et al. [2012] munkája, amely egy nagy sávszélességű memória (HBM) architektúrát javasol GPU-khoz. A HBM több DRAM chipet rendez egymásra és köti össze őket szilícium átvezetőkkel (TSV), sokkal nagyobb sávszélességet és alacsonyabb késleltetést biztosítva a hagyományos GDDR memóriákhoz képest. A szerzők emellett egy új memória vezérlő tervezetet is javasolnak, amely hatékonyan kezeli a megnövekedett párhuzamosságot és komplexitást a HBM esetében.
Gyorsítótárazási hatékonyság
A GPU-k különféle gyorsítótárazási mechanizmusokat alkalmaznak a külső memória hozzáférések számának csökkentése és a teljesítmény javítása érdekében. Azonban ezeknek a gyorsítótáraknak a hatékonysága jelentősen változhat a terhelés jellemzőitől és a gyorsítótár tervezéstől függően.Kutatás ezen a területen arra irányul, hogy a GPU-gyorsítótárak hatékonyságát olyan technikák révén javítsák, mint a gyorsítótár-elkerülés, a gyorsítótár-tömörítés és az adaptív gyorsítótár-kezelés.
Például Huangfu és Xie [2016] egy dinamikus gyorsítótár-elkerülési rendszert javasolnak a GPU-k számára, amely egy egyszerű, de hatékony heurisztikát használ annak meghatározására, hogy egy memóriakérést gyorsítótárba kell-e helyezni vagy el kell-e kerülni a újrafelhasználási távolsága alapján. A rendszer alkalmazkodik az alkalmazás futási idejű viselkedéséhez, és jelentősen csökkentheti a gyorsítótár szennyezését, valamint javíthatja a teljesítményt.
Egy másik példa Vijaykumar et al. [2015] munkája, amely egy tömörített gyorsítótár-architektúrát javasol a GPU-k számára. A szerzők megfigyelték, hogy sok GPU-alkalmazás jelentős adatredundanciát mutat, ami kihasználható a gyorsítótárak tényleges kapacitásának növelésére. Egy új tömörítési rendszert javasolnak, amely magas tömörítési arányt érhet el minimális késleltetési túlterhelés mellett.
Memóriakérések priorizálása és gyorsítótár-elkerülés
A GPU-kon a különböző warpoktól és szálaktól származó memóriakérések eltérő kritikusságú szintekkel és összteljesítményre gyakorolt hatással rendelkezhetnek. A kritikus kérések priorizálása és a nem kritikus kérések elkerülése segíthet csökkenteni a memórialatenciát és javítani az erőforrás-kihasználtságot.
Ezen a területen folyó kutatás olyan technikákat vizsgál, amelyek a kritikus memóriakérések azonosítására és priorizálására, valamint a gyorsítótárak szelektív elkerülésére szolgáló mechanizmusokra irányulnak.
Például Jog et al. [2013] egy "Kritikus-tudatos Warp Gyorsítás" (CAWA) nevű memóriakérés-priorizálási rendszert javasolnak. A CAWA azonosítja a valószínűleg a csővezetéket elakasztó kritikus warpokat, és előnyben részesíti azok memóriakéréseit a nem kritikus warpokéval szemben. A rendszer statikus és dinamikus információk, például a függő utasítások száma és a warp kora, kombinációját használja a kritikusság meghatározására.
Lee et al. [2015] egy GPU-k számára készült gyorsítótár-elkerülési rendszert javasolnak, amely a gyorsítótár szennyezésének csökkentését és a memóriahozzáférések időszerűségének javítását célozza. A rendszer egy PC-alapú pItt a magyar fordítás a megadott markdown fájlhoz. A kódban nem fordítottam le a kommenteket.
A warp-ok közötti heterogenitás kihasználása
A GPU-k nagy számú warp-ot futtatnak párhuzamosan, hogy elrejtsék a memória késleltetését és magas átviteli sebességet érjenek el. Azonban a különböző warp-ok jelentős heterogenitást mutathatnak erőforrás-igényeik, memória-hozzáférési mintázataik és teljesítmény-jellemzőik tekintetében.
Ezen a területen folyó kutatások célja, hogy kihasználják ezt a warp-ok közötti heterogenitást a GPU-k erőforrás-allokációjának, ütemezésének és memória-kezelésének javítása érdekében.
Például Kayıran et al. [2014] egy warp-szintű divergencia-tudatos gyorsítótár-kezelési rendszert javasolnak, amely dinamikusan alkalmazkodik a gyorsítótár-allokációhoz és a helyettesítési stratégiákhoz az egyes warp-ok divergencia-jellemzői alapján. A magas divergenciájú warp-ok több gyorsítótár-erőforrást kapnak a memória-divergencia csökkentése érdekében, míg az alacsony divergenciájú warp-ok kevesebb erőforrást kapnak a gyorsítótár-kihasználtság javítása érdekében.
Egy másik példa Sethia et al. [2015] munkája, amely egy olyan memória-vezérlő tervezést javasol, amely kihasználja a warp-ok közötti heterogenitást a DRAM bank-szintű párhuzamosság javítása érdekében. A szerzők megfigyelték, hogy a különböző warp-ok eltérő mértékű bank-szintű párhuzamossággal rendelkezhetnek, és egy warp-tudatos memória-ütemezési algoritmust javasolnak, amely előnyben részesíti a magas bank-szintű párhuzamossággal rendelkező warp-okat, hogy csökkentse a memória-versenyt és javítsa a rendszer átviteli sebességét.
Koordinált gyorsítótár-elkerülés
A gyorsítótár-elkerülés egy olyan technika, amely lehetővé teszi, hogy a memória-kérések kihagyják a gyorsítótárat, és közvetlenül a alacsonyabb szintű memória-hierarchiához férjenek hozzá. Bár az elkerülés segíthet csökkenteni a gyorsítótár szennyezését és javítani a memória-hozzáférések időszerűségét, a különböző magok és memória-partíciók között koordinálatlan elkerülési döntések alulteljesítéshez vezethetnek.
Ezen a területen folyó kutatások olyan technikákat vizsgálnak, amelyek koordinálják a gyorsítótár-elkerülési döntéseket a különböző magok és memória-partíciók között, hogy optimalizálják a teljesítményt és az energiahatékonyságot.Itt a magyar fordítás a megadott markdown fájlhoz. A kódban nem fordítottam le a kódot, csak a megjegyzéseket.
A GPU-k közötti gyorsítótár-elkerülési döntések koordinálásának használata az összrendszer teljesítményének és erőforrás-kihasználásának javítása érdekében.
Például Li et al. [2015] egy koordinált gyorsítótár-elkerülési rendszert javasolnak a GPU-khoz, amely egy központosított elkerélő vezérlőt használ a globális elkerülési döntések meghozatalához. A vezérlő begyűjti az egyes magok futási idejű információit, mint például a gyorsítótár-kihagyási rátákat és a memória-hozzáférési mintákat, és ezeket az információkat használja fel az optimális elkerülési stratégia meghatározásához minden egyes mag számára. A szerzők kimutatják, hogy a rendszerük jelentősen javíthatja a teljesítményt és az energiahatékonyságot a koordinálatlan elkerüléssel szemben.
Adaptív gyorsítótár-kezelés
Egy GPU-alkalmazás optimális gyorsítótár-konfigurációja jelentősen változhat a memória-hozzáférési mintáktól, a munkahalmazmérettől és az erőforrás-igényektől függően. A tervezési időben rögzített statikus gyorsítótár-kezelési irányelvek nem tudnak alkalmazkodni a különböző alkalmazások sokszínű és dinamikus viselkedéséhez.
Ezen a területen folyó kutatások olyan technikákat vizsgálnak, amelyek dinamikusan alkalmazkodnak a gyorsítótár-konfigurációhoz és a kezelési irányelvekhez az alkalmazás futási idejű viselkedése alapján.
Például Wang et al. [2016] egy adaptív gyorsítótár-kezelési rendszert javasolnak a GPU-khoz, amely dinamikusan igazítja a gyorsítótár-partíciók méretét és a helyettesítési irányelveket az alkalmazás memória-hozzáférési mintái alapján. A rendszer hardveres és szoftveres technikák kombinációját használja a gyorsítótár-viselkedés figyelésére és a dinamikus beállításokra a gyorsítótár-kihasználtság és a teljesítmény javítása érdekében.
Egy másik példa Dai et al. [2018] munkája, amely egy gépi tanulás alapú megközelítést javasol a GPU-k adaptív gyorsítótár-kezeléséhez. A szerzők megerősítéses tanulást használnak az optimális gyorsítótár-konfiguráció automatikus megtanulására minden egyes alkalmazáshoz annak futási idejű viselkedése alapján. A megtanult irányelveket egy rekonfigurálható gyorsítótár-architektúrában valósítják meg, amely alkalmazkodni tud az egyes alkalmazások egyedi igényeihez.
Gyorsítótár-prioritizálás
A GPU-kban különböző típusúItt a magyar fordítás a megadott markdown fájlhoz. A kódhoz tartozó megjegyzéseket fordítottam le, a kódot nem.
A memória-kérések, mint például a betöltés, tárolás és textúra-kérések, különböző késleltetési és sávszélesség-követelményekkel rendelkezhetnek. Bizonyos típusú kérések előnyben részesítése a többivel szemben segíthet javítani az általános rendszerteljesítményt és erőforrás-kihasználtságot.
Ezen a területen folyó kutatások a GPU gyorsítótár-hierarchiában lévő különböző típusú memória-kérések priorizálására szolgáló technikákat vizsgálják.
Például Zhao et al. [2018] egy olyan gyorsítótár-priorizálási rendszert javasolnak a GPU-khoz, amely különböző prioritásokat rendel a különböző típusú memória-kérésekhez azok kritikussága és késleltetés-érzékenysége alapján. A rendszer statikus és dinamikus információk, például az utasítás típusa és a függő utasítások száma, kombinációját használja fel az egyes kérések prioritásának meghatározásához. A szerzők kimutatják, hogy a rendszerük jelentősen javíthatja a teljesítményt és az energiahatékonyságot egy alap GPU-hoz képest, amely nem használ priorizálást.
Virtuális memória-oldal elhelyezés
A GPU-k hagyományosan kézi memóriakezelésre támaszkodtak, ahol a programozó felelős a memória explicit lefoglalásáért és felszabadításáért. Azonban a legújabb GPU-k kezdik támogatni a virtuális memóriát, amely lehetővé teszi az operációs rendszer számára a memória-allokáció és -elhelyezés automatikus kezelését.
Ezen a területen folyó kutatások a virtuális memória-oldal elhelyezésének optimalizálására szolgáló technikákat vizsgálják a GPU-kon, hogy javítsák a memória-hozzáférési lokalitást és csökkentsék a címfordítási terhelést.
Például Zheng et al. [2016] egy olyan oldal-elhelyezési rendszert javasolnak a GPU-khoz, amely a gyakran együtt hozzáfértt oldalak ugyanabban a memória-csatornában vagy -bankban történő elhelyezésével javítja a memória-hozzáférési lokalitást. A rendszer hardveres és szoftveres technikák kombinációját használja a alkalmazás memória-hozzáférési mintáinak figyelésére és a dinamikus oldal-elhelyezési döntések meghozatalára.
Egy másik példa Ganguly et al. [2019] munkája, amely egy olyan virtuális memória-kezelési rendszert javasol a GPU-khoz, amely a címfordítási terhelés csökkentését célozza meg. A rendszer hardveres és szoftveres technikák kombinációját használja.Itt a magyar fordítás a megadott markdown fájlhoz. A kódhoz tartozó megjegyzéseket fordítottam le, a kódot nem.
Adatelhelyezés
A GPU memóriahierarchiájában elhelyezett adatok jelentős hatással lehetnek a memóriaelérési lokalitásra és a teljesítményre. Az adatelhelyezés optimalizálása segíthet csökkenteni a memórialatenciát, javítani a gyorsítótár kihasználtságát és növelni a memóriasávszélesség kihasználtságát.
Ezen a területen folyó kutatások olyan technikákat vizsgálnak, amelyek a GPU-k adatelhelyezésének optimalizálását célozzák meg az alkalmazás memóriaelérési mintázatai és erőforrás-igényei alapján.
Például Agarwal et al. [2015] egy olyan adatelhelyezési sémát javasolnak a GPU-khoz, amely a gyakran együtt elért adatok ugyanabban a memóriacsatornában vagy bankban történő elhelyezésével javítja a memóriaelérési lokalitást. A séma statikus és dinamikus elemzés kombinációját használja az optimális adatelhelyezés meghatározásához minden egyes alkalmazáshoz.
Egy másik példa Tang et al. [2017] munkája, amely egy olyan adatelhelyezési sémát javasol a GPU-khoz, amely a memóriasávszélesség kihasználtságának javítását célozza meg azáltal, hogy az adatokat különböző memóriacsatornákba helyezi el az elérési mintázataik alapján. A séma gépi tanulás alapú megközelítést használ az alkalmazás memóriaelérési mintázatainak előrejelzésére és a dinamikus adatelhelyezési döntések meghozatalára.
Több-chip-modul GPU-k
Ahogy a GPU-k teljesítménye és energiaigénye folyamatosan növekszik, a hagyományos, egyetlen chipből álló tervezések már nem tudnak lépést tartani a követelményekkel. A több-chip-modul (MCM) tervezések, ahol több GPU-chip van integrálva egyetlen csomagba, ígéretes megoldásnak tűnnek erre a problémára.
Ezen a területen folyó kutatások a MCM GPU-k tervezését és optimalizálását vizsgálják, beleértve a memóriarendszer architektúráját, az interconnect tervezését és az erőforrás-menedzsmentet.
Például Arunkumar et al. [2017] egy olyan MCM GPU tervezést javasolnak, amely nagy sávszélességű, alacsony latenciájú interconnectet használ a több GPU-chip összekapcsolására. A szerzők emellett egy olyan memóriarendszer architektúrát is javasolnak, amelyItt a magyar fordítás a megadott markdown fájlhoz. A kódban nem fordítottam le a kódot, csak a megjegyzéseket.
Az MCM-tervezés megnövekedett sávszélessége és kapacitása lehetővé teszi a teljesítmény és az energiahatékonyság javítását.
Egy másik példa a Milic és mtsai. [2018] munkája, amely egy erőforrás-kezelési rendszert javasol az MCM GPU-khoz, amelynek célja az erőforrás-kihasználtság javítása és a chipek közötti kommunikációs terhelés csökkentése. A rendszer hardveres és szoftveres technikák kombinációját használja a alkalmazás erőforrás-használatának és kommunikációs mintázatainak figyelésére, és dinamikus erőforrás-allokációs döntéseket hoz.
Következtetés
A memóriarendszer a modern GPU-architektúrák kritikus komponense, és kialakítása és optimalizálása jelentős hatással lehet az összrendszer teljesítményére és hatékonyságára. Ahogy a párhuzamos terhelések igényei tovább növekednek, a kutatók széles körű technikákat vizsgálnak a GPU-memóriarendszerek teljesítményének, skálázhatóságának és alkalmazkodóképességének javítására.
Ezen a területen a kulcsfontosságú kutatási irányok közé tartozik a memória-hozzáférés ütemezése és az interconnect-tervezés, a gyorsítótár-hatékonyság, a memóriakérések priorizálása és a gyorsítótár-elkerülés, a warp-közötti heterogenitás kihasználása, a koordinált gyorsítótár-elkerülés, az adaptív gyorsítótár-kezelés, a gyorsítótár-priorizálás, a virtuális memória lapelhelyezése, az adatelhelyezés és a többchipes modulok (MCM) tervezése.
Ezeknek és más technikáknak a vizsgálatával a kutatók olyan GPU-memóriarendszerek kifejlesztésére törekszenek, amelyek lépést tudnak tartani a párhuzamos terhelések növekvő igényeivel, miközben magas teljesítményt és energiahatékonyságot biztosítanak. Ahogy a GPU-k tovább fejlődnek, és új alkalmazási területeket találnak, például a gépi tanulásban, a tudományos számításokban és az adatelemzésben, a memóriarendszerek tervezése és optimalizálása továbbra is fontos kutatási és innovációs terület marad.