MESI (inaczej Illinois protocol) — protokół spójności danych w pamięci podręcznej (cache) komputera, stosowany w większości współczesnych procesorów.

Write through
Write back
Write once

Każda linia pamięci podręcznej ma przydzielony jeden z czterech stanów (zakodowanych na dwóch dodatkowych bitach):

  • M (modified) – linia pamięci jest dostępna tylko w jednym z poziomów cache i jest różna od zawartości pamięci operacyjnej
  • E (exclusive) – linia pamięci jest dostępna tylko w jednym z poziomów cache, oraz w pamięci operacyjnej
  • S (shared) – linia pamięci jest dostępna na wszystkich poziomach cache oraz w pamięci operacyjnej
  • I (invalid) – linia pamięci jest nieaktualna i może zostać zastąpiona inną.

Tryby zapisu do pamięci podręcznej edytuj

  • Write through (zapis skrośny) – najstarszy chronologicznie tryb zapisu, używany w procesorach 80486 (pierwsze układy z pamięcią podręczną). Jest to zapis przeprowadzany przez całą hierarchię pamięci od najniższego poziomu cache do pamięci operacyjnej. Występują tu tylko dwa stany: shared i invalid. Po wypełnieniu linii następuje przejście do shared. Linia zostaje zamarkowana jako invalid podczas zapisu do pamięci poprzez kanał DMA (ESH-W – external hit write).
  • Write back (inaczej copy back) – tryb zapisu wprowadzony razem z architekturą Intel Pentium. Jest to rodzaj zapisu z opóźnieniem. Po wpisaniu danej do linii cache aktualizacja reszty pamięci jest opóźniana do momentu wymiany danej linii w pamięci podręcznej. Przyspiesza to znacznie działanie systemu cache, zmniejszając tym samym aktywność na magistrali. Używane są trzy stany: exclusive, modified i invalid. Po wypełnieniu linii (RM) następuje przejście do exclusive. Pierwszy zapis do pamięci operacyjnej spowoduje przejście do modified. Przy odczycie przez kanał DMA (ESH-R, external hit read) nastąpi przejście z powrotem do exclusive. Zapis przez kanał DMA oznacza zamarkowanie linii jako invalid.
  • Write once – połączenie obu powyższych trybów. Pierwszy zapis do cache realizowany jest jako write through. Dalsze zapisy są przeprowadzane w trybie write back, aż do ponownego unieważnienia linii cache. Odczyt przez kanał DMA powoduje przejście do stanu shared, zapis przez kanał DMA – przejście do stanu invalid.