Sei sulla pagina 1di 17

Fallimenti nella TLB

Un fallimento nella TLB pu essere dovuto a due motivi:


1. la pagina fisica non presente in memoria (page fault);
2. la traduzione non nella TLB, anche se la pagina fisica
presente in memoria.
Quando si verifica un miss nella TLB, non si sa ancora se questo
del primo o del secondo tipo: E` necessario accedere alla page
table e controllare il bit di validit su questa.
Se il bit di validit non asserito allora si ha un page fault.
Se il bit di validit asserito la TLB viene modificata inserendo
lassociazione trovata.
Poich i fallimenti del secondo tipo sono i pi frequenti
importante che siano gestiti in modo efficiente.
Certamente NON valgono le considerazioni fatte per la page fault
sulla scelta di dove scrivere una pagina o di quale pagina sostituire
che portavano a dire che anche una piccola riduzione della miss
rate pu ripagare ampiamente il costo dellalgoritmo utilizzato.
In questo caso pi importante la velocit della scelta.
Si pu quindi usare o una TLB ad indirizzamento diretto oppure
una completamente associativa con una scelta casuale
dellelemento da sostituire.

Page Fault

Se il bit di validit non asserito siamo in presenza di un page


fault , necessario trasferire il controllo al sistema operativo per
gestire lerrore di pagina.
Trasferire il controllo al sistema operativo significa interrompere il
processo attivo in quel momento e passare al sistema operativo
tutte le informazioni necessarie per poter:
- gestire leccezione che si verificata (in questo caso page fault)
- riattivare il processo riprendendo lesecuzione dal punto in cui
stata interrotta.
Per poter gestire leccezione il sistema operativo deve innanzitutto
poter sapere quale eccezione sorta.
Il processore trasferisce questa informazione scrivendo un
particolare registro: Cause register.
Eimportante che la segnalazione delleccezione avvenga entro
il ciclo di clock in cui si verificata, per prevenire scritture errate.
Nota.
Supponiamo che pi programmi (o processi) vengano eseguiti
sullo stesso processore e che tutte le page table vengano
mantenute in memoria

Per poter riattivare il processo devono essere salvati


- Il program counter (exception program counte: EPC)
- Il banco dei Register
- Il registro che contiene lindirizzo della page table (Page table
register)

Gestione page fault


La gestione di un page fault da parte del sistema operativo prevede
- laccesso alla page table per ritrovare lindirizzo su disco;
- la scelta della pagina fisica da rimpiazzare (ed eventualmente da
ricopiare in memoria);
- la lettura della pagina da disco a memoria.
Queste operazioni, (soprattutto lultima) richiedono milioni di cicli
di clock: Il processo che ha sollevato leccezione deve attendere, il
sistema operativo generalmente lo sospende ed attiva un altro
processo che richiede la CPU.
Se l'errore di pagina avviene per una richiesta di accesso
alla memoria delle istruzioni, il processo pu essere sospeso senza
problemi: Nel registro EPC si trova lindirizzo dellistruzione
cercata, quando il processo verr riattivato trover listruzione
(perch il sistema operativo ha nel frattempo ricopiato la pagina) e
potr continuare lesecuzione.
Se l'errore di pagina avviene per una richiesta di accesso
alla memoria dati, importante che listruzione che era in
esecuzione, e che ha provocato lerrore, sia rieseguibile. Infatti
quando il processo verr riattivato lesecuzione non potr
riprendere da una fase intermedia ma solo dalla prima fase (fetch).
Nel caso delle istruzioni MIPS questo si ottiene facilmente, perch
la scrittura di un dato avviene solo alla fine ed quindi sufficiente
NON far completare lesecuzione dellistruzione per poterla poi
rieseguire.
Per macchine con istruzioni pi complesse pu anche non essere
possibile rendere listruzione rieseguibile. In queste situazioni sar
necessario salvare pi informazioni per poter riattivare il processo.

Indirizzo si disco
Il bit di validit permette di sapere se la pagina di cui abbiamo il
riferimento virtuale risiede nella memoria fisica o no.
In caso affermativo, la page table contiene lindirizzo fisico.
E in caso negativo? Generalmente, il sistema operativo quando
crea un processo crea anche
- lo spazio su disco per tutte le pagine di quel processo e
- la struttura per ricordare dove si trova su disco ogni pagina
virtuale.

Page table

Memoria fisica

1
0
1
1
1
1
0
1
0

Memoria su disco

Dimensione della page table.


Poich la page table risiede in memoria, preferibile che la sua
dimensione venga mantenuta ridotta. (Principalmente se ci sono
pi processi in esecuzione sullo stesso processore, dato che le
page table di tutti i processi devono essere mantenute in memoria).
Sarebbe sufficiente mantenere la traduzione solo per gli indirizzi
virtuali effettivamente usati dal processo ma questo non pu
essere noto a priori.
Alcune tecniche.
Limitare la dimensione iniziale della page table ed aggiungere
nuove entrate solo quando necessario (il processo richiede un
indirizzo non presente in tabella).
Usare una funzione hash che permette di mantenere la dimensione
della tabella uguale al numero di pagine fisiche utilizzate dal
processo.
Dividere la page table in pagine, cio utilizzare lo spazio virtuale
anche per la tabella delle pagine.

Nota sulla tecnica di write-back.


La tecnica di write-back prevede la copia della pagina allindirizzo
fisico x - dalla memoria principale (fisica) alla memoria
secondaria (disco) - ogni volta che lindirizzo fisico x viene
riscritto. Per evitare copie superflue viene spesso mantenuto un bit
(detto dirty bit) che avvisa se tale copia proprio necessaria.
Il dirty bit viene asserito quando avviene una scrittura nella pagina
fisica.

Dirty bit per write-back


Dirty bit

Page Table

Esercizio.

Dirty bit = 1:
contenuto modificato!

Si supponga di avere un sistema in cui:


- Lo spazio di indirizzamento virtuale di 32 bit.
- Lo spazio di indirizzamento fisico di 27 bit.
- La memoria virtuale organizzata a pagine di dimensione 4KB.
(a) Quale la dimensione della page table, supponendo che
comprenda per ogni ingresso un bit di validit?

(a1) Come sono composti l'indirizzo fisico e quello virtuale?


Se le pagine sono di 4KB = 22 210, il page offset di 12 bit.
Indirizzo fisico
27 bit

Indirizzo pagina fisica


15 bit

Page offset
12 bit

Il numero di pagina fisica formato quindi da 27-12 = 15 bit.


Indirizzo virtuale
32 bit

Indirizzo pagina virtuale


20 bit

Page offset
12 bit

L'indirizzo virtuale contiene i 12 bit del page offset, i restanti


32-12 = 20 bit formano l'indice nella page table.

(a2) Cosa contiene la page table?.


Essendoci 20 bit per indirizzare un elemento della page table, le
pagine virtuali sono 220. La page table ha quindi 220 ingressi.

val

Indirizzo pagina fisica : 15 bit

20

Page Table

Ciascuno ingresso contiene i 15 bit dellindirizzo della pagina


fisica pi il bit di validit, ovvero 16 bit = 2B.
La dimensione della page table quindi 220 2 B = 2MB

(b) Quanti bit dovrebbe contenere una TLB con 2 ingressi?


(b1) Cosa contiene la TLB?
Per ogni ingresso si deve memorizzare il numero di pagina fisica,
il campo Tag, il bit di validit. Il numero di pagina fisica richiede
15 bit.
Per determinare la dimensione del campo Tag, vediamo come
formato l'indirizzo virtuale (con cui si accede alla TLB).
32 bit

Indirizzo pagina virtuale


20 bit

Tag
12 bit

Page offset
12 bit

Indice TLB
8 bit

Page offset
12 bit

Ogni ingresso richiede quindi 12+15+1 = 28 bit

Val Tag : 12 bit

Ind. pagina fisica : 15 bit

TLB
Il numero totale di bit della TLB (7 22 ) 28 = 7K bit.

Indirizzo virtuale
32 bit

Tag

Indice TLB

Indirizzo pagina virtuale 20 bit

Page offset
12 bit

28

TLB

Pagina
220
Memoria Fisica

215 pagine
Page table

Integrazione Memoria virtuale, TLB, Cache


Indirizzo virtuale
32 bit

Tag

Indice TLB

Page offset

TLB
Indice pagina fisica
Page offset
Tag
Indice cache
Indirizzo blocco

Offset di
blocco

Tag

Cache

Memoria Fisica

Esercizio - continua
Con riferimento all'esercizio precedente, si supponga di avere una
cache per i dati: associativa a 2 vie, composta da 2K insiemi con
blocchi di 16B.
(c) Come composta la cache?
Indirizzo fisico
27 bit

Indirizzo pagina fisica


15 bit

Page offset
12 bit

Tag

Indice cache

Offset
blocco

Lo spazio di indirizzamento fisico di 27 bit.


Il blocco della cache di 16B, quindi il campo offset di 4 bit.
La cache composta da 2K insiemi, il campo indice deve
quindi essere formato da 11 bit (2 210 = 211).
Il campo tag formato quindi da 27-11- 4 = 12 bit.
V

Tag
12 bit

Blocco 1
128 bit

211
insiemi

Tag
12 bit

Blocco 2
128 bit

Integrazione di memoria virtuale, TLB e cache


Quando consideriamo memoria virtuale, TLB e cache assieme, la
situazione ideale si verifica quando un indirizzo virtuale viene:
tradotto dalla TLB
la pagina presente in memoria e il suo indice nella TLB
ed inviato alla cache dove
viene trovato e recuperato,
il blocco cercato presente nella cache
e quindi rinviato alla CPU

Il caso peggiore si ha invece in caso di page fault.


non viene tradotto dalla TLB
l'indice della pagina non memorizzato nella TLB
viene cercato nella Page Table
ma non viene trovato nella Page Table
la pagina non presente in memoria.
Verr quindi inviata una richiesta al SO affinch venga
trasferita la pagina dalla memoria secondaria alla memoria
principale.

Si possono verificare vari casi intermedi. Vediamo due esempi.

Lindirizzo virtuale
non viene tradotto dalla TLB e viene quindi
inviato alla page table,
viene trovato nella page table
la pagina in memoria ma non stata referenziata
recentemente, quindi il suo indice non nella TLB
ed inviato alla TLB per la memorizzazione,
viene quindi tradotto dalla TLB ed
inviato alla cache dove
viene trovato e recuperato, e quindi rinviato alla CPU

Lindirizzo virtuale viene


tradotto dalla TLB
la pagina in memoria e il suo indice ancora nella TLB
ed inviato alla cache dove
non viene trovato;
ma il blocco cercato non nella cache
l'indirizzo viene quindi inviato alla memoria ( presente
perch inserito nella TLB)
recuperato e copiato nella cache, e quindi rinviato alla CPU
Questultima situazione pu verificarsi ma non frequente perch
le associazioni nella TLB dovrebbero rappresentare accessi recenti
e questi dovrebbero essere ancora presenti nella cache.
Altre situazioni sono impossibili. Ad esempio
non pu esserci un hit nella cache ed un miss nella page table,
perch la cache rappresenta un sottoinsieme della memoria;
non pu esserci un hit nella TLB e un miss nella page table.
perch la TLB contiene traduzioni in indirizzi fisici della
memoria principale.

Le tre C
Tutti i fallimenti (miss) che si verificano durante una ricerca nella
cache appartengono ad una delle tre seguenti categorie.
- Compulsory (fallimenti obbligati). Sono quelli che avvengono
la prima volta quando richiesto laccesso ad un blocco che
non mai stato nella cache.
- Capacity (fallimenti di capacit). Sono quelli che avvengono
quando la cache piena e il blocco cercato stato scaricato
per far posto ad uno usato pi di recente.
- Conflict (fallimenti di conflitto). Sono quelli che avvengono
quando, per la scelta del tipo di indirizzamento, due blocchi
distinti collidono sullo stesso blocco della cache.

Per ciascuna di queste sorgenti di fallimento possono essere


adottate soluzioni per diminuirne la frequenza.
Compulsory: diminuiscono se si aumenta la dimensione del
blocco.
Capacity: ovviamente si tratta di aumentare la dimensione
della cache.
Conflict: diminuiscono aumentando il livello di associativit

Ci che fa diminuire la frequenza di un tipo di fallimento pu per


avere uninfluenza negativa su altri aspetti.

Protezione della memoria virtuale


Quando pi processi vengono eseguiti da un unico processore
deve essere possibile garantire che
- ogni processo abbia un proprio spazio di memoria virtuale,
e che
- la condivisione della memoria fisica non permetta ad un
processo di accedere ai dati di un altro processo.
Associando ad ogni processo una page table personale, per
soddisfare i precedenti vincoli bisogna che il sistema operativo
quando gestisce un page fault assegni un indirizzo fisico che NON
sia valido in unaltra tabella.

Tabella P1

NO
1

Tabella P2

In questo modo il passaggio del controlla dal processo P1 al


processo P2 pu avvenire in modo sicuro.

Quando si utilizza anche la TLB (che unica per tutti i processi),


passando il controllo da P1 a P2 la TLB, che era usata da P1,
verr usata da P2.
Senza alcun accorgimento possono sorgere sia
- problemi di sicurezza: P2 pu accedere ai dati di P1; che
- problemi di correttezza: P2 pu credere di avere una
associazione che non ancora stata creata.

La soluzione pi semplice quella di cancellare la TLB ogni volta


che il controllo passa da in processo ad un altro.
Con questa soluzione per ogni volta che un processo viene
riattivato non trova nessuna delle associazioni usate prima della
sua interruzione e deve ricostruire la TLB.
Il neo di questa soluzione che possono essere persi i vantaggi
della TLB: quando ci sono frequenti alternanze tra i processi, un
processo pu venir interrotto quando non ha ancora sfruttato
appieno le associazioni memorizzate.
Per ovviare a ci pu essere inserito nella TLB un campo che
permette di individuare il processo che ha creato lassociazione:
ogni processo (eccettuato il sistema operativo) pu accedere solo
alle associazioni da lui memorizzate.