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

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> профилирование и оптимизация на 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
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
ViKo
сообщение Mar 6 2011, 11:44
Сообщение #5


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



В Keil есть Analisis Windows, а именно Logic Anilizer, Performance Analizer, Code Coverage. А также трассировка, а также Execution Profiling. И время выполнения можно засечь в отладчике. Сам почти не пользовался, поэтому насколько это соответствует требуемому, не скажу. На мой взгляд, достаточно.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Mar 6 2011, 12:36
Сообщение #6


Знающий
****

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



Цитата(bzzz77 @ Mar 6 2011, 00:25) *
день добрый,

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


В lpc2478 есть ETM, нужно всего несколько килодолларов чтобы купить jtag с поддержкой ETM trace sm.gif
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 6 2011, 13:24
Сообщение #7


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

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



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

Вы посмотрите на форуме бесконечно: в отладчике работает, на железе - нет. Килобаксы тратить за каким-то. Вам же посоветовали pin_on/pin_off. Осциллографом замерил - точнее не бывает. На собственном железе, с учетом прерываний, реальной настройки железа. Да и измерять вы будете может раз-два. Вперед!
Go to the top of the page
 
+Quote Post
sasamy
сообщение Mar 6 2011, 15:15
Сообщение #8


Знающий
****

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



Цитата(sergeeff @ Mar 6 2011, 16:24) *
До чего все любят усложнять себе (и другим) жизнь!

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



Вообщето ETM как раз трассирует код в реальном времени без воздействия на процесс, а пиписькомер на осциллографе годится только для кода уровня ножкой топ в ладошки хлоп, никакого анализа сложного кода на нем не сделать - вы никогда не поймете почему происходит задержка - вдияние ОС, промахи кеша или просто неоптимальный код.
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 6 2011, 19:59
Сообщение #9


Участник
*

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


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

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


Участник
*

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



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


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


self made
****

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



Меня тоже неприятно удивило отсутсвие в АРМе каких-либо performance counters.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 7 2011, 01:07
Сообщение #13


Гуру
******

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



В старших (ARM11, Cortex-Ax) есть.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 7 2011, 07:15
Сообщение #14


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

Группа: Свой
Сообщений: 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
scifi
сообщение Mar 7 2011, 07:37
Сообщение #15


Гуру
******

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



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

Я думал, речь идёт об LPC2478. Если я правильно помню, никакого кэша там нет. Или это уже просто "разговор за жизнь"?
Go to the top of the page
 
+Quote Post
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
bzzz77
сообщение Mar 7 2011, 16:02
Сообщение #31


Участник
*

Группа: Участник
Сообщений: 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
AlexandrY
сообщение Mar 7 2011, 16:20
Сообщение #32


Ally
******

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



Цитата(bzzz77 @ Mar 7 2011, 17:27) *
пожалуйста, прекратите ссылаться на тупейшие документы майкрософт и посмотрите то, что я показал выше. там настоящие счетчики, а не какие-то "программные инструменты".

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


Ну пока инфа от микрософта у меня вызывает больше доверия чем ваша biggrin.gif
Да и пакет по вашей ссылке тоже есть по сути чисто программное решение.
Хотя честно скажу, оно мне понравилось, так что от ваших постов польза есть. wink.gif
Кстати там ответ на вашу проблему.
Организуйте регулярные прерывания и фиксируйте по какому адресу вы прервали алгоритм, пишите адреса в базу данных (огромная правда будет ) или на лету пытайтесь определить имя функции которую прервали и ее пишите в базу (тогда огромный символьный файл нужен будет). После миллиона запусков приложения получите вполне правдоподобную статистику.

Это типа то удобство которое дают профайлеры на PC-ишных процессорах. Смешно, но это костыли.

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

И расскажите ка, как вы все таки те счетчики использовали wink.gif Ну просто интересно. (это при том что у вас не было понятия о текущих DMA обменах, задержках в контроллерах памяти, шинных мостах и т.д. и т.п. ) Т.е. что дает статистика ядра без статистики со всей платформы SoC-а?
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 7 2011, 16:31
Сообщение #33


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

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



Цитата(bzzz77 @ Mar 7 2011, 19:02) *
не стоит за меня додумывать


Отладите свой mp3-проект на lpc, отпишитесь.

Успехов! Счетчик дней начал тикать.
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 7 2011, 16:38
Сообщение #34


Участник
*

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



Цитата(AlexandrY @ Mar 7 2011, 19:20) *
Ну пока инфа от микрософта у меня вызывает больше доверия чем ваша biggrin.gif
Да и пакет по вашей ссылке тоже есть по сути чисто программное решение.
Хотя честно скажу, оно мне понравилось, так что от ваших постов польза есть. wink.gif

И расскажите ка, как вы все таки те счетчики использовали wink.gif Ну просто интересно. (это при том что у вас не было понятия о текущих DMA обменах, задержках в контроллерах памяти, шинных мостах и т.д. и т.п. ) Т.е. что дает статистика ядра без статистики со всей платформы SoC-а?


ну вы хоть приличия ради загляните по ссылке, да? http://oprofile.sourceforge.net/docs/intel-piii-events.php - это счетчики *внутри* CPU. oprofile/проч их только показывают. где оно "чисто программное" ? ну или почитайте шиты от intel/amd.

раз так интересно - расскажу. oprofile (или другой похожий) покажет точки в коде, на который счетчики чаще всего срабатывают: http://oprofile.sourceforge.net/examples/

дальше - по ситуации, которых масса. например, есть структуры, связанные в список, по которым постоянно делается поиск (hash-листы, деревья). структура может быть достаточно большая и не влазить целиком в cache line. кто-то (может быть и сам) организовал структуру так, что указатель на следующий элемент находится в одной cache line, а "ключ" - в другой. потребуется два обращения к памяти. а можно положить указатель и ключ в пределах одной cacheline и обойтись одним обращением к памяти. есть branch prediction/misprediction. есть обращения к tlb. есть отдельный и большой класс ситуаций, связанных с SMP, с NUMA. для всех них тоже *обычно* есть счетчики, которые позволяют оценить расходы и производительность *существующего* кода. и искать неоптимальные места не наобум, не методом тыка, не путем изучения кучи кода. со счетчиками я вижу, где чаще всего бывают обращения к памяти (а не к кэшу), где чаще всего бранчи предсказывают неверное и так далее.


Сообщение отредактировал bzzz77 - Mar 7 2011, 16:40
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 7 2011, 17:08
Сообщение #35


Ally
******

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



Цитата(bzzz77 @ Mar 7 2011, 18:38) *
ну вы хоть приличия ради загляните по ссылке, да? http://oprofile.sourceforge.net/docs/intel-piii-events.php -


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

Все это вы можете таким же образом сделать на своем ARM-е.
А какие-то особенные счетчики можете вставить ручками и даже такие каких нет в Core I7 тем боле, что работать с кэшем вам на ARM7TDMI не грозит.
При том в i7 нет тучи счетчиков того, что действительно критически тормозит ARM-ы в SoC-ах.

Про то что там чета не помещается в кэш, а вы героически это решаете, то тоже в данной теме не в кассу.
Есть ARM-ы с TCM памятью специально для жесткого риалтайма, никаких танцев с бубном вокруг кэша.
Т.е. если выбрали неподходящую архитектуру для решения, то пеняйте только на себя, а не на ARM-ы.
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 7 2011, 17:19
Сообщение #36


Участник
*

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



Цитата(AlexandrY @ Mar 7 2011, 20:08) *
Так, исчо раз.
Решение это программное. В памяти сидит демон, он во первых оказывает неизвестный местный эффект.
Во вторых решение это изолированное, т.е. это не реальная работа программы, а тестовые бесконечные запуски иначе не наберется статистика.

Все это вы можете таким же образом сделать на своем ARM-е.
А какие-то особенные счетчики можете вставить ручками и даже такие каких нет в Core I7 тем боле, что работать с кэшем вам на ARM7TDMI не грозит.

