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

 
 
> профилирование и оптимизация на arm
bzzz77
сообщение Mar 5 2011, 21:25
Сообщение #1


Участник
*

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



день добрый,

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

спасибо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Mar 5 2011, 22:20
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Можно измерять время выполнения участков кода. Что-то вроде start_timer() и stop_timer(). Если есть сомнения в калибровке таймера, то set_pin_high() и set_pin_low(), а измерение времени - осциллографом на ножке МК. Как-то так.
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 6 2011, 06:32
Сообщение #3


Участник
*

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



Цитата(scifi @ Mar 6 2011, 01:20) *
Можно измерять время выполнения участков кода. Что-то вроде start_timer() и stop_timer(). Если есть сомнения в калибровке таймера, то set_pin_high() и set_pin_low(), а измерение времени - осциллографом на ножке МК. Как-то так.


про таймеры тоже понятно, конечно. но вообще я еще рассчитывал на "что-нибудь" чтобы позволило оценить не только время исполнения, но накладные расходы на sdram, например. в любом случае спасибо.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 6 2011, 11:29
Сообщение #4


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(bzzz77 @ Mar 6 2011, 09:32) *
про таймеры тоже понятно, конечно. но вообще я еще рассчитывал на "что-нибудь" чтобы позволило оценить не только время исполнения, но накладные расходы на sdram, например. в любом случае спасибо.


Ну и кто вам мешает, если очень любопытно, запустить тестовую процедуру в ram и sdram. Померить разницу и быть счастливым?
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 6 2011, 19:59
Сообщение #5


Участник
*

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



Цитата(sergeeff @ Mar 6 2011, 14:29) *
Ну и кто вам мешает, если очень любопытно, запустить тестовую процедуру в ram и sdram. Померить разницу и быть счастливым?


это можно. а остальное как глядеть? вот тут посоветовали etm - хотя бы почитаю про него.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 6 2011, 20:51
Сообщение #6


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(bzzz77 @ Mar 6 2011, 22:59) *
это можно. а остальное как глядеть? вот тут посоветовали etm - хотя бы почитаю про него.


Почитайте, почитайте. Потом посмотрите сколько это стоит, а потом изучите, работает ли он с вашим компилятором, а потом есть ли etm в вашем процессоре и выведен ли он как надо и прочее. Тогда выяснится, что пиписькомера с осциллографом вам вполне хватит. По крайней мере, на первое время.
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 6 2011, 21:01
Сообщение #7


Участник
*

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



Цитата(sergeeff @ Mar 6 2011, 23:51) *
Почитайте, почитайте. Потом посмотрите сколько это стоит, а потом изучите, работает ли он с вашим компилятором, а потом есть ли etm в вашем процессоре и выведен ли он как надо и прочее. Тогда выяснится, что пиписькомера с осциллографом вам вполне хватит. По крайней мере, на первое время.


про осциллограф я пока не понял. вот захотел я узнать места где много времени тратится на доступ к памяти, то есть произошел cache miss. куда я осциллографом буду тыкать?
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 7 2011, 07:15
Сообщение #8


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(bzzz77 @ Mar 7 2011, 00:01) *
про осциллограф я пока не понял. вот захотел я узнать места где много времени тратится на доступ к памяти, то есть произошел cache miss. куда я осциллографом буду тыкать?


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

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

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

Примеров тому не счесть. Вот вчера видел очередной вопрос про AVR, где в main() три переменные float....
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 7 2011, 09:58
Сообщение #9


Участник
*

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



Цитата(sergeeff @ Mar 7 2011, 10:15) *
А что, вы думаете ETM вам про cache miss расскажет?

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

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

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


не понимаете и ладно. видимо никогда не сталкивались с ситуациями когда производительность ощутимо падает если, например, две связанные переменные попадают в разные cacheline. вас послушать, так вместо оптимизации (и алгоритма тоже) нужно сразу из пушек по воробьям палить. с задержками в sdram, cache miss очень хорошо производительность может испортить.


Цитата(scifi @ Mar 7 2011, 10:37) *
Я думал, речь идёт об LPC2478. Если я правильно помню, никакого кэша там нет. Или это уже просто "разговор за жизнь"?


кэша нет, ступил я слегка. но есть разница в доступе к sdram и sram, значит perf counters (или etm) мог бы помочь в правильной организации: что положить в sram, что в sdram. например.

ps. слегка удивляют люди, которые утверждают, что инструмент - лишний и гвозди можно забивать топором.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 7 2011, 11:47
Сообщение #10


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(bzzz77 @ Mar 7 2011, 11:58) *
значит perf counters (или etm) мог бы помочь в правильной организации: что положить в sram, что в sdram. например.


