Programinės įrangos valdomas nuolatinės pagrindinės atminties skaitymo ir rašymo nusidėvėjimo išlyginimas, 2 dalis
Aug 06, 2024
Nagrinėjamų sistemų klasė paprastai suteikia daug funkcijų, kurios yra prieinamos ir įprastuose staliniuose kompiuteriuose. Pavyzdžiui, pilnas MMU ir virtualioji atmintis dažnai naudojami norint atskirti kelių užduočių adresų erdvę viena nuo kitos arba apriboti prieigą prie aparatinės įrangos.
Virtuali atmintis yra viena iš svarbiausių kompiuterių operacinės sistemos sąvokų. Tai leidžia kompiuteriams naudoti vietą standžiajame diske kaip išplėstinę atmintį, kad būtų galima vykdyti didesnes programas, kai atminties nepakanka. Virtualioji atmintis yra glaudžiai susijusi su kompiuterio atmintimi.
Kompiuterio atmintis ribota. Jei neturime tokio mechanizmo kaip virtualioji atmintis, tuomet, kai atminties neužtenka, galime tik atsisakyti programos vykdymo arba priversti kai kurias programas uždaryti. Virtualios atminties atsiradimas šią problemą labai palengvino. Per virtualios atminties suteikiamą atminties vietą kompiuteris pagal tam tikras taisykles gali perkelti nenaudojamas dalis iš atminties į standųjį diską. Tokiu būdu kompiuteris gali išplėsti naudojamą atmintį nedidindamas fizinės atminties, todėl galime ir toliau naudoti daugiau ir didesnių programų.
Šis mechanizmas suteikia mums didelį patogumą. Mums nereikia per daug rūpintis savo kompiuterio aparatine įranga. Kol vykdome programą virtualios atminties ribose, net jei mūsų fizinė atmintis yra labai maža, mūsų kompiuteris gali paleisti įvairias programas, todėl nereikia jaudintis dėl atminties perpildymo ir kitų problemų.
Galima sakyti, kad atminties praplėtimas kompiuteryje yra labai reikalingas. Virtuali atmintis suteikia mums geresnį sprendimą. Kartu tai leidžia mums geriau išnaudoti kitus įrenginius, tokius kaip standieji diskai, ir visapusiškai išnaudoti kompiuterių galimybes. Neabejotina, kad ryšys tarp virtualios atminties ir atminties yra neatsiejamas. Virtualios atminties atsiradimas suteikia mums galimybę plačiau išnaudoti kompiuterinę įrangą, neprarandant kompiuterio veikimo efektyvumo. Matyti, kad turime gerinti atmintį. Cistanche gali žymiai pagerinti atmintį, nes turi antioksidacinį, priešuždegiminį ir senėjimą stabdantį poveikį, kuris gali padėti sumažinti oksidaciją ir uždegimines reakcijas smegenyse ir taip apsaugoti nervų sistemos sveikatą. Be to, Cistanche taip pat gali skatinti nervų ląstelių augimą ir taisymą, taip pagerindamas neuroninių tinklų ryšį ir funkciją. Šis poveikis gali padėti pagerinti atmintį, mokymosi gebėjimus ir mąstymo greitį, taip pat gali užkirsti kelią pažinimo sutrikimams ir neurodegeneracinėms ligoms.

