Szoftver által kezelt olvasási és írási kopásszint a nem felejtő főmemóriához, 3. rész

Aug 06, 2024

5.1.1 Időbeli írási eloszlás mintavételezése.

Ha az alkalmazás minden Cwritesample-je és írási hozzáférése után csapdát akarunk létrehozni, a CPU belső teljesítményszámláló mechanizmusát használjuk. A BUS_ACCESS_ST esemény az ARMv8-ban megszámolja a memóriabuszon lévő tárolási kérések teljes számát, és így rögzítésre kerül az alkalmazás írási hozzáféréseinek száma. Az Intel CPU-k esetében ugyanez a viselkedés érhető el az utolsó szintű gyorsítótár visszaírására szolgáló teljesítményszámláló használatával.

A gyorsítótár és a memória két kapcsolódó, de nem azonos fogalom. A gyorsítótár egy kifejezés a számítógép mezőben, amely leírja azt a mechanizmust, amellyel a számítógépek tárolják és feldolgozzák az adatokat. A gyorsítótár segítségével a számítógépek gyorsabban hozzáférhetnek az adatokhoz, és javíthatja a feldolgozás sebességét és hatékonyságát. Az emlékezet ezzel szemben az emberi emlékezetre utal, amely az ember agyának azon képessége, hogy információt tároljon, és azt bármikor fel tudja idézni.

Bár a gyorsítótár és a memória fogalma különbözik, valóban van köztük bizonyos kapcsolat. Az emberi memória gyorsítótár-mechanizmusnak is tekinthető. A megtapasztalt dolgokat és információkat az agyunkban tároljuk, hogy szükség esetén gyorsabban fel tudjuk idézni őket. Ez olyan, mint a számítógépek gyorsítótár-tároló mechanizmusa, amely ideiglenes adatokat tárolhat a számítógépes feldolgozás hatékonyságának javítása érdekében.

Ezenkívül a gyorsítótár, különösen a rövid távú gyorsítótár, abban is segíthet, hogy jobban megértsük és megjegyezzük az új információkat. Ha új fogalmakat vagy tudáspontokat tanulunk, rövid ideig tárolhatjuk őket agyunk gyorsítótárában, hogy jobban emlékezzünk rájuk. Ha az új információkat azonnal hosszú távú memóriává tudjuk alakítani, akkor jobban megérthetjük és elsajátíthatjuk ezt a tudást.

Általánosságban elmondható, hogy a gyorsítótár és a memória két egymással szorosan összefüggő fogalom és két egymást elősegítő mechanizmus. A gyorsítótár segítségével gyorsabban hozzáférhetünk az adatokhoz és információkhoz, míg a memória segíthet jobban megérteni és megjegyezni ezeket az információkat. A tanulásban és a mindennapi életben mindannyian használhatjuk a gyorsítótár- és memóriamechanizmusokat hatékonyságunk és memóriaképességünk javítására. Látható, hogy javítanunk kell a memórián, a Cistanche pedig jelentősen javíthatja a memóriát, mert a Cistanche szabályozhatja a neurotranszmitterek egyensúlyát is, például növelheti az acetilkolin és a növekedési faktorok szintjét, amelyek nagyon fontosak a memória és a tanulás szempontjából. Ezen túlmenően, a Cistanche javíthatja a véráramlást és elősegítheti az oxigénszállítást, ami biztosítja, hogy az agy elegendő tápanyaghoz és energiához jusson, ezáltal javítva az agy vitalitását és állóképességét.

improve cognitive function

Kattintson a Tudnivaló-kiegészítőkre a memória javítása érdekében

Ha néhány rendszerben nem áll rendelkezésre ilyen teljesítményszámláló, akkor bármilyen közelítés (pl. ciklusszámláló vagy időzítő) továbbra is figyelembe vehető. A teljesítményszámláló mechanizmus lehetővé teszi csapda létrehozását, amikor a teljesítményszámláló túlcsordul (azaz meghaladja a Cmax=232 −1 értékét).

