Szoftver által kezelt olvasási és írási kopásszint a nem felejtő főmemóriához, 2. rész
Aug 06, 2024
A vizsgált rendszerek osztálya általában számos olyan funkciót kínál, amelyek a normál asztali számítógépeken is elérhetők. Például egy komplett MMU-t és virtuális memóriát gyakran használnak több feladat címterének egymástól való elkülönítésére vagy a hardver hozzáférésének korlátozására.
A virtuális memória a számítógépes operációs rendszerek egyik legfontosabb fogalma. Lehetővé teszi a számítógépek számára, hogy a merevlemez-területet bővített memóriaként használják, így a nagyobb programok továbbra is végrehajthatók, ha nincs elegendő memória. A virtuális memória szorosan összefügg a számítógép memóriájával.
A számítógép memóriája korlátozott. Ha nem áll rendelkezésünkre olyan mechanizmus, mint például a virtuális memória, akkor a memória elégtelensége esetén csak feladhatjuk a program végrehajtását, vagy néhány alkalmazást bezárásra kényszeríthetünk. A virtuális memória megjelenése nagyban enyhítette ezt a problémát. A virtuális memória által biztosított memóriaterületen keresztül a számítógép bizonyos szabályok szerint áthelyezheti a nem használt részeket a memóriából a merevlemezre. Ily módon a számítógép a fizikai memória növelése nélkül bővítheti a használandó memóriát, így továbbra is több és nagyobb programot használhatunk.
Ez a mechanizmus nagy kényelmet biztosít számunkra. Nem kell túl sokat törődnünk számítógépünk hardverével. Amíg a virtuális memória korlátain belül futtatjuk a programot, még ha nagyon kicsi is a fizikai memóriánk, addig számítógépünk sokféle programot futtathat, és nem kell tartani a memória túlcsordulástól és egyéb problémáktól.
Elmondható, hogy a számítógép memóriájának bővítése nagyon szükséges. A virtuális memória jobb megoldást kínál számunkra. Ugyanakkor lehetővé teszi számunkra, hogy jobban kihasználjuk az egyéb eszközöket, például a merevlemezeket, és teljes mértékben kiaknázzuk a számítógépekben rejlő lehetőségeket. Kétségtelen, hogy a virtuális memória és a memória kapcsolata elválaszthatatlan. A virtuális memória megjelenése lehetőséget ad a számítógépes hardver nagyobb mértékű kihasználására a számítógép működési hatékonyságának feláldozása nélkül. Látható, hogy javítanunk kell a memórián. A Cistanche jelentősen javíthatja a memóriát, mert antioxidáns, gyulladáscsökkentő és öregedésgátló hatása van, ami segíthet csökkenteni az oxidációt és a gyulladásos reakciókat az agyban, ezáltal megóvva az idegrendszer egészségét. Ezen túlmenően, a Cistanche elősegítheti az idegsejtek növekedését és helyreállítását is, ezáltal javítva a neurális hálózatok összekapcsolhatóságát és működését. Ezek a hatások javíthatják a memóriát, a tanulási képességet és a gondolkodási sebességet, valamint megelőzhetik a kognitív diszfunkciók és a neurodegeneratív betegségek előfordulását.

