Calcolatori elettronici/Le memorie cache: differenze tra le versioni

m
(Nuova pagina: {{Calcolatori elettronici}} Le '''memorie cache''' si trovano a un livello intermedio tra i registri e la memoria principale, e servono per mitigare i tempi di attesa durante gli ac...)
 
 
 
==Cache multiple==
Nei sistemi a multiprocessore in cui un'unica memoria è '''condivisa''' attraverso un singolo bus, se ogni CPU non avesse la propria cache si verificherebbe un collo di bottiglia per l'accesso in memoria. Le attese dovute a due miss concomitanti sono compensate dalla maggiore potenza di calcolo. Se si esegue un programma distribuito su più processori, i programmi in esecuzione sui singoli processori non sono indipendenti, ma ogni tanto richiedono di comunicare tra loro attraverso dei dati condivisi → se un processore modifica un da­todato condiviso, anche la copia nella cache dell'altro processore dovrebbe essere aggiornata → esistono dei '''protocolli di coerenza''':
* i dati condivisi possono non venire salvati in cache;
* un cache controller verifica se un altro cache controller sta accedendo a un dato condiviso tramite il bus e blocca la scrittura di quel da­todato all'interno della sua cache azzerando il bit di validità.
 
È conveniente avere più '''livelli di cache''': il dato richiesto viene cercato a partire dalla cache di livello più basso (più veloce) a quella di livello più alto (più lenta), e tutto ciò che si trova in una cache deve trovarsi anche nelle cache di livello superiore. Nei sistemi a multiprocessore, le cache nei livelli più alti possono essere condivise da più processori.