Vad är översättningsbufferten?

CPU: er är otroligt komplexa bestar. Det finns ett stort antal sammankopplade delar som alla måste fungera perfekt unisont för att uppnå de prestandanivåer som vi ser. Minnesprestanda är en nyckelfaktor för prestandan hos moderna processorer, särskilt som en begränsande faktor.

Varför är minneshastighet så viktig?

CPU:er är otroligt snabba, med de senaste generationerna som körs på 5,7 GHz när de är tillräckligt kylda. Detta gör att de kan genomföra 5,7 miljarder operationer varje sekund. Många av dessa operationer utför en åtgärd på någon typ av data som behöver lagras i minnet.

Huvudsystemminnet, känt som RAM, är också mycket snabbt. Tyvärr är den väldigt snabb jämfört med allt annat än processorn. Den absoluta latensen på modernt avancerad RAM är i storleksordningen 60 nanosekunder. Tyvärr översätts det till ungefär 342 CPU-cykler. För att snabba upp minnesåtkomsten används en CPU-cache som dynamiskt cachar data. Denna cache finns på själva CPU-matrisen och använder SRAM-celler snarare än DRAM-celler, vilket gör det mycket snabbare. Tyvärr är CPU-cachen också mycket mindre än system-RAM, i allmänhet inte ens 100 MB. Ändå, trots sin ringa storlek, ökar det skiktade CPU-cachesystemet avsevärt systemets prestanda.

Här kommer virtuellt minne för att förstöra allt

Moderna datorer använder ett system som kallas virtuellt minne. Istället för att allokera fysiska minnesadresser till processer används virtuella minnesadresser. Varje process har sitt eget virtuella minnesadressutrymme. Detta har två fördelar. För det första ger det enkel åtskillnad mellan minne som tillhör en process och minne som tillhör en annan. Detta hjälper till att förhindra attacker där skadlig programvara läser data från minnet av annan programvara, vilket kan komma åt känslig information. Det döljer också den fysiska minnesstrukturen från processen. Detta gör att CPU:n kan flytta sällan använda minnesbitar till en personsökningsfil på lagring, utan att nödvändigtvis avmontera den från virtuellt RAM. Detta gör det möjligt för datorn att försiktigt hantera scenarier där mer RAM krävs än vad som finns fysiskt. Utan virtuellt minne,

Tyvärr, om du använder virtuella minnesadresser, måste datorn faktiskt översätta dessa virtuella minnesadresser till fysiska minnesadresser för att läsa data. Detta kräver en tabell för att lagra alla översättningar av virtuella minnesadresser till fysiska minnesadresser. Storleken på detta beror direkt på mängden RAM som används. Det är i allmänhet ganska litet, åtminstone jämfört med kapaciteten hos system-RAM. Tyvärr, om du lagrar översättningen mellan virtuella adresser och fysiska adresser i RAM, måste du göra två förfrågningar till RAM för varje begäran till RAM. En för att hitta den fysiska adressen att begära och sedan en annan för att faktiskt komma åt den platsen.

Ange översättningsbufferten

Lösningen på detta problem är att lagra översättningstabellen någonstans snabbare. CPU-cachen skulle passa bra, åtminstone ur ett hastighetsperspektiv. Problemet med det är dock att CPU-cachen är liten och redan hårt utnyttjad. Inte nog med att tabellen inte får plats i cachen, utan att göra det skulle störa dess redan prestandadefinierande användning.

Naturligtvis, om principen för cachen redan fungerar för minnesåtkomst, varför inte upprepa det för översättningstabellen? Och det är precis vad Translation Lookaside Buffer, eller TLB, är. Det är en höghastighetscache för senaste adressöversättningar. Den är inte tillräckligt stor för att förvara hela bordet, men dess ringa storlek gör att den kan svara mycket snabbt, inom en enda klockcykel.

Varje minnesbegäran går via TLB. Om det finns en TLB-träff kan den tillhandahålla den fysiska minnesadressen för den faktiska begäran, vanligtvis lägga till en enskild latenscykel. Om det finns en TLB-miss måste sökningen utföras från huvudminnet. Det finns en liten prestationsstraff för en TLB-miss på cirka 5 cykler, en förlust mer än överskuggad av minnesåtkomstfördröjningen. När adressöversättningen väl har hämtats från systemets RAM, skjuts den in i TLB:n och begäran upprepas sedan med en omedelbar TLB-träff.

