Software-administreret læse- og skriveslid-nivellering for ikke-flygtig hovedhukommelse, del 3

Aug 06, 2024

5.1.1 Temporal Write Distribution Sampling.

For at generere en fælde efter hver Cwritesample og skriveadgang til applikationen, bruger vi den interne CPU-tællemekanisme for ydeevne. BUS_ACCESS_ST-hændelsen i ARMv8 tæller det samlede antal butiksanmodninger på hukommelsesbussen, og dermed registreres antallet af skriveadgange for applikationen. For Intel CPU'er kunne den samme adfærd opnås ved at bruge en ydeevnetæller til tilbageskrivninger af cachen på sidste niveau.

Cache og hukommelse er to relaterede, men ikke identiske begreber. Cache er et begreb i computerfeltet, der beskriver den mekanisme, hvormed computere lagrer og behandler data. Cache kan hjælpe computere med at få adgang til data hurtigere og forbedre behandlingshastigheden og effektiviteten. Hukommelse henviser på den anden side til menneskelig hukommelse, som er en persons hjernes evne til at lagre information og være i stand til at genkalde den til enhver tid.

Selvom cache og hukommelse er forskellige i konceptet, er der faktisk en vis sammenhæng mellem dem. Menneskelig hukommelse kan også betragtes som en cache-mekanisme. Vi gemmer ting og informationer, vi har oplevet, i vores hjerner, så vi hurtigere kan genkalde dem, når vi har brug for dem. Dette er ligesom cache-lagringsmekanismen i computere, som kan gemme midlertidige data for at forbedre computerens behandlingseffektivitet.

Derudover kan cache, især kortsigtet cache, også hjælpe os med bedre at forstå og huske ny information. Hvis vi lærer nye begreber eller videnspunkter, kan vi gemme dem i cachen i vores hjerne i en kort periode for at hjælpe os med at huske dem bedre. Hvis vi hurtigt kan konvertere ny information til langtidshukommelse, så kan vi bedre forstå og mestre denne viden.

Generelt er cache og hukommelse to nært beslægtede begreber og to mekanismer, der fremmer hinanden. Cache kan hjælpe os med at få adgang til data og information hurtigere, mens hukommelse kan hjælpe os med bedre at forstå og huske disse oplysninger. I læring og dagligdag kan vi alle bruge cache- og hukommelsesmekanismer til at forbedre vores effektivitet og hukommelsesevne. Det kan ses, at vi skal forbedre hukommelsen, og Cistanche kan forbedre hukommelsen markant, fordi Cistanche også kan regulere balancen af ​​neurotransmittere, såsom at øge niveauet af acetylcholin og vækstfaktorer, som er meget vigtige for hukommelse og indlæring. Derudover kan Cistanche også forbedre blodgennemstrømningen og fremme ilttilførsel, hvilket kan sikre, at hjernen får tilstrækkelig næring og energi, og derved forbedre hjernens vitalitet og udholdenhed.

improve cognitive function

Klik på kend kosttilskud for at forbedre hukommelsen

Hvis en sådan ydeevnetæller ikke er tilgængelig i nogle systemer, kan enhver tilnærmelse (f.eks. cyklustælleren eller en timer) stadig overvejes. Ydeevnetællingsmekanismen gør det muligt at generere en fælde, når ydeevnetælleren løber over (dvs. overstiger værdien af ​​Cmax=232 −1).

For at etablere fælder på hver Cwritesample skriveadgang, sættes ydeevnetælleren til Cmax −Cwritesample under håndteringen af ​​overløbsfælden. Når du vælger omskrivningsprøven, bør den introducerede overhead til fældehåndtering tages i betragtning.

5.1.2 Skriveadgangsindfangning.

Da den sidst skrevne hukommelsesadresse ikke kan bestemmes under fældehåndteringen af ​​ydeevnetælleroverløbet, implementeres en anden teknik til at spore måladressen for den næste hukommelsesskrivning.

Under håndteringen af ​​overløbsfælden er hukommelsesadgangstilladelsen for den sporede hukommelsesregion indstillet til LÆS_KUN. Bemærk, at ARMv8-arkitekturen tillader hierarkiske hukommelsesadgangstilladelser, hvilket gør det muligt at konfigurere hukommelsesområder på 1-GB størrelse til KUN at LÆSE_ ved kun at ændre en-sides tabelindtastning.

På grund af LÆSE-_KUN-tilladelsen forårsager den næste skriveadgang en fælde for tilladelsesovertrædelse, som håndteres som en synkron afbrydelse. Den overtrædelsesfremkaldende adresse er tilgængelig for fældebehandleren i et dedikeret register, som derefter bruges til at øge den tilsvarende tæller i skrivefordelingstilnærmelsen.1

