Hugbúnaðarstýrður lestur og ritun slitjöfnun fyrir órofugt aðalminni hluti 4

Aug 07, 2024

5.3.2 Flutningur minnissíðu

Þegar slitjöfnunarreikniritið ákvarðar par af tveimur sýndarminnissíðum, og hvort um sig kortlagðar líkamlega minnissíður þeirra, til að skipta, þarf tvö skref til að framkvæma flutninginn.

Það er óaðskiljanlegt samband á milli sýndarminni og minni. Þær bæta hvert annað upp og styðja í sameiningu við háhraðarekstur nútímatölva.

Sýndarminni er mikilvægt hugtak í tölvum. Það gerir tölvum kleift að keyra stór forrit jafnvel þegar líkamlegt minni er ófullnægjandi. Þegar minni tölvunnar er ófullnægjandi mun sýndarminni flytja sum gögn og forrit úr minni yfir á harða diskinn og losa þannig meira minnisrými fyrir önnur forrit til að nota. Þegar gögnin og forritin sem flutt eru á harða diskinn þurfa að vera opnuð mun sýndarminni endurhlaða þeim inn í minnið. Þannig bætir sýndarminni "minni" við tölvuna, sem gerir tölvunni kleift að vinna úr fleiri gögnum og forritum á sama tíma.

Minni, sem einn af kjarna mannlegrar upplýsingaöflunar, er einnig mikilvægur hluti af tölvugreind. Tölvur þurfa að nota minni þegar þeir keyra forrit. Því meira sem minnisrýmið þarf fyrir forritið, því hægar keyrir tölvan. Sýndarminni getur losað um minni með því að flytja sum gögn og forrit yfir á harða diskinn og tryggja þannig hnökralausa notkun tölvunnar og bæta rekstrarskilvirkni tölvunnar.

Þar að auki getur sýndarminni komið í veg fyrir yfirflæði í minni og komið í veg fyrir vandamál eins og tölvuhrun af völdum forrita sem nota meira minni en líkamlegt minnisstærð. Þetta bætir einnig rekstrarstöðugleika og áreiðanleika tölvunnar.

Í stuttu máli eru sýndarminni og minni náskyld. Þau styðja hvert annað og stuðla í sameiningu að þróun og framþróun tölva. Í framtíðarþróun tölva munu sýndarminni og minni halda áfram að gegna mikilvægu hlutverki og þrýsta á tölvur að þróast í hraðari, stöðugri og áreiðanlegri átt. Það má sjá að við þurfum að bæta minni okkar. Cistanche getur bætt minni okkar verulega vegna þess að það er hefðbundið kínverskt lyf með mörg einstök áhrif, ein þeirra er að bæta minni. Virkni Cistanche kemur frá hinum ýmsu virku innihaldsefnum sem það inniheldur, þar á meðal tannínsýru, fjölsykrur, flavonoid glýkósíð o.fl. Þessi innihaldsefni geta stuðlað að heilsu heilans á margan hátt.

10 ways to improve memory

Smelltu á Vita skammtímaminni hvernig á að bæta

Í fyrsta lagi þarf sýndarminniskortlagningin í síðutöflunni að aðlaga í samræmi við það þannig að efnislegum síðum beggja sýndarminnissíðunnar sé skipt út. Þýðingarútlitsbuffer (TLB) viðhaldsaðgerð er nauðsynleg á eftir til að tryggja að skiptu kortlagningunni sé beitt.

Athugaðu að ARMv8 sýndarminniskerfið gerir kleift að ógilda stakar færslur í TLB og því er heildar TLB skolun ekki nauðsynleg. Eftir að nýja síðukortlagningin hefur verið komið á þarf að skipta um efnislega efni til að viðhalda sýn forritsins á sýndarminni.

Þetta er náð með því að afrita eina síðu yfir á auka biðminni, afrita aðra síðu á fyrstu síðu og afrita innihald biðminni á aðra síðu. Stærð biðminni er valin 4 kB af tveimur ástæðum.