Про то что там чета не помещается в кэш, а вы героически это решаете, то тоже в данной теме не в кассу.
Есть ARM-ы с TCM памятью специально для жесткого риалтайма, никаких танцев с бубном вокруг кэша.
Т.е. если выбрали неподходящую архитектуру для решения, то пеняйте только на себя, а не на ARM-ы.


прямо параллельная вселенная какая-то, ей-богу. демон, который сидит в памяти - собирает данные, предоставляемые CPU. потому что "программно" узнать как часто бывает cache hit/miss и все остальное - нельзя. следуя вашей логике, можно и видеокарту называть программным решением, ибо ей требуется драйвер. на arm я не могу увидеть в каком-нибудь регистре как много обращений к памяти было, например. не важно есть демон или нет. на intel/amd я могу это сделать, без всякого демона. потому что соответствующий регистр есть и с демоном не уходит.

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

в данной теме много чего не в кассу.

на arm я не пенял. я просто спросил как можно профилировать на arm. в ответ на это вы принялись валить сюда кучу лажи и ничего по существу. извиняйте за прямоту.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 7 2011, 17:38
Сообщение #37


Ally
******

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



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

Я подозреваю что половина из тех кто вам ответил портировала этот несчастный mp3. О его потрировании темы здесь не утихают не на месяц.

И что вам скажет счетчик обращений к абстрактной памяти? Вы что, уберете эти обращения?
Ну так это уже вопрос системного проектирования, а не отладки.
Напороться на него при отладке вот уж действительно лажа.

Ну, какие еще счетчики вспомните?

Гораздо продуктивнее заниматься тюнингом мнгозадачных планировщиков: Lower the overhead in RTOS scheduling
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 7 2011, 17:57
Сообщение #38


Участник
*

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



Цитата(AlexandrY @ Mar 7 2011, 20:38) *
Я подозреваю что половина из тех кто вам ответил портировала этот несчастный mp3. О его потрировании темы здесь не утихают не на месяц.

И что вам скажет счетчик обращений к абстрактной памяти? Вы что, уберете эти обращения?
Ну так это уже вопрос системного проектирования, а не отладки.
Напороться на него при отладке вот уж действительно лажа.

Ну, какие еще счетчики вспомните?

Гораздо продуктивнее заниматься тюнингом мнгозадачных планировщиков: Lower the overhead in RTOS scheduling


особого ума портировать не нужно. делается на раз-два-три.

кол-во обращений к sdram я могу сократить, по-другому распределив данные-код между sram/sdram.

"вспоминать" счетчики у меня не выйдет - нет их на arm. на intel/amd можно было бы поглядеть на ошибки переходов, на среднее кол-во тактов на инструкцию и, возможно, переработать код на асме.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 7 2011, 18:13
Сообщение #39


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

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



Цитата(bzzz77 @ Mar 7 2011, 20:57) *
особого ума портировать не нужно. делается на раз-два-три.

кол-во обращений к sdram я могу сократить, по-другому распределив данные-код между sram/sdram.

"вспоминать" счетчики у меня не выйдет - нет их на arm. на intel/amd можно было бы поглядеть на ошибки переходов, на среднее кол-во тактов на инструкцию и, возможно, переработать код на асме.


Ну-ну. Философия списывающего школьного двоечника.
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 7 2011, 18:22
Сообщение #40


Участник
*

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



Цитата(sergeeff @ Mar 7 2011, 21:13) *
Ну-ну. Философия списывающего школьного двоечника.


философия "оскорбить когда сказать нечего" ?
Go to the top of the page
 
+Quote Post
ar__systems
сообщение Mar 7 2011, 18:37
Сообщение #41


self made
****

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



Цитата(AlexandrY @ Mar 7 2011, 12:08) *
Так, исчо раз.
Решение это программное. В памяти сидит демон, он во первых оказывает неизвестный местный эффект.

Уважаемый, вы меня пугаете. Вам 10ый раз говорят, эти счетчики не просто регистры процессора, их железо само обновляет. Решение это ХАРДВЕРНОЕ.
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 7 2011, 18:42
Сообщение #42


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

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



