Аппаратный счетчик производительности
В компьютерах имеются аппаратные счетчики производительности ( HPC ), [ 1 ] или аппаратные счетчики — это набор регистров специального назначения , встроенных в современные микропроцессоры для хранения данных об аппаратных действиях в компьютерных системах. Опытные пользователи часто полагаются на эти счетчики для проведения низкоуровневого анализа производительности или настройки .
Реализации
[ редактировать ]Количество доступных аппаратных счетчиков в процессоре ограничено, при этом каждая модель ЦП может иметь множество различных событий, которые разработчик может захотеть измерить. Каждый счетчик может быть запрограммирован с индексом типа события, подлежащего мониторингу, например, промаха кэша L1 или неправильного предсказания ветвления.
Один из первых процессоров, реализовавших такой счетчик и связанную с ним инструкцию. RDPMC
для доступа к нему был Intel Pentium , но они не были задокументированы до тех пор, пока Терье Матисен не написал статью об их обратном проектировании в журнале Byte в июле 1994 года. [ 2 ]
В следующей таблице показаны некоторые примеры ЦП и количества доступных аппаратных счетчиков:
Процессор | доступные счетчики аппаратного обеспечения |
---|---|
УльтраСпарк II | 2 |
Пентиум III | 2 |
ARM11 | 2 |
AMD Атлон | 4 |
ИА-64 | 4 |
ARM Кортекс-А5 | 2 [ 3 ] |
ARM Кортекс-А8 | 4 |
ARM Cortex-A9 MPCore | 6 |
МОЩНОСТЬ4 | 8 |
Пентиум 4 | 18 |
Сравнение программных методов
[ редактировать ]По сравнению с программными профилировщиками аппаратные счетчики обеспечивают доступ с минимальными издержками к большому количеству подробной информации о производительности, связанной с функциональными блоками ЦП, кэшами, основной памятью и т. д. Еще одним преимуществом их использования является то, что в целом не требуется никаких модификаций исходного кода. Однако типы и значения аппаратных счетчиков различаются в зависимости от архитектуры из-за различий в организации оборудования.
Могут возникнуть трудности при сопоставлении показателей производительности низкого уровня с исходным кодом. Ограниченное количество регистров для хранения счетчиков часто вынуждает пользователей проводить несколько измерений для сбора всех желаемых показателей производительности.
Выборка на основе инструкций
[ редактировать ]
Современные суперскалярные выполняют несколько инструкций вне очереди процессоры планируют и одновременно . Эти «текущие» инструкции могут выйти из эксплуатации в любой момент, в зависимости от доступа к памяти, попаданий в кэш, остановок в конвейере и многих других факторов. Это может привести к тому, что события счетчика производительности будут приписаны неверным инструкциям, что затруднит или сделает невозможным точный анализ производительности.
AMD представила методы устранения некоторых из этих недостатков. Например, в процессорах Opteron реализована [ 4 ] в 2007 году был использован метод, известный как выборка на основе инструкций (или IBS). Реализация IBS от AMD предоставляет аппаратные счетчики как для выборки выборки (начало суперскалярного конвейера), так и для выборки операций (задняя часть конвейера). Это приводит к тому, что дискретные данные о производительности связывают устаревшие инструкции с «родительской» инструкцией AMD64.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Мэлоун, Кори; Захран, Мохамед; Карри, Рамеш (2011). «Являются ли аппаратные счетчики производительности экономичным способом проверки целостности программ» (PDF) . Материалы шестого семинара ACM по масштабируемым доверенным вычислениям . стр. 71–76. дои : 10.1145/2046582.2046596 . ISBN 9781450310017 . S2CID 16409864 . Проверено 17 ноября 2022 г.
- ^ «Секреты Пентиума» . Gamedev.net . Проверено 14 февраля 2012 г.
- ^ «Документация — Arm Developer» . Developer.arm.com .
- ^ «Выборка на основе инструкций: новый метод анализа производительности процессоров семейства AMD 10h» (PDF) . АМД . Проверено 16 октября 2015 г.