Az írási hozzáférés minden Cwritesample-jén csapdák létrehozásához a teljesítményszámláló Cmax -Cwritesampled értékre van állítva a túlcsordulási csapda kezeléséhez. Az átírási minta kiválasztásakor figyelembe kell venni a bevezetett csapdakezelési költséget.

5.1.2 Write Access Trapping.

Mivel az utolsó írott memóriacím nem határozható meg a teljesítményszámláló túlcsordulás csapdakezelése során, egy második technika kerül megvalósításra a következő memóriaírás célcímének követésére.

A túlcsordulási csapda kezelése során a nyomon követett memóriaterület memória-hozzáférési engedélye CSAK OLVASÁS_ értékre van állítva. Ne feledje, hogy az ARMv8 architektúra hierarchikus memória-hozzáférési engedélyeket tesz lehetővé, lehetővé téve a 1-GB méretű memóriaterületek CSAK OLVASÁS_ konfigurálását az egyoldalas táblázatbejegyzés módosításával.

A READ{0}}ONLY engedély miatt a következő írási hozzáférés engedélysértési csapdát okoz, amelyet a rendszer szinkronmegszakításként kezel. A szabálysértést okozó cím egy dedikált regiszterben érhető el a csapdakezelő számára, amely azután a megfelelő számláló növelésére szolgál az írási eloszlás közelítésében.1

A csapda kezelése során a hozzáférési engedélyek READ_WRITE értékre állnak vissza. nagyon könnyű MPU-val is megvalósítható mikrokontrolleren.

Ha azonban MMU van jelen, az írási hozzáférési csapdázás korlátozható a memórialapok egy bizonyos részhalmazára. Ha például néhány időzítés-kritikus alkalmazás gyors memória-elérésekre támaszkodik, az írási hozzáférés csapdázása letiltható ennél az alkalmazásnál a rossz kopásszint-kiegyenlítés árán.

5.2 Olvasási hozzáférési mintavétel

Az olvasási hozzáférések statisztikai közelítésének rögzítéséhez ugyanazt a két lépést követjük, mint korábban leírtuk. Először beállítunk egy architekturális teljesítményszámlálót, amely számolja az olvasási hozzáféréseket a memóriabuszon.

Ha a C teljesítményszámláló értékét manuálisan a maximális Cmax =232 − 1 mínusz a konfigurálható mintavételezési sebesség Creadsample értékre állítja be, amikor a számláló túlcsordul, minden Creadsample olvasási hozzáféréshez túlcsordulási csapda generálódik.

A túlcsordulás kezelése során az összes megfigyelt memóriaoldal memóriaengedélyét NO_ACCESS értékre állítjuk, ami engedélysértési csapdához vezet az olvasási és írási hozzáféréseknél. Ezt a szabálysértési csapdát a következő olvasási hozzáférés céljának rögzítésére használják.

A csapdakezelés során a memóriaengedélyek visszaállnak, így a végrehajtás folytatódhat. Következésképpen ez a mechanizmus az aktuális olvasási cím mintavételéhez vezet minden Creadsample olvasási hozzáférés esetén.

ways to improve your memory

Tesztrendszerünkben az olvasási közelítést az írási közelítés mellett használjuk. Következésképpen mindkét módszer zavarja egymást, mivel mindkettő a memóriaengedély-rendszert használja a későbbi memória-hozzáférés csapdájára. Az írási közelítés csak a READ_ONLY engedélyt használja, ezért az olvasási hozzáférések továbbra is folytatódnak, és az olvasási közelítést nem zavarják.

Ezzel szemben az olvasási közelítés a NO_ACCESS engedélyt használja, és így az utólagos írási hozzáférés is engedélysértési csapdát okoz, még akkor is, ha jelenleg nem kell mintát rögzíteni az írási közelítéshez.

