Перейти к содержанию
    

профилирование и оптимизация на arm

день добрый,

 

осваиваю lpc2478, хотел бы понять как на arm принято профилировать и оптимизировать код. скажем запустил я helix mp3 decoder с буферами в sdram. интересно на что такты уходят. на x86 все просто - есть perf counters, покажут и cache miss и branch misprediction, прочее и понятно где можно начинать копать. а что делать на arm? только симулятор?

 

спасибо

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно измерять время выполнения участков кода. Что-то вроде start_timer() и stop_timer(). Если есть сомнения в калибровке таймера, то set_pin_high() и set_pin_low(), а измерение времени - осциллографом на ножке МК. Как-то так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно измерять время выполнения участков кода. Что-то вроде start_timer() и stop_timer(). Если есть сомнения в калибровке таймера, то set_pin_high() и set_pin_low(), а измерение времени - осциллографом на ножке МК. Как-то так.

 

про таймеры тоже понятно, конечно. но вообще я еще рассчитывал на "что-нибудь" чтобы позволило оценить не только время исполнения, но накладные расходы на sdram, например. в любом случае спасибо.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

про таймеры тоже понятно, конечно. но вообще я еще рассчитывал на "что-нибудь" чтобы позволило оценить не только время исполнения, но накладные расходы на sdram, например. в любом случае спасибо.

 

Ну и кто вам мешает, если очень любопытно, запустить тестовую процедуру в ram и sdram. Померить разницу и быть счастливым?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В Keil есть Analisis Windows, а именно Logic Anilizer, Performance Analizer, Code Coverage. А также трассировка, а также Execution Profiling. И время выполнения можно засечь в отладчике. Сам почти не пользовался, поэтому насколько это соответствует требуемому, не скажу. На мой взгляд, достаточно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

день добрый,

 

осваиваю lpc2478, хотел бы понять как на arm принято профилировать и оптимизировать код.

 

В lpc2478 есть ETM, нужно всего несколько килодолларов чтобы купить jtag с поддержкой ETM trace :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

До чего все любят усложнять себе (и другим) жизнь!

 

Вы посмотрите на форуме бесконечно: в отладчике работает, на железе - нет. Килобаксы тратить за каким-то. Вам же посоветовали pin_on/pin_off. Осциллографом замерил - точнее не бывает. На собственном железе, с учетом прерываний, реальной настройки железа. Да и измерять вы будете может раз-два. Вперед!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

До чего все любят усложнять себе (и другим) жизнь!

 

Вы посмотрите на форуме бесконечно: в отладчике работает, на железе - нет. Килобаксы тратить за каким-то. Вам же посоветовали pin_on/pin_off. Осциллографом замерил - точнее не бывает. На собственном железе, с учетом прерываний, реальной настройки железа. Да и измерять вы будете может раз-два. Вперед!

 

 

Вообщето ETM как раз трассирует код в реальном времени без воздействия на процесс, а пиписькомер на осциллографе годится только для кода уровня ножкой топ в ладошки хлоп, никакого анализа сложного кода на нем не сделать - вы никогда не поймете почему происходит задержка - вдияние ОС, промахи кеша или просто неоптимальный код.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну и кто вам мешает, если очень любопытно, запустить тестовую процедуру в ram и sdram. Померить разницу и быть счастливым?

 

это можно. а остальное как глядеть? вот тут посоветовали etm - хотя бы почитаю про него.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это можно. а остальное как глядеть? вот тут посоветовали etm - хотя бы почитаю про него.

 

Почитайте, почитайте. Потом посмотрите сколько это стоит, а потом изучите, работает ли он с вашим компилятором, а потом есть ли etm в вашем процессоре и выведен ли он как надо и прочее. Тогда выяснится, что пиписькомера с осциллографом вам вполне хватит. По крайней мере, на первое время.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почитайте, почитайте. Потом посмотрите сколько это стоит, а потом изучите, работает ли он с вашим компилятором, а потом есть ли etm в вашем процессоре и выведен ли он как надо и прочее. Тогда выяснится, что пиписькомера с осциллографом вам вполне хватит. По крайней мере, на первое время.

 

про осциллограф я пока не понял. вот захотел я узнать места где много времени тратится на доступ к памяти, то есть произошел cache miss. куда я осциллографом буду тыкать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Меня тоже неприятно удивило отсутсвие в АРМе каких-либо performance counters.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

про осциллограф я пока не понял. вот захотел я узнать места где много времени тратится на доступ к памяти, то есть произошел cache miss. куда я осциллографом буду тыкать?

 

А что, вы думаете ETM вам про cache miss расскажет?

 

Это во-первых.

 

Во-вторых, не понимаю разговоров про ловлю микросекундных блох в миллисекундных процедурах. Или задача не по зубам выбранному процессору, или алгоритм хромает. А cache miss - дело десятое.

 

Примеров тому не счесть. Вот вчера видел очередной вопрос про AVR, где в main() три переменные float....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

про осциллограф я пока не понял. вот захотел я узнать места где много времени тратится на доступ к памяти, то есть произошел cache miss. куда я осциллографом буду тыкать?

Я думал, речь идёт об LPC2478. Если я правильно помню, никакого кэша там нет. Или это уже просто "разговор за жизнь"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...