Calcolatori elettronici/La memoria virtuale

Wikibooks, manuali e libri di testo liberi.
Indice del libro

Quando la memoria principale fisica viene riempita, è necessario estenderla a una memoria virtuale, così il processore può accedere a indirizzi di memoria che superano lo spazio di indirizzamento. Secondo il principio di località dei riferimenti, nella memoria principale fisica si trovano le informazioni più usate, e le informazioni di minor utilizzo sono archiviate temporaneamente nella memoria secondaria. La memoria virtuale è suddivisa in blocchi detti pagine, grandi da 1 KB a 64 KB. Il processore e i programmi in realtà vedono solo un'unica memoria di dimensione corrispondente alla memoria complessiva.

Uno strato hardware, detto Memory Management Unit (MMU), intercetta gli indirizzi logici provenienti dal processore e li converte attraverso la Memory Address Table (MAT) negli equivalenti indirizzi fisici. In caso di miss, ossia quando l'informazione non si trova in memoria principale, il sistema operativo, attivato dalla MMU attraverso il segnale di page fault, interrompe il programma in esecuzione e trasferisce l'informazione richiesta dalla memoria virtuale a quella fisica, quindi riprende l'esecuzione del programma. Il meccanismo è efficiente se i page fault sono in numero minimo.

La MMU è integrata nel processore. La conversione degli indirizzi logici in fisici, compiuta prima di arrivare alla cache, deve essere effettuata in tempi minimi.

La MAT è memorizzata in memoria principale → ogni accesso a un indirizzo fisico richiederebbe un ulteriore accesso in memoria. Statisticamente in un intervallo di tempo il processore accede frequentemente alla stessa pagina → il TLB è una cache posta direttamente a bordo della MMU che memorizza le ultime entry della MAT usate.

Siccome la MMU opera via software, la hit ratio è più elevata di quella delle cache che funzionano in modo hardware, perché le pagine in memoria principale sono effettivamente quelle di maggior utilizzo.