Í fyrsta lagi er hægt að afrita efni í röð minni á skilvirkari hátt í flestum kerfum en að afrita stök bæti eða orð frá mismunandi svæðum. Í öðru lagi er ritaðgangsmynstrið að biðminnissíðunni algjörlega einsleitt og hefur því engin neikvæð áhrif á endingartíma minnis ef það er einnig meðhöndlað af slitjöfnunarkerfinu.

6 FÍN KORNAÐ SLITAJÖFNUN

Þar sem áðurnefnt reiknirit í kafla 5 virkar aðeins á nákvæmni minnisblaðsíðna (4 kB), er aðeins meðalaldur þessara síðna slitinn.

Í raun og veru nota forrit minnið á hverri minnissíðu mjög ójafnt og því er aðeins lítill hluti síðunnar notaður ákaft. Þar af leiðandi hefur það mikla hagræðingarmöguleika að jafna slitið á fínni kornhlutföllum ef það tekst að slíta ákafan aðgang að stökum bætum á alla hina minnissíðuna.

Það er ekki aðeins erfitt að gera sér grein fyrir því að viðhalda öldrunarmeðvituðum reiknirit eins og lýst er í fyrri hlutanum fyrir slíka fínkornastöðu heldur veldur það einnig gríðarlegum kostnaði ef áætlaður aldur er geymdur fyrir stök bæti.

ways to improve memory

Þess vegna tökum við á þessu vandamáli með reikniritum sem ekki eru meðvitaðir um öldrun. Þessar reiknirit virka á litlum hluta af minninu (aðeins nokkrar blaðsíður) og klæðast heitum reitum innan þessara svæða til alls svæðisins.

Grófkorna öldrunarmeðvitaða reikniritið endurkortar síðan líkamlegar staðsetningar síðna til að klæðast þeim yfir allt aðalminnið. Samkvæmt ýmsum viðmiðunarkeyrslum auðkennum við staflann sem svæðið með þéttustu heitustu punktana varðandi lestur og ritun aðgangur og textinn sem svæðið með þéttasta heita punktinn varðandi lesaðgang.

Þar af leiðandi leggjum við til tvö reiknirit til að klæðast þessum tilteknu svæðum innbyrðis. Þrátt fyrir að báðar reikniritin séu ólíkar í útfærslunni, þá er til sameiginlegt hugtak - við notum sýndarminnissvæði, kallað skuggasvæði, sem gerir okkur kleift að færa minnisefni innan tiltekins magns minnissíðu á snúningshátt á meðan við höldum fullum aðgangi að öllu minnisinnihaldi á allar stundir.

Við notum þetta kerfi til að færa allan stafla og textasvæðið innan afmarkaðs svæðis margra minnisblaða í litlum skrefum (64 bæti í hverju skrefi).

Þetta færir einnig þétta heitu punktana í litlu skrefunum í gegnum þema og dreifir minnisaðganginum jafnt. Í ljósi þess að fyrir markkerfi okkar er notkun á hrúguminni ekki mjög algeng, þá einblínum við ekki á hrúgahlutann í þessu verki.

Ef forritið notar hrúguna þarf hins vegar að nota svipað kerfi og fyrir staflan. Afgangurinn af þessum hluta sýnir sérstaka útfærslu fyrir hreyfingu stafla og texta meðan á keyrslu stendur.

6.1 Skuggasvæði
Hægt er að færa handahófskennt minnishluta innan stærra minnissvæðis með því að afrita það í bitaskipt á nýjan stað. Þetta er einnig hægt að nota til að færa nokkur minnishluta frá botni til efst á sumum minnissvæðum, sem gæti verið góð aðferð til að dreifa þéttum heitum toppum innan afritaðs minnis.

