Spójność pamięci podręcznej

Cache może być użyty w celu poprawy wydajności dostępu do danego zasobu. Gdy istnieje kilka takich cache'ów dla tego samego zasobu, jak pokazano na rysunku, może to prowadzić do problemów. Spójność pamięci podręcznej lub koherencja pamięci podręcznej odnosi się do wielu sposobów upewnienia się, że wszystkie pamięci podręczne zasobu mają te same dane, oraz że dane w pamięci podręcznej mają sens (nazywane integralnością danych). Spójność pamięci podręcznej jest specjalnym przypadkiem spójności pamięci.

Mogą wystąpić problemy, jeśli istnieje wiele pamięci podręcznych wspólnego zasobu pamięci, ponieważ dane w pamięci podręcznej mogą nie mieć już sensu, lub jedna pamięć podręczna może nie mieć już tych samych danych, co inne. Częstym przypadkiem, w którym pojawia się ten problem, jest pamięć podręczna procesorów w systemie wieloprocesorowym. Jak widać na rysunku, jeśli górny klient ma kopię bloku pamięci z poprzedniego odczytu, a dolny klient zmienia ten blok pamięci, górny klient może zostać pozostawiony z nieprawidłową pamięcią podręczną pamięci, nie wiedząc o tym. Koherencja pamięci podręcznej ma za zadanie zarządzać takimi konfliktami i utrzymywać spójność pomiędzy pamięcią podręczną a pamięcią.

Wiele pamięci podręcznych współdzielonych zasobówZoom
Wiele pamięci podręcznych współdzielonych zasobów

Definicja

Koherencja określa zachowanie się odczytu i zapisu do tej samej lokalizacji pamięci. Pamięci podręczne są spójne, jeśli spełnione są wszystkie poniższe warunki:

  1. Kiedy procesor P odczytuje lokalizację X, po zapisie do tej lokalizacji, P musi uzyskać wartość, którą napisał, jeśli żaden inny procesor nie napisał innej wartości do tej lokalizacji. Jest to również prawdziwe dla systemów monoprocesorowych, oznacza to, że pamięć jest w stanie utrzymać wartość zapisaną.
  2. Załóżmy, że są dwa procesory, P1 i P2, a P1 napisał wartość X1, a następnie P2 napisał wartość X2, jeśli P1 czyta wartość, musi uzyskać wartość napisaną przez P2, X2, a nie wartość, którą napisał, X1, jeśli nie ma innych zapisów między nimi. Oznacza to, że widok pamięci jest spójny. Jeśli procesory mogą odczytać tę samą starą wartość po zapisie wykonanym przez P2, pamięć nie byłaby spójna.
  3. W danym momencie może być tylko jeden zapis do określonej lokalizacji w pamięci. Jeśli istnieje kilka zapisów, muszą one wystąpić jeden po drugim. Innymi słowy, jeśli lokalizacja X otrzymała dwie różne wartości A i B, w tej kolejności, przez dowolne dwa procesory, procesory nigdy nie mogą odczytać lokalizacji X jako B, a następnie odczytać jej jako A. Lokalizacja X musi być widziana z wartościami A i B w tej kolejności.

Warunki te są zdefiniowane przy założeniu, że operacje odczytu i zapisu są wykonywane natychmiastowo. W sprzęcie komputerowym tak się jednak nie dzieje z powodu opóźnienia pamięci i innych aspektów architektury. Zapis dokonany przez procesor X może nie zostać zauważony przez odczyt z procesora Y, jeśli odczyt zostanie dokonany w bardzo krótkim czasie po dokonaniu zapisu. Model spójności pamięci definiuje, kiedy zapisana wartość musi być widziana przez następującą po niej instrukcję odczytu wykonaną przez inne procesory.

Mechanizmy spójności pamięci podręcznej

  • Mechanizmy spójności oparte na katalogach utrzymują centralny katalog zbuforowanych bloków.
  • Snooping jest procesem, w którym każdy cache monitoruje linie adresowe pod kątem dostępu do lokalizacji pamięci, które znajdują się w jego cache. Kiedy obserwowana jest operacja zapisu do lokalizacji, której kopię posiada cache, kontroler cache unieważnia swoją własną kopię snoopingowanej lokalizacji pamięci.
  • Snarfing to sytuacja, w której kontroler pamięci podręcznej obserwuje zarówno adres, jak i dane, próbując zaktualizować swoją własną kopię lokalizacji pamięci, gdy drugi master modyfikuje lokalizację w pamięci głównej.

Rozproszone systemy pamięci współdzielonej naśladują te mechanizmy, dzięki czemu mogą utrzymywać spójność między blokami pamięci w luźno powiązanych systemach.

Dwa najczęściej spotykane typy spójności, które są zazwyczaj badane to Snooping i Directory-based. Każdy z nich ma swoje zalety i wady. Protokoły Snooping są szybsze, jeśli dostępna jest wystarczająca przepustowość, ponieważ wszystkie transakcje są żądaniem/odpowiedzią widzianą przez wszystkie procesory. Wadą jest to, że snooping nie jest skalowalny. Każde żądanie musi być rozesłane do wszystkich węzłów w systemie. W miarę jak system staje się coraz większy, rozmiar (logicznej lub fizycznej) magistrali i przepustowość, którą zapewnia, muszą rosnąć. Katalogi, z drugiej strony, mają tendencję do dłuższych opóźnień (z 3 hop request/forward/respond), ale zużywają znacznie mniej pasma, ponieważ wiadomości są punkt do punktu, a nie rozgłaszane. Z tego powodu wiele większych systemów (>64 procesorów) używa tego typu koherencji cache.

Pytania i odpowiedzi

P: Co to jest spójność pamięci podręcznej?


O: Spójność pamięci podręcznej odnosi się do zapewnienia, że wszystkie pamięci podręczne zasobu mają te same dane i że dane w pamięci podręcznej są spójne (integralność danych).

P: Jaki jest cel spójności cache?


O: Celem spójności pamięci podręcznej jest zarządzanie konfliktami pomiędzy wieloma pamięciami podręcznymi wspólnego zasobu pamięci oraz utrzymanie spójności pomiędzy pamięcią podręczną a pamięcią.

P: Jakie mogą być konsekwencje braku koherencji cache?


O: Bez spójności pamięci podręcznej dane w pamięci podręcznej mogą nie mieć sensu lub jedna pamięć podręczna może nie mieć tych samych danych co inne, co może powodować niespójności i błędy.

P: Jaki jest częsty przypadek, w którym występują problemy ze spójnością pamięci podręcznej?


O: Częstym przypadkiem, w którym występują problemy ze spójnością pamięci podręcznej, jest pamięć podręczna procesorów w systemie wieloprocesorowym.

P: Jak działa koherencja cache?


O: Spójność pamięci podręcznej działa poprzez zapewnienie, że wszystkie pamięci podręczne danego zasobu mają te same dane i że dane w pamięciach podręcznych są spójne dzięki różnym metodom.

P: Co oznacza spójność pamięci?


O: Spójność pamięci odnosi się do spójności danych w zasobach pamięci współdzielonej.

P: Jak spójność pamięci podręcznej może poprawić wydajność?


A: Spójność pamięci podręcznej może poprawić wydajność, umożliwiając szybszy i bardziej efektywny dostęp do danego zasobu.

AlegsaOnline.com - 2020 / 2023 - License CC3