Когерентность (физика)
- 1 year ago
- 0
- 0
Когерентность памяти ( англ. memory coherence ) — свойство компьютерных систем , содержащих более одного процессора или ядра , имеющих доступ к одной области памяти , заключающееся в том, что изменённая одним ядром/процессором ячейка памяти принимает новое значение для остальных ядер/процессоров.
В системах (более строго — в ) работу с памятью выполняет один процессорный узел: только один узел может читать данные из памяти или записывать данные в память. После записи нового значения в ячейку памяти, доступную по какому-либо адресу, при чтении данных из той же ячейки будет получено записанное значение (даже при наличии кэширования ).
В многопроцессорных ( многоядерных ) системах несколько процессорных узлов работают одновременно и могут одновременно (параллельно) обращаться к одной ячейке памяти (для чтения или для записи). Узлы могут одновременно прочитать значение из одной ячейки памяти, могут сохранить прочитанное значение в своих кешах. Как только один из узлов запишет в ячейку новое значение, значения, сохранённые в локальной памяти других узлов, должны помечаться как устаревшие. Необходим механизм уведомления всех узлов о том, что значение, сохранённое в их кешах, устарело; такой механизм называется ( англ. memory coherence protocol ). Если в системе используется подобный протокол, то говорят, что система имеет « когерентную память » ( англ. coherent memory ).
Точная природа и смысл механизма когерентности определяются моделью консистентности/связанности , реализованной в протоколе. Для составления правильных «параллельных» программ программисты должны знать о том, какая именно модель/способ консистентности/связанности кеш-памяти используется в их системах.
Если протокол когерентности/синхронизации реализован аппаратно, для выяснения применяемой модели консистентности/связанности программисты могут использовать , могут читать специальные таблицы-справочники ( англ. directory-based ). В качестве примера протокола когерентности можно привести протокол ( англ. m odified, s hared, i nvalid ) ( ) и его разновидности ( ( ), ( ), MOESI , MESIF ).