Upload
dolien
View
217
Download
0
Embed Size (px)
Citation preview
Calcolatori Elettronici - La memoria virtuale (2) - Slide 2 L. Tarantino - a.a. 2011/2012
Come usare la memoria secondaria
… oltre che per conservare permanentemente dati e programmi
Idea
Tenere parte del codice in mem. princ. e il resto in mem. secondaria
Trattare la mem. principale come una cache per la mem. secondaria
Vantaggi
Molti programmi contemporaneamente in esecuzione anche se la
somma delle quantità di memoria che ognuno di essi richiede eccede
le dimensioni della memoria principale
un singolo programma può eccedere le dimensioni della memoria
principale (tanto carico solo porzioni di esso)
Meccanismi base
memoria principale e memoria secondaria vengono scomposti in
gruppi di parole detti pagine
se non trovo una pagina in memoria principale ho una mancanza di
pagina (page fault) e cercherò la pagina in memoria secondaria
Calcolatori Elettronici - La memoria virtuale (2) - Slide 3 L. Tarantino - a.a. 2011/2012
Memoria virtuale - problematiche di base
Posizionamento della pagina
sempre completamente associativa (gestita via software)
Individuazione della pagina
gestita via software
Tecnica di sostituzione
LRU o sue approssimazioni
Strategia di scrittura
sempre write-back
minimizzare i page fault perchè la penalizzazione è altissima!!
Calcolatori Elettronici - La memoria virtuale (2) - Slide 4 L. Tarantino - a.a. 2011/2012
Un passo indietro
Il programma eseguibile è prodotto dal linker che integra librerie e
moduli oggetto prodotti dall’assemblatore
Il linker lavora come se avesse a sua disposizione l’intera memoria
virtuale
Esempio
se ho indirizzi da 32 bit posso indirizzare fino a 232 byte
lo spazio di indirizzamento virtuale va considerato scomposto in
pagine virtuali
durante l’esecuzione alcune pagine virtuali si trovano nella memoria
principale (caricate in pagine fisiche) le altre si trovano nella memoria
secondaria
spazio di indirizzamento virtuale
Calcolatori Elettronici - La memoria virtuale (2) - Slide 5 L. Tarantino - a.a. 2011/2012
Corrispondenze tra pagine virtuali e fisiche
DIM_PAG_VIRT = DIM_PAG_FIS
in realtà le pagine virtuali risiedono sempre tutte in mem.secondaria
le pagine in mem. principale sono un sottoinsieme di quelle in
memoria secondaria
Memoria
secondaria Memoria virtuale
di un programma
Memoria
principale
pagine fisiche
Calcolatori Elettronici - La memoria virtuale (2) - Slide 6 L. Tarantino - a.a. 2011/2012
Trattamento dell’indirizzo
.. prosegue il parallelismo tra cache e memoria virtuale
Se la memoria principale è divisa in blocchi l’indirizzo viene diviso in
due porzioni:
La memoria virtuale è divisa in pagine, quindi l’indirizzo viene diviso
in due porzioni:
indirizzo del bloccoMP spiazzamento
lg2 DIM_MEM_PRINC
lg2 NBLKMP lg2 DIM_BLK
indirizzo pagina virtuale spiazzamento nella pagina
lg2 DIM_MEM_VIRT
lg2 NPagVirt lg2 DIM_PAG
Calcolatori Elettronici - La memoria virtuale (2) - Slide 7 L. Tarantino - a.a. 2011/2012
Indirizzo virtuale e indirizzo fisico (1)
Quando si accede in memoria?
— durante le fasi di fetch o di accesso ai dati (lettura/scrittura)
A quale parola si accede?
— a quella il cui indirizzo è nel PC (se fetch) o in AluOut (se accesso
ai dati)
l’indirizzo di interesse è generato dalla CPU
Come viene generato l’indirizzo?
— in base alla evoluzione del processo, facendo riferimento allo
spazio di indirizzamento virtuale (l’unico conosciuto dal
programma)
la CPU genera indirizzi virtuali
Calcolatori Elettronici - La memoria virtuale (2) - Slide 8 L. Tarantino - a.a. 2011/2012
Indirizzo virtuale e indirizzo fisico (2)
la CPU genera indirizzi virtuali la mem.princ. vuole indirizzi fisici
è necessario un processo di traduzione
???
indirizzo pagina virtuale spiazzamento nella pagina
lg2 NPagVirt lg2 DIM_PAG
indirizzo
virtuale
indirizzo pagina fisica spiazzamento nella pagina
lg2 NPagFis lg2 DIM_PAG
indirizzo
fisico
Osservazione
ind_pag_virt e
ind_pag_fis in
genere hanno
dimensioni diverse
Calcolatori Elettronici - La memoria virtuale (2) - Slide 9 L. Tarantino - a.a. 2011/2012
Posizionamento della pagina
Politica completamente associativa
se ci sono pagine fisiche libere si carica la pagina virtuale dove c’è
posto
se non ci sono pagine libere entrano in gioco politiche di sostituzione
— l’implementazione software permette di usare algoritmi sofisticati
e strutture dati complesse per tenere traccia dell’effettivo utilizzo
delle pagine
— i miglioramenti ottenuti per il miss rate compensano il costo di tali
algoritmi
Calcolatori Elettronici - La memoria virtuale (2) - Slide 10 L. Tarantino - a.a. 2011/2012
Individuazione della pagina (1)
La pagina cercata può essere ovunque
Per ricordarci la collocazione delle pagine usiamo una tabella delle
pagine
indirizzo di pagina fisica
.
.
.
.
.
.
una riga per ogni
pagina virtuale . . .
pagina caricata
in mem. principale
1
0
pagina NON caricata
in mem. principale
Valid.
Calcolatori Elettronici - La memoria virtuale (2) - Slide 11 L. Tarantino - a.a. 2011/2012
Individuazione della pagina (2)
indirizzo di pagina fisica
.
.
.
.
.
.
Valid.
indirizzo pagina virtuale spiazzamento nella pagina
lg2 NPagVirt lg2 DIM_PAG
indirizzo
virtuale
indirizzo pagina fisica spiazzamento nella pagina
lg2 NPagFis lg2 DIM_PAG
indirizzo
fisico
hit/miss
Calcolatori Elettronici - La memoria virtuale (2) - Slide 12 L. Tarantino - a.a. 2011/2012
La tabella delle pagine (1)
ogni processo in esecuzione ne possiede una distinta
le tabelle delle pagine risiedono in memoria
bisogna individuare quella del processo attivo (il processo “servito”
dalla CPU)
il registro della tabella delle pagine contiene l’indirizzo in memoria
della tabella delle pagine del processo attivo
Altre informazioni nella tabella (associate alla pagina)
— bit di uso (per la strategia di sostituzione LRU)
— bit di modifica (per la strategia di scrittura write back)
Calcolatori Elettronici - La memoria virtuale (2) - Slide 13 L. Tarantino - a.a. 2011/2012
Esempio
Determinare l’occupazione di memoria della tabella se
— indirizzo virtuale 32 bit
— dim_pagina 4 KB
— dim_riga 4 byte
DIM_TABELLA = NRIGHE * DIM_RIGA
NRIGHE = NPAG_VIRT = DIM_MEM_VIRT / DIM_PAGINA
NRIGHE = 232 Byte / 4 KByte = 232 / 212 = 220
DIM_TABELLA = 220 * 4 byte = 4 MB
Calcolatori Elettronici - La memoria virtuale (2) - Slide 14 L. Tarantino - a.a. 2011/2012
Esercizio
Determinare l’occupazione di memoria della tabella se
— indirizzo virtuale 32 bit
— dim_pagina 16 KB
— dim_riga 4 byte
DIM_TABELLA = NRIGHE * DIM_RIGA
NRIGHE = NPAG_VIRT = DIM_MEM_VIRT / DIM_PAGINA
NRIGHE = 232 Byte / 16 KByte = 232 / 214 = 218
DIM_TABELLA = 218 * 4 byte = 1 MB
Calcolatori Elettronici - La memoria virtuale (2) - Slide 15 L. Tarantino - a.a. 2011/2012
La tabella delle pagine (2)
… lo spazio occupato dalla tabella delle pagine è elevato!
Tecniche per ridurre l’occupazione di memoria della tabella
— consentire alla tabella di crescere via via che il processo richiede
più spazio (più pagine), aggiungendo nuove righe
— progettare strutture con una occupazione di memoria legata al
numero di pagine in mem. princ. (minore del numero di pagine
virtuali) TABELLA DELLE PAGINE INVERTITA
— paginare la tabella delle pagine
Calcolatori Elettronici - La memoria virtuale (2) - Slide 16 L. Tarantino - a.a. 2011/2012
Gestione dei page fault
.. quando il bit il validità vale 0
l’esecuzione dell’istruzione viene interrotta per caricare la pagina
dalla memoria secondaria
dove è collocata nel disco?
— deve esistere una seconda tabella che, per ogni pagina virtuale, dà
l’indirizzo della pagina su disco
Osservazione
il sistema operativo crea lo spazio su disco per tutte le pagine di un
processo all’atto della creazione del processo stesso
quando il caricamento della pagina è completato si può riprendere
l’esecuzione dell’istruzione. Due possibilità:
— l’istruzione viene rieseguita da capo (facile da implementare nella
processore MIPS, lo stato non è cambiato, si erano effettuate solo
letture dal banco e il calcolo dell’indirizzo)
— l’istruzione viene ripresa dal punto in cui è stata interrotta (in
macchine con linguaggi più complessi, ma bisogna salvare e poi
ripristinare lo stato complessivo)
Calcolatori Elettronici - La memoria virtuale (2) - Slide 17 L. Tarantino - a.a. 2011/2012
Considerazioni sulle prestazioni
Ogni accesso a memoria richiede un accesso alla tabella delle pagine
La tabella delle pagine sta in memoria
Gli accessi in memoria allora sono due :
— il primo per ricostruire l’indirizzo fisico
— il secondo per accedere alla parola di interesse
Località
— se in un istante di tempo T accedo ad una parola della pagina X
c’è un elevata probabilità che per un considerevole intervallo di
tempo accederò sempre alla stessa pagina (anche considerando
le dimensioni della pagina)
— perchè accedere ogni volta alla tabella delle pagine per recuperare
sempre lo stesso indirizzo di pagina fisica?
— me lo scrivo da qualche parte (dove posso accedere velocemente)
e lo recupero da lì finché rimango nella stessa pagina
Calcolatori Elettronici - La memoria virtuale (2) - Slide 18 L. Tarantino - a.a. 2011/2012
Translation Lookaside Buffer (TLB)
buffer di supporto alle traduzioni
E’ una piccola cache dove riporto le coppie:
ind_pag_virt ind_pag_fis
relative alla pagine visitate più recentemente
quando si richiede una pagina virtuale, il suo indirizzo viene cercato
nel TLB:
— se c’è, recupero dal TLB l’indirizzo di pagina fisica senza accedere
alla tabella delle pagine
— se non c’è ho un fallimento nel TLB:
accedo alla tabella delle pagine
sostituisco una delle coppie del TLB con la nuova coppia
Il TLB, per ogni pagina, contiene anche i bit di uso e di modifica, per
non dover accedere alla tabella delle pagine in caso di loro
aggiornamento
— quando una coppia viene eliminata dal TLB i relativi bit devono
essere copiati nella tabella delle pagine
Calcolatori Elettronici - La memoria virtuale (2) - Slide 19 L. Tarantino - a.a. 2011/2012
TLB e Cache coesistono
vedi figura 5.24 pag. 401 del libro di testo
(seconda edizione : Figura 7.24, pag. 417)