Лучшие вопросы
Таймлайн
Чат
Перспективы

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

Из Википедии, свободной энциклопедии

Когерентность кэша
Remove ads

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

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

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

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

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

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

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

Remove ads

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

Суммиров вкратце
Перспектива

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

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

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

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

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

Remove ads

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

Суммиров вкратце
Перспектива

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

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

Remove ads

Примечания

Литература

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads