Le tecnologie attualmente impiegate nella costruzione della memoria sono:
Nome | Velocità | Dimensioni tipiche |
---|---|---|
SRAM | Decine di |
|
DRAM | Alcuni |
|
Flash | Centinaia di |
|
Dischi magnetici | Molti |
La memoria centrale e la memoria cache sono organizzate in blocchi di parole o di byte, di ugual dimensione.
La memoria cache è un tipo di memoria molto veloce utilizzata nei computer per ridurre i tempi di accesso ai dati più frequentemente usate. Si trova tipicamente tra la CPU e la memoria centrale e ha lo scopo di memorizzare temporaneamente i dati e le istruzioni che la CPU utilizza più spesso, in modo da poterli recuperare rapidamente senza dover accedere alla RAM ogni volta.
La memoria cache contiene copie di blocchi della memoria centrale, oppure blocchi liberi. Inoltre ad ogni blocchi cache è associato un bit che indica se il blocco significativo è libero.
Il sistema di gestione della cache è in grado di copiare dalla memoria centrale oppure copiare alla memoria centrale.
Definiamo:
Per quanto riguarda le istruzioni, se il processore deve leggere un'istruzione, se il blocco che contiene l'istruzione si trova in cache l'istruzione viene letta in un ciclo di clock e prosegue nell'esecuzione. Se l'istruzione non si trova in cache, il processore sospende l'esecuzione, il blocco contenente l'istruzione viene caricato dalla memoria centrale in un blocco libero di memoria cache e il processore riesegue la richiesta, preleva l'istruzione e prosegue l'esecuzione.
Per quanto riguarda il recupero dei dati, si procede in egual modo, tuttavia esiste il problema della coerenza tra memoria cache e memoria centrale.
L'uso di memoria cache sfrutta il principio di località dei programmi:
Le cache si progettano in base al metodo di indirizzamento, metodo di identificazione, metodo di scrittura e metodo di sostituzione.
Definiamo il tempo medio di accesso alla memoria come:
I metodi di indirizzamento della memoria cache descrivono come scegliere il blocco della cache in cui copiare un blocco di memoria centrale. Le tecniche principali sono:
Nelle cache a indirizzamento diretto ogni blocco della memoria centrale è caricabile in un solo blocco della cache. Più blocchi di memoria centrale possono essere caricati nello stesso blocco di memoria cache. Si adotta quindi il metodo di mapping: il blocco di indirizzo
La struttura degli indirizzi, in questo caso è:
I rimanenti
Ogni posizione della cache quindi include:
valid
bit, che indica se questa posizione contiene o meno dati validi.Dato un indirizzo di memoria centrale, l'accesso a cache avviene nel seguente modo:
Per gestire i cache miss l'unità di controllo del processore deve mettere in stallo la pipeline per un numero di cicli di clock non definito a priori.
Si ha che il numero totale di bit nella cache a indirizzamento diretto è:
Nelle cache associative un blocco può essere memorizzato in un qualunque blocco della cache, e non esiste una relazione tra indirizzo di memoria del blocco e posizione in cache.
Consideriamo un indirizzo di memoria di
La ricerca di un dato richiede il confronto di tutte le etichette presenti in cache, per aumentare le prestazioni la ricerca avviene in parallelo tramite una memoria associativa.
Nelle cache set - associative i blocchi della cache sono divisi in gruppi, dove ogni gruppo contiene almeno
Ogni blocco della memoria centrale corrisponde ad un unico gruppo della cache, ed il blocco può essere messo in uno qualsiasi degli elementi di questo gruppo.
Un indirizzo di memoria di
Di seguito un esempio di cache set - associative a due vie.
Esistono due strategie di scrittura di un blocco: