Softwarově řízené vyrovnávání opotřebení při čtení a zápisu pro energeticky nezávislou hlavní paměť, část 2
Aug 06, 2024
Třída uvažovaných systémů obvykle poskytuje mnoho funkcí, které jsou k dispozici také v běžných stolních počítačích. Například kompletní MMU a virtuální paměť se často používají k vzájemné izolaci adresního prostoru několika úloh nebo k omezení přístupu k hardwaru.
Virtuální paměť je jedním z nejdůležitějších pojmů v počítačových operačních systémech. Umožňuje počítačům využívat místo na pevném disku jako rozšířenou paměť, aby bylo možné stále spouštět větší programy, když je paměť nedostatečná. Virtuální paměť úzce souvisí s pamětí počítače.
Paměť počítače je omezená. Pokud nemáme mechanismus, jako je virtuální paměť, pak při nedostatku paměti můžeme pouze vzdát provádění programu nebo vynutit ukončení některých aplikací. Vznik virtuální paměti tento problém značně zmírnil. Prostřednictvím paměťového prostoru poskytovaného virtuální pamětí může počítač podle určitých pravidel přesouvat nevyužité části z paměti na pevný disk. Tímto způsobem může počítač rozšířit použitou paměť bez navýšení fyzické paměti, což nám umožňuje nadále používat více a větší programy.
Tento mechanismus nám poskytuje velké pohodlí. O hardware našeho počítače se nemusíme příliš starat. Dokud program spouštíme v rámci limitů virtuální paměti, i když je naše fyzická paměť velmi malá, na našem počítači může běžet celá řada různých programů a není třeba se obávat přetečení paměti a dalších problémů.
Dá se říci, že rozšíření paměti v počítači je velmi potřebné. Virtuální paměť nám poskytuje lepší řešení. Zároveň nám také umožňuje lépe využívat další zařízení, jako jsou pevné disky, a naplno využít potenciál počítačů. Není pochyb o tom, že vztah mezi virtuální pamětí a pamětí je neoddělitelný. Vznik virtuální paměti nám poskytuje možnost většího využití počítačového hardwaru, aniž bychom obětovali efektivitu provozu počítače. Je vidět, že potřebujeme zlepšit paměť. Cistanche může výrazně zlepšit paměť, protože má antioxidační, protizánětlivé účinky a účinky proti stárnutí, což může pomoci snížit oxidační a zánětlivé reakce v mozku, a tím chránit zdraví nervového systému. Kromě toho může Cistanche také podporovat růst a opravu nervových buněk, čímž zlepšuje konektivitu a funkci neuronových sítí. Tyto účinky mohou pomoci zlepšit paměť, schopnost učení a rychlost myšlení a mohou také zabránit výskytu kognitivní dysfunkce a neurodegenerativních onemocnění.

Klikněte na možnost poznat způsoby, jak zlepšit funkci mozku
To však neznamená, že úplná hierarchie mezipaměti je možná a užitečná. Hodinová frekvence těchto systémů je obvykle nastavena na několik stovek megahertzů, aby se snížila spotřeba energie.
Latence přístupu do paměti jsou za těchto podmínek stejně kritické a mezipaměť by situaci příliš nezlepšila, ale spotřebovala by další oblast čipu.
Navíc, aby se zaručily nejhorší časy provedení, může být upřednostňována zápisníková paměť před mezipamětí. Proto je opotřebení paměti sníženo pro oblasti paměti, které jsou pokryty zápisníkovou pamětí, ale ne pro ostatní oblasti.
Tyto zbývající oblasti stále potřebují mechanismus pro vyrovnávání opotřebení. V tomto článku se zaměřujeme na nejhorší případ, kdy všechny paměťové oblasti potřebují vyrovnání opotřebení. Z výše uvedených důvodů se náš cílový systém skládá z vestavěného procesoru s plnou MMU, virtuální pamětí a bez mezipaměti. K překonání nevýhod jednotlivých typů pamětí (např. životnost NVM nebo volatilita SRAM) implementuje několik systémů architektura hybridní paměti [7].
U těchto systémů je k CPU připojen více než jeden typ paměti (např. FeRAM a SRAM) a mapován do adresního prostoru CPU. Operační systém a aplikace pak mohou aktivně rozhodovat o tom, který obsah paměti by měl být umístěn do které paměti, tím, že jej uloží do odpovídající oblasti adresy.
V této práci však předpokládáme pouze jeden NVM jako hlavní paměť v systému a vyvíjíme naše řešení pro všechny segmenty paměti přidělené této hlavní paměti ze dvou důvodů.
Za prvé, pokud existuje hybridní paměťová hierarchie s různými paměťmi, mohou být příslušné mechanismy údržby pro ostatní paměti aplikovány samostatně. Pak stále poskytujeme mechanismus pro vyrovnávání opotřebení pro část NVM.
Zadruhé, i když je k dispozici hybridní paměťová hierarchie, alokace paměťových segmentů se může řídit několika omezeními, což znemožňuje libovolné mapování. Obsah paměti proto může být stále nutné alokovat do NVM, což jej rychle opotřebovává. Naše řešení poskytuje mechanismus pro zlepšení životnosti daného mapování paměťových segmentů.
Vzhledem k tomu, že naše navrhované metody jsou softwarové, musí běžet ve vrstvě podobné operačnímu systému, aby měly privilegovanou kontrolu nad běžící aplikací. I když u malých vestavěných systémů nemusí být k dispozici úplný operační systém, pro správu hardwaru, řízení spouštěcích procedur a řízení toku řízení je vyžadována tenká softwarová vrstva.
Naše metody lze implementovat i v takovém základním operačním systému. Přestože se v této práci zaměřujeme na popsanou třídu cílového systému, naše metody jsou s příslušnými modifikacemi stále použitelné pro jiné systémy. U větších systémů s mezipamětí by například musely být správně rozlišeny zásahy a chyby, protože první neopotřebovává paměť, ale druhý ano.
3.1 Implementační platforma
Protože při hodnocení posuzujeme naše implementované metody z hlediska jejich kvality vyrovnávání opotřebení, používáme pro naši implementaci platformu, kde dokážeme přesně extrahovat stáří (tj. celkový počet přístupů na paměťovou buňku).

