Перейти к содержанию
    

Си для ADSP TS-x01

Как сейчас обстоят дела с компилятором Си у AD для TS в плане производительности ? Раньше для 21x (VD++ 1-2) все было очень печально. Кто может сравнивал Си с асм, кто пользует Си, подскажите стоит ли сейчас с асмом заморачиваться ? (раньше очень даже стоило :))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как сейчас обстоят дела с компилятором Си у AD для TS в плане производительности ? Раньше для 21x (VD++ 1-2) все было очень печально. Кто может сравнивал Си с асм, кто пользует Си, подскажите стоит ли сейчас с асмом заморачиваться ? (раньше очень даже стоило :))

Да и сейчас стоит, если хочешь получить максимальную производительность.

Вообще имеет смысл писать на Си со вкраплениями асма. Как правило асма получается не много, а быстродействие повышается значительно.

Изменено пользователем Manuchin_serg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да и сейчас стоит, если хочешь получить максимальную производительность.

Вообще имеет смысл писать на Си со вкраплениями асма. Как правило асма получается не много, а быстродействие повышается значительно.

 

Ну понятно, что для макс производительности - asm. Просто раньше у AD с Си было уж очень плохо (у TI в этом плане гораздо лучше). Вопрос в том, есть ли сейчас у AD значительные ) улучшения в этом плане ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну понятно, что для макс производительности - asm. Просто раньше у AD с Си было уж очень плохо (у TI в этом плане гораздо лучше). Вопрос в том, есть ли сейчас у AD значительные ) улучшения в этом плане ?

 

Это больше зависит от процессора.

 

Если регистров мало и они специализированные как в TI tms54x то на С делать там нечего.

Компилятору нужно хоть где-то раскрутиться.

Аналогично ADSP и SHARC® Кроме того на С недоступны специализированые и многие параллельные возможности.

 

На tms320C6х у TI и Blackfin у AD многие вещи можно делать на С. Производительность на С может достигать 0.5-1 от asm, почему нет?

 

На TigerSHARC® я не работал, но мне кажется, что там как в SHARC, только ещё всё усугублено параллелизмами, недоступными из С ни компилятору, ни программисту

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В TigerSharc желательно наиболее ресурсоемкие вычисления делать самому на ассемблере. Если они ведут к 100% занятости ядра. На си можно делать все остальное, если оно не задерживает realtime, т.е. если на скорость кусков кода на Си "наплевать и забыть".

Оптимизатор неплох, нельзя сказать, что он сильно хуже, чем у остальных в индустрии. Но иногда тупИт, а единственное решение - самому на ассемблере.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пишу для adsp ts-101. Эксперименты показали, что оптимальным подходом с точки зрения производительность процессора/производительность программиста является написание программы в виде обслуживающий код на С + код DSP на ассемблере, т.к. эффективное задействование обоих вычислительных ядер должно закладываться алгоритмически (например, делим отсчеты входного сигнала на 2 части и обрабатываем их независимо друг от друга, но одновременно) и компилятор такую оптимизацию выполнить, конечно, не в состоянии.

Кстати, в С можно использовать built-in макросы, представляющие из себя эффективную ассемблерную реализацию типовых операций, например, перевод чисел из fixed-point в float-point и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

О, а можно по подробнее, как самому сделать что то подобное, а то у TS я не нашел макроса для инструкций VMAX, VMIN, а нейронная сеть мозга пока никак не может перестроиться под DSP ассемблер :)

Или может кто нить объяснит как делаются ассемблерные вставки, ассемблерные процедуры (описание входов/выходов), я по этой теме не нашел ни одного путного документа (конкретно для TS-x01).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Или может кто нить объяснит как делаются ассемблерные вставки, ассемблерные процедуры (описание входов/выходов), я по этой теме не нашел ни одного путного документа (конкретно для TS-x01).

Все прекрасно расписано тут.

Стр. 1-102: Inline Assembly Language Support Keyword (asm)

Стр. 1-261: C/C++ Run-Time Model and Environment

Стр. 1-289: Register Classification

Стр. 1-298: Calling Assembly Subroutines From C/C++ Programs

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...