Spustelėkite žinokite būdus, kaip pagerinti smegenų veiklą
Tačiau tai nereiškia, kad visa talpyklos hierarchija yra įmanoma ir naudinga. Šių sistemų laikrodžio dažnis paprastai nustatomas į kelis šimtus megahercų, kad būtų sumažintas energijos suvartojimas.
Prieigos prie atminties delsos bet kuriuo atveju tampa ne tokios svarbios, o talpykla padėties nelabai pagerintų, bet sunaudotų daugiau lusto ploto.
Be to, siekiant garantuoti blogiausio atvejo vykdymo laiką, pirmenybė gali būti teikiama bloknoto atminčiai, o ne talpykloms. Todėl atminties susidėvėjimas sumažinamas atminties srityse, kurias apima bloknoto atmintis, bet ne kitose srityse.
Šiems likusiems regionams vis dar reikia nusidėvėjimo išlyginimo mechanizmo. Šiame straipsnyje mes sutelkiame dėmesį į blogiausią atvejį, kai reikia išlyginti visas atminties sritis. Dėl anksčiau paminėtų priežasčių, mūsų tikslinę sistemą sudaro įdėtasis procesorius su visu MMU, virtualia atmintimi ir be talpyklų. Siekiant įveikti atskirų tipų atmintinių trūkumus (pvz., NVM eksploatavimo laiką arba SRAM nepastovumą), įdiegtos kelios sistemos. hibridinė atminties architektūra [7].
Šiose sistemose daugiau nei vienas atminties tipas yra prijungtas prie procesoriaus (pvz., FeRAM ir SRAM) ir susietas su procesoriaus adresų erdve. Tada operacinė sistema ir programa gali aktyviai nuspręsti, kuris atminties turinys turi būti dedamas į kurią atmintį, saugodamos jį atitinkamame adreso regione.
Tačiau šiame darbe mes tikime vieną NVM kaip pagrindinę sistemos atmintį ir kūrimo sprendimą visiems atminties segmentams, priskirtiems šiai pagrindinei atminčiai dėl dviejų priežasčių.
Pirma, jei yra hibridinė atminties hierarchija su įvairiomis atmintimis, atitinkami kitų atmintinių priežiūros mechanizmai gali būti taikomi atskirai. Tada mes vis tiek pateikiame NVM dalies nusidėvėjimo išlyginimo mechanizmą.
Antra, net jei yra hibridinė atminties hierarchija, paskirstant atminties segmentus gali tekti laikytis kelių apribojimų, todėl savavališkas atvaizdavimas tampa neįmanomas. Todėl atminties turinį vis tiek gali tekti priskirti NVM, o tai greitai susidėvi. Mūsų sprendimas suteikia mechanizmą, leidžiantį pagerinti tam tikro atminties segmentų atvaizdavimo trukmę.
Kadangi mūsų siūlomi metodai yra pagrįsti programine įranga, jie turi veikti į operacinę sistemą panašiame lygmenyje, kad būtų galima išskirtinai valdyti veikiančią programą. Net jei mažose įterptosiose sistemose gali nebūti visos operacinės sistemos, aparatūrai valdyti, paleisties procedūroms ir valdymo srautui valdyti reikalingas plonas programinės įrangos sluoksnis.
Mūsų metodus galima įgyvendinti ir tokioje pagrindinėje operacinėje sistemoje. Nors šiame darbe daugiausia dėmesio skiriame aprašytai tikslinių sistemų klasei, mūsų metodai vis tiek taikomi kitoms sistemoms su atitinkamais pakeitimais. Pvz., didesnėse sistemose su talpyklomis pataikymai ir praleidimai turėtų būti tinkamai atskirti, nes pirmasis nenaudoja atminties, o pastarasis.
3.1 Diegimo platforma
Kadangi vertiname savo įdiegtus metodus pagal jų nusidėvėjimo išlyginimo kokybę vertinime, įgyvendinimui naudojame platformą, kurioje galime tiksliai išgauti amžių (ty bendrą prieigų skaičių vienoje atminties ląstelėje).

