Согласованность памяти - Memory coherence

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

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

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

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

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

Смотрите также

Рекомендации

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