Могу ли я измерить ошибки ветвления-предсказания на современном процессоре Intel Core? - программирование
Подтвердить что ты не робот

Могу ли я измерить ошибки ветвления-предсказания на современном процессоре Intel Core?

Этот вопрос и его ответ, который недавно был отмечен как эпический ответ, побудили меня задаться вопросом; Могу ли я измерить производительность работающего приложения в Windows с точки зрения ошибок прогнозирования ветвления процессора? Я знаю, что существуют некоторые инструменты статического анализа, которые могут помочь в оптимизации кода для хорошей производительности в ситуациях прогнозирования ветвлений и что ручные методы могут помочь, просто сделав изменения и повторное тестирование, но я ищу некоторый автоматический механизм, который может сообщите об общем количестве ошибок прогнозирования ветвлений в течение определенного периода времени, как запускается приложение Windows, и я надеюсь, что некоторые инструменты Profiler для Visual С++ могут мне помочь.

Для этого вопроса рассматриваемая заявка либо построена с помощью встроенного компилятора, такого как Visual С++ для Windows, либо с использованием какого-либо другого встроенного компилятора, такого как GCC, FreePascal, Delphi или TurboAssembler. Исполняемый файл может вообще не иметь отладочной информации. Я хочу знать, могу ли я обнаруживать и подсчитывать ошибки предсказания ветки, возможно, читая внутреннюю информацию о процессоре через некоторые службы Windows, такие как WMI, или, возможно, полностью работая внутри виртуальной среды под управлением Windows, например, используя VirtualBox, а затем запускает полностью виртуализированную среду Windows с моим тестовым приложением, внутри VirtualBox и анализ времени выполнения виртуального процессора. Или какой-то другой метод, о котором я не знаю, поэтому этот вопрос.

Да, я googled. Единственное, что выглядит многообещающим, - это этот PDF от AMD. Page 18 упоминает что-то очень близкое к тому, что я хотел бы сделать, но, похоже, написан для тех, кто работает без какой-либо операционной системы, на платформах аппаратной оценки:

5,1. Ветви. Применимость. Ошибки условной ветки могут быть существенной проблемой в коде с большим количеством логики принятия решений.

Условные ветки могут быть неверно предсказаны, когда вероятность выбор истинного или ложного пути случайный или около 50-50 разделов. оборудование прогнозирования ветвлений не может "научиться" шаблону, а ветки не предсказано правильно. Коллекция. Собирайте события в этой таблице для измерения эффективности предсказания ветвления:

Отрасли Вычислить скорость, с которой и отношение количества инструкций к каждой ветки с использованием эти формулы: коэффициент принимаемой ветки = введенные / Ret_instructions Отношение взятых ветвей = Taken_branches/Отрасли
Инструкции на ветку = Ret_instructions/Филиалы

Обновление. Думаю, я могу сказать, что я ищу способ прочитать модуль PMU Intel Core i7 или эквивалентные функции других процессоров. Похоже, что Intel VTUNE (по комментариям Адриана) очень близок к тому, что я просил.

4b9b3361

Ответ 1

Анализатор производительности VTune может это сделать! Кстати, если вы изучаете эти темы, взгляните на "Оптимизационную поваренную книгу" от Intel Press.

Примечание. Комментарии содержат один и тот же ответ, но с некоторой неопределенностью, я использовал VTune, и я измерил скорость предсказания ветвлений для процессора Intel. Поэтому я на 100% уверен.

вот ссылка для VTune

вот ссылка на книгу