Používáme kompletní systémový rámec založený na simulaci z naší předchozí práce [10]. Tento framework provozuje simulátor gem5 v kombinaci s NVMainplugin pro simulace NVM a speciálním operačním systémem, který umožňuje ostré oddělení paměti aplikace a operačního systému. NVMain vytváří pro každou simulaci trasovací soubor, který obsahuje přesné informace o každém přístupu do paměti (tj. přístupech pro čtení a zápis).
Později v této práci popíšeme naši implementaci strategií vyrovnávání opotřebení. Tyto strategie jsme implementovali pro operační systém bare-metal, který také běží v simulačním rámci. Můžeme tedy přímo vyhodnocovat naše algoritmy v realistické úplné systémové simulaci a nespoléhat se na žádný odhad vysoké úrovně analýzou výsledné stopy přístupu do paměti z simulace s povoleným vyrovnáváním opotřebení.
Dále znovu používáme benchmarkové aplikace [10], protože kód je přímo dostupný se simulačním rámcem. Naše techniky vyrovnávání opotřebení jsou však nezávislé na architektuře CPU a konkrétní implementace a vyhodnocení se provádí pro 64-bitový aplikační procesor na bázi ARM (ARMv8) díky simulátoru paměti [10].
Všimněte si, že konkrétní implementace na konkrétní architektuře CPU vyžaduje několik konkrétních implementačních podrobností, které jsou také uvedeny v tomto článku. Tyto detaily však lze znovu implementovat na jiné architektury CPU.
4 ANALÝZA PROBLÉMŮ
Abychom ilustrovali potřebu vyrovnávání opotřebení a ospravedlnili vyrovnávání opotřebení pro konkrétní oblasti, v této části analyzujeme chování sady benchmarkových aplikací při přístupu k paměti a diskutujeme o vlivu na životnost paměti. Srovnávací aplikace jsou podrobně uvedeny v následujícím:
• Dijkstra je součástí sady MiBench [8] a počítá nejkratší cesty v grafu podle Dijkstrova algoritmu. Specialitou tohoto benchmarku je, že kroky algoritmu jsou spravovány ve frontě, která je uložena v datovém segmentu.
• resolve je součástí nastavení simulace NVM [10] a řeší systém lineárních rovnic podle Gaussova eliminačního algoritmu. Tento benchmark přímo upravuje jeho vstupní data.
• je také součástí sady MiBench [8] a počítá SHA-1 hash daných vstupních dat.
• qsort je součástí nastavení simulace NVM [10] a je rekurzivní implementací algoritmu rychlého třídění. Dochází tedy nejen k úpravě vstupních dat, ale intenzivně se využívá i segment zásobníku.
• rijndael je součástí bezpečnostní sady MiBench [8] a šifruje daná vstupní data pomocí algoritmu Rijndael. Pro tento benchmark se vstup nečte ze souboru, ale čte se z oblasti v samotném datovém segmentu.
• crc32 je také součástí bezpečnostní sady MiBench [8] a počítá kontrolní součty crc na daných vstupních datech

Protože se zaměřujeme na dva různé scénáře – systémy NVM s destruktivním čtením a bez destruktivního čtení – analyzujeme obě situace. U systémů NVM nedestruktivních pro čtení zkoumáme celkový počet přístupů pro zápis na paměťovou buňku a u systémů NVM s destruktivním čtením zkoumáme celkový počet přístupů pro čtení a zápis na paměťovou buňku. Provádíme benchmarkové aplikace, jak bylo popsáno dříve, a výsledné vzorce přístupu do paměti ilustrujeme na obrázcích 1 a 2.