Kattintson az ismerje meg az agyműködés javításának módjait
Ez azonban nem jelenti azt, hogy a teljes gyorsítótár-hierarchia lehetséges és hasznos. Ezeknek a rendszereknek az órajel-frekvenciája általában néhány száz megahertzre van állítva az energiafogyasztás csökkentése érdekében.
A memóriaelérési késleltetések ilyen körülmények között egyébként is kevésbé kritikusak, és a gyorsítótár nem javítana sokat a helyzeten, de több chipterületet fogyasztana.
Ezenkívül a legrosszabb végrehajtási idők garantálása érdekében a scratchpad memóriáját előnyben részesíthetjük a gyorsítótárak helyett. Ezért a memória elhasználódása csökken a scratchpad memória által lefedett memóriaterületek esetében, de a többi régió esetében nem.
Ezeknek a fennmaradó régióknak továbbra is szükségük van egy kopáskiegyenlítő mechanizmusra. Ebben a cikkben a legrosszabb esetre összpontosítunk, amikor az összes memóriaterületnek kopásszint-szabályozásra van szüksége. A korábban említett okok miatt célrendszerünk egy beágyazott processzorból áll, teljes MMU-val, virtuális memóriával és gyorsítótárak nélkül. Az egyes típusú memóriák hátrányainak (pl. az NVM-ek élettartama vagy az SRAM-ok volatilitása) kiküszöbölése érdekében számos rendszer valósítja meg hibrid memória architektúra [7].
Ezeknél a rendszereknél egynél több memóriatípus csatlakozik a CPU-hoz (pl. egy FeRAM és egy SRAM), és a CPU címteréhez van leképezve. Ezután az operációs rendszer és az alkalmazás aktívan eldöntheti, hogy melyik memóriatartalom melyik memóriába kerüljön, a megfelelő címtartományban tárolva.
Ebben a munkában azonban csak egy NVM-et feltételezünk a rendszer fő memóriájaként és fejlesztői megoldást az ehhez a fő memóriához hozzárendelt összes memóriaszegmenshez, két okból is.
Először is, ha létezik egy hibrid memóriahierarchia különböző memóriákkal, akkor a többi memória megfelelő karbantartási mechanizmusai külön-külön alkalmazhatók. Ezután továbbra is biztosítunk egy kopáskiegyenlítő mechanizmust az NVM alkatrészhez.
Másodszor, még ha rendelkezésre áll is egy hibrid memóriahierarchia, előfordulhat, hogy a memóriaszegmensek kiosztásának több megszorítást is be kell tartania, ami lehetetlenné teszi az önkényes leképezést. Ezért előfordulhat, hogy a memóriatartalmat továbbra is hozzá kell rendelni az NVM-hez, ami gyorsan elhasználja azt. Megoldásunk olyan mechanizmust biztosít, amely javítja a memóriaszegmensek adott leképezésének élettartamát.
Mivel a javasolt módszereink szoftver alapúak, egy operációs rendszerhez hasonló rétegben kell futniuk ahhoz, hogy kiváltságos vezérléssel rendelkezzenek a futó alkalmazás felett. Még akkor is, ha a kis beágyazott rendszerekben nem áll rendelkezésre teljes operációs rendszer, vékony szoftverrétegre van szükség a hardver kezeléséhez, az indítási eljárások vezérléséhez és a vezérlési folyamat kezeléséhez.
Módszereink alap operációs rendszerben is megvalósíthatók. Bár ebben a munkában a leírt célrendszer-osztályra összpontosítunk, módszereink megfelelő módosításokkal továbbra is alkalmazhatók más rendszerekre. Nagyobb, gyorsítótárral rendelkező rendszerek esetében például megfelelően meg kell különböztetni a találatokat és a kihagyásokat, mivel az első nem koptatja a memóriát, az utóbbi viszont igen.
3.1 Megvalósítási platform
Mivel a kiértékelés során alkalmazott módszereinket a kopáskiegyenlítési minőségük alapján értékeljük, a megvalósításhoz olyan platformot használunk, ahol pontosan ki tudjuk kinyerni az életkort (azaz a memóriacellánkénti elérések teljes számát).