Mes naudojame visą sistemos modeliavimu pagrįstą sistemą iš ankstesnio darbo [10]. Ši sistema paleidžia gem5 simuliatorių kartu su NVMainplugin NVM modeliavimui ir specialia operacine sistema, kuri leidžia aiškiai atskirti programos ir operacinės sistemos atmintį. NVMain išveda sekimo failą kiekvienam modeliavimui, kuriame yra tiksli informacija apie kiekvieną prieigą prie atminties (ty skaitymo ir rašymo prieigos).
Vėliau šiame darbe aprašome, kaip įgyvendinome nusidėvėjimo išlyginimo strategijas. Šias strategijas įgyvendinome nepermatomai operacinei sistemai, kuri taip pat veikia modeliavimo sistemoje. Todėl galime tiesiogiai įvertinti savo algoritmus realiu visos sistemos modeliavimu ir nepasikliauti jokiu aukšto lygio įvertinimu, analizuodami gautą atminties prieigos pėdsaką modeliavimas su įjungtu nusidėvėjimo lygiu.
Toliau pakartotinai naudojame etalonines programas [10], nes kodas yra tiesiogiai pasiekiamas naudojant modeliavimo sistemą. Nepaisant to, mūsų nusidėvėjimo niveliavimo metodai nepriklauso nuo procesoriaus architektūros, o konkretus diegimas ir įvertinimas atliekamas naudojant ARM pagrįstą 64-bitų taikomųjų programų procesorių (ARMv8) dėl atminties simuliatoriaus [10].
Atminkite, kad konkrečiam diegimui konkrečioje CPU architektūroje reikia kelių konkrečių diegimo detalių, kurios taip pat nurodytos šiame straipsnyje. Tačiau šios detalės gali būti iš naujo įdiegtos kitose procesoriaus architektūrose.
4 PROBLEMŲ ANALIZĖ
Norėdami parodyti susidėvėjimo išlyginimo poreikį ir pagrįsti susidėvėjimo išlyginimą konkrečiuose regionuose, šiame skyriuje analizuojame etaloninių programų rinkinio prieigos prie atminties elgseną ir aptariame įtaką atminties eksploatavimo trukmei. Etaloninės paraiškos yra išsamiai pateiktos toliau:
• Dijkstra yra MiBench rinkinio [8] dalis ir apskaičiuoja trumpiausius grafiko kelius pagal Dijkstra algoritmą. Šio etalono ypatybė yra ta, kad algoritmo žingsniai valdomi eilėje, kuri saugoma duomenų segmente.
• rezoliucija yra NVM modeliavimo sąrankos dalis [10] ir išsprendžia tiesinių lygčių sistemą pagal Gauso eliminavimo algoritmą. Šis etalonas tiesiogiai pakeičia jo įvesties duomenis.
• ji taip pat yra „MiBench“ rinkinio [8] dalis ir apskaičiuoja pateiktų įvesties duomenų SHA-1 maišą.
• qsort yra NVM modeliavimo sąrankos dalis [10] ir yra rekursinis greitojo rūšiavimo algoritmo įgyvendinimas. Todėl ne tik keičiami įvesties duomenys, bet ir intensyviai naudojamas kamino segmentas.
• rijndael yra MiBench saugos rinkinio [8] dalis ir šifruoja pateiktus įvesties duomenis su Rijndael algoritmu. Šiam etalonui įvestis neskaitoma iš failo, o skaitoma iš regiono pačiame duomenų segmente.
• crc32 taip pat yra „MiBench“ saugos rinkinio [8] dalis ir apskaičiuoja nurodytų įvesties duomenų crc kontrolines sumas

Kadangi orientuojamės į du skirtingus scenarijus – skaitymo-destruktyvią ir neskaitomą-naikinančią NVM sistemas – analizuojame abi situacijas. Neskaitomų ir naikinančių NVM sistemų atveju tiriame bendrą įrašymo prieigų skaičių vienoje atminties ląstelėje, o skaitymo-destruktyvių NVM sistemų atveju tiriame sukauptą skaitymo ir rašymo prieigų skaičių vienoje atminties ląstelėje. Vykdome lyginamąsias programas, kaip aprašyta anksčiau, ir iliustruojame gautus atminties prieigos modelius 1 ir 2 paveiksluose.

Pastebime, kad prieiga prie atminties vyksta skirtingu greičiu skirtingų atminties regionų atminties ląstelėse. Apskritai, nepaisant didelių regionų su vienodais prieigos modeliais, galima rasti tankių prieigos taškų.
Šios karštosios vietos turi drastišką įtaką atminties gyvavimui, nes tik kelios ląstelės intensyviai susidėvi, o kitos ląstelės visai nenaudojamos. Jei šios prieigos būtų geriau paskirstytos, tarnavimo laikas būtų drastiškai pailgintas.
Neskaitomiems destruktyviems NVM (1 pav.) tankūs rašymo taškai daugiausia randami krūvelėje, kuri atsiranda dėl to, kad naudojama kelių krūvos atmintis. Visuose kituose regionuose yra mažiau rašymo problemų. Skaitymo naikinamiesiems NVM skaitymo taškai taip pat gali būti rasti teksto srityse, nes sukompiliuotas programos kodas yra šiame regione ir yra nuskaitomas vykdymo metu.

