|
|
  |
профилирование и оптимизация на arm |
|
|
|
Mar 7 2011, 19:22
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(bzzz77 @ Mar 7 2011, 21:45)  я разве сказал "сделано неправильно"? уже читайте, а не додумывайте. Имеющий уши - да услышит. Напоследок, утомили вы меня. Ваши слова Цитата - ps. слегка удивляют люди, которые утверждают, что инструмент - лишний и гвозди можно забивать топором. - никакое полное размещение кода в кэше никому не нужно. размещать там нужно критические куски. то же самое касается данных - пожалуйста, прекратите ссылаться на тупейшие документы майкрософт Finito!
|
|
|
|
|
Mar 7 2011, 19:54
|
Участник

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

|
Цитата(aaarrr @ Mar 7 2011, 22:31)  Если все же вернуться к нашему барану - LPC2478, то ситуация с работой SDRAM чуть менее чем полностью очевидна: так как кэш отсутствует, для случайного доступа она практически непригодна, но зато ее можно использовать для буферизации всего и вся. Каких-либо специальных инструментов для изучения ее поведения тоже не нужно, достаточно почитать документацию и потратить пару-тройку часов на написание тестовых программок, если уж сильно захочется. LPC2478 - это весьма маленький процессор, не нужны ему счетчики. это все уже понятно. и по-сути в случае чужого кода (который предполагался к работе как есть, без вникания в детали), нужно потратить время на тесты типа "кладем вот эту структуру в sram - меряем, теперь повторим для другой структуры". и, по большому счету, может потребоваться повторение этого для разных комбинаций размещения структур. но это - еще не самый худший случай. потому что автор кода мог не предполагать использования кода на платформе, где разработчик выбирает что положить в sram-кэш, а не автоматический кэш-менеджер. и мог элементы раскидать по структурам не самым оптимальным образом. тогда окажется, что для хорошей производительности нужно либо класть все структуры в срам (которой, вообщем, не шибко много), либо переделывать код. что тоже можно, но ... ps. процессору счетчики точно не нужны. счетчики могут быть нужны разработчику
|
|
|
|
|
Mar 7 2011, 20:11
|
Участник

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

|
Цитата(aaarrr @ Mar 7 2011, 23:08)  Зачем решать задачу с конца? Сразу кладем все со случайным доступом в SRAM, буферы - в SDRAM. А вот если SRAM не хватает, тогда только нужно начинать думать, перекладывать и тестировать. уже влазит с трудом, уже usb/eth-ram задействованы. уже буферы для fat в sdram. а функционал еще хочется добавить.
|
|
|
|
|
Mar 8 2011, 04:44
|
Участник

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

|
Цитата(igorsk @ Mar 8 2011, 02:28)  DMA используется? В LPC имеется поддержка memory-to-memory и scatter/gather трансферов. В декодировании MP3 не очень вижу как это может помочь, но вдруг. SG видел, полезная штука. хотел попробовать SG для вывода буферов в DAC. касательно mem2mem не уверен - похоже helix'у важнее иметь временные переменные в sram, а собственно mp3 данные можно положить в sdram без особенной потери в производительности.
|
|
|
|
|
Mar 8 2011, 21:54
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(ar__systems @ Mar 7 2011, 21:37)  Уважаемый, вы меня пугаете. Вам 10ый раз говорят, эти счетчики не просто регистры процессора, их железо само обновляет. Решение это ХАРДВЕРНОЕ. Осталось только научиться все эти ХАРДВАРДНЫЕ счетчтики чисто программно считывать в строго детерминированные моменты времени, особенно при наличии OS... Здесь без Event System Вы мало что точно намеряете.
|
|
|
|
|
Mar 9 2011, 05:05
|
Участник

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

|
Цитата(singlskv @ Mar 9 2011, 00:54)  Осталось только научиться все эти ХАРДВАРДНЫЕ счетчтики чисто программно считывать в строго детерминированные моменты времени, особенно при наличии OS... Здесь без Event System Вы мало что точно намеряете. там все несколько проще. на каждый счетчик есть счетчик превышения по достижению которого срабатывает прерывание и регистрируется адрес, на котором это случилось. от ОС ничего не требуется. от профайлера - только настроить события, счетчики превышения и регистрировать адреса. ну и потом соотнести эти адреса с функциями-инструкциями. так работает oprofile, а на его основе - amd code analyst. и этого хватает для нормального профилирования.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|