Как измерить производительность ARM? - PullRequest
10 голосов
/ 17 июня 2011

Я работаю над оптимизацией программного обеспечения и хочу измерить производительность.Поэтому в настоящее время я моделирую платформу ARM с помощью OVP (открытой виртуальной платформы) и получаю статистику как время моделирования и смоделированные инструкции.

Мой вопрос: почему симулируемые инструкции различаются при каждом запуске программного обеспечения (разные, но в непосредственной близости)?Разве это не должно быть одинаковым каждый раз?Разве не так, что программное обеспечение, которое я пишу на C, будет скомпилировано в инструкции ассемблера ARM, и каждый раз, когда программное обеспечение запускается, имитируемые инструкции будут сколько времени выполнять эти инструкции ассемблера ARM?Это должно быть всегда одинаково?

Как мне измерять производительность?Взять 10 образцов смоделированных инструкций и получить среднее значение

1 Ответ

4 голосов
/ 21 августа 2011

Из моего опыта в реальном (не имитированном) ARM, если я возьму счетчик циклов для части кода, число циклов будет изменяться, это потому что:

  • Там может бытьконтекст переключается в середине вашего исполняемого кода.
  • Исходное состояние ЦП может отличаться при входе в раздел кода.(например, содержимое конвейера, прогноз ветвления и т. д.)
  • Состояние кэша будет другим при входе в раздел кода.
  • Внешние факторы, такие как другое оборудование, обращающееся к внешней памяти.

Из-за всего этого взятие среднего значения (плюс некоторые другие статистические показатели) действительно является единственным практическим подходом для реального оборудования и реальной ОС.В хорошем симуляторе некоторые из этих факторов или могут быть устранены.

На некоторых реальных чипах (или, если поддерживается симулятором), модуль мониторинга производительности ARM может быть полезен.

Если вы программируете для Cortex A8 , то - это крутой онлайн счетчик циклов, который действительно поможет вам повысить производительность вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...