Вопрос, кажется, основан на непонимании того, как работает кэширование на современных процессорах x86. Например, он говорит «L2 вместо L3». Почти на всех современных процессорах x86 (как Intel, так и AMD) невозможно получить данные в кэше L2 вместо кеша L3. Это приведет к сбою когерентности кэша, поскольку отсутствие данных в кэше L3 сигнализирует о его отсутствии в кэшах L2 и позволяет ядру не предполагать, что никакое другое ядро не кэшировало его.
К сожалению, люди, которые мало знают о том, как работают ЦП, не должны пытаться контролировать, какие данные находятся в их кэшах. Было бы чудесно, если бы они сделали вещи лучше, чем люди, которые разработали эти процессоры в первую очередь.
Не напрямую, нет. VTune может рассказать вам кое-что о вещах вроде того, сколько данных перемещается между кешами, но не что-то (по крайней мере, к моему воспоминанию) о том, какие данные находятся на определенном уровне кеша. Вы сильно зацикливаетесь на том, что это вручную, на основе адресов, где хранятся данные, и когда/как вы его используете. –
Есть несколько MSR, которые позволяют вам читать информацию об использовании кеша, но это, вероятно, все еще не так круто, как вы хотите. Проблема в том, что это похоже на кошку Шредингера. Посмотрите на это: http://stackoverflow.com/questions/10122520/profiling-cpu-cache-memory-from-the-os-application – thang