Presentation laddar. Vänta.

Presentation laddar. Vänta.

Adressöversättning Repetition av virtuellt minne

Liknande presentationer


En presentation över ämnet: "Adressöversättning Repetition av virtuellt minne"— Presentationens avskrift:

1 Adressöversättning Repetition av virtuellt minne
TLB - cacheminne för sidtabellinformation Virtuellt eller fysiskt adresserat cacheminne Tricket - det bästa av två världar Minneshierarki

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

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

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

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

6 Minneslayout Kod, data, stack utspridda Många ogiltiga sidor
adress 0 Kod, data, stack utspridda Många ogiltiga sidor Enkel sidtabell blir stor och tom kod data utökning av dataområdet utökning av stacken stack största möjliga adress

7 Problem Många (möjliga) virtuella sidor medför
stora sidtabeller som medför sidtabeller i primärminnet som medför långsam uppslagning

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

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

10 TLB Translation Lookaside Buffer
Cacheminne för adressöversättning Delmängd av sidtabellen Associativt, mindre än 200 platser Sitter på processorchippet Miss-rate under 1 procent Missar hanteras i programvara i Riscar

11 Misshantering i programvara
TLB-miss ger felavbrott (exception) Felavbrottsrutinen läser sidtabellen Sidfel upptäcks som TLB-miss, felavbrotts- rutinen ser i tabellen att det är sidfel Vanligt i Riscar, som saknar mikroprogram x86 hanterar TLB-miss i hårdvara

12 TLB-miss i mjukvara medför:
Operativsystemet bestämmer hur sidtabellen ser ut Operativsystemet bestämmer TLB:ns utbytesalgoritm Instruktioner för att läsa/skriva TLB-platser Delar av sidtabell kan hamna i datacachen

13 Statusbitar Sidbytesrutin behöver use-bit och dirty-bit
use-bit: har sidan använts sen sist? Behövs för att approximera LRU dirty-bit: har sidan skrivits sen sist? Kan spara skrivning till långsamt skivminne

14 Statusbitar i TLB:n TLB kan ha use-bit, men måste inte: endast nyligen använda sidor finns i TLB:n TLB kan ha dirty-bit (för prestanda), annars: när en sidas översättning lagras i TLB:n markeras sidan som skrivskyddad första skrivning ger felavbrott, programrutinen sätter dirty-bit i sidtabellen

15 Obs! En TLB är inget vanligt cacheminne!
En dirty-bit i TLB:n anger om sidan ändrats i minnet Innehållet i TLB:n ändras inte av att programmet skriver till sidan (undantag: dirty-bit för sidan ettställs) Om 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) Coverage = sidstorlek x antal sidor i TLB
Större täckning ger färre missar Ökad sidstorlek ger ökad täckning Två sidstorlekar vanligt, exempelvis 4 kB och 4 MB Bildminne (och OS?) kan ligga i stora sidor

17 Virtuellt eller fysiskt adresserat cacheminne
CPU TLB cacheminne CPU TLB cacheminne Virtuella adresser i adresslapparna TLB används bara vid miss Fysiska adresser i adresslapparna TLB används vid varje referens

18 Fördelar med virtuellt adresserade cacheminnen
Snabbare, behöver inte vänta på TLB:n kortare cykeltid större cacheminne kortare pipeline TLB:n används mer sällan gemensam TLB räcker TLB:n kan vara större och långsammare Falska konflikter undviks i cacheminnet

19 Nackdelar med virtuellt adresserade cacheminnen
Synonymer - olika virtuella adresser blir samma fysiska samma fil inmappad på två ställen i en process samma fil eller delade bibliotek inmappade i två olika processer Homonymer - samma virtuella adress blir olika fysiska vid processbyte

20 Synonymproblem Om A och B är två olika virtuella adresser som mappas till samma fysiska, så kan STORE A <- #0 LOAD R3 <- B resultera i att B  0 Lösning: låt OS:et förbjuda synonymer

21 Homonymproblem Om 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 LOAD R3 <- A ge värdet från X i stället för från Y

22 Processbyte i virtuellt adresserat cacheminne
Hela adressrymden byts vid processbyte. För att lösa homonymproblemen kan man invalidera hela cacheminnet, eller lägga till processnummer till varje adresslapp Operativsystemet använder egna adresser, varje systemanrop blir byte av adressrymd

23 Fysiskt adresserade cacheminnen
Fördelar: Inga synonym- eller homonymproblem Behöver ej invalideras vid processbyte Nackdelar: TLB-uppslagning före varje referens Falska konflikter

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

25 TLB-uppslagning vid varje referens
Instruktionshämtning (glöm inte den!) Datareferens (vid load/store) Kräver separat I-TLB och D-TLB, och förstås separata I- och D-cacheminnen TLBn 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 sidnummer offset 20bit 10bit index 2bit byte-offset 1 felavbrott = lagrad adresslapp lagrat ord (32 bit) adress in = (20 bit) = . . . . . . data ut data ut Minne = . . . med 1024 ord TLB om 53bit till processorn = fysiskt sidnummer & fanns/ fanns inte Ett direktmappat cacheminne med parallell TLB-uppslagning.

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

28 Sidfärgning (page coloring)
Den virtuella adressen används som index, den fysiska finns i adresslappen virtuellt sidnummer sidoffset får inte ändras av adressöversättningen index fysiskt sidnummer sidoffset

29 Sidfärgning Tricket kan användas i större cacheminnen
Sidbytesalgoritmen väljer alltid sidor så att överlappande bitar ej ändras av TLB:n Huvudminnet som cache för hårddisken - inte längre fullt associativt Falska konflikter minskar eller försvinner

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


Ladda ner ppt "Adressöversättning Repetition av virtuellt minne"

Liknande presentationer


Google-annonser