Кэш-когерентность означает, что как только одно ядро (или устройство управления шинами) записывает данные в ячейку памяти, эта ячейка становится недействительной в других (всех) кешах, которые ее содержат.Это заставляет их перезагружать местоположение (в виде 64-байтовой строки кэша), прежде чем они смогут получить к нему доступ (R или W) в следующий раз.
Таким образом, когерентность кэша - это не когерентность данных, а просто гарантиячто обновленное местоположение будет признано недействительным как можно скорее.Кеши не могут делать больше, они всегда сильно отстают от исполняющих ядер и несколько отстают друг от друга.Если одно ядро обновляет местоположение, а другое делает то же самое чуть позже, оба кеша будут думать, что их местоположение допустимо (и они оба, вероятно, сделают недействительными строки кэша друг друга).
Что это за гарантия, еслиданные не гарантированно действительны?Это лучшее, что можно сделать в данных обстоятельствах.Выбор между полностью синхронизированными ядрами (которые будут работать очень медленно) и работающими на полной скорости с кешами (с конкретными, определенными последствиями и рабочими решениями для их обработки).Решения, по сути, очень короткие замедления, так что впоследствии все синхронизируется.Эти кратковременные, очень короткие замедления следует сопоставлять с постоянным замедлением полностью синхронизированных ядер.
В нормальных условиях нет конкуренции за одно и то же местоположение от разных ядер или устройств управления шинами.Но как только они начинают совместно использовать определенные области памяти, предоставленные решения позволяют программисту убедиться, что необходимая синхронизация может быть реализована.
Это похоже на довольно хорошую статью о кешах ... и это .
Редактировать: чтобы быть более точным в отношении когерентности кэша: когда ядро записывает данные в местоположение, его собственная система кэширования сначала удостоверится, что соответствующая информация кэша в кэшах другихядра недействительным.Таким образом, после записи только кеш ядра, который записывал в местоположение, будет содержать кэшированные данные о местоположении.