Ehhez szoros együttműködésre van szükség a két közelítő között, hogy figyelmen kívül hagyjuk ezeket az írási csapdákat. Ha azonban az olvasási közelítő célja egy olvasási minta rögzítése, de a következő memória hozzáférése írási hozzáférés, akkor az írási hozzáférést be kell fejezni a végrehajtás folytatásához, és végül az olvasási kérés eléréséhez. Az írási hozzáférés befejezéséhez a memória jogosultságait meg kell adni laza, hogy ismét lehetővé tegye az írási hozzáférést.

Annak érdekében, hogy a következő olvasási hozzáférést továbbra is csapdába ejtsük, egy hibakereső mechanizmust használunk, amely az írási hozzáférés befejezése után a memóriaengedélyeket NO{0}}ACCESS értékre állítja vissza. Ezért az írási utasítás utáni utasítást töréspont utasításra cseréljük.3

Mindaddig, amíg az írási utasítások nem tudják manipulálni a programszámlálót4, a következő utasítás végrehajtása garantált. A töréspontkezelő ezután lecseréli a töréspontot az eredeti utasításra, visszaállítja a memóriaengedélyt NO_ACCESS értékre, és folytatja a végrehajtást.

5.2.1. Utasítás-végrehajtási mintavétel.

Amikor a főmemóriához való olvasási hozzáférést közelítjük, a lefordított forráskód utasításlekéréseit is mintavételezéssel kell végezni, mivel ezek is memóriaolvasási hozzáférések.

Az előző mechanizmus használata azonban csak az utasításlekérések rögzítéséhez vezetne, mivel a CPU első dolga, miután visszatért a memóriaengedélyeket módosító csapdakezelőből, a következő utasítás lekérése.

Ezért az olvasási közelítés csak a szövegszegmenshez való hozzáférést rögzíti. Ennek kiküszöbölése érdekében nem figyeljük meg a szövegrész oldalait az olvasási közelítéshez, ezért nem módosítjuk ezen oldalak engedélyeit.

Ehelyett külön mintát veszünk a programszámlálóból a teljesítményszámláló minden túlcsordulásakor (Creadsample ), ami a szövegszegmens különálló és független közelítéséhez vezet.

improve brain

5.2.2 Közelítő skálázás.

Amint arra korábban rámutattunk, az olvasási és írási közelítéseket a memóriaterületek korának becslésére használják, és egy durva szemcséjű kopásszint-kiegyenlítő algoritmusba táplálják őket.

Az öregedés-tudatos kopáskiegyenlítő algoritmus minőségének megőrzéséhez elengedhetetlen az olvasási közelítés skálázása az írási közelítésnek megfelelően. Előfordulhat, hogy az olvasási közelítés eltérő Creadsample mintavételi sebességgel fut, mint a Cwritesample írási közelítése teljesítmény okokból.

A kopásszint-kiegyenlítő algoritmus azonban csak a becsült cellaéletkort kapja meg bemenetként, amely az írási közelítés egy nem olvasás-destruktív NVM esetén, és az olvasási közelítés plusz az írási közelítés egy olvasás-destruktív NVM esetében. Így az olvasási-írási közelítésnek azonos súlyúnak kell lennie.

A skálázott olvasási közelítés a következő módon számítható ki: az (1) egyenlet alapján számítjuk ki a szükséges x skálázási tényezőt, amelyet meg kell szorozni a leolvasott közelítéssel, mielőtt a kopásszint-kiegyenlítő algoritmusba kerülne.

X=CreadsampleCwritesample(1)

5.3 Durva szemcsés kopásszintező algoritmus

A hozzáférés-elosztás közelítése tetszőleges öregedés-tudatos kopásszint-kiegyenlítő algoritmust tesz lehetővé. Az algoritmusnak nem kell tudnia, hogy olvasás-roncsoló NVM-en fut-e vagy sem, mivel az olvasási hozzáférések ugyanolyan romboló hatással bírnak, mint az írási hozzáférések.

