Hva er oversettelsesbufferen?

CPUer er utrolig komplekse beist. Det er et stort antall sammenkoblede deler som alle må fungere perfekt unisont for å oppnå ytelsesnivåene vi ser. Minneytelse er en nøkkelfaktor i ytelsen til moderne CPUer, spesielt som en begrensende faktor.

Hvorfor er minnehastighet så viktig?

CPU-er er utrolig raske, med de siste generasjonene som kjører på 5,7 GHz når de er tilstrekkelig avkjølt. Dette gjør at de kan gjennomføre 5,7 milliarder operasjoner hvert sekund. Mange av disse operasjonene utfører en handling på en eller annen type data som må lagres i minnet.

Hovedsystemminnet, kjent som RAM, er også veldig raskt. Dessverre er det veldig raskt sammenlignet med noe annet enn CPU. Den absolutte ventetiden på moderne high-end RAM er i størrelsesorden 60 nanosekunder. Dessverre betyr det omtrent 342 CPU-sykluser. For å øke hastigheten på minnetilgangen brukes en CPU-cache som dynamisk cacher data. Denne cachen er plassert på selve CPU-dysen og bruker SRAM-celler i stedet for DRAM-celler, noe som gjør den mye raskere. Dessverre er CPU-cachen også mye mindre enn system-RAM, vanligvis ikke engang 100 MB. Likevel, til tross for sin minimale størrelse, øker det lagdelte CPU-cache-systemet enormt systemytelsen.

Her kommer virtuelt minne for å rote til alt

Moderne datamaskiner bruker et system som kalles virtuelt minne. I stedet for å tildele fysiske minneadresser til prosesser, brukes virtuelle minneadresser. Hver prosess har sitt eget virtuelle minneadresserom. Dette har to fordeler. For det første gir det enkelt skille mellom minne som tilhører en prosess og minne som tilhører en annen. Dette bidrar til å forhindre angrep der skadelig programvare leser data fra minnet til annen programvare, og potensielt får tilgang til sensitiv informasjon. Det skjuler også den fysiske minnestrukturen fra prosessen. Dette gjør at CPU-en kan flytte sjeldne biter av minne til en personsøkerfil på lagring, uten nødvendigvis å demontere den fra virtuell RAM. Dette gjør at datamaskinen skånsomt kan håndtere scenarier der det kreves mer RAM enn det som er fysisk til stede. Uten virtuelt minne,

Dessverre, hvis du bruker virtuelle minneadresser, må datamaskinen faktisk oversette disse virtuelle minneadressene til fysiske minneadresser for å lese dataene. Dette krever en tabell for å lagre alle oversettelsene av virtuelle minneadresser til fysiske minneadresser. Størrelsen på dette avhenger direkte av mengden RAM som brukes. Det er generelt ganske lite, i det minste sammenlignet med kapasiteten til system-RAM. Dessverre, hvis du lagrer oversettelsen mellom virtuelle adresser og fysiske adresser i RAM, må du gjøre to forespørsler til RAM for hver forespørsel til RAM. En for å finne den fysiske adressen å be om, og en annen for å faktisk få tilgang til den plasseringen.

Angi bufferen til sideoversettelse for oversettelsen

Løsningen på dette problemet er å lagre oversettelsestabellen et sted raskere. CPU-cachen ville passet pent, i det minste fra et hastighetsperspektiv. Problemet med det er imidlertid at CPU-cachen er liten, og allerede mye brukt. Ikke bare passer ikke bordet i hurtigbufferen, men å gjøre det vil forstyrre dens allerede ytelsesdefinerende bruk.

Selvfølgelig, hvis prinsippet for hurtigbufferen allerede fungerer for minnetilgang, hvorfor ikke gjenta det for oversettelsestabellen? Og det er akkurat det Translation Lookaside Buffer, eller TLB, er. Det er en hurtigbuffer for nylige adresseoversettelser. Den er ikke stor nok til å oppbevare hele bordet, men den lille størrelsen betyr at den kan reagere veldig raskt, innen en enkelt klokkesyklus.

