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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> профилирование и оптимизация на arm
bzzz77
сообщение Mar 7 2011, 09:58
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 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
aaarrr
сообщение Mar 7 2011, 10:11
Сообщение #17


Гуру
******

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



Цитата(bzzz77 @ Mar 7 2011, 12:58) *
ps. слегка удивляют люди, которые утверждают, что инструмент - лишний и гвозди можно забивать топором.

Лучшим инструментом является все-таки головной мозг. Чтобы решить, что положить в SRAM, а что в SDRAM без кэша, нужен именно он, а никак не ETM c PM.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 7 2011, 10:18
Сообщение #18


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

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



Цитата(bzzz77 @ Mar 7 2011, 12:58) *
не понимаете и ладно.


Очень рад за вас, понимающий вы наш!

Может статейку в приличном журнале (Dr. Dobb's, например) опубликуете с практическими результатами исследований и рекомендациями, как и что в таких случаях в программе подправить? Как использовать ETM для вылавливания cache miss. Получите наш общий респект и денежку подзаработаете.

Цитата
когда производительность ощутимо падает


Пример в студию! С цифрами, пожалуйста.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Mar 7 2011, 11:09
Сообщение #19


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(sergeeff @ Mar 7 2011, 13:18) *
Как использовать ETM для вылавливания cache miss. Получите наш общий респект и денежку подзаработаете.


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

Цитата
Пример в студию! С цифрами, пожалуйста.


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


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
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #22


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

Группа: Свой
Сообщений: 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
ar__systems
сообщение Mar 7 2011, 13:25
Сообщение #23


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(AlexandrY @ Mar 7 2011, 06:47) *
Что за perf counters?
Все серьезные RTOS под микроконтроллеры имеют механизм "Performance Counters"

Это все фуйня. У интела начиная с пентиума есть полноценные железячные счетчики, посмотрите. А все эти "фичи" от операционки -- жалкий эрзац.
Go to the top of the page
 
+Quote Post
scifi
сообщение Mar 7 2011, 13:28
Сообщение #24


Гуру
******

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



Хороший, годный срач получился.
Чем засорять тему дальше, почему бы не сойтись на том, что ARM7TDMI не имеет аппаратных Performance Counters, и средства измерения производительности должны добавляться к программе вручную?
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Mar 7 2011, 13:29
Сообщение #25


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(sergeeff @ Mar 7 2011, 07:42) *
Даже если бы у меня был ETM на борту и весь инструментарий, вы как себе представляете вылавливание таких команд (1 против 30) в программе более 1Мб? Учитывая статистический механизм срабатывания кеша?

Вы продолжаете тупить. В програмее размером 1 Mb (Гхм... компилированного кода? Вы серьезно?) будет небольшое количество критичного кода, и естественно никто никогда ВСЮ программу не профилирует, даже на PC, где 1МБ как раз не предел. Раз уж взялись википедию читать, почитайте про профилирование.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 7 2011, 14:11
Сообщение #26


Ally
******

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



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


Performance Counters - это программный фреймворк на базе оси.
А для архитектуры с недетминированным временем выполнения но требованием жесткого реалтайма Performance Counters недостаточно.
Нужна статистика и оценки параметров статистики.
Это делается на ARM-ах элементарно, но тоже программно.
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 7 2011, 14:21
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #28


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
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 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
Сообщение #30


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

Группа: Свой
Сообщений: 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

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

 


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


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