MESI (Modified, Exclusive, Shared, Invalid) ist ein Write-Back-Cache-Kohärenzprotokoll für Shared-Memory-Multiprozessoren. Jede Cache-Zeile hat genau einen Zustand.
Zustandsdefinitionen
- M (Modified): Zeile ist schmutzig (≠ Speicher); nur dieser Cache hat eine gültige Kopie. Besitzer muss bei Auslagerung oder Snoop zurückschreiben.
- E (Exclusive): Zeile ist sauber (= Speicher); nur dieser Cache hat eine Kopie. Kann stillschreiben → M.
- S (Shared): Zeile ist sauber; mehrere Caches können Kopien halten. Schreiben erfordert Bus-Upgrade (Invalidieren) → M.
- I (Invalid): Zeile ist ungültig; muss bei Zugriff geholt werden.
Wichtige Übergänge (Snooping-Bus)
- Read Miss: Broadcast → wenn ein anderer Cache M hat, schreibt er zurück (Intervention); Antragsteller erhält E (wenn allein) oder S.
- Write Hit in S: Broadcast invalidieren → wird M.
- Write Hit in E: Stillschweigendes Upgrade auf M.
- Write Hit in M: Stillschweigend (bereits exklusiv).
Vorteile
- Reduziert Busverkehr gegenüber Write-Through-Protokollen.
- Einzelner Schreiber (M) garantiert Kohärenz.
- E-Zustand vermeidet unnötige Invalidierungen für private Daten.
Varianten
MESIF (Intel: Forward-Zustand), MOESI (AMD: Owned-Zustand), Dragon (update-basiert).