реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> количество циклов команды
ve4e
сообщение Feb 18 2015, 17:55
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 18-02-15
Пользователь №: 85 240



Здравствуйте.
Как узнать за сколько циклов выполняется команда на ARM ?
Go to the top of the page
 
+Quote Post
Lagman
сообщение Feb 18 2015, 19:03
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Цитата(ve4e @ Feb 18 2015, 20:55) *
Здравствуйте.
Как узнать за сколько циклов выполняется команда на ARM ?

Прочитать документацию!? Или так не подходит?
Go to the top of the page
 
+Quote Post
ve4e
сообщение Feb 18 2015, 19:53
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 18-02-15
Пользователь №: 85 240



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


В документации я этого не нашел. Есть команды, но не написано сколько циклов они занимают.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Feb 18 2015, 20:02
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Возьмите Tehnical Reference Manual на используемое ядро, в нем см. раздел Instruction Timing.
Go to the top of the page
 
+Quote Post
gerber
сообщение Feb 18 2015, 21:01
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



И не забудьте к циклам выполнения инструкции ядром добавить циклы доступа к носителю информации, на котором расположена выполняемая программа и данные, с которыми она работает. Например, если это внешняя SDRAM или Flash-память, то задержки могут быть довольно существенными, особенно при переходах на другие страницы SDRAM.
В связи с этим знание количества циклов выполнения собственно ядром ничего не решает и нужно разве что из спортивного любопытства.


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 19 2015, 03:31
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(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
Go to the top of the page
 
+Quote Post
megajohn
сообщение Feb 19 2015, 05:40
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



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


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

не влез ddi0100e_arm_arm.pdf но найдете в инете по названию
Прикрепленные файлы
Прикрепленный файл  cortex_m3_core.rar ( 6.07 мегабайт ) Кол-во скачиваний: 21
 


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
ДЕЙЛ
сообщение Feb 19 2015, 08:38
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 234
Регистрация: 7-11-13
Пользователь №: 79 085



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

Как-то измерял количество тактов для выполнения функции арктангенса и для вывода на дисплей. Считать слишком муторно было, поэтому пользовался обычным таймером с частотой тактирования 1:1. Перед функцикцией запускал, а после завершения сразу останавливал. В регистре счётчика таймера было количество тактов. Это если точность большая не нужна(+\- 10 тактов). Для бОльшей точности можно в пошаговом режиме отладки смотреть на счётчик циклов, а если в железе проверяется, то точками останова можно попользоваться.
Go to the top of the page
 
+Quote Post
BaN
сообщение Feb 19 2015, 14:10
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 144
Регистрация: 28-08-07
Пользователь №: 30 111



Цитата(ve4e @ Feb 18 2015, 23:55) *
Здравствуйте.
Как узнать за сколько циклов выполняется команда на ARM ?

Вот для Cortex-M0:
http://infocenter.arm.com/help/index.jsp?t...c/CHDCICDF.html
Для других найдете там же.
Go to the top of the page
 
+Quote Post
ve4e
сообщение Feb 19 2015, 18:22
Сообщение #10





Группа: Новичок
Сообщений: 3
Регистрация: 18-02-15
Пользователь №: 85 240



Спасибо ! очень помогла полученная информация !
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 04:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01442 секунд с 7
ELECTRONIX ©2004-2016