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