vuoi
o PayPal
tutte le volte che vuoi
TRADUZIONE DEGLI INDIRIZZI PIÙ VELOCE: IL TLB
Dato che la tabella delle pagine deve essere salvata nella memoria principale, ogni accesso alla
memoria da parte di un programma richiede almeno il doppio del tempo.
Quando si utilizza la traduzione di un certo numero di pagina virtuale, è molto probabile che la stessa
traduzione sia richiesta poco dopo, dato che le parole contenute in memoria godono della proprietà
5
temporale e spaziale.
Quindi basandosi sulla stesso concetto che guidò all’idea dell’implementazione delle cache, molti
processori moderni fanno riferimento ad una cache che tiene traccia delle traduzioni utilizzate più
recentemente. Questa “memoria” prende il nome di TLB (Translation lookaside Buffer).
Come la cache, anche la TLB ha il campo TAG ed il campo per i dati; l’uno viene utilizzato per
contenere una parte del numero della pagina virtuale, mentre l’altro il numero della pagina fisica.
Poichè la TLB dovrebbe sostituire un accesso alla tabella delle pagine, deve imoplementare i tre bit:
validity bit, used bit (reference bit), dirty bit.
Quando viene richiesta una pagina, per prima cosa si cerca il numero della pagina virtuale. Se la
ricerca è andata a buon fine il numero di pagina fisica corrispondente viene usata per costruire
l’indirizzo ed il bit di utilizzo viene impostato ad 1. Se il processore sta eseguendo un’operazione di
scrittura anche il dirty bit viene impostato ad 1.
Se invece la ricerca genera una miss allora dobbiamo controllare se si tratta di un vero e proprio page
fault oppure di un semplice miss della TLB.
⚫ Miss. Se la pagina è presente nella memoria principale basta caricare dalla tabella
delle pagine nella TLB, la traduzione della pagina virtuale e ripetere l’accesso.
⚫ Page Fault. La pagina non è presente, viene lanciata un’eccezione, questa viene
catturata dal Sistema Operativo che prende il controllo della situazione.
Quindi generato un miss e presa la traduzione dalla tabella delle pagine, occorre individuare quale
delle pagine in memoria deve essere sostituita. I progettisti hanno scelto diversi approcci, basati sui
gradi di associatività, per risolvere questa situazione.
Molti sistemi utilizzano piccoli TLB completamente associativi, perchè una corrispondenza di questo
tipo consente; non solo una più bassa frequenza di miss, ma anche un tempo di mappatura non
troppo elevato essendo comunque il buffer di piccole dimensioni.
Altri sistemi utilizzano TLB di grandi dimensioni con un basso grado di associatività. Questa
caratteristica unita ad una mappatura completamente associativa genera una latenza molto grande
quando si va ad eseguire una iterazione eguagliando tutti i campi tag per trovare quello giusto.
Di conseguenza molti sistemi prevedono di sostituire un elemento scelto a caso.
UNIONE DI CACHE E TLB (FastMATH Intrinsity) 6
SCHEMA DI LETTURA E SCRITTURA IN TLB E CACHE
7