Co to jest spójność pamięci?
Spójność pamięci to problem występujący w komputerze, gdy procesor próbuje spojrzeć na sektor pamięci. Ten problem występuje tylko w systemach wielordzeniowych lub komputerach, które mają więcej niż jedną jednostkę centralną (CPU). Gdy wiele procesorów patrzy na ten sam sektor pamięci, a 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 nie mają dostępu do tej samej pamięci lub ż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 ze spójnością pamięci występuje tylko na komputerach, które używają co najmniej dwóch procesorów ze względu na sposób dostępu do pamięci. Gdy jeden procesor uzyskuje dostęp do sektora pamięci, jest w stanie zabrać, używać i zmieniać pamięć bez żadnego konfliktu, ponieważ nie ma innych elementów sprzętowych konkurujących o pamięć. Jeśli używane są dwa procesory, dwa procesory mogą pobierać ten sam sektor pamięci. Chociaż nie ma problemów z dwoma procesorami współużytkującymi pamięć, problem pojawia się, jeśli jeden procesor aktualizuje pamięć. Pozostawia to drugi procesor z przestarzałą pamięcią, która, jeśli pozostanie niezaznaczona, może spowodować, że cały komputer będzie miał dwie oddzielne i sprzeczne wersje pamięci komputera.
Istnieją schematy programowania opracowane specjalnie w celu poprawienia spójności pamięci, co może być poważnym problemem. Są one znane łącznie jako reguły spójności pamięci i istnieje wiele wersji. Ogólnie każda wersja informuje wiele procesorów, jak prawidłowo współdzielić pamięć komputera, nie powodując 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 ze spójnością pamięci, wynika z tego kolejny problem. Każdy zestaw spójności ma inne programowanie i inne reguły, więc programiści, którzy tworzą programy lub piszą kod, który bezpośrednio zajmuje się procesorami, będą musieli dostosować kodowanie do dokładnych reguł spójności. Jeśli nie, może to zastąpić spójność lub spowodować poważny konflikt między kodowaniem programisty a regułami spójności, a komputer może przestać działać.