Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: количество циклов команды
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
ve4e
Здравствуйте.
Как узнать за сколько циклов выполняется команда на ARM ?
Lagman
Цитата(ve4e @ Feb 18 2015, 20:55) *
Здравствуйте.
Как узнать за сколько циклов выполняется команда на ARM ?

Прочитать документацию!? Или так не подходит?
ve4e
Цитата(Lagman @ Feb 18 2015, 20:03) *
Прочитать документацию!? Или так не подходит?


В документации я этого не нашел. Есть команды, но не написано сколько циклов они занимают.
aaarrr
Возьмите Tehnical Reference Manual на используемое ядро, в нем см. раздел Instruction Timing.
gerber
И не забудьте к циклам выполнения инструкции ядром добавить циклы доступа к носителю информации, на котором расположена выполняемая программа и данные, с которыми она работает. Например, если это внешняя SDRAM или Flash-память, то задержки могут быть довольно существенными, особенно при переходах на другие страницы SDRAM.
В связи с этим знание количества циклов выполнения собственно ядром ничего не решает и нужно разве что из спортивного любопытства.
jcxz
Цитата(gerber @ Feb 19 2015, 03:01) *
В связи с этим знание количества циклов выполнения собственно ядром ничего не решает и нужно разве что из спортивного любопытства.

В МК с кешем более 90% выборок кода (а то и данных) могут выполняться из кеша.
И, при правильной организации ПО, наиболее часто используемые данные располагаются во внутренней ОЗУ, которая как я понимаю обычно - 0-wait state.
К тому-же SDRAM для Cortex-M (к примеру) - скорее исключение и в основном он используется без внешней ОЗУ, а значит и данные расположены во внутренней.

И даже если выборки идут напрямую из внутренней флешь, то тоже не всё так печально.
Например: в Tiva (семейство Cortex-M от TI) хоть внутренняя флешь работает на частоте 20МГц, но шина к ней - 256-битная, что даже на линейном коде сплошь состоящем из 4-байтовых команд, обеспечивает
предвыборку и выполнение кода на максимальной частоте CPU ==120МГц без тактов ожидания.

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

Так что - любопытство скорее не спортивное wink.gif
megajohn
Цитата(ve4e @ Feb 18 2015, 22:53) *
В документации я этого не нашел. Есть команды, но не написано сколько циклов они занимают.


ARM это фирма, и спроектировала не одно ядро
есть подборка документов на Cortex M3, есть даже на русском

не влез ddi0100e_arm_arm.pdf но найдете в инете по названию
ДЕЙЛ
Цитата(gerber @ Feb 19 2015, 01:01) *
И не забудьте к циклам выполнения инструкции ядром добавить циклы доступа к носителю информации, на котором расположена выполняемая программа и данные, с которыми она работает. Например, если это внешняя SDRAM или Flash-память, то задержки могут быть довольно существенными, особенно при переходах на другие страницы SDRAM.
В связи с этим знание количества циклов выполнения собственно ядром ничего не решает и нужно разве что из спортивного любопытства.

Как-то измерял количество тактов для выполнения функции арктангенса и для вывода на дисплей. Считать слишком муторно было, поэтому пользовался обычным таймером с частотой тактирования 1:1. Перед функцикцией запускал, а после завершения сразу останавливал. В регистре счётчика таймера было количество тактов. Это если точность большая не нужна(+\- 10 тактов). Для бОльшей точности можно в пошаговом режиме отладки смотреть на счётчик циклов, а если в железе проверяется, то точками останова можно попользоваться.
BaN
Цитата(ve4e @ Feb 18 2015, 23:55) *
Здравствуйте.
Как узнать за сколько циклов выполняется команда на ARM ?

Вот для Cortex-M0:
http://infocenter.arm.com/help/index.jsp?t...c/CHDCICDF.html
Для других найдете там же.
ve4e
Спасибо ! очень помогла полученная информация !
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.