Является ли L2 Cache Miss эквивалентом "L2 Data Cache Refill" на ARMv7 A15?
Я пытаюсь определить, какие аппаратные счетчики, доступные на процессоре ARM Cortex A15, являются правильными для определения ошибок системного кэша L2.
Мое приложение здесь - это регулятор частоты напряжения уровня ядра (т.е. он может заменить регулятор по требованию). Поскольку мне нужен доступ к счетчикам производительности на системном уровне, а не к конкретной среде выполнения программы, я не использую существующие утилиты, такие как PAPI или Linux Perf Tool. Из моего прошлого опыта работы с обоими я понимаю, что они лучше используются для мониторинга статистики производительности для конкретной программы или инструментированного двоичного файла.
Я реализовал модуль ядра, который периодически обновляет несколько значений аппаратного счетчика до конечных точек sysfs. Ресурсы, которые я использовал, включают в себя:
- Выборка счетчика производительности на Exynos 5422
- Техническое справочное руководство по стрелке
- Выполняет поиск в perf и PAPI-коде и документации, чтобы увидеть, пропускает ли L2 производный счетчик, а не собственный.
Счетчик оборудования, который я сейчас использую для измерения пропусков L2, - это событие 0x17: "Пополнение кэша данных L2". Печать этого значения последовательно дает 0, даже при выполнении тестов с большим объемом данных. Есть ли другое событие или набор событий, которые я должен использовать для определения пропусков кэша L2? Возможно, 0x13, "Доступ к памяти данных", или какая-то совокупность событий?
Вполне возможно, что корнем моего вопроса является неправильное понимание "пополнения кеша данных L2", но я не смог найти разъяснения по этому вопросу с помощью документации и поиска переполнения стека.
РЕДАКТИРОВАТЬ: я обнаружил, что заправки L2 показывал 0, потому что 5-й аппаратный счетчик по некоторым причинам не работает, как ожидалось; переназначение пополнений L2 другому счетчику решило эту конкретную проблему.
РЕДАКТИРОВАТЬ 2: Этот 5-й аппаратный счетчик не работал, потому что я не включил так много. Дурак я.
1 ответ
Цитата из другого руководства ARM подразумевает, что заправки — это не просто промахи:
Пополнение кэша данных L1: «Это событие подсчитывает все выделения в кэше L1. Это включает заполнение строк чтения, заполнение строк хранения и заполнение строк предварительной выборки».