Политика включения кэша


Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

Многоуровневые кэши могут быть спроектированы по-разному в зависимости от того, присутствует ли содержимое одного кэша в кэшах других уровней. Если все блоки в кеше более высокого уровня также присутствуют в кеше нижнего уровня, то говорят, что кеш нижнего уровня включает в себя кеш более высокого уровня. Если кеш более низкого уровня содержит только блоки, которых нет в кеше более высокого уровня, то говорят, что кеш более низкого уровня не содержит кэша более высокого уровня. Если содержимое кэша более низкого уровня не является ни строго включающим, ни исключительным из кэша более высокого уровня, то он называется неинклюзивным неисключающим (ДЕВЯТЬ) кэшем. [1] [2]

Инклюзивная политика

Рисунок 1. Инклюзивная политика

Рассмотрим пример двухуровневой иерархии кеша , где L2 может быть инклюзивным, исключающим или ДЕВЯТЬЮ из L1. Рассмотрим случай, когда L2 включает L1. Предположим, есть запрос процессора на чтение блока X. Если блок найден в кэше L1, то данные считываются из кэша L1 и возвращаются процессору. Если блок не найден в кэше L1, но присутствует в кэше L2, то блок кэша извлекается из кэша L2 и помещается в кэш L1. Если это приводит к вытеснению блока из L1, L2 не участвует. Если блок не найден ни в L1, ни в L2, то он извлекается из основной памяти и помещается как в L1, так и в L2. Теперь, если происходит вытеснение из L2, кэш L2 отправляет обратно инвалидацию в кэш L1, так что включение не нарушается.

Как показано на рис. 1, сначала считайте кэши L1 и L2 пустыми (a). Предположим, что процессор отправляет X-запрос на чтение. Это будет промах как в L1, так и в L2, и, следовательно, блок переносится в L1 и L2 из основной памяти , как показано на (b). Теперь предположим, что процессор выдает запрос на чтение Y, который отсутствует как в L1, так и в L2. Итак, блок Y помещается как в L1, так и в L2, как показано на (c). Если блок X должен быть вытеснен из L1, то он удаляется из L1 только так, как показано в (d). Если блок Y должен быть вытеснен из L2, он отправляет обратный запрос на аннулирование в L1, и, следовательно, блок Y вытесняется из L1, как показано в (e).

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

Одним из примеров инклюзивной кэш-памяти является четырехъядерный процессор Intel с 4x256 КБ кэш-памяти L2 и 8 МБ (включительно) кэш-памяти L3. [3]

Эксклюзивная политика

Рисунок 2. Эксклюзивная политика

Рассмотрим случай, когда L2 исключает L1. Предположим, есть запрос процессора на чтение блока X. Если блок найден в кэше L1, то данные считываются из кэша L1 и возвращаются процессору. Если блок не найден в кэше L1, но присутствует в кэше L2, то блок кэша перемещается из кэша L2 в кэш L1. Если это приводит к вытеснению блока из L1, вытесненный блок затем помещается в L2. Это единственный способ заполнения L2. Здесь L2 ведет себя как кеш жертвы . Если блок не найден ни в L1, ни в L2, то он извлекается из основной памяти и помещается именно в L1, а не в L2.

Как показано на рис. 2, сначала считайте кэши L1 и L2 пустыми (a). Предположим, что процессор отправляет X-запрос на чтение. Это будет промах как в L1, так и в L2, и, следовательно, блок переносится в L1 из основной памяти, как показано на (b). Теперь снова процессор выдает запрос на чтение Y, который отсутствует как в L1, так и в L2. Итак, блок Y помещается в L1, как показано на (c). Если блок X должен быть вытеснен из L1, то он удаляется из L1 и помещается в L2, как показано на (d).

Примером эксклюзивного кэша является AMD Opteron с 512 КБ (на ядро) кэшем L2, исключая L1. [3]

ДЕВЯТЬ Политика

Рисунок 3. Политика NINE

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

Как показано на рис. 3, сначала считайте кэши L1 и L2 пустыми (a). Предположим, что процессор отправляет X-запрос на чтение. Это будет промах как в L1, так и в L2, и, следовательно, блок переносится в L1 и L2 из основной памяти, как показано на (b). Теперь снова процессор выдает запрос на чтение Y, который отсутствует как в L1, так и в L2. Итак, блок Y помещается как в L1, так и в L2, как показано на (c). Если блок X должен быть вытеснен из L1, то он удаляется из L1 только так, как показано в (d). Если блок Y должен быть вытеснен из L2, он вытесняется из L2 только так, как показано в (e).

Примером неинклюзивного неэксклюзивного кэша является AMD Opteron с неинклюзивным кэшем L3 объемом 6 МБ (общий). [3]

Сравнение

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

Недостатком инклюзивной политики является то, что уникальный объем памяти кэша определяется кэшем более низкого уровня. В отличие от монопольного кэша, где уникальный объем памяти представляет собой совокупный объем всех кэшей в иерархии. [4] Если размер кэша более низкого уровня невелик и сравним с размером кэша более высокого уровня, в инклюзивных кэшах теряется больше емкости кэша. Хотя эксклюзивный кеш имеет больший объем уникальной памяти, он использует большую пропускную способность, поскольку страдает от более высокой скорости заполнения новых блоков (равной частоте промахов кеша более высокого уровня) по сравнению с кешем NINE, который заполняется только новым блоком. когда он терпит промах. Таким образом, оценку затрат по отношению к выгодам необходимо проводить, используя выбор междуИнклюзивный, Эксклюзивный и ДЕВЯТЬ кешей.

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

использованная литература

  1. ^ a b c Солихин, Ян (2016). Основы параллельной многоядерной архитектуры . Чепмен и Холл/CRC. стр. 146–150. ISBN 9781482211184.
  2. ^ Каллер, Дэвид; Гупта, Ануп; Сингх, Джасвиндер Пал (1999). Параллельная компьютерная архитектура: аппаратно-программный подход . Сан-Франциско: Издательство Морган Кауфманн. стр.  369–372 . ISBN 1558603433.
  3. ^ a b c «Сравнение архитектур кэша и протоколов когерентности в многоядерных системах SMP x86-64» . Материалы 42-го Международного симпозиума по микроархитектуре . МИКРО'09.
  4. ^ Ин Чжэн; Дэвис, Британская Колумбия; Джордан, М. (2004). «Оценка производительности эксклюзивных иерархий кэша». Международный симпозиум IEEE по анализу производительности систем и программного обеспечения ISPASS, 2004 г. . стр. 89–96. doi : 10.1109/ISPASS.2004.1291359 . ISBN 0-7803-8385-0.
Получено с " https://en.wikipedia.org/w/index.php?title=Cache_inclusion_policy&oldid=1030149868 "