Memoria Virtuale Le memorie cache forniscono un accesso veloce ai blocchi di memoria usati più di recente La memoria virtuale fornisce un accesso veloce ai dati sulle memorie di massa usati più di recente. Storicamente, la memoria virtuale serviva a consentire una condivisione efficiente e sicura della memoria principale per più programmi, trasparente al programmatore (protezione)
0 2 32 Processo in background Sistema Operativo 0 Spazio degli indirizzi virtuali 2 32 Processo in esecuzione Sistema Operativo 0 Spazio degli indirizzi fisici 2 32 RAM Frame Buffer Devices ROM
Terminologia Un blocco di memoria virtuale si chiama pagina Una cache miss si chiama page fault
Traduzione dell indirizzo
Differenze progettuali Un page fault ha una penalità di milioni di cicli di clock Le pagine devono essere sufficientemente grandi Ammortizzare il lungo tempo di accesso Tipicamente da 4 KB a 16 KB Tecniche full associative da preferire Minore frequenza di page fault Il rimpiazzamento delle pagine è gestito via software Tempo di accesso al disco dominante Permette l uso di algoritmi più intelligenti Write-through improponibile, bisogna usare il write-back
Tabella delle pagine La ricerca esaustiva per schemi completamente associativi è impraticabile Ogni processo ha un catalogo in memoria principale che indicizza la propria memoria fisica tramite il numero di pagina virtuale: viene chiamato tabella delle pagine (page table) La tabella delle pagine di un processo è memorizzata a un certo indirizzo fisico, determinato da un registro speciale del processore, il page table register (PTR) Ogni pagina virtuale può corrispondere a qualsiasi pagina fisica
Tabella delle pagine
Page fault Quando si verifica un page fault, si genera un eccezione. 1. Il SO prende il controllo del processore 2. Identifica la pagina mancante dalla memoria 3. Cerca da qualche parte la pagina mancante 4. Carica in memoria principale la pagina mancante, eventualmente rimpiazzando una pagina esistente. Dove stanno le pagine mancanti? Quando un processo viene caricato in memoria, il SO riserva su disco spazio sufficiente a memorizzare tutte le pagine di un processo (spazio di swap). Il SO memorizza l indice delle pagine nello spazio di swap (page table o struttura dati analoga)
Spazio di swap
Dettagli Spesso, oltre al valid bit, sono aggiunti altri bit associati alla pagine dirty bit serve a sapere se una pagina è stata modificata. grazie a questo bit è possibile sapere se la pagina deve essere ricopiata sul livello di memoria inferiore (disco). il bit è necessario in quanto usiamo una politica write-back reference bit serve a sapere se, in un certo lasso di tempo, una certa pagina è stata riferita. bit azzerato periodicamente, settato ogni volta che una pagina è riferita. il reference bit è usato per implementare una politica di rimpiazzo delle pagine di tipo LRU (Least Recently Used)
Problemi Architettura a 32 bit, con pagine di 4KB 12 bit per offset di pagina 20 bit per identificatore di pagina PTR Identificatore Virtual Address Offset Tabella delle pagine Riga Pagina fisica Indirizzo fisico La tabella delle pagine è salvata in memoria 1 048 576 pagine diverse Se una riga della tabella delle pagine è 4 byte, la tabella delle pagine occupa 4 MB Ogni processo ha la sua tabella delle pagine 256 processi occupano 1 GB di memoria solo per le tabelle delle pagine
Cache di traduzione Un accesso in memoria del programma costa come minimo doppio : un accesso alla tabella delle pagine in memoria un accesso alla memoria fisica Località spaziale e temporale degli indirizzi La traduzione degli indirizzi viene solitamente fatta in hardware, da un componente denominato MMU (Memory Management Unit), tramite l uso di una piccola memoria cache chiamata TLB (Translation Lookaside Buffer) dsd
Esempio di TLB
TLB + Cache (FastMATH) TLB completamente associativo Pagine da 4 KB Cache diretta, acceduta con l indirizzo fisico Dimensione del blocco della cache: 2 6 = 64 bytes
FastMATH Read-Write
Modalità di esecuzione Un processo in user mode: Non può modificare il PTR Non può modificare le entry della TLB Non può settare direttamente il bit che fissa la modalità di esecuzione Un processo in kernel mode: Può fare tutto, come se fosse parte del SO Esistono istruzioni speciali, eseguibili SOLO in kernel mode, per effettuare le operazioni di cui sopra Passaggio user kernel tramite chiamate di sistema (syscall) Salva il PC corrente in EPC (Exception Program Counter) L istruzione ERET ripristina la modalità di esecuzione user e copia EPC in PC Le routine corrispondenti alle varie syscall sono prefissate, e fanno parte del SO (l utente non può crearsi da solo una sua syscall e invocarla)
Meccanismi di protezione I processi utente non possono modificare la propria tabella delle pagine Il sistema operativo deve poter modificare la tabella delle pagine Due processi possono condividere informazioni tramite l intermediazione del sistema operativo
Tipologia di miss Nelle varie gerarchie di memoria, i miss si possono verificare per cause diverse Modello delle tre C per classificare i miss Ci riferiremo al livello cache, anche se il modello si applica anche agli altri livelli della gerarchia di memoria Tipi di miss Miss Certi (Compulsory) miss di partenza a freddo, che si verifica quando il blocco deve essere portato nella cache per la prima volta Miss per Capacità la cache non è in grado di contenere tutti i blocchi necessari all esecuzione del programma Miss per Conflitti due blocchi sono in conflitto per una certa posizione può verificarsi anche se la cache NON è piena questo tipo di miss non si verifica se abbiamo una cache completamente associativa
Memoria virtuale e miss Per quanto riguarda la memoria virtuale, il SO viene invocato per gestire due tipi di eccezioni TLB miss (anche se la TLB miss può essere gestita in hardware) Page fault prima della fine del ciclo di clock in cui si accede alla memoria In risposta ad un eccezione/interruzione il processore salta alla routine di gestione del SO effettua anche un passaggio di modalità di esecuzione user mode kernel mode
Miss
TLB Miss + Page Table Hit la pagina è presente in memoria l eccezione può essere risolta tramite la page table l istruzione che ha provocato l eccezione deve essere rieseguita
TLB Miss + Page Table Miss la pagina non è presente in memoria, cioè l ingresso corrispondente della Tabella delle Pagine è NOT VALID La pagina deve essere portata in memoria dal disco operazione di I/O dell ordine di ms è impensabile che la CPU rimanga in stallo, attendendo che il page fault venga risolto Context switch salvataggio dello stato (contesto) del programma (processo) in esecuzione Completamento page fault processo bloccato diventa pronto, ed eventualmente riprende l esecuzione
Context Switch Salvataggio dello stato (contesto) del programma (processo) in esecuzione Fanno ad esempio parte dello stato i registri generali, e quelli speciali come il registro della Tabella delle Pagine Il processo che ha provocato l eccezione diventa bloccato Si ripristina lo stato di un altro processo pronto per essere eseguito Si riavvia il nuovo processo Durante uno switch le eccezioni sono disabilitate
TLB di Cortex-A8 ARM e Core i7 Intel
Cache di Cortex-A8 ARM e Core i7 Intel