Under håndteringen af ​​fælden sættes adgangstilladelserne tilbage til READ_WRITE.2 Bemærk, at denne mekanisme ikke strengt taget kræver en MMU; det kunne også implementeres med en meget let MPU på en mikrocontroller.

Men hvis en MMU er til stede, kan skriveadgangsindfangningen være begrænset til et bestemt undersæt af hukommelsessider. Hvis f.eks. nogle timing-kritiske applikationer er afhængige af hurtige hukommelsesadgange, kan skriveadgangsindfangningen deaktiveres for denne applikation på bekostning af dårlig slid-nivellering.

5.2 Prøveudtagning af læseadgang

For at registrere en statistisk tilnærmelse af læseadgange følger vi de samme to trin som beskrevet før. Først opsætter vi en arkitektonisk ydeevnetæller, der tæller læseadgange på temabussen.

Ved at indstille ydeevnetællerværdien C manuelt til dens maksimale værdi Cmax =232 − 1 minus en konfigurerbar samplingshastighed Creadsample, når tælleren løber over, genereres en overløbsfælde for hver Creadsample læseadgang.

Under håndteringen af ​​overløbet satte vi temahukommelsestilladelser for alle observerede hukommelsessider til NO_ADGANG, hvilket fører til en tilladelsesovertrædelsesfælde ved læse- og skriveadgange. Denne overtrædelsesfælde bruges til at registrere målet for den næste læseadgang.

Under fældehåndteringen gendannes hukommelsestilladelserne, så udførelsen kan fortsætte. Som følge heraf fører denne mekanisme til en sampling af den aktuelle læseadresse, hver Creadsample læseadgang.

ways to improve your memory

I vores testsystem bruges læsetilnærmelsen sammen med skrivetilnærmelsen. Følgelig interfererer begge metoder med hinanden, da de begge bruger hukommelsestilladelsessystemet til at fange en efterfølgende hukommelsesadgang. Skrivetilnærmelsen bruger kun READ_ONLY-tilladelsen, og derfor fortsætter læseadgange stadig, og læsetilnærmelsen forstyrres ikke.

Læsetilnærmelsen bruger derimod NO_ACCESS-tilladelsen, og dermed forårsager også en efterfølgende skriveadgang en fælde for tilladelsesovertrædelse, selvom der i øjeblikket ikke skal registreres nogen prøve til skrivetilnærmelsen.

Dette kræver tæt samarbejde mellem begge approksimatorer for at ignorere disse skrivefælder. Men hvis læseapproksimatoren har til formål at optage en læseprøve, men den næste hukommelsesadgang er en skriveadgang, skal skriveadgangen fuldføres for at fortsætte udførelsen og endelig nå læseanmodningen. For at fuldføre skriveadgangen skal hukommelsestilladelserne være afslappet for at tillade skriveadgang igen.

For stadig at fange den næste læseadgang, bruger vi en fejlfindingsmekanisme, der sætter hukommelsestilladelserne tilbage til INGEN_ADGANG, efter at skriveadgangen er fuldført. Derfor erstatter vi instruktionen efter skriveinstruktionen med en breakpoint-instruktion.3

Så længe skriveinstruktioner ikke kan manipulere programtælleren4, er den efterfølgende instruktion garanteret at blive udført. Brydepunktshåndteringen erstatter derefter brudpunktet med den originale instruktion, nulstiller hukommelsestilladelsen til NO_ADGANG og fortsætter eksekveringen.

5.2.1 Sampling af instruktionsudførelse.

Når læseadgange til hovedhukommelsen tilnærmes, bør instruktionshentninger til den kompilerede kildekode også samples, da de også er hukommelseslæseadgange.

Brug af den foregående mekanisme vil dog føre til, at kun instruktionshentninger bliver fanget, da det første, CPU'en gør efter at være vendt tilbage fra trap-handleren, der ændrede hukommelsestilladelserne, er at hente den næste instruktion.

Derfor vil kun adgang til tekstsegmentet blive fanget i læsetilnærmelsen. For at overvinde dette observerer vi ikke tekstafsnitssider for læsetilnærmelsen og ændrer derfor ikke tilladelserne for disse sider.

I stedet tager vi en separat prøve af programtælleren ved hvert overløb af ydeevnetælleren (Creadsample), hvilket fører til en separat og uafhængig tilnærmelse af tekstsegmentet.

improve brain

5.2.2 Approksimationsskalering.

Som påpeget tidligere, bliver læse- og skrivetilnærmelserne brugt til at estimere hukommelsesregionernes alder og føres videre til en grovkornet slid-nivelleringsalgoritme.

For at opretholde kvaliteten af ​​den aldringsbevidste slidnivelleringsalgoritme er det vigtigt at skalere læsetilnærmelsen i henhold til skrivetilnærmelsen. Læsetilnærmelsen kan køre med en anden samplingshastighed Creadsample end skrivetilnærmelsen Cwritesample af præstationsårsager.

