Когеренція пам'яті
Когеренція пам'яті (англ. memory coherence) — властивість комп'ютерних систем, в яких два або більше процесорів або ядра мають доступ до загальної області пам'яті.
В однопроцесорних системах (більш строго — в одноядерних) лише один процесорний вузол виконує всю роботу, отже, тільки він один може виконувати читання і запис певної області пам'яті. В результаті, коли вміст комірки змінюється, всі наступні операції читання за цією адресою отримають оновлене значення навіть при наявності кешування.
З іншого боку, в багатопроцесорних (і багатоядерних) системах кілька процесорних вузлів працюють одночасно, тому можлива ситуація паралельного доступу до однієї комірки пам'яті. За умови, що жоден з них не змінює значення цієї комірки, вони можуть вільно користуватися нею спільно, кешуючи на свій розсуд. Але як тільки один з них оновлює значення комірки, дані в локальних кешах інших вузлів можуть виявитися застарілими. Отже, необхідний механізм повідомлення всіх вузлів про зміну значення в загальній пам'яті; такий механізм називається протоколом когеренції (англ. memory coherence protocol). Якщо подібний протокол застосований, то говорять, що система має «когерентну пам'ять» (англ. coherent memory).
Точна природа і смисл механізму когеренції визначається моделлю консистентності, реалізованої в протоколі. Щоб писати правильні паралельні програми, програмісти повинні бути в курсі того, яка саме модель консистентності застосована в їхніх системах.
При апаратній реалізації протоколу когеренції можна використовувати сніффінг (снупінг) шини, застосовувати спеціальні таблиці-довідники (англ. directory-based). Як приклад конкретного протоколу можна привести MSI (англ. Modified/Shared/Invalid) і його різновиди MESI, MOSI і MOESI.
Література [ред.]
- A New Solution to Coherence Problems in Multicache Systems (pdf) // IEEE Transactions on Computers. — Т. C-27. — (December 1978) (12) С. 1112–1118. DOI:10.1109/TC.1978.1675013. Переглянуто: 2011-07-22.
- Cache Memories (pdf) // ACM Computing Surveys. — Т. 14. — (September 1982) (3) С. 473–530. DOI:10.1145/356887.356892. Переглянуто: 2011-07-22.
- Memory coherence in shared virtual memory systems (pdf) // Transactions on Computer Systems. — Т. 7. — (November 1989) (4) С. 321–359. DOI:10.1145/75104.75105. Переглянуто: 2011-07-22.
- A survey of cache coherence schemes for multiprocessors (pdf) // IEEE Computer. — Т. 23. — (June 1990) (6) С. 12–24. DOI:10.1109/2.55497. Переглянуто: 2011-07-22.
|
||||||||||||||||||||||||||||||||