Что за perf counters?
Если те что по ссылке http://msdn.microsoft.com/en-us/library/aa...3(v=vs.85).aspx, то портируйте Win CE и получите их.

Прецизионных счетчиков в микроконтроллерах полно, выбираете любой и измеряете длительность любых процедур с точностью до такта.
В микроконтроллерах измерения можно сделать гораздо проще и гибче чем в в Windows и с меньшими накладными.

Если вы не используете операционку с готовым фреймворком для счетчиков прозводительности, то понятно что в свой код счетчики надо вставлять самому.
Все серьезные RTOS под микроконтроллеры имеют механизм "Performance Counters"


Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 7 2011, 12:03
Сообщение #11


Участник
*

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



Цитата(AlexandrY @ Mar 7 2011, 14:47) *
Что за perf counters?
Если те что по ссылке http://msdn.microsoft.com/en-us/library/aa...3(v=vs.85).aspx, то портируйте Win CE и получите их.

Прецизионных счетчиков в микроконтроллерах полно, выбираете любой и измеряете длительность любых процедур с точностью до такта.
В микроконтроллерах измерения можно сделать гораздо проще и гибче чем в в Windows и с меньшими накладными.

Если вы не используете операционку с готовым фреймворком для счетчиков прозводительности, то понятно что в свой код счетчики надо вставлять самому.
Все серьезные RTOS под микроконтроллеры имеют механизм "Performance Counters"


ос слегка не в курсе того, что происходит в ядре процессора. оно же не в курсе ситуаций типа cache hit/miss, branch midprediction и прочих вещей, которые придумали, чтобы мы с ними боролись.

в новых армах есть вот такое, например: http://oprofile.sourceforge.net/docs/arm-v7-events.php

а на v4 похоже только etm sad.gif
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 7 2011, 12:42
Сообщение #12


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(bzzz77 @ Mar 7 2011, 15:03) *
ос слегка не в курсе...
в новых армах есть вот такое,.. н
а на v4 похоже только etm sad.gif


Вы все рассказываете, как оно где-то должно быть очень здорово. Про всякие "новые" ARM'ы, a на конкретные вопросы отвечать не любите.

Цитата
Если команда вместо 1 такта выполняется за 30 тактов - подсказать вам cache miss или hit там имел место ?


Даже если бы у меня был ETM на борту и весь инструментарий, вы как себе представляете вылавливание таких команд (1 против 30) в программе более 1Мб? Учитывая статистический механизм срабатывания кеша?

Цитата
Современные технологии программирования с использованием JIT компиляции


