Каков наилучший способ обнаружения пропусков кэша процессора при запуске алгоритма? - PullRequest
4 голосов
/ 05 января 2012

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

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Самый простой способ обнаружить такие проблемы - использовать профилировщики и собирать счетчики производительности, связанные с кешем.

Я бы порекомендовал проверить следующие инструменты:

Возможно ли увидетьобщая структура вашего алгоритма (если он не слишком длинный)?

0 голосов
/ 05 января 2012

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

Не могли бы вы (1) пропустить базовый кеш в спокойной системе, (2) запустить программу и сравнить?

См. Том 3B справочника Intel Instruction Set Section 18 Page 15 (18-15) для ассемблера, который вы должны будете написать.

...