protokół MSI
W informatyce protokół MSI – podstawowy protokół spójności pamięci podręcznej – działa w systemach wieloprocesorowych. Podobnie jak w przypadku innych protokołów spójności pamięci podręcznej, litery nazwy protokołu określają możliwe stany, w jakich może znajdować się linia pamięci podręcznej.
Przegląd
W MSI każdy blok zawarty w pamięci podręcznej może mieć jeden z trzech możliwych stanów:
- Zmodyfikowany : Blok został zmodyfikowany w pamięci podręcznej . Dane w pamięci podręcznej są wtedy niespójne z magazynem zapasowym (np. memory ). Pamięć podręczna z blokiem w stanie „M” ma obowiązek zapisać blok do magazynu zapasowego, gdy zostanie eksmitowany.
- Udostępniony : Ten blok jest niezmodyfikowany i istnieje w stanie tylko do odczytu w co najmniej jednej pamięci podręcznej. Pamięć podręczna może eksmitować dane bez zapisywania ich w magazynie zapasowym.
- Nieprawidłowy : Ten blok albo nie jest obecny w bieżącej pamięci podręcznej, albo został unieważniony przez żądanie magistrali i musi zostać pobrany z pamięci lub innej pamięci podręcznej , jeśli blok ma być przechowywany w tej pamięci podręcznej.
Te stany spójności są utrzymywane poprzez komunikację między pamięciami podręcznymi a magazynem zapasowym. Pamięci podręczne mają różne obowiązki, gdy bloki są odczytywane lub zapisywane, lub gdy dowiadują się, że inne pamięci podręczne wydają odczyty lub zapisy dla bloku.
Gdy żądanie odczytu dociera do pamięci podręcznej dla bloku w stanie „M” lub „S”, pamięć podręczna dostarcza dane. Jeśli blok nie znajduje się w pamięci podręcznej (w stanie „I”), musi sprawdzić, czy blok nie znajduje się w stanie „M” w żadnej innej pamięci podręcznej. Różne architektury buforowania radzą sobie z tym różnie. Na przykład architektury magistrali często wykonują szpiegowanie , w którym żądanie odczytu jest rozgłaszane do wszystkich pamięci podręcznych. Inne architektury obejmują katalogi pamięci podręcznej które mają agentów (katalogi), które wiedzą, które pamięci podręczne ostatnio miały kopie określonego bloku pamięci podręcznej. Jeśli inna pamięć podręczna ma blok w stanie „M”, musi odpisać dane do magazynu zapasowego i przejść do stanów „S” lub „I”. Gdy jakakolwiek linia „M” zostanie ponownie zapisana, pamięć podręczna uzyskuje blok z magazynu zapasowego lub innej pamięci podręcznej z danymi w stanie „S”. Pamięć podręczna może następnie dostarczyć dane żądającemu. Po podaniu danych blok pamięci podręcznej znajduje się w stanie „S”.
Gdy żądanie zapisu dociera do pamięci podręcznej dla bloku w stanie „M”, pamięć podręczna modyfikuje dane lokalnie. Jeśli blok jest w stanie „S”, pamięć podręczna musi powiadomić inne pamięci podręczne, które mogą zawierać blok w stanie „S”, że muszą usunąć blok. Powiadomienie to może być realizowane przez podsłuchiwanie magistrali lub katalog, jak opisano powyżej. Następnie dane mogą być lokalnie modyfikowane. Jeśli blok jest w stanie „I”, pamięć podręczna musi powiadomić inne pamięci podręczne, które mogą zawierać blok w stanie „S” lub „M”, że muszą usunąć blok. Jeśli blok znajduje się w innej pamięci podręcznej w stanie „M”, ta pamięć podręczna musi albo zapisać dane do magazynu zapasowego, albo dostarczyć je do żądającej pamięci podręcznej. Jeśli w tym momencie pamięć podręczna nie zawiera jeszcze bloku lokalnie, blok jest odczytywany z magazynu zapasowego przed modyfikacją w pamięci podręcznej. Po modyfikacji danych blok pamięci podręcznej znajduje się w stanie „M”.
Dla dowolnej pary pamięci podręcznych dozwolone stany danej linii pamięci podręcznej są następujące:
M | S | I | |
---|---|---|---|
M | |||
S | |||
I |
Maszyna stanowa
Żądania procesora do pamięci podręcznej obejmują:
- PrRd: Żądanie procesora odczytu bloku pamięci podręcznej.
- PrWr: Żądanie procesora zapisu bloku pamięci podręcznej.
Ponadto istnieją żądania strony autobusowej. Obejmują one:
- BusRd: Gdy w pamięci podręcznej procesora wystąpi błąd odczytu, wysyła on żądanie BusRd do magistrali i oczekuje w zamian otrzymania bloku pamięci podręcznej.
- BusRdX: Gdy w pamięci podręcznej procesora wystąpi błąd zapisu, wysyła on żądanie BusRdX do magistrali, które zwraca blok pamięci podręcznej i unieważnia blok w pamięciach podręcznych innych procesorów.
- BusUpgr: Gdy w pamięci podręcznej procesora wystąpi błąd zapisu, wysyła żądanie BusUpgr do magistrali w celu unieważnienia bloku w pamięciach podręcznych innych procesorów.
- Flush: Żądanie wskazujące, że cały blok pamięci podręcznej jest zapisywany z powrotem do pamięci.
Przejścia stanów:
-
Nieprawidłowy :
- Na PrRd wydawany jest BusRd i stan zmienia się na Shared .
- Na PrWr wydawany jest BusRdX i stan zmienia się na Modified .
- Na BusRd, BusRdX lub BusUpgr nieprawidłowy blok pozostaje Invalid .
-
Udostępniono :
- Na PrRd blok pozostaje w stanie Shared .
- Na PrWr wydawany jest BusUpgr i stan zmienia się na Modified .
- Na BusRd blok pozostaje w stanie Shared .
- Na BusRdX lub BusUpgr blok przechodzi do Invalid .
-
Zmodyfikowano :
- Na PrRd lub PrWr blok pozostaje w stanie Modified .
- Na BusRd blok pamięci podręcznej jest opróżniany do magistrali i zmienia stan na Shared .
- Na BusRdX blok pamięci podręcznej jest opróżniany do magistrali i zmienia stan na Invalid .
- BusUpgr nie jest możliwe. Należy zauważyć, że będąc w Zmodyfikowany w jednym konkretnym procesorze, blok pamięci podręcznej musi być w stanie Nieprawidłowy we wszystkich innych procesorach, ponieważ stan Zmodyfikowany jest dozwolony w żadnym lub tylko w jednym procesorze. To skutecznie neguje możliwość BusUpgr na magistrali, co wymagałoby, aby ten blok był w stanie Shared w jednym z procesorów, który, jak widać powyżej, wystawia PrWr.
Stosowanie
Ten protokół jest podobny do tego używanego w maszynie SGI 4D.
Warianty
Nowoczesne systemy wykorzystują warianty protokołu MSI w celu zmniejszenia natężenia ruchu w interkonekcie koherentnym. Protokół MESI dodaje stan „wyłączny”, aby zmniejszyć ruch powodowany przez zapisy bloków, które istnieją tylko w jednej pamięci podręcznej. Protokół MOSI dodaje stan „Owned”, aby zredukować ruch powodowany przez zapisywanie bloków odczytywanych przez inne pamięci podręczne. Protokół MOESI robi obie te rzeczy.