Цитата
философия "оскорбить когда сказать нечего" ?


А чего тут говорить. У меня таких студентов было лет ...дцать тому назад немало - "все вокруг идиоты, все сделано неправильно, а я вот счас всех за пояс". Кто-то из них быстро бросил всю эту инженерию, кто-то надорвался, кто-то сумел извлечь уроки и стал поспокойнее, кто-то спился, увы.
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 7 2011, 18:45
Сообщение #43


Участник
*

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



Цитата(sergeeff @ Mar 7 2011, 21:42) *
А чего тут говорить. У меня таких студентов было лет ...дцать тому назад немало - "все вокруг идиоты, все сделано неправильно, а я вот счас всех за пояс". Кто-то из них быстро бросил всю эту инженерию, кто-то надорвался, кто-то сумел извлечь уроки и стал поспокойнее, кто-то спился, увы.


спасибо на добром слове. и себя похвалить не забыл - золотой человек. я разве сказал "сделано неправильно"? уже читайте, а не додумывайте.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 7 2011, 18:53
Сообщение #44


Ally
******

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



Цитата(ar__systems @ Mar 7 2011, 20:37) *
Уважаемый, вы меня пугаете. Вам 10ый раз говорят, эти счетчики не просто регистры процессора, их железо само обновляет. Решение это ХАРДВЕРНОЕ.


Это ничего не меняет! Не счетчики же он профилирует. Счетчики могут выполняться хоть тыщу тактов.
Он эти счетчик враз может сделать по прерываниям в ARM-е.
Демон же у TC не вызывает никакого отторжения.

В ARM-ах есть к счастью всякие исключения которые не препятствуют наделать тучу изощренных счетчиков.
Если же отойти от устаревшего ARM7TDMI, а перейти на Cortex-ы то вообще открываются невиданные перспективы.

Но разговор про юзабилити.
Т.е. я не услышал, что голые хардварные счетчики как-то можно без изменения сорсов и других софтварных ухищрений применить для профайлинга.
Т.е. способом иным как это предложили для ARM-ов.
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 7 2011, 19:02
Сообщение #45


Участник
*

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



Цитата(AlexandrY @ Mar 7 2011, 21:53) *
Это ничего не меняет! Не счетчики же он профилирует. Счетчики могут выполняться хоть тыщу тактов.
Он эти счетчик враз может сделать по прерываниям в ARM-е.
Демон же у TC не вызывает никакого отторжения.


хорошо, покажите мне счетчик обращений ядра к sdram. с меня спасибо и респект.

к слову, oprofile *никакого* измения в исходники/бинарники не вносит. потому что все, что делает oprofile - считывает счетчики. это можно и самому спокойно сделать.


Сообщение отредактировал bzzz77 - Mar 7 2011, 19:04
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Mar 7 2011, 19:22
Сообщение #46


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

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



Цитата(bzzz77 @ Mar 7 2011, 21:45) *
я разве сказал "сделано неправильно"? уже читайте, а не додумывайте.


Имеющий уши - да услышит.

Напоследок, утомили вы меня. Ваши слова

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


Finito!
Go to the top of the page
 
+Quote Post
sasamy
сообщение Mar 7 2011, 19:29
Сообщение #47


Знающий
****

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



Цитата(sergeeff @ Mar 7 2011, 22:22) *
Напоследок, утомили вы меня. Ваши слова
Finito!


2sergeev - да никто вам не мешает воткнуть осциллограф - расслабьтесь, пользуйтесь на здоровье sm.gif Вообще забудьте что тут говорили, вы - самый лучший.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 7 2011, 19:31
Сообщение #48


Гуру
******

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



Цитата(bzzz77 @ Mar 7 2011, 22:02) *
хорошо, покажите мне счетчик обращений ядра к sdram. с меня спасибо и респект.

