MESI
Z Wikipedii
MESI (inaczej Illinois protocol) - protokół spójności danych w pamięci podręcznej komputera, stosowany w większości współczesnych procesorów.
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ą.
[edytuj] Tryby zapisu do pamięci cache
- 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 oraz 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ą 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żywamy tu trzech stanów: 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.