Pull to refresh

Comments 6

Может не там искали? Попробуйте по аббревиатуре Intel PMU погуглить.

Я попытался найти об этом информацию, но как-то разработчики этой программы не делятся с пользователями объяснениями, как именно они получают данные о пользовательской программе.

Вместо того, чтобы сразу обвинять в утаивании от вас информации, можно было просто спросить. Втюн понятно, это пропиетарный софт, вам никто не обязан докладывать… Но возьмите linux perf, он же opensource. А тоже умеет в железячные счетчики…

protools19.github.io/slides/Eranian_KeynoteSC19.pdf
Спасибо, но это не то. Это то, что я назвал «телеметрией» самого процессора. Она тоже важна. Но, на мой взгляд, нужно и более простое средство: сколько тактов отработал заданный кусочек, а не сколько было при этом промахов или непредсказанных переходов.

В современных процах сколько тактов отработал заданный кусочек это сложный вопрос из-за очень длинного конвеера. Конвеер можно сбросить через cpuid и померить этот чисто кусочек, но прога в целом может очень сильно замедлится.

Количество тактов процессора — это и есть время, и эти самые счетчики дают вам эту информацию. Почитали бы реально чтоли…
Наше все QueryThreadCycleTime
Считают обычно такты потока, а не процессора. А управление потоками находится в ядре ОС. На уровне HW только общий счетчик тиков. А время уже выводится из тиков среднестатистически.

Простая и интересная идея, но такое не сделать, скорее всего, из-за конвейера, спекулятивного исполнения и т.д. Для каждой возможной ветви свой счётчик придётся хранить, например.

Sign up to leave a comment.

Articles