Korábbi munkánk teljes rendszerszimuláció alapú keretrendszerét használjuk [10]. Ez a keretrendszer futtatja a gem5 szimulátort az NVM szimulációkhoz használható NVMainplugin-nel és egy speciális operációs rendszerrel kombinálva, amely lehetővé teszi az alkalmazás és az operációs rendszer memória éles szétválasztását. Az NVMain minden szimulációhoz nyomkövetési fájlt ad ki, amely pontos információkat tartalmaz minden memóriaelérésről (azaz olvasási és írási hozzáférésről).
A munka későbbi részében ismertetjük a kopáskiegyenlítési stratégiáink megvalósítását. Ezeket a stratégiákat a csupasz fém operációs rendszerre valósítottuk meg, a szimulációs keretrendszerben is. Ezért az algoritmusainkat közvetlenül kiértékelhetjük egy valósághű teljes rendszerszimulációban, és nem támaszkodhatunk semmilyen magas szintű becslésre, ha elemezzük a kapott memóriaelérési nyomot. szimuláció engedélyezett kopáskiegyenlítéssel.
Továbbra is használjuk a benchmark alkalmazásokat [10], mivel a kód közvetlenül elérhető a szimulációs keretrendszerrel. Mindazonáltal kopáskiegyenlítési technikáink függetlenek a CPU architektúrától, és a konkrét megvalósítás és kiértékelés egy ARM-alapú 64-bites alkalmazásprocesszor (ARMv8) számára történik a memóriaszimulátornak köszönhetően [10].
Vegye figyelembe, hogy egy adott CPU-architektúrán történő konkrét megvalósításhoz több konkrét megvalósítási részletre van szükség, amelyeket szintén ebben a cikkben ismertetünk. Ezeket a részleteket azonban más CPU-architektúrákon is meg lehet valósítani.
4 PROBLÉMAELEMZÉS
A kopásszint-szabályozás szükségességének szemléltetésére és a kopásszint-szabályozás igazolására bizonyos régiókban, ebben a részben elemezzük a benchmark alkalmazások memória-hozzáférési viselkedését, és megvitatjuk a memória élettartamára gyakorolt hatást. A benchmark pályázatokat az alábbiakban mutatjuk be részletesen:
• A Dijkstra a MiBench programcsomag része [8], és a Dijkstra algoritmus szerint kiszámítja a gráf legrövidebb útvonalait. Ennek a benchmarknak az a különlegessége, hogy az algoritmus lépéseit egy sorban kezeli, amely az adatszegmensben tárolódik.
• A resolution az NVM szimulációs beállítás része [10], és egy lineáris egyenletrendszert old meg a Gauss-féle eliminációs algoritmus szerint. Ez a benchmark közvetlenül módosítja a bemeneti adatait.
• ő is része a MiBench programcsomagnak [8], és kiszámítja az adott bemeneti adatok SHA-1 kivonatát.
• A qsort az NVM szimulációs beállítás része [10], és a Quicksort algoritmus rekurzív megvalósítása. Ezért nem csak a bemeneti adatok módosulnak, hanem a veremszegmens is intenzíven használatos.
• A rijndael a MiBench biztonsági csomag része [8], és a Rijndael algoritmussal titkosítja a megadott bemeneti adatokat. Ennél a benchmarknál a bemenetet nem fájlból olvassa be, hanem magában az adatszegmensben lévő régióból olvassa be.
• A crc32 szintén a MiBench biztonsági csomag része [8], és crc ellenőrző összegeket számít ki az adott bemeneti adatokra

Mivel két különböző forgatókönyvet célozunk meg – olvasás-destruktív és nem olvasás-destruktív NVM-rendszereket –, mindkét helyzetet elemezzük. Nem olvasás-destruktív NVM rendszerek esetén a memóriacellánkénti írási hozzáférések teljes számát, az olvasás-destruktív NVM rendszerek esetében pedig a memóriacellánkénti olvasási és írási hozzáférések halmozott számát vizsgáljuk. A benchmark alkalmazásokat a korábban leírtak szerint hajtjuk végre, és az eredményül kapott memóriaelérési mintákat az 1. és 2. ábrán szemléltetjük.

Megfigyeltük, hogy a memória-hozzáférések különböző sebességgel történnek a különböző memóriaterületek memóriacelláin. Általában az egységes hozzáférési mintákkal rendelkező nagy régiók ellenére sűrű hozzáférési hot spotok találhatók.
Ezek a forró pontok drasztikusan befolyásolják a memória élettartamát, mivel csak néhány sejt kopik el intenzíven, míg a többi cellát egyáltalán nem használják. Ha ezek a hozzáférések jobban eloszlanak, az élettartam drasztikusan megnőne.
A nem olvasás-destruktív NVM-ek esetében (1. ábra) a sűrű írási hot spotok főként a veremben találhatók, ami az útverem memória használatából ered. Az összes többi régióban kevesebb az írási hot spot. Az olvasás-destruktív NVM-eknél olvasási hot spotok is találhatók a szöveges régiókban, mivel a lefordított programkód ebben a régióban található, és a végrehajtás során beolvasásra kerül.

