📌 Cache coherence

Cache coherence — свойство многопроцессорных систем, гарантирующее согласованность данных между копиями одного и того же адреса в разных L1/L2 при использовании общего RAM.

🧠 Как работает

В SMP и Multicore CPU каждое ядро имеет собственный Cache. Когда несколько ядер читают и пишут одну и ту же память, возможны несогласованные состояния.

Протоколы когерентности обеспечивают единое представление данных:

  • MESI (Modified, Exclusive, Shared, Invalid)
  • MOESI, MSI, MESIF — расширения MESI
  • Directory-based — централизованная таблица отслеживает владельцев

Принцип работы (на примере MESI):

  1. Ядро читает адрес A → получает его в состоянии Shared
  2. Ядро B модифицирует A → переводит A в Modified, остальные инвалидируются
  3. Другие ядра при следующем чтении получают обновлённые данные

Механизмы поддержки:

⚙️ Где применяется

СистемаЗначение
Multicore CPUСогласованность кэшей при совместной памяти
NUMAГлобальный порядок обновлений
GPU с shared memoryМежду блоками/ядрами
HypervisorПоддержка когерентности у VM и VCPU

✅ Преимущества

  • Гарантирует правильность работы многопоточных программ
  • Автоматически поддерживается современными CPU
  • Улучшает предсказуемость и дебаггинг параллельного кода

❌ Недостатки

  • Performance penalty из-за частых инвалидаций
  • Повышенная нагрузка на Memory bus
  • Сложность реализации в гетерогенных системах
  • Возможен False sharing — деградация производительности