Если все же вернуться к нашему барану - LPC2478, то ситуация с работой SDRAM чуть менее чем полностью очевидна: так как кэш отсутствует, для случайного доступа она практически непригодна, но зато ее можно использовать для буферизации всего и вся. Каких-либо специальных инструментов для изучения ее поведения тоже не нужно, достаточно почитать документацию и потратить пару-тройку часов на написание тестовых программок, если уж сильно захочется. LPC2478 - это весьма маленький процессор, не нужны ему счетчики.
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 7 2011, 19:54
Сообщение #49


Участник
*

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



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


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


ps. процессору счетчики точно не нужны. счетчики могут быть нужны разработчику
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 7 2011, 20:08
Сообщение #50


Гуру
******

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



Цитата(bzzz77 @ Mar 7 2011, 22:54) *
...нужно потратить время на тесты типа "кладем вот эту структуру в sram - меряем, теперь повторим для другой структуры"

Зачем решать задачу с конца? Сразу кладем все со случайным доступом в SRAM, буферы - в SDRAM. А вот если SRAM не хватает, тогда только нужно начинать думать, перекладывать и тестировать.
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 7 2011, 20:11
Сообщение #51


Участник
*

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



Цитата(aaarrr @ Mar 7 2011, 23:08) *
Зачем решать задачу с конца? Сразу кладем все со случайным доступом в SRAM, буферы - в SDRAM. А вот если SRAM не хватает, тогда только нужно начинать думать, перекладывать и тестировать.


уже влазит с трудом, уже usb/eth-ram задействованы. уже буферы для fat в sdram. а функционал еще хочется добавить.
Go to the top of the page
 
+Quote Post
igorsk
сообщение Mar 7 2011, 23:28
Сообщение #52


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 22-03-10
Пользователь №: 56 131



DMA используется? В LPC имеется поддержка memory-to-memory и scatter/gather трансферов. В декодировании MP3 не очень вижу как это может помочь, но вдруг.
Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 8 2011, 04:44
Сообщение #53


Участник
*

Группа: Участник
Сообщений: 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 без особенной потери в производительности.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Mar 8 2011, 21:54
Сообщение #54


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



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

Go to the top of the page
 
+Quote Post
bzzz77
сообщение Mar 9 2011, 05:05
Сообщение #55


Участник
*

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



Цитата(singlskv @ Mar 9 2011, 00:54) *
Осталось только научиться все эти ХАРДВАРДНЫЕ счетчтики чисто программно считывать в строго детерминированные
моменты времени, особенно при наличии OS...
Здесь без Event System Вы мало что точно намеряете.


там все несколько проще. на каждый счетчик есть счетчик превышения по достижению которого срабатывает прерывание и регистрируется адрес, на котором это случилось. от ОС ничего не требуется. от профайлера - только настроить события, счетчики превышения и регистрировать адреса. ну и потом соотнести эти адреса с функциями-инструкциями. так работает oprofile, а на его основе - amd code analyst. и этого хватает для нормального профилирования.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 15 2011, 17:12
Сообщение #56


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(bzzz77 @ Mar 8 2011, 00:11) *
уже влазит с трудом, уже usb/eth-ram задействованы. уже буферы для fat в sdram. а функционал еще хочется добавить.

Это вам 90 килобайт оперативки не хватило для MP3 декодера? Откуда такие запросы-то?
Люди вон на 50 килобайтах справляются... laughing.gif
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jun 15 2011, 17:44
Сообщение #57


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Это вам 90 килобайт оперативки не хватило ...
Люди вон на 50 килобайтах справляются...


Ололо, давайте померяемся, кому сколько надо wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 15 2011, 18:55
Сообщение #58


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Rst7 @ Jun 15 2011, 21:44) *
Ололо, давайте померяемся, кому сколько надо wink.gif

Ничего смешного не вижу wink.gif
Сам рассчитываю на 24 килобайта для декодера, плюс буфера для ЦАПа и файловые - в 32 кб надо бы уложиться rolleyes.gif
Go to the top of the page
 
+Quote Post
Rst7
сообщение Jun 15 2011, 19:14
Сообщение #59


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Ничего смешного не вижу


А я не в Ваш огород wink.gif Я чисто топикстартера, ага wink.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 19:57
Рейтинг@Mail.ru


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