Как можно победить кеш? - PullRequest
18 голосов
/ 10 июля 2011

У меня есть этот вопрос в моем задании на этой неделе, и я не понимаю, как можно победить кеши или как я могу показать это с помощью программы сборки. Может ли кто-нибудь указать мне правильное направление?

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

Примечание: Это домашнее задание. Не просто ответьте на вопрос для меня, это не поможет мне понять материал.

Ответы [ 3 ]

6 голосов
/ 10 июля 2011

Кэш для увеличения производительности.Таким образом, победить кеш означает найти схему доступа к памяти, которая снижает производительность (при наличии кеша), а не увеличивает ее.

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

3 голосов
/ 10 июля 2011

Если вы ищете подсказку, подумайте о разделении слова данных на 2 строки в кэше.

(Если вы также ищете ответ, аналогичная проблема возникла у разработчиков x264- дополнительная информация доступна здесь и здесь . Ссылки очень информативны, и я действительно рекомендую вам прочитать их даже после того, как вы нашли свой ответ.)

0 голосов
/ 11 июля 2011

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

...