Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Согласованность памяти - это проблема, которая влияет на дизайн компьютерных систем, в которых два или более процессора или ядра совместно используют общую область памяти . [1] [2] [3] [4]

В однопроцессорной системе (где, с точки зрения сегодняшнего дня, существует только одно ядро), есть только один элемент обработки, выполняющий всю работу, и, следовательно, только один элемент обработки, который может читать или записывать из / в заданную ячейку памяти. В результате, когда значение изменяется, все последующие операции чтения из соответствующей области памяти будут видеть обновленное значение, даже если оно кэшировано .

И наоборот, в многопроцессорных (или многоядерных ) системах два или более обрабатывающих элемента работают одновременно, поэтому возможно, что они одновременно обращаются к одной и той же области памяти. Если никто из них не изменяет данные в этом месте, они могут делиться ими на неопределенный срок и кэшировать их по своему усмотрению. Но как только один обновит местоположение, другие могут работать с устаревшей копией, которая, например, находится в их локальном кэше. Следовательно, требуется некоторая схема для уведомления всех элементов обработки об изменениях общих значений; такая схема известна как протокол когерентности памяти , и если такой протокол используется, говорят, что система имеет когерентную память .

Точный характер и значение когерентности памяти определяется моделью согласованности, которую реализует протокол согласованности. Чтобы писать правильные параллельные программы, программисты должны знать точную модель согласованности, которая используется в их системах.

При аппаратной реализации протокол когерентности может, например, быть основан на каталоге или на основе отслеживания (также называемого сниффингом ). Конкретные протоколы включают протокол MSI и его производные MESI , MOSI и MOESI .

См. Также [ править ]

Ссылки [ править ]

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