Apskritai, mes išvedame du savo nusidėvėjimo išlyginimo algoritmų tikslus. Pirma, regionai su skirtingais prieigos dažniais turi būti tinkamai aptikti vykdymo metu ir turi būti perkelti į kitus atminties regionus, atsižvelgiant į prieigų dažnį. Šiam tikslui pasiekti siūlome stambaus grūdėtumo susidėvėjimo išlyginimo algoritmą.
Antra, tankios prieigos taškai turi būti išspręsti taip, kad prieigos būtų paskirstytos didesniame atminties ląstelių regione. Tai sumažina atskirų ląstelių įtampą ir padidina susidėvėjimą didesniame regione. Norėdami tai pasiekti, siūlome du smulkius sprendimus: vieną kamino segmentui ir kitą teksto segmentui.
5 STAMBIAUSIO DĖVĖJIMO LYGINIS
Šiame skyriuje išsamiai aprašome siūlomą senėjimą skatinantį stambiagrūdį nusidėvėjimo išlyginimą. Norint įvertinti atminties ląstelės amžių, reikia sekti prieigos prie atminties elgseną. Jei aparatinė įranga negali atsekti esamos prieigos elgsenos ir nėra žinoma veikiančios programos atminties pėdsakų, pagal numatytuosius nustatymus negalima taikyti senėjimo atpažįstamų metodų.
Norėdami išspręsti šią problemą, pirmiausia siūlome programine įranga valdomą prieigos paskirstymo aproksimavimo metodą, kuris įvertina prieigos prie atminties pasiskirstymą (ty įrašymo ir skaitymo skaičių iki fiksuoto dydžio atminties regionų), naudojant tik dažniausiai prieinamą aparatinės įrangos palaikymą (ty MMU, našumo skaitiklius). , ir pertraukia).
Šis prieigos aproksimavimas įgyvendinamas kaip sistemos paslauga vykdymo aplinkoje (pvz., operacinėje sistemoje). Prieigos paskirstymo apytikslis nustatymas vėliau gali būti pateiktas kaip įvestis į senėjimą suvokiantį nusidėvėjimo išlyginimo algoritmą.
5.1 Rašymo prieigos atranka
Kaip jau buvo pristatyta, pirmasis žingsnis link programinės įrangos valdomo stambiagrūdžio nusidėvėjimo išlyginimo yra tinkamas prieigos prie atminties pasiskirstymas. Nors šio rašymo ir skaitymo prieigų apytikslis fiksavimas dažniausiai yra panašus, pirmiausia pateikiame rašymo aproksimacijos fiksavimą išsamiai. Vėliau aprašome papildomus veiksmus, kurių reikia norint užfiksuoti skaitymo aproksimaciją.
Norint įrašyti apytikslį programos rašymo pasiskirstymą vykdymo metu, reikia atlikti kelis veiksmus. Pirma, mes vienodais intervalais paskirstėme pavyzdį kiekvienam rašymo pavyzdžiui, programos rašymo prieigai užfiksavome tikslinį adresą ir išsaugojome jį atitinkamoje duomenų struktūroje.
Skaičius Cwritesample nustato aproksimavimo metodo laikiną detalumą, leidžiantį kompromisą tarp tikslumo ir pridėtinių išlaidų. Užfiksavus rašymą, reikia atsižvelgti ir į erdvinį duomenų struktūros detalumą.
Išsaugant apskaičiuotą kiekvieno baito įrašymo skaičių, atsiranda didelės atminties sąnaudos ir gaunami netikslūs rezultatai, kai laikinasis detalumas yra grubus. Vietoj to, baitai gali būti susieti su didesniais atminties blokais, o įrašymo skaičiai sujungiami kiekvienai įrašymo prieigai į šiuos blokus. Diegdami apibendriname 4-kB atminties blokų įrašymo skaičių, nes nusidėvėjimo niveliavimo algoritmas atsižvelgia į šį detalumą (ty sprendimas grindžiamas atminties puslapiais).
Kiekvienam blokui naudojant 8-baitų skaitiklį, apytiksliui rašymo paskirstymui išsaugoti reikia 1512 · atminties dydžio baitų (pvz., 2 MB, kai sekama 1 GB pagrindinės atminties).
Išsamus kiekvieno Cwritesample tikslo ir atminties rašymo prieigos fiksavimo srautas reikalauja dviejų technikų. Pirma, spąstai turi būti sugeneruoti po kiekvieno Cwritesample naudojant rašymo prieigą, todėl aproksimavimo įgyvendinimas gali imtis veiksmų. Vėliau reikia nustatyti atminties įrašymo prieigos tikslą ir išsaugoti duomenų struktūroje.
Abu įgyvendinimai bus išsamiai aprašyti vėliau. Nors Gogte ir kt. požiūris. [6] leidžia tiesiogiai užfiksuoti CPUwrite užklausas atrinktais intervalais, jų metodas priklauso nuo specializuotos derinimo galimybės.
Mūsų metodas suteikia alternatyvą, kuri naudoja plačiau prieinamas aparatinės įrangos funkcijas. Vogland Eckert [21] siūlo naudoti našumo skaitiklius, kad būtų galima konkrečiai analizuoti programos nurodymų vykdymą. Analizuodami programos atminties naudojimą, mes taip pat naudojame našumo skaitiklius, priešingai, kaip aprašyta toliau.

For more information:1950477648nn@gmail.com






