MESI (Modified, Exclusive, Shared, Invalid) är ett write-back cache koherens protokoll för delade-minne multiprocessorer. Varje cachelinje håller exakt ett tillstånd.
Tillståndsdefinitioner
- M (Modified): Linje är dirty (≠ minne); endast denna cache har en giltig kopia. Ägaren måste skriva tillbaka vid eviction eller snoop.
- E (Exclusive): Linje är clean (= minne); endast denna cache har en kopia. Kan skriva tyst → M.
- S (Shared): Linje är clean; flera caches kan hålla kopier. Skrivning kräver bus upgrade (invalidering) → M.
- I (Invalid): Linje är ogiltig; måste hämtas vid åtkomst.
Viktiga Övergångar (Snooping Buss)
- Läs Miss: Broadcast → om annan cache har M, skriver den tillbaka (intervention); begärande får E (om ensam) eller S.
- Skriv Träff i S: Broadcast invalidering → blir M.
- Skriv Träff i E: Tyst uppgradering till M.
- Skriv Träff i M: Tyst (redan exklusiv).
Fördelar
- Minskar buss trafik vs write-through protokoll.
- Enskild skrivare (M) garanterar koherens.
- E-tillstånd undviker onödiga invalideringar för privat data.
Varianter
MESIF (Intel: Forward state), MOESI (AMD: Owned state), Dragon (update-baserad).