Adressöversättning zRepetition av virtuellt minne zTLB - cacheminne för sidtabellinformation zVirtuellt eller fysiskt adresserat cacheminne zTricket - det bästa av två världar zMinneshierarki
Repetition av virtuellt minne process 1 - virtuell adressrymd 1 process 2 - virtuell adressrymd 2 sidtabell 1sidtabell 2 fysiskt minne skivminne
Adressöversättning virtuell adress virtuellt sidnummer (VPN)sidoffset (PO) fysisk adress fysiskt sidnummer (PPN)sidoffset (PO) adress- översättning
Enkel sidtabell
Minneslayout zKod, data, stack utspridda zMånga ogiltiga sidor zEnkel sidtabell blir stor och tom adress 0 största möjliga adress kod data stack utökning av dataområdet utökning av stacken
Problem zMånga (möjliga) virtuella sidor medför zstora sidtabeller som medför zsidtabeller i primärminnet som medför zlångsam uppslagning
Flernivåers sidtabell zTomma sidtabeller på nivå 2 och 3 kan ersättas med nollställd giltigbit på nivån ovanför
Flernivåers sidtabell, exempel
TLB Translation Lookaside Buffer zCacheminne för adressöversättning zDelmängd av sidtabellen zAssociativt, mindre än 200 platser zSitter på processorchippet zMiss-rate under 1 procent zMissar hanteras i programvara i Riscar
Misshantering i programvara zTLB-miss ger felavbrott (exception) zFelavbrottsrutinen läser sidtabellen zSidfel upptäcks som TLB-miss, felavbrotts- rutinen ser i tabellen att det är sidfel zVanligt i Riscar, som saknar mikroprogram zx86 hanterar TLB-miss i hårdvara
TLB-miss i mjukvara medför: zOperativsystemet bestämmer hur sidtabellen ser ut zOperativsystemet bestämmer TLB:ns utbytesalgoritm zInstruktioner för att läsa/skriva TLB-platser zDelar av sidtabell kan hamna i datacachen
Statusbitar zSidbytesrutin behöver use-bit och dirty-bit zuse-bit: har sidan använts sen sist? Behövs för att approximera LRU zdirty-bit: har sidan skrivits sen sist? Kan spara onödig skrivning till skivminnet
Statusbitar i TLB:n zTLB behöver ingen use-bit - endast nyligen använda sidor finns i TLB:n zTLB behöver ingen dirty-bit, eftersom: ynär en sidas översättning lagras i TLB:n markeras sidan som skrivskyddad yförsta skrivning ger felavbrott, programrutinen sätter dirty-bit i sidtabellen
Täckning (coverage) zCoverage = sidstorlek x antal sidor i TLB zStörre täckning ger färre missar zÖkad sidstorlek ger ökad täckning zTvå sidstorlekar vanligt, exempelvis 4 kB och 4 MB zBildminne och OS kan ligga i stora sidor
Virtuellt eller fysiskt adresserat cacheminne CPU TLB cacheminne CPU TLB cacheminne z Virtuella adresser i adresslapparna z TLB används bara vid miss z Fysiska adresser i adresslapparna z TLB används vid varje referens
Fördelar med virtuellt adresserade cacheminnen zSnabbare, behöver inte vänta på TLB:n ykortare cykeltid ystörre cacheminne ykortare pipeline zTLB:n används mer sällan ygemensam TLB räcker yTLB:n kan vara större och långsammare zFalska konflikter undviks i cacheminnet
Nackdelar med virtuellt adresserade cacheminnen zSynonymer - olika virtuella adresser blir samma fysiska ysamma fil inmappad på två ställen i en process ysamma fil eller delade bibliotek inmappade i två olika processer zHomonymer - samma virtuella adress blir olika fysiska yvid processbyte
Synonymproblem zOm A och B är två olika virtuella adresser som mappas till samma fysiska, så kan STOREA <- #0 LOADR3 <- B resultera i att B 0 zLösning: låt OS:et förbjuda synonymer
Homonymproblem zOm den virtuella adressen A motsvarar den fysiska adressen X som finns i cacheminnet och TLB:n uppdateras så att A motsvarar en annan fysisk adress Y, så kan LOADR3 <- A ge värdet från X i stället för från Y
Processbyte i virtuellt adresserat cacheminne zHela adressrymden byts vid processbyte. För att lösa homonymproblemen kan man yinvalidera hela cacheminnet, eller ylägga till processnummer till varje adresslapp zOperativsystemet använder ofta fysiska adresser direkt, varje systemanrop blir ett byte av adressrymd
Fysiskt adresserade cacheminnen zFördelar: yInga synonym- eller homonymproblem yBehöver ej invalideras vid processbyte yOperativsystemet kan använda cacheminnet (med fysiska adresser) zNackdelar: yTLB-uppslagning före varje referens yFalska konflikter
Tricket - samtidig uppslagning i TLB och cacheminne
Trickets restriktion zIngen enda bit från adresslappen får användas som indexbit! Detta medför att: zCachestorlek associativitetstal x sidstorlek
Sidfärgning (page coloring) zDen virtuella adressen används som index, den fysiska finns i adresslappen virtuellt sidnummersidoffset index fysiskt sidnummersidoffset får inte ändras av adressöversättningen
Sidfärgning zTricket kan användas i större cacheminnen zSidbytesalgoritmen väljer alltid sidor så att överlappande bitar ej ändras av TLB:n zHuvudminnet som cache för hårddisken - inte längre fullt associativt zFalska konflikter minskar eller försvinner
Hierarki av cacheminnen zRegister zI- och D-cache zLevel 2, Level 3 zHuvudminne zSkivminne