|
|
 |
Ответов
|
Mar 6 2011, 06:32
|
Участник

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

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

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

|
Цитата(sergeeff @ Mar 6 2011, 14:29)  Ну и кто вам мешает, если очень любопытно, запустить тестовую процедуру в ram и sdram. Померить разницу и быть счастливым? это можно. а остальное как глядеть? вот тут посоветовали etm - хотя бы почитаю про него.
|
|
|
|
|
Mar 6 2011, 21:01
|
Участник

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

|
Цитата(sergeeff @ Mar 6 2011, 23:51)  Почитайте, почитайте. Потом посмотрите сколько это стоит, а потом изучите, работает ли он с вашим компилятором, а потом есть ли etm в вашем процессоре и выведен ли он как надо и прочее. Тогда выяснится, что пиписькомера с осциллографом вам вполне хватит. По крайней мере, на первое время. про осциллограф я пока не понял. вот захотел я узнать места где много времени тратится на доступ к памяти, то есть произошел cache miss. куда я осциллографом буду тыкать?
|
|
|
|
|
Mar 7 2011, 07:15
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(bzzz77 @ Mar 7 2011, 00:01)  про осциллограф я пока не понял. вот захотел я узнать места где много времени тратится на доступ к памяти, то есть произошел cache miss. куда я осциллографом буду тыкать? А что, вы думаете ETM вам про cache miss расскажет? Это во-первых. Во-вторых, не понимаю разговоров про ловлю микросекундных блох в миллисекундных процедурах. Или задача не по зубам выбранному процессору, или алгоритм хромает. А cache miss - дело десятое. Примеров тому не счесть. Вот вчера видел очередной вопрос про AVR, где в main() три переменные float....
|
|
|
|
|
Mar 7 2011, 09:58
|
Участник

Группа: Участник
Сообщений: 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. слегка удивляют люди, которые утверждают, что инструмент - лишний и гвозди можно забивать топором.
|
|
|
|
|
Mar 7 2011, 11:47
|

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"
|
|
|
|
|
Mar 7 2011, 12:03
|
Участник

Группа: Участник
Сообщений: 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
|
|
|
|
|
Mar 7 2011, 12:42
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(bzzz77 @ Mar 7 2011, 15:03)  ос слегка не в курсе... в новых армах есть вот такое,.. н а на v4 похоже только etm  Вы все рассказываете, как оно где-то должно быть очень здорово. Про всякие "новые" 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? И как вы себе представляете постоянное размещение программы в кеше, если объем программы/данных превышают объемы соответствующих кешей?
|
|
|
|
|
Mar 7 2011, 14:21
|
Участник

Группа: Участник
Сообщений: 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, и средства измерения производительности должны добавляться к программе вручную? похоже так  зассучив рукава ... вот с ETM можно было бы много интересной информации получить, я полагаю. но под нынешний проект - это слишком большой объем работ получится. в любом случае, за подсказку про ETM спасибо подсказавшим.
|
|
|
|
|
Mar 7 2011, 14:40
|

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-шном проце который бы вам помог узнать наиболее узкое место в алгоритме
|
|
|
|
|
Mar 7 2011, 15:27
|
Участник

Группа: Участник
Сообщений: 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-шном проце который бы вам помог узнать наиболее узкое место в алгоритме  пожалуйста, прекратите ссылаться на тупейшие документы майкрософт и посмотрите то, что я показал выше. там настоящие счетчики, а не какие-то "программные инструменты". касательно счетчиков в PC - они там же описаны, их полно. я их много раз использовал. современный CPU легко может снизить теоретическую производительность алгоритма во много раз, если не принимать во внимание особенности CPU.
|
|
|
|
|
Mar 7 2011, 16:02
|
Участник

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

|
Цитата(sergeeff @ Mar 7 2011, 18:54)  ... до основанья, а затем, мы наш, мы новый мир построим ...
А что же вы не сказали главного, что ваш любимый oprofile под Linux? Или вы хотите его "легко" на lpc2438 портировать вместе с искомой ОС для "удобного" профилирования "горячих" процедур? не стоит за меня додумывать и пытаться все списать на фанатизм. oprofile и линукс тут не причем. он просто показывает эти счетчики, которые реализованы в cpu. какие счетчики есть - такие и покажет. точно так же работают в базе amd code analyst и intel vtune - вытаскивают эти счетчики. соответственно меня заинтересовали счетчики в arm7tdmi. ну или какие-то другие методы для профилирования на arm. которое, в ряде случаев, сильно помогает.
|
|
|
|
Сообщений в этой теме
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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|