Hogyan Tervezzünk GPU Chipet
Chapter 4 Gpu Memory System Design

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:

  1. Címzés: Átalakítja a textúra-koordinátákat gyorsítótár-címekké.

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

  3. Adat-tömb: Tárolja a tényleges textúra-adatokat.

  4. 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:

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

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

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

  4. 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:

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

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

  3. Í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.

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