Выселение кеша из кеша L1 на выселение L2
У меня есть основной вопрос о политике, которой придерживается система памяти.
Рассмотрим ядро с частными кэшами L1 и L2. После L2-кэша у нас есть шина, на которой работает когерентный трафик. Теперь, если строка кэша для адреса (X) исключена из кэша L2, необходимо ли удалять этот адрес из кэша L1??
Причиной выселения может быть то, что он помогает поддерживать инвариант протокола когерентности [если строка в l2 показывает недействительным, это ядро не содержит этот адрес].
1 ответ
Есть три разных дизайна, и все они используются.
Исключительно: данные в кэше L1 никогда не находятся в кэше L2. Данные в кеше L2 никогда не находятся в кеше L1.
Включено: Данные в кеше L1 также должны находиться в кеше L2.
Ни то, ни другое: данные в кэше L1 могут находиться или не находиться в кэше L2.
У каждого из них есть свои преимущества и недостатки. Инклюзивная схема позволяет протоколу когерентности кэша игнорировать кэш L1 - если данные не находятся в кэше L2, они не находятся в кэше L1. Но эксклюзивная схема максимально эффективно использует драгоценную кеш-память.
Инклюзивные проекты становятся все более популярными, потому что более быстрая межъядерная синхронизация становится более важной, чем эффективные размеры кеша чуть большего размера.