У меня есть задача написать программный инструмент, который будет измерять попадания и промахи различных уровней кэш-памяти (L1, L2, L3). Программа должна быть написана на c/c++, с которым мне удобно, но я никогда не делал ничего столь низкоуровневого для аппаратного обеспечения. Я не ищу решения, а просто подсказываю, какие инструменты, библиотеки и функции я могу использовать.
Программа для расчета попаданий и промахов кеша
Ответы (2)
Вы просто ищете статистику (коэффициент попаданий в кеш) при запуске бинарного файла в гипотетической конфигурации кеша? Если это так, проверьте Cachegrind. На этой странице есть раздел реализации, который ссылается на докторскую степень с некоторыми подробностями. Это может быть полезно.
Существует несколько симуляторов с открытым исходным кодом, которые реализуют иерархию кеша с достаточной степенью детализации (например, MArss86, Simics, M5 и некоторые другие). Обратите внимание, что из вашего вопроса ясно, каковы ваши потребности. Пожалуйста, погуглите их - я уверен, вы найдете много.
Также существует известный симулятор для моделирования доступа к кешу — CACTI. Это должно дать вам некоторые идеи о том, как начать с собственной реализации.
Преимущество использования этих инструментов заключается в том, что они также позволяют выполнять некоторые исследования архитектурного пространства (изменение параметров/конфигураций и просмотр их влияния).