La memoria cache
Funzioni della cache
La memoria cache è una memoria nascosta che svolge la funzione di conservare quei dati che molto probabilmente, saranno a breve, utilizzati dalla CPU. Tale memoria si considera nascosta perché non è gestita da chi realizza i programmi ma direttamente dal microprocessore tramite un dispositivo integrato chiamato cache controller. Questa memoria è molto più veloce rispetto alla memoria centrale (RAM) presente sulla scheda madre del computer; più costosa e meno capiente. In pratica è una memoria intermedia che immagazzina i dati in modo da renderli immediatamente disponibili al microprocessore appena quest'ultimo li richiede. In questo modo la PCU non deve aspettare l'invio dei dati dalla RAM e il processo elaborativo diventa più rapido. Inizialmente la memoria cache era esterna al microprocessore, a causa delle difficoltà di integrazione all'interno del silicio. Con il miglioramento della tecnologia è stato possibile integrarla all'interno della CPU.
Attualmente la memoria cache è suddivisa in tre livelli: L1, L2 e L3, tutti integrati all'interno del microprocessore. Nelle moderne CPU multi-core (cioè dotate di più microprocessori), ogni core ha a disposizione L1 e L2 private, mentre L3 è condivisa e unica per tutti i core. Passando dal livello 1 al livello 3 aumenta la capacità di memoria ma diminuisce la velocità. La tabella sotto riporta le caratteristiche delle memorie cache che si possono avere sui moderni processori.
L1
1 4 cicli di clock
16 64 kB
L2
8 15 cicli di clock
256 1024 kB
L3
25 50 cicli di clock
2 10 MB
Gestione della cache
I dati prelevati dalla RAM vengono inseriti nella cache, dove sono organizzati in modo deverso rispetto a come si trovano nella memoria centrale. Insieme ai dati, infatti viene registrata anche la loro posizione nella RAM, in modo da creare una corrispondenza diretta tra le due memorie.
Quando il microprocessore deve prelevare un dato dalla memoria, ne conosce l'indirizzo, ma prima deve richiederlo alla RAM, il cache controller effettua la ricerca nella cache. Se lo trova (cache hit) il trasferimento è velocissimo, poiché non deve accedere alla RAM, altrimenti (cache miss) si avvia il caricamento dei dati dalla memoria centrale.
Il rapporto tra cache hit e accessi totali alla memoria, detto hit rate (rapporto di successi), misura l'efficacia della cache.
A causa della capacità limitata della cache, quando questa è piena, sarà necessario liberare spazio per inserire i nuovi dati. Il criterio prevalentemente usato è quello di eliminare dalla cache i dati che non sono utilizzati da più tempo (LRU, Least Recently Used).
E' comunque necessario mantenere la memoria centrale aggiornata rispetto ai cambiamenti effettuati nella cache. Se un dato presente nella cache viene cancellato o modificato, questa variazione va riportata anche nel corrispondente dato nella memoria centrale. Se, ad esempio, il contenuto di una variabile viene incrementato nella cache, anche la corrispettiva variabile in memoria centrale andrà incrementata.
A questo scopo sono possibili due strategie:
write-through: ogni modifica nella cache è riportata immediatamente nella memoria principale;
write-back: l'aggiornamento è fatto solo al momento in cui il dato viene tolto dalla cache con il criterio dell'LRU.
Il problema inverso si presenta nei sistemi multiprocessore con i bus separati. In questo caso la memoria centrale può contenere dati più aggiornati rispetto alla memoria cache, in quanto un altro processore potrebbe aver modificato i dati autonomamente utilizzando la propria cache. La gestione di queste problematiche ha portato allo sviluppo di "protocolli di coerenza", che si occupano di garantire che i dati presenti nella cache e nella memoria centrale siano sempre aggiornati tra loro.
Il posizionamento dei dati nella memoria cache (figura sotto) può essere libero (sono inseriti dove c'è un numero di celle vicine sufficientemente grande) oppure vincolato (alle vaie parti della memoria centrale è assegnata una corrispondente area nella cache). Il secondo metodo consente un trasferimento più veloce, ma aumenta il rischio di dover spesso liberare spazio nella cache se quell'area è molto utilizzata.
FISSA LE CONOSCENZE
A cosa serve la memoria cache?
Cosa cambia tra i vari livelli di memoria cache?
Con quale criterio sono eleminati i dati dalla cache?
Descrivi le strategie write-through e wrte-back.
Last updated