Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ассемблер и Си
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
PoDoNoK
Здравствуйте! Приходится работать на АДСП 21160 и я чётко не могу понять, когда стоит писать функции на ассемблере, а когда на Си. Как вы для себя определяете, что этот алгоритм оптимальнее по скорости написать на ассемблере, а этот кусок на Си?
fontp
Вычислительные алгоритмы обработки сигнала или по крайней мере их внутренние циклы обычно пишутся на ассемблере. Всяческая логическая ерунда по организации программы может писаться на С
Как-то так :-) Насколько я помню на всяких 21ххх на С не особо разгуляешься - компилятору маловато регистров общего назначения

Какой из модулей нужно писать на ассемблере в первую очередь, если весь проект на С уже существует, легко оценить в профайлере - тот покажет какую часть производительности ядра поглощает какой модуль
PoDoNoK
Цитата(fontp @ May 4 2007, 15:37) *
Вычислительные алгоритмы обработки сигнала или по крайней мере их внутренние циклы обычно пишутся на ассемблере. Всяческая логическая ерунда по организации программы может писаться на С
Как-то так :-) Насколько я помню на всяких 21ххх на С не особо разгуляешься - компилятору маловато регистров общего назначения

Какой из модулей нужно писать на ассемблере в первую очередь, если весь проект на С уже существует, легко оценить в профайлере - тот покажет какую часть производительности ядра поглощает какой модуль


Спасибо огромное! Про Profiling даже не знал! Очень полезная возможность. Век живи - век учись =).
fontp
Цитата(PoDoNoK @ May 7 2007, 09:32) *
Спасибо огромное! Про Profiling даже не знал! Очень полезная возможность. Век живи - век учись =).


:-) RTFM

Вопрос даже в другом - нужно не пренебрегать долбаной документацией

Там в VDSP ещё есть и средства автоматизации деятельности по оптимизации по профилю - и на уровне линкера и на уровне компилятора. Другое дело, что на уровне компилятора profile guided optimization компилятора работает только в симуляторе и полагается на тот тестовый набор данных, который предоставлен. Редко бывает возможным предоставить исчерпывающий набор данных. Кроме того в задачах обработки сигнала реального времени всегда оптимизируется максимальное время вычислений, а не среднее, на что направлена статистическая оптимизация. Получается, что обычно это пустое...
PGO linker автоматизирует, как раз то, что вы желаете - а именно расположение секций в памяти
На сайте analog.com есть описание и примеры использования PGO-линкера. Это Application Note EE-306
PoDoNoK
Абсолютно с Вами согласен!
Тут момент немного иной. Я ни в коем случае не пренебрегаю документацией, но как это в жизни всегда происходит - нужно брать быка за рога. Пришлось пересесть с 2189 на 21160. А из-за смены от версии к версии протоколов загрузки, приходилось пользоваться какой то древней версией ВДСП. Мне и сейчас приходится пользоваться ВДСП 2.0 и среду подробнее изучить всё никак не получается, в приоритете ассемблера синтаксис. Но с Вашей подачи, как раз знакомлюсь, за что Вам огромное, человеческое спасибо =)! И за краткое резюме этого профайлера!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.