Enhver minneforespørsel går via TLB. Hvis det er et TLB-treff, kan det gi den fysiske minneadressen for den faktiske forespørselen, vanligvis legge til en enkelt syklus med latens. Hvis det er en TLB-glipp, må oppslaget utføres fra hovedminnet. Det er en liten ytelsesstraff for en TLB-glipp på rundt 5 sykluser, et tap mer enn overskygget av minnetilgangsforsinkelsen. Når adresseoversettelsen er hentet fra system-RAM, blir den skjøvet inn i TLB og forespørselen gjentas med et umiddelbar TLB-treff.

Merk: Det er forskjellige ordninger for TLB-utkastelse. Noen kan bruke først inn, først ut eller FIFO. Andre kan bruke en minst ofte brukt- eller LFU-ordning.

I det sjeldne tilfellet at det ikke er noen oppføring i adresseoversettelsestabellen, oppstår en sidefeil, siden de forespurte dataene ikke er i RAM. OS må da håndtere feilen og overføre dataene fra lagring til RAM før forespørselen kan fortsette.

Konklusjon

Translation Lookaside Buffer, eller TLB, er en høyhastighets CPU-buffer dedikert til å bufre nye adresseoversettelser fra sidefilen i system-RAM. Dette er nødvendig ettersom virtuelle minnesystemer, som implementert i alle moderne datamaskiner, vil kreve to forespørsler til RAM for hver forespørsel til RAM. En for å oversette den virtuelle minneadressen til en fysisk minneadresse, og en annen for å faktisk få tilgang til den fysiske adressen. Ved å bufre nylige oversettelser kan minneforsinkelsen reduseres kraftig for TLB-treff.

Det må utvises forsiktighet for å sikre at bufrede oversettelser er relevante for den aktive prosessen. Siden hver prosess har et annet virtuelt adresseområde, kan de ikke gjenbrukes. Ikke strengt begrensende for dette var årsaken bak Meltdown-sårbarheten.


Hvordan klone en harddisk

Hvordan klone en harddisk

I den moderne digitale tidsalder, hvor data er en verdifull ressurs, kan kloning av en harddisk på Windows være en avgjørende prosess for mange. Denne omfattende guiden

Hvordan fikse driveren WUDFRd kunne ikke lastes inn på Windows 10?

Hvordan fikse driveren WUDFRd kunne ikke lastes inn på Windows 10?

Står du overfor feilmeldingen mens du starter datamaskinen som sier at driveren WUDFRd ikke kunne lastes inn på datamaskinen?

Slik fikser du NVIDIA GeForce Experience-feilkode 0x0003

Slik fikser du NVIDIA GeForce Experience-feilkode 0x0003

Opplever du NVIDIA GeForce-opplevelsesfeilkode 0x0003 på skrivebordet ditt? Hvis ja, les bloggen for å finne ut hvordan du løser denne feilen raskt og enkelt.

Hva er SMPS?

Hva er SMPS?

Lær hva som er SMPS og betydningen av ulike effektivitetsvurderinger før du velger en SMPS for datamaskinen din.

Hvorfor slås ikke Chromebooken på

Hvorfor slås ikke Chromebooken på

Få svar på spørsmålet Hvorfor slås ikke Chromebooken min på? I denne nyttige veiledningen for Chromebook-brukere.

Slik rapporterer du phishing-svindel til Google

Slik rapporterer du phishing-svindel til Google

Lær hvordan du rapporterer en svindler til Google for å forhindre at de svindler andre med denne veiledningen.

Roomba stopper, stikker og snur – fiks

Roomba stopper, stikker og snur – fiks

Løs et problem der Roomba-robotstøvsugeren stopper, fester seg og fortsetter å snu.

Hvordan endre grafikkinnstillinger på Steam Deck

Hvordan endre grafikkinnstillinger på Steam Deck

Steam Deck tilbyr en robust og allsidig spillopplevelse rett ved fingertuppene. Men for å optimere spillingen din og sikre best mulig

Hva er isolasjonsbasert sikkerhet?

Hva er isolasjonsbasert sikkerhet?

Skulle fordype seg i et emne som blir stadig viktigere i verden av cybersikkerhet: isolasjonsbasert sikkerhet. Denne tilnærmingen til

Slik bruker du Auto Clicker for Chromebook

Slik bruker du Auto Clicker for Chromebook

I dag skulle du fordype deg i et verktøy som kan automatisere repeterende klikkeoppgaver på Chromebooken din: Auto Clicker. Dette verktøyet kan spare deg for tid og