кеширование — сканирование операций кэширования процессора в многоядерных системах с переполнением стека

Я ищу код / ​​функции C ++, которые позволяют отслеживать операции чтения / записи в кэше / кэшах ЦП для многоядерных процессоров, чтобы иметь возможность обнаруживать узкие места производительности из-за конкуренции между несколькими ядрами, обращающимися к одним и тем же местам памяти.

Все, что даже близко, ценится. Кто-нибудь может помочь? Заранее спасибо.


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

  1. Желаемый результат — программное обеспечение для систем Windows, написанное на Visual C ++.
  2. Программное обеспечение должно работать со всеми процессорами, а не только с процессорами определенных производителей.
  3. Инструменты удобны, когда дело доходит до двойной проверки результатов, но пока нет полностью документированного исходного кода, я не получу от этого много.

На этом этапе было бы очень полезно получить некоторые фрагменты кода VC ++, например, как я могу определить тип процессора, тип кеша и когда он читает / записывает данные из / в которые адресует в этот кеш.
Это не должно быть очень сложным, мне просто нужно работать простым способом.

3

Решение

Лучший / самый простой инструмент, который я мог найти, это perfНапример, следующая команда:

perf stat -e LLC-load-misses,LLC-store-misses /bin/ls

Выведет количество пропущенных кеша последнего уровня для запуска ls,

увидеть perf --help

Другие хорошие инструменты Vtune, или же cachegrind который был упомянут ранее.

Для программного подхода вы также можете проверить PAPI API.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]