Protocollo Coerenza Cache MESI: Stati, Transizioni e Ruolo Multiprocessore
MESI (Modified, Exclusive, Shared, Invalid) è un protocollo di coerenza cache write-back per multiprocessori a memoria condivisa. Ogni linea di cache mantiene esattamente uno stato.
Definizione Stati
- M (Modified): Linea dirty (≠ memoria); solo questa cache ha copia valida. Proprietario deve scrivere back su evizione o snoop.
- E (Exclusive): Linea clean (= memoria); solo questa cache ha copia. Può scrivere silenziosamente → M.
- S (Shared): Linea clean; multiple cache possono avere copie. Scrittura richiede bus upgrade (invalida) → M.
- I (Invalid): Linea invalida; deve fetch su accesso.
Transizioni Chiave (Bus Snooping)
- Read Miss: Broadcast → se un'altra cache ha M, scrive back (intervento); richiedente ottiene E (se unica) o S.
- Write Hit in S: Broadcast invalida → diventa M.
- Write Hit in E: Upgrade silenzioso a M.
- Write Hit in M: Silenzioso (già esclusiva).
Vantaggi
- Riduce traffico bus vs protocolli write-through.
- Singolo writer (M) garantisce coerenza.
- Stato E evita inutili invalidazioni per dati privati.
Varianti
MESIF (Intel: Forward state), MOESI (AMD: Owned state), Dragon (update-based).