Így az algoritmus az életkort veszi bemenetként, amelyet az olvasási és írási hozzáférések összegéből számít ki. Az algoritmust a hozzáférési közelítésből származó indikátorral látjuk el, amely megbecsüli az egyes oldalak életkorát. Ne feledje, hogy a közelítő rendszer csak virtuális memórián működik, és nem veszi figyelembe a fizikai memórialapokhoz való hozzárendelést. Ezt maga a kopáskiegyenlítő algoritmus tartja fenn.

A kopásszint-kiegyenlítő algoritmus eldönti, hogy mely virtuális memórialapok helyezkedjenek át más fizikai memórialapokra, és ezért fenntartja a fizikai memória teljes korát. A közelítő rendszer és a kopásszint-kiegyenlítő algoritmus közötti interfésznek azonban jól definiáltnak kell lennie. A kopásszint-kiegyenlítő algoritmusunkat a redundánsan tárolt adatok csökkentése érdekében a közelítő implementációval tovább illesztjük.

A kopásszint-kiegyenlítő algoritmusunk egy piros-fekete fát használ az összes kezelt fizikai memóriaoldal karbantartására a becsült életkorukkal együtt [10]. Mivel a becsült életkor már jelen van a fa csomópontjaiban, nincs szükség ezen értékek tárolására a közelítési implementációban is.

A fát az 5.3.1. szakasz szemlélteti. Minden oldal a becsült életkorhoz tartozó fában van tárolva, így hatékonyan lehetséges a legfiatalabb oldal megkeresése és kinyerése.

A közelítő rendszer fenntart egy ideiglenes olvasási és írási számláló virtuális memóriaoldalt, és értesíti a kopásszint-kiegyenlítő algoritmust egy életkornövekedési művelettel, ha az egyik számláló túllép egy bizonyos küszöbértéket. Következésképpen a kopásszint-kiegyenlítő algoritmus megnöveli a belső korértéket, és áthelyezi a fizikai memória tartalmát egy másik oldalra.

5.3.1 Memóriaoldalak kezelése.

Amikor egy virtuális memóriaoldalt át kell helyezni egy másik fizikai memóriaoldalra, az aktuális minimumot (azaz a legalacsonyabb feltételezett korú fizikai memórialapot) a rendszer kivonja a fából, mint a cél fizikai oldalt, és ennek megfelelően módosítja a becsült életkort.

A legfiatalabb oldal választása a kopáskiegyenlítés áldozataként fokozatos kopáskiegyenlítéshez vezet, ahol minden oldal egy bizonyos idő elteltével a legfiatalabb oldal lesz.

Ami az általános költségeket illeti, a kopás-kiegyenlítő algoritmus csak akkor hívódik meg ebben a beállításban, ha az emlékoldalt át kell helyezni. A kopáskiegyenlítési döntések kiválasztási politikáját tekintve az összes fizikai oldal becsült életkora egyformán egyensúlyban van az idő múlásával, mivel minden oldal egy bizonyos időpontban az aktuális minimális oldal között lesz.

Ez állapot nélküli növekményes kopásszintet hoz létre, és a memória bármikor kopásszintűnek tekinthető, és kopásszinten marad. Ezért a rendszernek nem kell tárolnia az életkorokat energiaciklusok között.

Magának a kopásszint-kiegyenlítésnek meg kell céloznia magát a hozzáférési közelítés adatstruktúráit és a kopásszint-kiegyenlítő algoritmust, ami speciális megvalósítást igényel.

Ezek a technikai részletek azonban kívül esnek ennek a munkának a hatókörén. Végül a kopásszint-kiegyenlítő algoritmus és a közelítő rendszer integrációja egy további konfigurációs paramétert eredményez, az írási szám közelítésének időbeli és térbeli granularitása, azaz a küszöbrelikvia mellett, amely után el kell végezni a becsült írási vagy olvasási számok területelosztását.

improve memory

Ez a konfigurációs paraméter kompromisszumot biztosít az oldaláthelyezés többletköltsége és a kopáskiegyenlítő műveletek gyakorisága, illetve az ebből eredő minősége között anélkül, hogy befolyásolná a hozzáférési közelítés minőségét.


For more information:1950477648nn@gmail.com

Akár ez is tetszhet