Hins vegar, svo lengi sem minnið er í notkun, er hreyfingin takmörkuð vegna þess að virki minnishlutinn þarf að vera á samfelldu vistfangarými og ekki er hægt að skipta því. Til dæmis, ef 90 bæti eru notuð af minni svæði sem er 100 bæti, virkt notað minni er aðeins hægt að færa með offset sem er að hámarki 10 bæti áður en það þyrfti að skipta því.

Til að leyfa fulla hreyfingu upp á 100 bæti án þess að kljúfa virkt notaða minni, notum við sérstaka sýndarminniskortlagningu, sem við köllum skuggakortið. Við kortleggjum líkamlegu síðurnar í sömu röð tvisvar inn í sýndarminnisrýmið yfir í síðari sýndarsíður. Mynd 4 sýnir meginregluna um skuggasvæðið.

Líkamlegu minnissíðurnar (hver til vinstri) eru kortlagðar tvisvar á samfelldar sýndarminnissíður (hver til hægri). Við köllum þetta annað sýndarminnissvæði skuggann vegna þess að líkamlegu síðurnar eru skyggðar þar af sýndarminniskortinu. Þegar virka minnisefnið er fært í gegnum sýndarminni getur það farið yfir mörkin milli aðal og skugga (t1 og t2).

memory enhancement

Samt sem áður er allt virka minnið að fullu ágengt á samfelldum sýndarvistföngum, en líkamlega efnið virkar allt um kring innan afmarkaða líkamlega minnissvæðisins.

Þegar virka minnið hefur farið alfarið yfir mörkin (t4), er umbrotinu lokið og líkamleg framsetning er sú sama og t0. Þannig byrjar kerfið að nota heimilisföng frá aðal sýndarminnissvæðinu núna í stað vistföng frá skuggasvæðinu. Þetta ferli er endurtekið, sem leiðir til snúningshreyfingar.

Þar sem umbúðunum er stjórnað í sýndarminni, kynnir þessi aðferð ekki mikla minnisgetu yfir höfuð. Raunverulegt virkt minni þarf að ná saman í margar minnissíður til að tryggja að skuggamörkin liggi nákvæmlega á milli tveggja síðna.

Þessi aðferð er ífarandi í sýndarminniskerfinu og minnisúthlutunarþjónustu keyrsluumhverfisins og þess vegna þarf að tryggja að í hvert skipti sem kortlagningu á annaðhvort aðal- eða skuggakortinu er breytt sé gagnhliðinni einnig breytt.

boost memory

6.2 Staflahreyfing

Í samsettri meðferð með skuggasvæðiskortinu, innleiðum við kerfi til að færa virkt notaða staflaminnið á keyrslutíma í handahófskenndum litlum skrefum. Við náum þessu með því að afrita staflainnihaldið á nýjar minnisstaðir. Við innleiðum nokkur skref til að halda sjónarhorni forritsins á stafla í samræmi við þessa atburðarás.

Staflinn er fluttur af og til með því að bæta við litlu offsetu við staflabendilinn (sp) og afrita gamla stafla innihaldið á nýju staðsetninguna. Rökrétt sýn forritsins gerir alltaf ráð fyrir lausum minnisbætum fyrir (neikvæð offset) sp og þegar búið til stafla innihald beint á eftir (jákvæð offset) sp.

Svo lengi sem staflinn er aðeins fluttur innan samfellt minnisrýmis, er hægt að viðhalda þessu útsýni auðveldlega. Vegna notkunar á skuggasvæðinu næst umlykja á meðan staflan er aðeins færð í eina átt. Þetta leiðir til snúningsflutnings á staflanum.

6.2.1 Heimilisfangssamræmi
Hugmyndin um að færa staflan hringlaga byggist á hlutfallslegum aðgangi að staflasvæðinu með C/C++ samsettum forritum. Hins vegar er sp afstæður aðgangurinn ekki eina leiðin til að fá aðgang að minnisinnihaldi í staflaminni. Stundum eða til að geyma bendilinn í alþjóðlegu gagnaskipulagi. Ennfremur geta ábendingar um breytur á staflanum einnig verið færðar út úr staflanum í suma alþjóðlega eða hrúgugagnaskipulag.