Читаем Wiki : (http://ru.wikipedia.org/wiki/JIT-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F)
технология увеличения производительности программных систем, использующих байт-код, путём компиляции байт-кода в машинный код непосредственно во время работы программы. Таким образом достигается высокая скорость выполнения (сравнимая с компилируемыми языками) за счёт увеличения потребления памяти (для хранения результатов компиляции) и затрат времени на компиляцию.

Вы действительно считаете, что такая технология - благо для embedded processor? И как вы себе представляете постоянное размещение программы в кеше, если объем программы/данных превышают объемы соответствующих кешей?
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 7 2011, 14:21
Сообщение #13


Участник
*

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



Цитата(sergeeff @ Mar 7 2011, 15:42) *
Вы действительно считаете, что такая технология - благо для embedded processor? И как вы себе представляете постоянное размещение программы в кеше, если объем программы/данных превышают объемы соответствующих кешей?


считаю, что это благо для любого CPU. никакое полное размещение кода в кэше никому не нужно. размещать там нужно критические куски. то же самое касается данных. сейчас мне это потребовалось для декодирования mp3. когда я работаю с intel/amd, то у меня под рукой есть oprofile, которые однозначно покажет "горячие" места, над которыми стоит думать-работать-оптимизировать. например, поднапрячься и переписать их на асме. например, подумать как лучше разместить данные (с учетом наличия sram, который ссуть тот же кэш), использовать возможности разных там burst mode и прочее. однако как я узнаю "горячие" места на lpc2438? ну да, придется расставлять кучу счетчиков клоков тут и там, интеративно приближаясь к "горячим" точкам. только с oprofile (который просто показывает perf counters) это делается за одну итерацию. поглядите какие есть счетчики на разных камнях: http://oprofile.sourceforge.net/docs/



Цитата(AlexandrY @ Mar 7 2011, 17:11) *
Performance Counters - это программный фреймворк на базе оси.
А для архитектуры с недетминированным временем выполнения но требованием жесткого реалтайма Performance Counters недостаточно.
Нужна статистика и оценки параметров статистики.
Это делается на ARM-ах элементарно, но тоже программно.


курите мат. часть: http://oprofile.sourceforge.net/docs/ - внизу страницы. perf. counters - это счетчики внутри CPU. для того, чтобы с ними работать ось не нужна. максимум, что требуется от оси - не мешать, давать доступ к ним.


Цитата(scifi @ Mar 7 2011, 16:28) *
Хороший, годный срач получился.
Чем засорять тему дальше, почему бы не сойтись на том, что ARM7TDMI не имеет аппаратных Performance Counters, и средства измерения производительности должны добавляться к программе вручную?


похоже так sad.gif зассучив рукава ... вот с ETM можно было бы много интересной информации получить, я полагаю. но под нынешний проект - это слишком большой объем работ получится. в любом случае, за подсказку про ETM спасибо подсказавшим.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 7 2011, 14:40
Сообщение #14


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(bzzz77 @ Mar 7 2011, 16:21) *
курите мат. часть: http://oprofile.sourceforge.net/docs/ - внизу страницы. perf. counters - это счетчики внутри CPU. для того, чтобы с ними работать ось не нужна. максимум, что требуется от оси - не мешать, давать доступ к ним.


Я вам уже дал ссылку: http://msdn.microsoft.com/en-us/library/aa...3(v=vs.85).aspx
Не ней невооруженным взглядом видно что на PC вы имеете дело не со счетчиками напрямик, а с программным инструментом,
без которого от тех счетчиков ни холодно ни жарко.
B RTOS есть такие же программные инструменты.

Или скажем так. Покажите хоть один счетчик в PC-шном проце который бы вам помог узнать наиболее узкое место в алгоритме wink.gif
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 7 2011, 15:27
Сообщение #15


Участник
*

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



Цитата(AlexandrY @ Mar 7 2011, 17:40) *
Я вам уже дал ссылку: http://msdn.microsoft.com/en-us/library/aa...3(v=vs.85).aspx
Не ней невооруженным взглядом видно что на PC вы имеете дело не со счетчиками напрямик, а с программным инструментом,
без которого от тех счетчиков ни холодно ни жарко.
B RTOS есть такие же программные инструменты.

Или скажем так. Покажите хоть один счетчик в PC-шном проце который бы вам помог узнать наиболее узкое место в алгоритме wink.gif


пожалуйста, прекратите ссылаться на тупейшие документы майкрософт и посмотрите то, что я показал выше. там настоящие счетчики, а не какие-то "программные инструменты".

касательно счетчиков в PC - они там же описаны, их полно. я их много раз использовал. современный CPU легко может снизить теоретическую производительность алгоритма во много раз, если не принимать во внимание особенности CPU.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 7 2011, 15:54
Сообщение #16


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(bzzz77 @ Mar 7 2011, 18:27) *
... если не принимать во внимание особенности CPU.


... до основанья, а затем, мы наш, мы новый мир построим ...

А что же вы не сказали главного, что ваш любимый oprofile под Linux? Или вы хотите его "легко" на lpc2438 портировать вместе с искомой ОС для "удобного" профилирования "горячих" процедур?
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 7 2011, 16:02
Сообщение #17


Участник
*

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



Цитата(sergeeff @ Mar 7 2011, 18:54) *
... до основанья, а затем, мы наш, мы новый мир построим ...

А что же вы не сказали главного, что ваш любимый oprofile под Linux? Или вы хотите его "легко" на lpc2438 портировать вместе с искомой ОС для "удобного" профилирования "горячих" процедур?


не стоит за меня додумывать и пытаться все списать на фанатизм. oprofile и линукс тут не причем. он просто показывает эти счетчики, которые реализованы в cpu. какие счетчики есть - такие и покажет. точно так же работают в базе amd code analyst и intel vtune - вытаскивают эти счетчики. соответственно меня заинтересовали счетчики в arm7tdmi. ну или какие-то другие методы для профилирования на arm. которое, в ряде случаев, сильно помогает.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- bzzz77   профилирование и оптимизация на arm   Mar 5 2011, 21:25
||- - aaarrr   Цитата(bzzz77 @ Mar 7 2011, 12:58) ps. сл...   Mar 7 2011, 10:11
||- - sergeeff   Цитата(bzzz77 @ Mar 7 2011, 12:58) не пон...   Mar 7 2011, 10:18
|||- - sasamy   Цитата(sergeeff @ Mar 7 2011, 13:18) Как ...   Mar 7 2011, 11:09
|||- - ar__systems   Цитата(sergeeff @ Mar 7 2011, 07:42) Даже...   Mar 7 2011, 13:29
||||- - sergeeff   Цитата(bzzz77 @ Mar 7 2011, 19:02) не сто...   Mar 7 2011, 16:31
|||- - AlexandrY   Цитата(bzzz77 @ Mar 7 2011, 17:27) пожалу...   Mar 7 2011, 16:20
|||- - bzzz77   Цитата(AlexandrY @ Mar 7 2011, 19:20) Ну ...   Mar 7 2011, 16:38
|||- - AlexandrY   Цитата(bzzz77 @ Mar 7 2011, 18:38) ну вы ...   Mar 7 2011, 17:08
|||- - bzzz77   Цитата(AlexandrY @ Mar 7 2011, 20:08) Так...   Mar 7 2011, 17:19
||||- - AlexandrY   Цитата(bzzz77 @ Mar 7 2011, 19:19) бескон...   Mar 7 2011, 17:38
||||- - bzzz77   Цитата(AlexandrY @ Mar 7 2011, 20:38) Я п...   Mar 7 2011, 17:57
||||- - sergeeff   Цитата(bzzz77 @ Mar 7 2011, 20:57) особог...   Mar 7 2011, 18:13
||||- - bzzz77   Цитата(sergeeff @ Mar 7 2011, 21:13) Ну-н...   Mar 7 2011, 18:22
|||- - ar__systems   Цитата(AlexandrY @ Mar 7 2011, 12:08) Так...   Mar 7 2011, 18:37
|||- - AlexandrY   Цитата(ar__systems @ Mar 7 2011, 20:37) У...   Mar 7 2011, 18:53
||||- - bzzz77   Цитата(AlexandrY @ Mar 7 2011, 21:53) Это...   Mar 7 2011, 19:02
||||- - aaarrr   Цитата(bzzz77 @ Mar 7 2011, 22:02) хорошо...   Mar 7 2011, 19:31
||||- - bzzz77   Цитата(aaarrr @ Mar 7 2011, 22:31) Если в...   Mar 7 2011, 19:54
||||- - aaarrr   Цитата(bzzz77 @ Mar 7 2011, 22:54) ...нуж...   Mar 7 2011, 20:08
||||- - bzzz77   Цитата(aaarrr @ Mar 7 2011, 23:08) Зачем ...   Mar 7 2011, 20:11
||||- - sonycman   Цитата(bzzz77 @ Mar 8 2011, 00:11) уже вл...   Jun 15 2011, 17:12
|||- - singlskv   Цитата(ar__systems @ Mar 7 2011, 21:37) У...   Mar 8 2011, 21:54
|||- - bzzz77   Цитата(singlskv @ Mar 9 2011, 00:54) Оста...   Mar 9 2011, 05:05
||- - ar__systems   Цитата(AlexandrY @ Mar 7 2011, 06:47) Что...   Mar 7 2011, 13:25
|- - scifi   Цитата(bzzz77 @ Mar 7 2011, 00:01) про ос...   Mar 7 2011, 07:37
- - ViKo   В Keil есть Analisis Windows, а именно Logic Anili...   Mar 6 2011, 11:44
- - sasamy   Цитата(bzzz77 @ Mar 6 2011, 00:25) день д...   Mar 6 2011, 12:36
- - sergeeff   До чего все любят усложнять себе (и другим) жизнь...   Mar 6 2011, 13:24
|- - sasamy   Цитата(sergeeff @ Mar 6 2011, 16:24) До ч...   Mar 6 2011, 15:15
- - ar__systems   Меня тоже неприятно удивило отсутсвие в АРМе каких...   Mar 7 2011, 00:52
- - aaarrr   В старших (ARM11, Cortex-Ax) есть.   Mar 7 2011, 01:07
- - scifi   Хороший, годный срач получился. Чем засорять тему ...   Mar 7 2011, 13:28
|- - AlexandrY   Цитата(scifi @ Mar 7 2011, 15:28) Хороший...   Mar 7 2011, 14:11
- - sergeeff   Цитатафилософия "оскорбить когда сказать нече...   Mar 7 2011, 18:42
|- - bzzz77   Цитата(sergeeff @ Mar 7 2011, 21:42) А че...   Mar 7 2011, 18:45
|- - sergeeff   Цитата(bzzz77 @ Mar 7 2011, 21:45) я разв...   Mar 7 2011, 19:22
|- - sasamy   Цитата(sergeeff @ Mar 7 2011, 22:22) Напо...   Mar 7 2011, 19:29
- - igorsk   DMA используется? В LPC имеется поддержка memory-t...   Mar 7 2011, 23:28
|- - bzzz77   Цитата(igorsk @ Mar 8 2011, 02:28) DMA ис...   Mar 8 2011, 04:44
- - Rst7   QUOTE Это вам 90 килобайт оперативки не хватило .....   Jun 15 2011, 17:44
|- - sonycman   Цитата(Rst7 @ Jun 15 2011, 21:44) Ололо, ...   Jun 15 2011, 18:55
- - Rst7   QUOTE Ничего смешного не вижу А я не в Ваш огород...   Jun 15 2011, 19:14


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

 


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


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