Presentation laddar. Vänta.

Presentation laddar. Vänta.

Adressöversättning zRepetition av virtuellt minne zTLB - cacheminne för sidtabellinformation zVirtuellt eller fysiskt adresserat cacheminne zTricket -

Liknande presentationer


En presentation över ämnet: "Adressöversättning zRepetition av virtuellt minne zTLB - cacheminne för sidtabellinformation zVirtuellt eller fysiskt adresserat cacheminne zTricket -"— Presentationens avskrift:

1 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

2 Virtuellt minne process 1 - virtuell adressrymd 1 process 2 - virtuell adressrymd 2 sidtabell 1sidtabell 2 fysiskt minne skivminne

3 Adressöversättning virtuell adress virtuellt sidnummer (VPN)sidoffset (PO) fysisk adress fysiskt sidnummer (PPN)sidoffset (PO) adress- översättning

4 Vanliga sidstorlekar z4 kbyte (Sparc, x86) z8 kbyte (Ultrasparc) z4 kbyte + 4 Mbyte (Pentium) z8k, 64k, 512k, 4Mbyte (Alpha 21264)

5 Enkel sidtabell en minnesadress virtuellt sidnummeroffset Enkel adressöversättning med hjälp av en enkel sidtabell. primär- sida 73 sida 71 sida 72 minne sidtabell fysiskt sidnummer

6 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

7 Problem zMånga (möjliga) virtuella sidor medför zstora sidtabeller som medför zsidtabeller i primärminnet som medför zlångsam uppslagning

8 Flernivåers sidtabell zTomma sidtabeller på nivå 2 och 3 kan ersättas med nollställd giltigbit på nivån ovanför sidoffset (12bit) inkommande adress virtuellt sidnummer... sida index 3 (8 bit)index 2 (8 bit)index 1 (4 bit) sidtabell nivå 3... sidtabell nivå 2sidtabell nivå 1...

9 Flernivåers sidtabell, exempel Sidtabeller för ett program. Själva sidorna finns inte med i figuren. sidtabell nivå tre sidtabeller på nivå 2... fem sidtabeller på nivå tre sidtabeller för programkod en sidtabell för data en sidtabell för stacken

10 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

11 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

12 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

13 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 skrivning till långsamt skivminne

14 Statusbitar i TLB:n zTLB kan ha use-bit, men måste inte: endast nyligen använda sidor finns i TLB:n zTLB kan ha dirty-bit (för prestanda), annars: 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

15 Obs! En TLB är inget vanligt cacheminne! zEn dirty-bit i TLB:n anger om sidan ändrats i minnet zInnehållet i TLB:n ändras inte av att programmet skriver till sidan (undantag: dirty-bit för sidan ettställs) zOm dirty-bit = 1 så måste sidan sparas i swap-filen innan minnet återanvänds. TLB-innehållet ska inte sparas någonstans!

16 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

17 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

18 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

19 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

20 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

21 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

22 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 egna adresser, varje systemanrop blir byte av adressrymd

23 Fysiskt adresserade cacheminnen zFördelar: yInga synonym- eller homonymproblem yBehöver ej invalideras vid processbyte zNackdelar: yTLB-uppslagning före varje referens yFalska konflikter

24 Falska konflikter zVirtuella adressen visar ingen konflikt zAdressöversättning skapar konflikten zOS kan hindra detta processens virtuella adressrymd sidtabell fysiskt minne skivminne direktmappat cacheminne

25 TLB-uppslagning vid varje referens zInstruktionshämtning (glöm inte den!) zDatareferens (vid load/store) zKräver separat I-TLB och D-TLB, och förstås separata I- och D-cacheminnen zTLBn tar en extra cykel i pipelinen, om inte tricket med samtidig uppslagning används

26 Tricket - samtidig uppslagning i TLB och cacheminne inkommande (virtuell) adress offsetsidnummer Ett direktmappat cacheminne med parallell TLB-uppslagning. = & fanns/fanns inte Minne 20bit10bit index ³ 1 felavbrott 2bit byte-offset till processorn adress in data ut lagrat ord (32 bit)lagrad adresslapp (20 bit) med 1024 ord om 53bit TLB fysiskt sidnummer... = = = =......

27 Trickets restriktion zIngen enda bit från adresslappen får användas som indexbit! Detta medför att: zCachestorlek  associativitetstal x sidstorlek

28 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

29 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

30 Hierarki av cacheminnen zRegister zI- och D-cache zLevel 2, Level 3 zHuvudminne zSkivminne L2 cache L3 cache En minneshierarki med flera nivåer. primärminne på processor register skivminne virtuella adresser fysiska adresser data D- TLB L1D- cache I- TLB L1I- cache instruk- tioner processor- chippet


Ladda ner ppt "Adressöversättning zRepetition av virtuellt minne zTLB - cacheminne för sidtabellinformation zVirtuellt eller fysiskt adresserat cacheminne zTricket -"

Liknande presentationer


Google-annonser