Interested Article - Когерентность кэша

Несколько кэшей для разделяемого ресурса памяти. Если процесс в верхней части имеет копию блока памяти из предыдущего чтения, а нижний клиент изменяет блок памяти, копия данных в кэше верхнего процесса становится устаревшей, если не используются какие-либо уведомления об изменении или проверки изменений.

Когерентность кэша ( англ. cache coherence ) — свойство кэшей , означающее целостность данных, хранящихся в локальных кэшах для разделяемого ресурса. Когерентность кэшей — частный случай когерентности памяти .

Когда процессы в системе используют кэширование общих ресурсов, например, памяти, могут возникнуть проблемы с противоречивостью данных. Это особенно справедливо в отношении процессоров в многопроцессорной системе . Когеренция кэшей предназначена для управления такими конфликтами путём поддержания согласованности данных в разных кэшах.

Некогерентные кэши: значение одной ячейки памяти различно для двух кэшей
Когерентные кэши

Когерентность определяет поведение чтений и записей в одно и то же место памяти. Кэш называется когерентным, если выполняются следующие условия :

  • информирование о записи: изменение данных в любом из кэшей должно быть распространено на другие копии этих данных (этой линии кэша) в соседних кэшах;
  • сериализация транзакций: операции чтения и записи в одну и ту же ячейку памяти должны быть видимы для всех процессоров в одинаковом порядке.

В этих условиях предполагается, что операции чтения и записи происходят мгновенно. Однако этого не происходит на практике из-за задержек памяти и других особенностей архитектуры. Изменения, сделанные процессором , могут быть не видны процессору , если чтение произошло через очень маленький промежуток времени после записи. Модель консистентности памяти определяет, когда записанное значение будет видно при чтении из другого потока.

Механизмы когерентности кэшей

Три основных механизма обеспечения когерентности кэшей — с использованием справочника ( directory ), отслеживание ( snooping ) и перехват ( snarfing ).

При использовании справочника информация о состоянии блока физической памяти содержится только в одном месте, называемом справочником (при этом физически справочник может быть распределён по узлам системы).

В механизме отслеживания каждый кэш, который содержит копию данных некоторого блока физической памяти, имеет также соответствующую копию служебной информации о его состоянии. Централизованная система записей отсутствует. Обычно кэши расположены на общей (разделяемой) шине и контроллеры всех кэшей наблюдают за шиной (просматривают её) для определения того, не содержат ли они копию соответствующего блока.

При применении перехвата, когда из какого-либо одного кэша данные переписываются в оперативную память, контроллеры остальных получают сигнал об этом изменении («перехватывают» информацию об изменении данных) и, если необходимо, изменяют соответствующие данные в своих кэшах.

Системы используют похожие механизмы для поддержания согласованности между блоками памяти в слабосвязанных системах.

Протоколы поддержки когерентности

Протоколы поддержки когерентности отвечают за поддержание корректности данных между всеми кэшами в системе с распределенной разделяемой памятью. Протокол поддерживает когерентность памяти согласно выбранной модели согласованности . Большинство аппаратных протоколов в процессорах (в том числе обеспечивающих кэш-когерентный неравномерный доступ к памяти ) соответствует модели последовательной согласованности , а программные протоколы в системах чаще реализуют модели ( англ. ) или ( англ. ).

Основные модели и протоколы поддержки когерентности кэшей:

Примечания

  1. Yan, Solihin. (неопр.) .
  2. от 3 июля 2010 на Wayback Machine Multi Processors, their Memory organizations and Implementations by Intel & AMD
  3. . Дата обращения: 15 октября 2009. 25 января 2009 года.
  4. . Дата обращения: 12 марта 2019. 16 февраля 2019 года.
  5. . Дата обращения: 12 марта 2019. 12 декабря 2019 года.
  6. . Дата обращения: 12 марта 2019. 26 августа 2020 года.
  7. . Дата обращения: 12 марта 2019. Архивировано из 22 февраля 2019 года.
  8. . Дата обращения: 12 марта 2019. 14 марта 2019 года.
  9. . Дата обращения: 12 марта 2019. 25 апреля 2019 года.

Литература

Источник —

Same as Когерентность кэша