Obs: Det finns olika scheman för TLB vräkning. Vissa kan använda ett först in-, först ut- eller FIFO-schema. Andra kan använda ett minst ofta använda- eller LFU-schema.

I det sällsynta fallet att det inte finns någon post i adressöversättningstabellen, orsakas ett sidfel, eftersom den begärda informationen inte finns i RAM. OS måste sedan hantera felet och överföra data från lagring till RAM innan begäran kan fortsätta.

Slutsats

Translation Lookaside Buffer, eller TLB, är en höghastighets CPU-cache dedikerad till att cachelagra nya adressöversättningar från sidfilen i systemets RAM. Detta är nödvändigt eftersom virtuella minnessystem, som implementeras i alla moderna datorer, skulle kräva två förfrågningar till RAM för varje begäran till RAM. En för att översätta den virtuella minnesadressen till en fysisk minnesadress, och en annan för att faktiskt komma åt den fysiska adressen. Genom att cachelagra senaste översättningar kan minneslatens reduceras avsevärt för TLB-träffar.

Försiktighet måste vidtas för att säkerställa att cachade översättningar är relevanta för den för närvarande aktiva processen. Eftersom varje process har ett annat virtuellt adressutrymme kan de inte återanvändas. Att inte strikt begränsa detta var orsaken bakom Meltdown-sårbarheten.


Hur man klona en hårddisk

Hur man klona en hårddisk

I den moderna digitala tidsåldern, där data är en värdefull tillgång, kan kloning av en hårddisk på Windows vara en avgörande process för många. Denna omfattande guide

Hur fixar jag drivrutinen WUDFRd kunde inte laddas på Windows 10?

Hur fixar jag drivrutinen WUDFRd kunde inte laddas på Windows 10?

Står du inför felmeddelandet när du startar din dator som säger att drivrutinen WUDFRd inte kunde laddas på din dator?

Så här åtgärdar du NVIDIA GeForce Experience Error Code 0x0003

Så här åtgärdar du NVIDIA GeForce Experience Error Code 0x0003

Upplever du NVIDIA GeForce-felkod 0x0003 på ditt skrivbord? Om ja, läs bloggen för att hitta hur du åtgärdar det här felet snabbt och enkelt.

Vad är SMPS?

Vad är SMPS?

Lär dig vad som är SMPS och innebörden av olika effektivitetsklasser innan du väljer en SMPS för din dator.

Varför slås inte min Chromebook på

Varför slås inte min Chromebook på

Få svar på frågan Varför slås inte min Chromebook på? I den här användbara guiden för Chromebook-användare.

Hur man rapporterar nätfiskebedrägerier till Google

Hur man rapporterar nätfiskebedrägerier till Google

Lär dig hur du rapporterar en bedragare till Google för att hindra dem från att lura andra med den här guiden.

Roomba stannar, sticker och vänder sig om – fixa

Roomba stannar, sticker och vänder sig om – fixa

Åtgärda ett problem där din Roomba robotdammsugare stannar, fastnar och fortsätter att vända sig om.

Hur man ändrar grafikinställningar på Steam Deck

Hur man ändrar grafikinställningar på Steam Deck

Steam Deck erbjuder en robust och mångsidig spelupplevelse precis vid dina fingertoppar. Dock för att optimera ditt spelande och säkerställa bästa möjliga

Vad är isoleringsbaserad säkerhet?

Vad är isoleringsbaserad säkerhet?

Vi skulle fördjupa oss i ett ämne som blir allt viktigare i världen av cybersäkerhet: isoleringsbaserad säkerhet. Detta förhållningssätt till

Hur man använder Auto Clicker för Chromebook

Hur man använder Auto Clicker för Chromebook

Idag skulle jag fördjupa dig i ett verktyg som kan automatisera repetitiva klickuppgifter på din Chromebook: Auto Clicker. Detta verktyg kan spara tid och