Co to jest spójność pamięci?

Spójność pamięci to problem, który pojawia się w komputerze, gdy procesor próbuje spojrzeć na sektor pamięci. Ten problem występuje tylko w systemach wielordzeniowych lub komputerach z więcej niż jedną jednostką centralną (CPU). Kiedy wiele procesorów patrzy na ten sam sektor pamięci i jeden aktualizuje sektor, drugi może pozostać ze starą wersją pamięci komputera. Aby rozwiązać ten problem, stosuje się reguły spójności, aby zapewnić, że procesory albo nie uzyskują dostępu do tej samej pamięci, albo że aktualizacje są między nimi spójne. Istnieje kilka różnych modeli spójności, więc programiści i programiści muszą znać dokładnie używany model.

Problem spójności pamięci występuje tylko na komputerach korzystających z co najmniej dwóch procesorów ze względu na sposób, w jaki uzyskują one dostęp do pamięci. Kiedy jeden procesor uzyskuje dostęp do sektora pamięci, jest w stanie przejąć, używać i zmieniać pamięć bez żadnego konfliktu, ponieważ nie ma innych elementów sprzętowych rywalizujących o pamięć. Jeśli używane są dwa procesory, dwa procesory mogą pobrać ten sam sektor pamięci. Chociaż nie ma problemów z dwoma procesorami współdzielącymi pamięć, problem pojawia się, gdy jeden procesor aktualizuje pamięć. Pozostawia to drugi procesor z przestarzałą pamięcią, która, jeśli nie zostanie zaznaczona, może spowodować, że cały komputer będzie miał dwie oddzielne i powodujące konflikty wersje pamięci komputera.

Istnieją schematy programowania stworzone specjalnie w celu poprawienia spójności pamięci, co może być poważnym problemem. Są one znane zbiorczo jako reguły spójności pamięci i istnieje wiele wersji. Ogólnie rzecz biorąc, każda wersja mówi wielu procesorom, jak prawidłowo współdzielić pamięć komputera bez powodowania problemu ze spójnością pamięci. Można to zrobić, aktualizując obie wersje pamięci po zmianie jednej wersji lub uniemożliwiając procesorom dostęp do tej samej pamięci w tym samym czasie.

Chociaż stosowanie reguł spójności pomaga uniknąć problemu spójności pamięci, wynika z tego inny problem. Każdy zestaw spójności ma inne programowanie i różne zasady, więc programiści, którzy tworzą programy lub piszą kod bezpośrednio z procesorami, będą musieli dostosować kodowanie do dokładnych reguł spójności. Jeśli nie, może to albo unieważnić spójność, albo spowodować poważny konflikt między kodowaniem programisty a regułami spójności, a komputer może przestać działać.