Sei sulla pagina 1di 9

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

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.

Potrebbero piacerti anche