|
|
  |
Алгоритм на Си, время выполнения на ARM |
|
|
|
May 24 2011, 13:46
|
Участник

Группа: Свой
Сообщений: 62
Регистрация: 11-01-05
Из: Беларусь, Минск
Пользователь №: 1 894

|
Люди добрые. Вопрос мой может и "простоват", но мне нужно с чего-нить начать. Поэтому вот здесь и решил спросить. Если ответ простой, то просто тыкните носом туда куда нужно. Если есть похожая тема на форуме дайте ссылку плиз.
Собственно вопрос: Предположим, есть у меня какой-то алгоритм вычисления чего-либо, написанный на Си. Как оценить сколько времени потребуется для его вычисления на ARM процессоре ? По идее можно засунуть его в ARM компилятор и оттуда вытянуть репорт, так ? Если да, то какой продукт необходимо поставить ? Есть ли такие компиляторы для линуха ? Есть ли какие другие пути решения данной задачи ?
Если есть наводящие вопросы прошу задавать.
Спасибо.
|
|
|
|
|
May 24 2011, 15:45
|
Местный
  
Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326

|
RokСлишком много неизвестных. Можно оценить примерное минимальное время выполнения реализации алгоритма на ассемблере. Реальное время будет больше. Вот тут приведены примеры как С код можно оптимизировать под конкретную платформу. Как указал уважаемый aaarrr, очень многое будет зависеть от конфигурации подсистемы памяти, кэшей/ускорителей флеш, параллельно работающих DMA периферии, качества конкретного компилятора и учёта особенностей камня. В моём случает, сильно оптимизированный под конкретную платформу ассемблерный код, работал на 20 % медленнее (из-за прерываний и DMA).
|
|
|
|
|
May 25 2011, 06:46
|
Участник

Группа: Свой
Сообщений: 62
Регистрация: 11-01-05
Из: Беларусь, Минск
Пользователь №: 1 894

|
Цитата(Dima_Ag @ May 24 2011, 23:47)  Не знаю как под Линукс, а вот в IAR это всё можно посмотреть на встроенном симуляторе. По крайней мере, для Cortex M3 всё чётко сходится с измерениями в реальном устройстве. Значит, как я понял, можно всё это требуемое хозяйство запустить на симуляторе и проверить время выполнения. Хорошо, будем значит копать в сторону симуляторов и смотреть с чем их едят. Я прав ? Цитата(ASN @ May 25 2011, 00:45)  RokСлишком много неизвестных. Можно оценить примерное минимальное время выполнения реализации алгоритма на ассемблере. Реальное время будет больше. Вот тут приведены примеры как С код можно оптимизировать под конкретную платформу. Как указал уважаемый aaarrr, очень многое будет зависеть от конфигурации подсистемы памяти, кэшей/ускорителей флеш, параллельно работающих DMA периферии, качества конкретного компилятора и учёта особенностей камня. В моём случает, сильно оптимизированный под конкретную платформу ассемблерный код, работал на 20 % медленнее (из-за прерываний и DMA). Т.е. собираем сразу всю систему и только потом можно производить к.либо оценку по времени выполнения. Ясно. Спасибо.
|
|
|
|
|
May 25 2011, 07:14
|
Частый гость
 
Группа: Свой
Сообщений: 84
Регистрация: 30-04-09
Из: Москва
Пользователь №: 48 473

|
Цитата Увы, только для сферического процессора в вакууме. Если вы пишете на голом процессоре, а не под какой-то там операционкой или её куском, то, разумеется, "мой" вариант подсчета корректно работает и для реального процессора. Вошли в алгоритм, вышли из алгоритма. Вся периферия уже учитывается нами, разработчиками ПО для конкретной железяки, в этом самом алгоритме. Другое дело, что сложновато это всё. Цитата Т.е. собираем сразу всю систему и только потом можно производить к.либо оценку по времени выполнения. Ясно. Спасибо. Разумеется, это лучший вариант.
Сообщение отредактировал Homo Sapiens - May 25 2011, 07:14
|
|
|
|
|
May 25 2011, 11:37
|
Частый гость
 
Группа: Свой
Сообщений: 156
Регистрация: 12-09-06
Пользователь №: 20 304

|
Цитата(Rok @ May 25 2011, 10:46)  Значит, как я понял, можно всё это требуемое хозяйство запустить на симуляторе и проверить время выполнения. Вы правы, но с некоторыми ограничениями. Как уже писали выше, надо понимать, что симулятор не всегда полностью корректно симулирует железку. И чем сложнее процессор, чем больше там всяких кешей, конвейеров и т.п., тем хуже точность у симулятора. Также в симуляторе крайне непросто учесть загрузку системы прерываниями. Иными словами - приблизительную оценку получить из симулятора можно. И чем проще реальный процессор и меньше используются прерывания в реальной железке, тем оценка будет точнее.
|
|
|
|
|
Jul 6 2011, 09:21
|
Участник

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

|
Цитата(Rok @ May 24 2011, 17:46)  Как оценить сколько времени потребуется для его вычисления на ARM процессоре Без использования таймера на реальном процессоре все оценки будут +- пара литров
Сообщение отредактировал kikos - Jul 6 2011, 09:28
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|