stringtranslate.com

Кэш жертвы

Кэш жертвы — это небольшой, обычно полностью ассоциативный кэш, размещенный в пути пополнения кэша ЦП . Он хранит все блоки, вытесненные из этого уровня кэша, и был первоначально предложен в 1990 году. В современных архитектурах эта функция обычно выполняется кэшами уровня 3 или уровня 4.

Обзор

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

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

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

Хотя изначально Jouppi предлагал улучшить производительность кэша прямого отображения кэша уровня 1, современные микропроцессоры с многоуровневой иерархией кэша используют кэш уровня 3 или уровня 4, чтобы действовать как кэш-жертва для кэша, находящегося выше в иерархии памяти. Crystal Well [2] от Intel в своих процессорах Haswell представил встроенный кэш уровня 4, который служит кэшем-жертвой для кэша уровня 3 процессора. [3] Кэш-память уровня 3 объемом 4–12 МБ используется в качестве кэш-жертвы в микропроцессорах POWER5 (IBM).

Фон

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

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

Выполнение

Ниже показано поведение кэша жертвы при его взаимодействии с кэшем соответствующего уровня:

Попадание в кэш: Никаких действий

Промах по кэшу, попадание в жертву: блок в кэше жертвы и блок в кэше заменяются друг другом. Эта новая запись в кэше жертвы становится последним использованным блоком.

Пример реализации

Промах кэша, промах жертвы: Блок переносится в кэш со следующего уровня. Блок, вытесненный из кэша, сохраняется в кэше жертвы.

Пример

Рассмотрим кэш L1 с прямым отображением, в котором блоки A, B указывают на один и тот же набор. Он связан с полностью ассоциативным кэшем жертвы с 2 входами, в котором находятся блоки C, D.

Необходимо проследить путь: А, Б, А, Б...

Из диаграммы видно, что в случае попадания в кэш жертвы (VC) блоки A и B меняются местами. Блок VC, который использовался меньше всего, остается как есть. Таким образом, он создает иллюзию ассоциативности с кэшем L1 с прямым отображением, что в свою очередь уменьшает промахи конфликта.

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

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

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

Экспериментальные результаты получены путем рассмотрения 32-Кб Direct-Mapped, 2-стороннего и полностью ассоциативного кэша, дополненного 256-блочным (8 Кб) кэшем жертвы и запуска на нем 8 случайно выбранных тестов SPEC 95. [4] Хотя результаты не могут быть обобщены для всех тестов, добавление кэша жертвы обеспечивает снижение частоты промахов в диапазоне от 10% до 100% для всех конфигураций кэша. [4] Однако возвраты, по-видимому, выравниваются после размера кэша жертвы в 50 блоков, тем самым подтверждая наблюдение Джуппи [1] о том, что преимущества кэша жертвы достигают плато после первых нескольких блоков жертвы. [4]

Установлено, что снижение частоты промахов для кэша размером 64 КБ значительно ниже, что доказывает, что кэширование жертвы не является масштабируемым до бесконечности. [4]

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

Ссылки

  1. ^ abcde Jouppi, NP (1990-05-01). Улучшение производительности кэша с прямым отображением путем добавления небольшого полностью ассоциативного кэша и буферов предварительной выборки . 17-й ежегодный международный симпозиум по архитектуре компьютеров, 1990. Труды. стр. 364–373. doi :10.1109/ISCA.1990.134547. ISBN 0-8186-2047-1.
  2. ^ "Продукты (ранее Crystal Well)". Intel® ARK (спецификации продукта) . Получено 16.11.2016 .
  3. ^ Шимпи, Ананд Лал. "Обзор графики Intel Iris Pro 5200: протестировано Core i7-4950HQ" . Получено 16.11.2016 .
  4. ^ abcde Вассерман, Хэл (весна 1996 г.), «Кэширование жертв для больших кэшей и современных рабочих нагрузок», Проект Computer Science 252 , Калифорнийский университет в Беркли