Pozorujeme, že přístupy do paměti probíhají různou rychlostí na paměťových buňkách různých paměťových oblastí. Obecně platí, že navzdory velkým oblastem s jednotnými přístupovými vzory lze nalézt hustá přístupová horká místa.
Tato horká místa mají drastický vliv na životnost paměti, protože jen několik buněk se intenzivně opotřebovává, zatímco jiné buňky nejsou využívány vůbec. Pokud by byly tyto přístupy lépe distribuovány, životnost by se drasticky zvýšila.
U NVM nedestruktivních pro čtení (obrázek 1) se horká místa s hustým zápisem nacházejí hlavně v zásobníku, který pochází z použité paměti waystacku. Všechny ostatní regiony čelí menšímu počtu horkých míst pro zápis. U NVM s destruktivním čtením lze aktivní místa čtení nalézt také v textových oblastech, protože zkompilovaný programový kód se nachází v této oblasti a je čten během provádění.

Celkově z toho vyvozujeme dva cíle pro naše algoritmy pro vyrovnávání opotřebení. Za prvé, oblasti s různými přístupovými frekvencemi musí být během běhu správně detekovány a musí být přemístěny do jiných paměťových oblastí podle frekvence přístupů. Ke splnění tohoto cíle navrhujeme algoritmus pro vyrovnávání opotřebení s hrubým zrnem.
Za druhé, hustá přístupová horká místa musí být vyřešena takovým způsobem, aby byly přístupy rozprostřeny na větší oblast paměťových buněk. To snižuje namáhání jednotlivých buněk a průměruje opotřebení na větší oblast. K dosažení tohoto cíle navrhujeme dvě jemnozrnná řešení: jedno pro segment zásobníku a druhé pro textový segment.
5 VYROVNÁNÍ HRUBOZRNÉHO OPOTŘEBENÍ
V této části podrobně popisujeme navrhované vyrovnávání hrubozrnného opotřebení s ohledem na stárnutí. Pro posouzení stáří paměťové buňky je třeba sledovat chování přístupu do paměti. Pokud hardware nemůže sledovat aktuální přístupové chování a není známo žádné trasování paměti pro spuštěnou aplikaci, nelze ve výchozím nastavení použít techniky s ohledem na stárnutí.
Abychom tento problém překonali, nejprve navrhujeme softwarově řízenou techniku aproximace distribuce přístupu, která odhaduje distribuci přístupu k tématu (tj. počet zápisů a čtení do oblastí paměti s pevnou velikostí) s použitím pouze běžně dostupné hardwarové podpory (tj. MMU, čítače výkonu a přeruší).
Tato aproximace přístupu je implementována jako systémová služba v runtime prostředí (např. operační systém). Aproximace přístupu-distribuce může být následně poskytnuta jako vstup do algoritmu vyrovnávání opotřebení, který bere v úvahu stárnutí.
5.1 Vzorkování přístupu pro zápis
Jak již bylo uvedeno, prvním krokem k softwarově řízenému hrubozrnnému vyrovnávání opotřebení je správná aproximace distribuce přístupu k paměti. Ačkoli je zachycení této aproximace pro přístupy k zápisu a čtení většinou podobné, nejprve podrobně představíme zachycení aproximace zápisu. Následně popíšeme další kroky potřebné k zachycení readaproximace.
K zaznamenání přibližné distribuce zápisu aplikace za běhu je vyžadováno několik kroků. Nejprve jsme rovnoměrně rozmístili každý vzorek zápisu zápisu aplikace zachytil její cílovou adresu a uložil ji do vhodné datové struktury.
Číslo Cwritesample určuje časovou granularitu aproximační techniky, což umožňuje kompromis mezi přesností a zavedenou režií. Po zachycení zápisu je třeba vzít v úvahu také prostorovou granularitu datové struktury.
Ukládání odhadovaného počtu zápisů pro každý bajt představuje velkou režii úložiště a vede k nepřesným výsledkům, když je časová granularita hrubá. Místo toho mohou být bajty spojeny s většími paměťovými bloky a počty zápisů jsou agregovány pro každý přístup k zápisu do těchto bloků. Pro naši implementaci agregujeme počty zápisů pro 4-kB paměťové bloky, protože algoritmus pro vyrovnávání opotřebení zohledňuje tuto granularitu (tj. rozhodnutí je založeno na stránkách paměti).
Při použití 8-počítadla bajtů pro každý blok je zapotřebí 1512 · bajtů velikosti paměti k uložení přibližné distribuce zápisu (např. 2 MB při sledování 1 GB hlavní paměti).
Detailní tok zachycení cíle každého Cwritesample a přístupu pro zápis do paměti vyžaduje implementaci dvou technik. Za prvé, past musí být vygenerována po každém Cwritesample prostřednictvím přístupu pro zápis, a tak může implementace aproximace zasáhnout. Následně je třeba určit cíl přístupu pro zápis do paměti a uložit jej do datové struktury.
Obě implementace jsou podrobně popsány následně. Ačkoli přístup Gogte et al. [6] umožňuje přímé zachycení požadavků CPUwrite ve vzorkovaných intervalech, jejich přístup spoléhá na specializovanou schopnost ladění.
Naše metoda poskytuje alternativu, která využívá širší dostupné hardwarové funkce. Vogland Eckert [21] navrhuje použití čítačů výkonu ke specifické analýze provádění instrukcí aplikace. Podobně využíváme čítače výkonu k analýze využití paměti aplikace, na rozdíl od toho, jak je popsáno dále.

For more information:1950477648nn@gmail.com