Við tilfærslu á stafla breytist minnisfang breytanna á staflanum, en innihald bendilanna helst óbreytt. Þetta leiðir til ógildra ábendinga og þar með rangrar notkunarhegðun.

Til að vinna bug á þessu vandamáli útbúum við staflaflutningskerfið með tveimur bendistillingaraðferðum, sem viðhalda réttmæti innihalds bendilsins yfir tilfærslum stafla.

Til að bjóða upp á kerfi til að greina og stilla tilvísanir í gamaldags staðsetningar innan staflahlutans, innleiðum við síðubundið samkvæmiskerfi fyrir bendilinn.

Alltaf þegar staflahlutinn er færður með litlum offsetu d (td 64 bætum) er öllu sýndarminnisstaðsetninginni skipt út. Þar sem staflahlutinn úthlutar n minnissíðum, eyðir uppsetningin (þar á meðal skugga) 2n sýndarminnissíður. Í stað þess að færa frá fyrra grunn heimilisfanginu b til b + d, flytjum við staflan á sýndarvistfangið b +d +(2n ·4096).

Vegna þessa getum við ógilt sýndarminniskortið á gamla staðsetningu staflans. Alltaf þegar forritið hefur nú gamaldags heimilisfang og reynir að fá aðgang að því, er gildra reist og meðhöndlað af stýrikerfinu.

Skráin sem veldur gildru er stillt á gildandi stöðu staflahlutans og framkvæmd getur haldið áfram. Trapsfor útibú til gamaldags staðsetningar eru meðhöndluð á svipaðan hátt (kafli 6.3). Gallinn við þetta fyrirkomulag er að vistfangarými sýndarminnis er hægt að neyta og ekki er hægt að endurnýta það. Hins vegar sýnir einfaldur útreikningur að þetta er enn gagnlegt: þar sem sýndarvistfangastærð 48 bita (td fyrir marga ARMv8-undiraða örgjörva) og 512 MiB er úthlutað fyrir kerfið (þ.e. er ekki hægt að nýta af samkvæmni vélbúnaður), 2,8 · 1011 síður eru tiltækar.

Þegar flutningur á sér stað á sekúndu fresti og stærð staflans er n=8 minnissíður, getur flutningur haldið áfram í 136 ár þar til kerfið klárast af sýndarminnissíðum. Þetta gæti farið langt yfir líftíma flestra innbyggðra kerfa.

6.3 Textahreyfing

Annar vélbúnaðurinn fyrir fínkorna slitjöfnun í þessu verki er vélbúnaður til að færa samansetta tvöfalda kóðann (þ.e. textahlutann). Þessi vélbúnaður notar aftur skuggasvæðið (kafli 6.1) til að leyfa snúningshreyfingu á öllu textahlutanum.

Öfugt við að færa staflan (kafli 6.2) þarf að framkvæma nokkur mismunandi skref til að viðhalda réttmæti forritsins meðan á framkvæmd stendur. Grundvallarhugmyndin er aftur að færa textahlutann í litlum skrefum (td 64 bæti) í gegnum undirmengi minnisblaða, til að dreifa ósamræmdu lesaðganginum innan þessara síðna.

Til að ná þessu breytum við forritinu sem er í gangi til að leyfa hreyfingu á tvíundarforritskóðanum meðan á framkvæmd stendur.

6.3.1 Tvöfaldur undirbúningur.

Sem fyrsta skref í átt að hreyfanlegum tvíundarforritskóða meðan á framkvæmd stendur, gerum við allan forritakóðann óháðan þannig að hann verður óháður algeru heimilisfangi textahlutans. Þetta er hægt að ná með því að nota gcc valkostinn -fPIC, sem býr til stöðuóháðan kóða [16].