Összességében két célt vonunk le a kopáskiegyenlítő algoritmusainkhoz. Először is, a különböző hozzáférési frekvenciájú régiókat futás közben megfelelően kell észlelni, és a hozzáférések gyakoriságának megfelelően át kell helyezni más memóriarégiókba. E cél eléréséhez egy durva szemcsés öregedés-tudatos kopásszint-kiegyenlítő algoritmust javasolunk.
Másodszor, a sűrű hozzáférési hot spotokat úgy kell megoldani, hogy a hozzáférések a memóriasejtek nagyobb régiójában oszlajanak el. Ez csökkenti az egyes cellák stresszét, és egy nagyobb régióra átlagolja a kopást. Ennek eléréséhez két finomszemcsés megoldást javasolunk: egyet a veremszegmenshez és egy másikat a szövegszegmenshez.
5 DURVASZEMÉNYŰ KÖRÜLÉSI SZINTEZÉS
Ebben a részben részletezzük a javasolt öregedés-tudatos durva szemcsés kopáskiegyenlítést. Egy memóriacella korának felméréséhez nyomon kell követni a memóriaelérési viselkedést. Ha az aktuális hozzáférési viselkedést a hardver nem tudja nyomon követni, és a futó alkalmazáshoz nem ismert memóriakövetés, akkor alapértelmezés szerint nem alkalmazhatók az öregedés-tudatos technikák.
A probléma megoldása érdekében először egy szoftver által felügyelt hozzáférés-elosztás közelítési technikát javasolunk, amely megbecsüli a memóriaelosztás eloszlását (azaz írási és olvasási számot a rögzített méretű memóriarégiókhoz) csak az általánosan elérhető hardvertámogatás (pl. MMU, teljesítményszámlálók) felhasználásával. , és megszakítja).
Ez a hozzáférési közelítés rendszerszolgáltatásként valósul meg a futási környezetben (pl. az operációs rendszerben). A hozzáférés-eloszlás közelítés utólag megadható bemenetként egy öregedés-tudatos kopásszint-kiegyenlítő algoritmushoz.
5.1 Írási hozzáférési mintavétel
Amint azt már bemutattuk, az első lépés a szoftver által kezelt durva szemcsés kopáskiegyenlítés felé a memória hozzáférési eloszlásának megfelelő közelítése. Bár ennek a közelítésnek az írási és olvasási hozzáféréshez való rögzítése többnyire hasonló, először az írási közelítés rögzítését mutatjuk be részletesen. Ezt követően leírjuk az olvasási közelítés rögzítéséhez szükséges további lépéseket.
Több lépésre van szükség egy alkalmazás írási eloszlásának futásidejű közelítésének rögzítéséhez. Először minden írási mintán egyenlő távolságra helyeztük el az alkalmazás célcímének írási hozzáférését, és egy megfelelő adatstruktúrában tároltuk.
A Cwritesample szám határozza meg a közelítési technika időbeli részletességét, lehetővé téve a pontosság és a bevezetett általános költségek közötti kompromisszumot. Az írás rögzítése után az adatstruktúra térbeli részletességét is figyelembe kell venni.
A becsült írási szám minden bájthoz való tárolása nagy többletköltséget eredményez a tárhelyen, és pontatlan eredményekhez vezet, ha az időbeli részletesség durva. Ehelyett a bájtok nagyobb memóriablokkokhoz kapcsolhatók, és az írási számlálók minden írási hozzáféréshez összesítve vannak ezekbe a blokkba. Megvalósításunkhoz a 4-kB memóriablokkok írási számát összesítjük, mivel a kopásszint-kiegyenlítő algoritmus figyelembe veszi ezt a részletességet (azaz a döntés a memórialapokon alapul).
Minden blokkhoz 8-bájtszámlálót használva 1512 · memóriaméretű bájt szükséges a hozzávetőleges írási eloszlás tárolásához (pl. 2 MB, ha 1 GB főmemóriát követnek nyomon).
Minden Cwritesample és memória írási hozzáférés célpontjának rögzítésének részletes folyamata két technikát igényel. Először minden Cwritesample után létre kell hozni egy trap-et az írási hozzáférésen keresztül, és így a közelítés végrehajtása léphet működésbe. Ezt követően meg kell határozni a memóriaírási hozzáférés célját, és el kell tárolni az adatstruktúrában.
Mindkét megvalósítást a későbbiekben részletezzük. Bár Gogte és munkatársai megközelítése. [6] lehetővé teszi a CPUwrite kérések közvetlen rögzítését mintavételezett időközönként, megközelítésük speciális hibakeresési képességre támaszkodik.
A módszerünk olyan alternatívát kínál, amely a szélesebb körben elérhető hardverfunkciókat használja. Vogland Eckert [21] teljesítményszámlálók használatát javasolja egy alkalmazás utasítás-végrehajtásának konkrét elemzésére. Hasonlóképpen teljesítményszámlálókat használunk az alkalmazás memóriahasználatának elemzésére, ellentétben az alábbiakban leírtak szerint.

For more information:1950477648nn@gmail.com