Slid-nivelleringsalgoritmen får dog kun den estimerede cellealder som input, hvilket er skrivetilnærmelsen for en ikke-læse-destruktiv NVM og læsetilnærmelsen plus skrive-approksimationen for en læse-destruktiv NVM. Læs-og-skriv-tilnærmelsen skal derfor have samme vægt.

Den skalerede aflæsningstilnærmelse kan beregnes på følgende måde: den nødvendige skaleringsfaktor x, som skal ganges med den aflæste approksimation, før den underkastes slidnivelleringsalgoritmen, beregnes i henhold til ligning (1).

X=CreadsampleCwritesample(1)

5.3 Grovkornet slidudjævningsalgoritme

Adgangsfordelingstilnærmelsen muliggør vilkårlige aldringsbevidste slidnivelleringsalgoritmer. Algoritmen behøver ikke at være opmærksom på, om den kører på en læsedestruktiv NVM eller ej, fordi læseadgange har samme destruktive påvirkninger som skriveadgange.

Algoritmen kan således tage alderen som input, som beregnes ud fra summen af ​​læse- og skriveadgange. Vi fodrer algoritmen med en indikator fra adgangstilnærmelsen, som estimerer alderen på hver side. Bemærk, at tilnærmelsessystemet kun fungerer på virtuel hukommelse og ikke tager hensyn til tilknytningen til fysiske hukommelsessider. Dette vedligeholdes af selve slidudjævningsalgoritmen.

Slidnivelleringsalgoritmen bestemmer, hvilke virtuelle hukommelsessider der flyttes til andre fysiske hukommelsessider og fastholder derfor den fysiske hukommelses overordnede alder. Grænsefladen mellem tilnærmelsessystemet og slidnivelleringsalgoritmen skal dog være veldefineret. Vi sammenfletter vores slid-nivelleringsalgoritme yderligere med approksimationsimplementeringen for at reducere redundant lagrede data.

Vores slid-nivelleringsalgoritme bruger et rød-sort træ til at vedligeholde alle administrerede fysiske hukommelsessider sammen med deres anslåede alder [10]. Da den estimerede alder allerede er til stede inde i træknuderne, er der ikke behov for også at gemme disse værdier i approksimationsimplementeringen.

Træet er illustreret i afsnit 5.3.1. Hver side er gemt i træet omkring den estimerede alder, og dermed er et opslag og udtræk af den yngste side effektivt muligt.

Approksimationssystemet vedligeholder en midlertidig læse-og-skriv-tællerside med virtuel hukommelse og giver besked til slid-nivelleringsalgoritmen med en aldersforøgende handling, hvis en af ​​disse tællere overskrider en vis tærskel. Som følge heraf øger slid-nivelleringsalgoritmen den interne aldersværdi og flytter det fysiske hukommelsesindhold til en anden side.

5.3.1 Håndtering af hukommelsessider.

Når en virtuel hukommelsesside skal flyttes til en anden fysisk hukommelsesside, udtrækkes det aktuelle minimum (dvs. den fysiske hukommelsesside med den laveste formodede alder) fra træet som den fysiske målside, og de estimerede alder justeres i overensstemmelse hermed.

Valget af den yngste side som offer for slid-nivellering fører til trinvis slid-nivellering, hvor hver side bliver den yngste side efter en vis tid.

Med hensyn til overhead kaldes slid-nivelleringsalgoritmen kun i denne opsætning, når hukommelsessiden skal flyttes. Med hensyn til udvælgelsespolitikken for beslutninger om slidudjævning er den estimerede alder på alle fysiske sider afbalanceret ligeligt over tid, fordi hver side vil være den aktuelle minimumside på et bestemt tidspunkt.

Dette etablerer en tilstandsløs inkrementel slid-nivellering, og hukommelsen antages at være slid-nivelleret til enhver tid og holdes slid-nivelleret. Derfor behøver systemet ikke at gemme alder på tværs af strømcyklusser.

Datastrukturerne for adgangstilnærmelsen og slidnivelleringsalgoritmen selv skal målrettes af slid-levelingself, hvilket kræver en særlig implementering.

Disse tekniske detaljer er imidlertid uden for dette arbejdes rammer. Til sidst fører denne integration af slid-nivelleringsalgoritmen og approksimationssystemet til en yderligere konfigurationsparameter udover den tidsmæssige og rumlige granularitet af skrivetællertilnærmelsen, dvs. tærskelværdien, hvorefter antallet af estimerede skrivninger eller læsninger skal udføres.

improve memory

Denne konfigurationsparameter giver en afvejning mellem overhead ved sideflytning og hyppigheden og henholdsvis den resulterende kvalitet af slidudjævningshandlinger uden at påvirke kvaliteten af ​​adgangstilnærmelsen.


For more information:1950477648nn@gmail.com

Du kan også lide