questa pagina e' realizzata da Lorenzo Baloci & Alessio Zennaro
In questa pagina trovate una veloce introduzione al funzionamento della memoria virtuale (cache, tlb, pagine, ecc). Puo' esservi utile per un ripasso prima di un esame o per capire un po' di piu' cosa accade quando il vostro computer fa un accesso in memoria. Gli esempi sono stati fatti studiando l'architettura MIPS ma i concetti rimangono validi anche in genere.
Nel caso abbiate dubbi o vogliate segnalare gli innumerevoli errori presenti nel testo potete utilizzare il modulo di contatto disponibile su http://www.xelon.it
Accesso in memoria su sistemi con memoria virtuale
L’indirizzo fisico si ottiene a partire dall’indirizzo virtuale.
Viene composto da i bit di physical address contenuti nella TLB (o nella page table, notare che la TLB non è altro che una cache della memoria virtuale) sommati ai bit di offset contenuti nell’indirizzo virtuale.
La procedura completa di accesso ad un dato in memoria con cache ad indirizzo fisico è quindi la seguente:
- Si prende l’indirizzo virtuale, si tolgono gli n-bit meno significativi dell’offset (dipendente dalla dimensione della pagina log2dim_pag) e si confrontano i restanti bit (virtual page number) con le TAG contenute nella TLB.
Si può avere:
- TLB hit: si prendono gli m-bit del physical page number (chiamate anche physical address) che insieme agli n-bit dell’offset compongono l’indirizzo fisico (n+m bit)
- TLB miss: si accede alla page table come si accedeva alla TLB (tramite il virtual page number) e, in caso di page hit, si carica la corrispondente entry nella TLB, a questo punto la CPU può accedere nuovamente alla TLB e caricare l’indirizzo fisico. In caso di page fault la gestione passa al SO e può genere o una segmentation fault (la pagina non è valida) oppure essa viene caricata dalla memoria secondaria.
- In possesso dell’indirizzo fisico si accede alla cache scomponendo tale indirizzo in:
Accedendo alla cache si può avere:
Da notare che nel caso in cui la memoria principale o la cache siano piene, nel momento in cui si andrà a caricare un nuovo dato il sistema seguirà una politica di rimpiazzo dei blocchi.
Memoria Virtuale:

TLB completamente associativa:
