В компьютерах , счетчики производительности аппаратного обеспечения ( HPC ), [1] или аппаратные счетчики представляют собой набор специальных регистров , встроенных в современные микропроцессоры для хранения счетчиков аппаратной связанной деятельности в компьютерных системах. Опытные пользователи часто полагаются на эти счетчики для проведения низкоуровневого анализа производительности или настройки .
Реализации
Количество доступных аппаратных счетчиков в процессоре ограничено, в то время как каждая модель процессора может иметь множество различных событий, которые разработчик может захотеть измерить. Каждый счетчик может быть запрограммирован с индексом отслеживаемого типа события, например, промаха кэша L1 или неправильного предсказания перехода.
Одним из первых процессоров, реализовавших такой счетчик и соответствующую инструкцию RDPMC
для доступа к нему, был Intel Pentium , но они не были задокументированы до тех пор, пока Терье Матисен не написал статью об их обратном проектировании в Byte в июле 1994 года [2].
В следующей таблице показаны некоторые примеры процессоров и количество доступных аппаратных счетчиков:
Процессор | доступные счетчики HW |
---|---|
UltraSparc II | 2 |
Pentium III | 2 |
ARM11 | 2 |
AMD Athlon | 4 |
IA-64 | 4 |
ARM Cortex-A5 | 2 [3] |
ARM Cortex-A8 | 4 |
ARM Cortex-A9 MPCore | 6 |
МОЩНОСТЬ4 | 8 |
Pentium 4 | 18 |
По сравнению с программными методами
По сравнению с программными профилировщиками , аппаратные счетчики обеспечивают легкий доступ к множеству подробной информации о производительности, связанной с функциональными блоками ЦП, кешами, основной памятью и т. Д. Еще одним преимуществом их использования является то, что в целом не требуется никаких изменений исходного кода. Однако типы и значения аппаратных счетчиков различаются от одного типа архитектуры к другому из-за различий в организациях аппаратного обеспечения.
Могут возникнуть трудности при сопоставлении показателей производительности низкого уровня с исходным кодом. Ограниченное количество регистров для хранения счетчиков часто вынуждает пользователей проводить несколько измерений для сбора всех желаемых показателей производительности.
Выборка на основе инструкций
Современные суперскалярные процессоры планируют и выполняют одновременно несколько инструкций в неупорядоченном порядке . Эти «текущие» инструкции могут быть удалены в любое время, в зависимости от доступа к памяти, попаданий в кэш, остановок в конвейере и многих других факторов. Это может привести к тому, что события счетчика производительности будут отнесены к неправильным инструкциям, что сделает точный анализ производительности трудным или невозможным.
AMD представила методы для устранения некоторых из этих недостатков. Например, в процессорах Opteron [4] в 2007 году была реализована технология, известная как выборка на основе инструкций (или IBS). Реализация IBS от AMD предоставляет аппаратные счетчики как для выборки выборки (передняя часть суперскалярного конвейера), так и для выборки операций (задняя часть конвейера). Это приводит к дискретным данным производительности, связывающим удаленные инструкции с «родительской» инструкцией AMD64.
Смотрите также
Рекомендации
- ^ https://www.researchgate.net/profile/Mohamed-Zahran/publication/241623685_Are_hardware_performance_counters_a_cost_effective_way_for_integrity_checking_of_programs/links/5537beca0cf226723ab3d8-ec-free-camerica-cfc-cfcf226723ab3d8-ec-doc-date-cf-cf-cf-cf-cf-cf-cf-c-c-f-rc-cf-cf-cf-cf-aa-aa-a ... .pdf
- ^ "Секреты Pentium" . Gamedev.net . Проверено 14 февраля 2012 .
- ^ «Документация - Arm Developer» . developer.arm.com .
- ^ «Выборка на основе инструкций: новый метод анализа производительности для процессоров AMD семейства 10h» (PDF) . AMD . Проверено 16 октября 2015 .