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