Coerenza della cache

Una cache può essere utilizzata per migliorare le prestazioni di accesso a una data risorsa. Quando ci sono diverse cache per la stessa risorsa, come mostrato nell'immagine, questo può portare a problemi. La coerenza della cache o Cache coherency si riferisce a una serie di modi per assicurarsi che tutte le cache della risorsa abbiano gli stessi dati, e che i dati nelle cache abbiano senso (chiamata integrità dei dati). La coerenza della cache è un caso speciale della coerenza della memoria.

Ci possono essere problemi se ci sono molte cache di una risorsa di memoria comune, poiché i dati nella cache potrebbero non avere più senso, o una cache potrebbe non avere più gli stessi dati delle altre. Un caso comune in cui il problema si verifica è la cache delle CPU in un sistema multiprocessing. Come si può vedere nella figura, se il client superiore ha una copia di un blocco di memoria da una lettura precedente e il client inferiore cambia quel blocco di memoria, il client superiore potrebbe essere lasciato con una cache di memoria non valida, senza saperlo. La coerenza della cache è lì per gestire tali conflitti e mantenere la coerenza tra cache e memoria.

Cache multiple di risorse condiviseZoom
Cache multiple di risorse condivise

Definizione

La coerenza definisce il comportamento delle letture e delle scritture alla stessa posizione di memoria. Le cache sono coerenti se tutte le seguenti condizioni sono soddisfatte:

  1. Quando un processore P legge una locazione X, dopo aver scritto in quella locazione, P deve ottenere il valore che ha scritto, se nessun altro processore ha scritto un altro valore in quella locazione. Questo è vero anche per i sistemi monoprocessori, significa che la memoria è in grado di mantenere un valore scritto.
  2. Supponiamo che ci siano due processori, P1 e P2, e che P1 abbia scritto un valore X1, e dopo, P2 abbia scritto un valore X2, se P1 legge il valore, deve ottenere il valore scritto da P2, X2, e non il valore che ha scritto, X1, se non ci sono altre scritte tra i due. Questo significa che la vista della memoria è coerente. Se i processori possono leggere lo stesso vecchio valore dopo la scrittura fatta da P2, la memoria non sarebbe coerente.
  3. Ci può essere solo una scrittura alla volta in una certa posizione della memoria. Se ci sono più scritture, devono avvenire una dopo l'altra. In altre parole, se la locazione X ha ricevuto due diversi valori A e B, in questo ordine, da due processori qualsiasi, i processori non possono mai leggere la locazione X come B e poi leggerla come A. La locazione X deve essere vista con i valori A e B in questo ordine.

Queste condizioni sono definite supponendo che le operazioni di lettura e scrittura siano fatte istantaneamente. Tuttavia, questo non accade nell'hardware del computer a causa della latenza della memoria e di altri aspetti dell'architettura. Una scrittura del processore X potrebbe non essere vista da una lettura del processore Y se la lettura viene fatta entro un tempo molto piccolo dopo che la scrittura è stata fatta. Il modello di coerenza della memoria definisce quando un valore scritto deve essere visto da una successiva istruzione di lettura fatta dagli altri processori.

Meccanismi di coerenza della cache

  • I meccanismi di coerenza basati su directory mantengono una directory centrale di blocchi in cache.
  • Lo snooping è il processo in cui ogni cache controlla le linee di indirizzo per gli accessi alle posizioni di memoria che sono nella sua cache. Quando si osserva un'operazione di scrittura su una locazione di cui una cache ha una copia, il controller della cache invalida la propria copia della locazione di memoria snoopata.
  • Snarfing è quando un controller della cache guarda sia l'indirizzo che i dati nel tentativo di aggiornare la propria copia di una posizione di memoria quando un secondo master modifica una posizione nella memoria principale.

I sistemi di memoria condivisa distribuita imitano questi meccanismi in modo da poter mantenere la coerenza tra blocchi di memoria in sistemi liberamente accoppiati.

I due tipi più comuni di coerenza che sono tipicamente studiati sono Snooping e Directory-based. Ognuno ha i suoi vantaggi e svantaggi. I protocolli di snooping tendono ad essere più veloci, se è disponibile abbastanza larghezza di banda, poiché tutte le transazioni sono una richiesta/risposta vista da tutti i processori. Lo svantaggio è che lo snooping non è scalabile. Ogni richiesta deve essere trasmessa a tutti i nodi di un sistema. Man mano che il sistema diventa più grande, la dimensione del bus (logico o fisico) e la larghezza di banda che fornisce devono crescere. Le directory, d'altra parte, tendono ad avere latenze più lunghe (con una richiesta/avanzamento/risposta a 3 hop) ma usano molta meno larghezza di banda poiché i messaggi sono punto a punto e non trasmessi. Per questo motivo, molti dei sistemi più grandi (>64 processori) usano questo tipo di coerenza della cache.

Domande e risposte

D: Cos'è la coerenza della cache?


R: La coerenza della cache si riferisce alla garanzia che tutte le cache di una risorsa abbiano gli stessi dati e che i dati nelle cache siano coerenti (integrità dei dati).

D: Qual è lo scopo della coerenza della cache?


R: Lo scopo della coerenza della cache è quello di gestire i conflitti tra più cache di una risorsa di memoria comune e di mantenere la coerenza tra cache e memoria.

D: Quali possono essere le conseguenze della mancanza di coerenza della cache?


R: Senza coerenza della cache, i dati nella cache potrebbero non avere più senso, oppure una cache potrebbe non avere più gli stessi dati delle altre, il che potrebbe causare incoerenze ed errori.

D: Qual è un caso comune in cui si verificano problemi di coerenza della cache?


R: Un caso comune in cui si verificano problemi di coerenza della cache è la cache delle CPU in un sistema multiprocesso.

D: Come funziona la coerenza della cache?


R: La coerenza della cache funziona garantendo che tutte le cache di una risorsa abbiano gli stessi dati e che i dati nelle cache siano coerenti attraverso vari metodi.

D: Cosa si intende per coerenza della memoria?


R: La coerenza della memoria si riferisce alla coerenza dei dati in una risorsa di memoria condivisa.

D: In che modo la coerenza della cache può migliorare le prestazioni?


R: La coerenza della cache può migliorare le prestazioni consentendo un accesso più rapido ed efficiente ad una determinata risorsa.

AlegsaOnline.com - 2020 / 2023 - License CC3