Когерентность памяти () — свойство компьютерных систем, содержащих более одного процессора или ядра, имеющих доступ к одной области памяти, заключающееся в том, что изменённая одним ядром/процессором ячейка памяти принимает новое значение для остальных ядер/процессоров.
В однопроцессорных системах (более строго — в одноядерных) работу с памятью выполняет один процессорный узел: только один узел может читать данные из памяти или записывать данные в память. После записи нового значения в ячейку памяти, доступную по какому-либо адресу, при чтении данных из той же ячейки будет получено записанное значение (даже при наличии кэширования).
В многопроцессорных (многоядерных) системах несколько процессорных узлов работают одновременно и могут одновременно (параллельно) обращаться к одной ячейке памяти (для чтения или для записи). Узлы могут одновременно прочитать значение из одной ячейки памяти, могут сохранить прочитанное значение в своих кешах. Как только один из узлов запишет в ячейку новое значение, значения, сохранённые в локальной памяти других узлов, должны помечаться как устаревшие. Необходим механизм уведомления всех узлов о том, что значение, сохранённое в их кешах, устарело; такой механизм называется протоколом когерентности (). Если в системе используется подобный протокол, то говорят, что система имеет «когерентную память» ().
Точная природа и смысл механизма когерентности определяются моделью консистентности/связанности, реализованной в протоколе. Для составления правильных «параллельных» программ программисты должны знать о том, какая именно модель/способ консистентности/связанности кеш-памяти используется в их системах.
Если протокол когерентности/синхронизации реализован аппаратно, для выяснения применяемой модели консистентности/связанности программисты могут использовать , могут читать специальные таблицы-справочники (). В качестве примера протокола когерентности можно привести протокол MSI () (англ.) и его разновидности (, , MOESI, MESIF).
См. также Когерентность кэша Состояние гонки
Литература
Ссылки Применение справочника для поддержки когерентности памяти в системе «Эльбрус-2S».
Категория:Компьютерная память Категория:Параллельные вычислительные системы Категория:Оперативная память