📌 Cache coherence
Cache coherence — свойство многопроцессорных систем, гарантирующее согласованность данных между копиями одного и того же адреса в разных L1/L2 при использовании общего RAM.
🧠 Как работает
В SMP и Multicore CPU каждое ядро имеет собственный Cache. Когда несколько ядер читают и пишут одну и ту же память, возможны несогласованные состояния.
Протоколы когерентности обеспечивают единое представление данных:
- MESI (Modified, Exclusive, Shared, Invalid)
 - MOESI, MSI, MESIF — расширения MESI
 - Directory-based — централизованная таблица отслеживает владельцев
 
Принцип работы (на примере MESI):
- Ядро читает адрес A → получает его в состоянии Shared
 - Ядро B модифицирует A → переводит A в Modified, остальные инвалидируются
 - Другие ядра при следующем чтении получают обновлённые данные
 
Механизмы поддержки:
- Bus snooping — ядра следят за шиной памяти
 - Interconnect — передаёт сообщения между CPU и Cache Controller
 - Memory barrier — упорядочивает доступ к памяти
 
⚙️ Где применяется
| Система | Значение | 
|---|---|
| Multicore CPU | Согласованность кэшей при совместной памяти | 
| NUMA | Глобальный порядок обновлений | 
| GPU с shared memory | Между блоками/ядрами | 
| Hypervisor | Поддержка когерентности у VM и VCPU | 
✅ Преимущества
- Гарантирует правильность работы многопоточных программ
 - Автоматически поддерживается современными CPU
 - Улучшает предсказуемость и дебаггинг параллельного кода
 
❌ Недостатки
- Performance penalty из-за частых инвалидаций
 - Повышенная нагрузка на Memory bus
 - Сложность реализации в гетерогенных системах
 - Возможен False sharing — деградация производительности