Выселение кеша из кеша L1 при выселении L2

У меня есть основной вопрос о политике, за которой следует система памяти.

Рассмотрим ядро ​​с частными кэшами L1 и L2. После кэша L2 у нас есть шина, на которой работает трафик когерентности. Теперь, если строка кэша для адреса (X) выведена из кэша L2, необходимо ли выкинуть этот адрес из кеша L1??

Причиной выселения может быть то, что он помогает в поддержании инварианта протокола когерентности [если строка в l2 показывает недопустимое, что это ядро ​​не содержит этого адреса].

Ответ 1

Существуют три разных проекта, и все они используются.

  • Эксклюзив: данные в кеше L1 никогда не находятся в кэше L2. Данные в кэше L2 никогда не находятся в кэше L1.

  • Inclusive: данные в кеше L1 также должны быть в кэше L2.

  • Ни: Данные в кеше L1 могут быть или не быть в кэше L2.

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

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