Согласованность памяти - это проблема, которая влияет на дизайн компьютерных систем, в которых два или более процессора или ядра совместно используют общую область памяти . [1] [2] [3] [4]
В однопроцессорной системе (где, с точки зрения сегодняшнего дня, существует только одно ядро), есть только один элемент обработки, выполняющий всю работу, и, следовательно, только один элемент обработки, который может читать или записывать из / в заданную ячейку памяти. В результате, когда значение изменяется, все последующие операции чтения из соответствующей области памяти будут видеть обновленное значение, даже если оно кэшировано .
И наоборот, в многопроцессорных (или многоядерных ) системах два или более обрабатывающих элемента работают одновременно, поэтому возможно, что они одновременно обращаются к одной и той же области памяти. Если никто из них не изменяет данные в этом месте, они могут делиться ими на неопределенный срок и кэшировать их по своему усмотрению. Но как только один обновит местоположение, другие могут работать с устаревшей копией, которая, например, находится в их локальном кэше. Следовательно, требуется некоторая схема для уведомления всех элементов обработки об изменениях общих значений; такая схема известна как протокол когерентности памяти , и если такой протокол используется, говорят, что система имеет когерентную память .
Точный характер и значение когерентности памяти определяется моделью согласованности, которую реализует протокол согласованности. Чтобы писать правильные параллельные программы, программисты должны знать точную модель согласованности, которая используется в их системах.
При аппаратной реализации протокол когерентности может, например, быть основан на каталоге или на основе отслеживания (также называемого сниффингом ). Конкретные протоколы включают протокол MSI и его производные MESI , MOSI и MOESI .
См. Также [ править ]
- Обнюхивание автобуса
- Согласованность кеша
- Модель согласованности
- Протоколы согласованности на основе каталогов
- Распределенная разделяемая память
- Состояние гонки
Ссылки [ править ]
- ^ Censier, LM; Ферье, П. (декабрь 1978 г.). «Новое решение проблем когерентности в системах с несколькими кэшами». Транзакции IEEE на компьютерах . С-27 (12): 1112–18. DOI : 10.1109 / TC.1978.1675013 .
- ^ Смит, Алан Джей (сентябрь 1982 г.). «Кэш-память». ACM Computing Surveys . 14 (3): 473–530. DOI : 10.1145 / 356887.356892 .
- ^ Ли, Кай; Худак, Пол (ноябрь 1989 г.). «Согласованность памяти в системах с общей виртуальной памятью». Сделки в компьютерных системах . 7 (4): 321–59. DOI : 10.1145 / 75104.75105 .
- ^ Штенштрём Пер (июнь 1990). «Обзор схем согласованности кеш-памяти для мультипроцессоров». Компьютер IEEE . 23 (6): 12–24. DOI : 10.1109 / 2.55497 .