Tvíundarkóði, sem myndast, framkvæmir útibú og fallköll alltaf miðað við forritateljarann ​​(þ.e. stöðu leiðbeiningarinnar sem nú er framkvæmd). Aðgangur að alþjóðlegum gagnagerðum (gögnum og BSS), sem og ytri virkniköllum, er meðhöndluð af Global Offset Table (GOT) og Procedure Linkage Table (PLT). Hægt er að nálgast þessar töflur með hlutfallstölu forritsteljara.

Töflurnar eru útbúnar með samsvarandi algildum vistföngum frá stýrikerfinu (þ.e. frá kraftmikla tengilinn) á keyrslutíma. PLT inniheldur einnig færslur fyrir innri aðgerðir (ekki ytri bókasafnsaðgerðir), þar sem algjör heimilisföng eru stundum notuð til frekari útreikninga á heimilisfangi.

Til að koma í veg fyrir að þýðandinn bæli þessar færslur niður, setjum við forritið saman sem sameiginlegt bókasafn og hleðum því inn í stýrikerfið á keyrslutíma. Þetta krefst tengingar að hluta, þar sem tilvísanir í ytri aðgerðir og gagnaskipulag eru byggðar í GOT og PLT.

increase brain power

6.3.2 Flutningsrútína. Raunveruleg hreyfing textahlutans í litlum vegalengdum (td 64 bætum) krefst eftirfarandi skrefa:

(1) Orðslegt afrit af tvíundartextanum

(2) Leiðrétting á veffangi sem byggir á síðu

(3) Farðu í samræmi við viðhald

(4) GOT/PLT viðhald

(5) Tölvuflutningur.

Þó að skref (1) sé einfalt afrit af stökum orðum á nýjar minnisstaðir, krefjast síðari viðhaldsþrep nokkurrar sérstakrar fyrirhafnar. Eins og áður hefur komið fram notum við stöðuóháðan kóða til að viðhalda sjálfstæði hins algera heimilisfangs textans.

Fyrir ARMv8 eru þýðandainnskotin leiðbeiningar í þessum tilgangi (þ.e. að takast á við GOT og PLT), sem reikna út heimilisfang miðað við 4-KiB síðu núverandi forritateljara.

Þannig að í hvert skipti sem slík leiðbeining flytur frá einni til annarrar 4-KiB síðu, endurskrifum við leiðbeiningarnar í skrefi (2) og minnkum strax frávikið um 1 til að viðhalda útreikningi á móti miðað við markmiðið. Þar sem GOT og PLT vistföngin eru alltaf ákvörðuð af þessum adrp leiðbeiningum, útilokum við GOT og PLT frá hreyfingu textahlutans. Skref (3) notar sama heimilisfangssamkvæmni og lýst er áðan (kafli 6.2.1).

Skref (4) aðlagar sjálfstilvísanir að aðgerðum og gagnaþáttum forritsins sjálfs til að leyfa forritinu að búa til réttar ábendingar fyrir þær (td virknibendingar).

Við stilltum loksins forritið í nýju stöðuna og héldum áfram framkvæmd. Á heildina litið bjóðum við upp á tvö sérhæfð kerfi til að færa stafla og texta í litlum skrefum í gegnum aðalminnið.

Ásamt uppsetningu á skuggasvæðinu okkar verður þessi hreyfing að snúningshreyfingu, sem dreifir þéttum aðgangsheitum reitum yfir afmarkað minnissvæði.

Þessi skuggauppsetning starfar alfarið í sýndarminnisrýminu og enn er hægt að skipta á kortlagðu efnissíðunni með grófkornaðri öldrunarmeðvitaðri vélbúnaði.

Útfærslunni er aðeins breytt til að halda tvöföldu kortlagningu skuggasíðunnar í samræmi. Þannig er slitjöfnun sem er meðvituð um heildarslit náð.


For more information:1950477648nn@gmail.com

Þér gæti einnig líkað