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

 
 
> Операции с плавающей точкой без FPU, На сколько падает производительность?
sigmaN
сообщение Apr 3 2008, 10:21
Сообщение #1


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Интересно, а можно ли на целочисленном DSP с запасом производительности(скажем в 3-5 раз) зарулить вокодер на плавающей точке?

И вообще, каков overhead, так сказать, FP операций на проце без FPU?
Страдает ли точность вычисления?
Что нужно для подобных "извращений"?
Может быть есть какая-то библиотека виртуального FPU, так сказать?
DSP Техас 55 серии.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Stanislav
сообщение Apr 3 2008, 14:59
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(sigmaN @ Apr 3 2008, 14:21) *
Интересно, а можно ли на целочисленном DSP с запасом производительности(скажем в 3-5 раз) зарулить вокодер на плавающей точке?
Нельзя.
Цитата(sigmaN @ Apr 3 2008, 14:21) *
И вообще, каков overhead, так сказать, FP операций на проце без FPU?
Примерно два порядка.
Цитата(sigmaN @ Apr 3 2008, 14:21) *
Страдает ли точность вычисления?
Относительно чего?
Цитата(sigmaN @ Apr 3 2008, 14:21) *
Что нужно для подобных "извращений"?
Быть "извращенцем".
Цитата(sigmaN @ Apr 3 2008, 14:21) *
Может быть есть какая-то библиотека виртуального FPU, так сказать?
DSP Техас 55 серии.
Библы есть какие-то, конечно, в т.ч., и стандартные. Только зачем они Вам? Компилятор плывучку поддерживает и для целочисленных DSP, а для нормальной плавающей точки нужно брать и процессор соответствующий.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Apr 3 2008, 17:13
Сообщение #3


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Цитата(Stanislav @ Apr 3 2008, 17:59) *
Нельзя.
Примерно два порядка.
Относительно чего?
Быть "извращенцем".
Библы есть какие-то, конечно, в т.ч., и стандартные. Только зачем они Вам? Компилятор плывучку поддерживает и для целочисленных DSP, а для нормальной плавающей точки нужно брать и процессор соответствующий.


Ясно всё.
В общем нужно детальнее разбираться в алгоритмах работы нужных мне фич и не обращать внимание на плывучку, как вы говорите.
Точность Относительно чего? Ну я имел ввиду относительно DSP с FPU. Но, понятно, вопрос дурацкий на самом делеsmile.gif

А можно какие-нибудь подсказки по методике перевода алгоритма на целочисленные вычисления?
Я, честно говоря, пока четко себе не представляю сам процесс.... sad.gif


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Apr 3 2008, 18:38
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(sigmaN @ Apr 3 2008, 21:13) *
В общем нужно детальнее разбираться в алгоритмах работы нужных мне фич и не обращать внимание на плывучку, как вы говорите.
Строго говоря, вычисления лучше делать не в целых числах, а в числах с фиксированной точкой (fixed point arithmetics). Попробуйте погуглить - найдёте немало интересного. Кроме того, на сайтах AD и TI есть много статей, аппнотов и мануалов, посвящённых данному вопросу.
Однакож, и "плавающие" DSP никто не запретил юзать. smile.gif Попробуйте-ка найти приличный fixed-point DSP за такую цену. wink.gif

Цитата(sigmaN @ Apr 3 2008, 21:13) *
...А можно какие-нибудь подсказки по методике перевода алгоритма на целочисленные вычисления?
Я, честно говоря, пока четко себе не представляю сам процесс...
Выше уже написал. Программирование в числах с фиксированной точкой требует большой аккуратности - постоянно приходится считаться с возможностью как переполнения, так и значительной потери точности на операциях разного рода. Это программист должен постоянно помнить, и нормировать и масштабировать не покладая рук. В целом, конечно, с приобретением должного опыта эти вещи будут получаться автоматически.

Есть и хитрости более "высокого порядка". Например, во многих вокодерах для параметрического оценивания используется рекурсивный алгоритм Левинсона-Дарбина, который весьма чувствителен к усечению разрядов. Заменив его на немного менее эффективный вычислительно метод LeRoux (Schur recursion), получим гораздо большую устойчивость решения для DSP с фиксированной точкой.
Кроме того, часть вычислений (не менее 10-20%) придётся писать на АСМе, потому что ЯВУ не поддерживают многие полезности архитектур DSP.

ЗЫ. А вообще, посмотрите стандарты. Алгоритмы работы вокодеров создаются обычно так, чтобы их легко можно было реализовать в целочисленном процессоре.
ЗЗЫ. А почему именно SPEEX? Послушал сэмплы на сайте speex.org - не понравилось мне звучание, особенно при малых битрейтах. Тот же G723.1 звучит заметно лучше, да и и MELP при 2400 бит/с ему точно не уступает...


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
fontp
сообщение Apr 4 2008, 06:21
Сообщение #5


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Цитата(Stanislav @ Apr 3 2008, 22:38) *
ЗЗЫ. А почему именно SPEEX? Послушал сэмплы на сайте speex.org - не понравилось мне звучание, особенно при малых битрейтах. Тот же G723.1 звучит заметно лучше, да и и MELP при 2400 бит/с ему точно не уступает...


SPEEX CELP и звучит как CELP. Как G723.1 на 5.3 кб/cек. А MELP звучит конечно великолепно для 2.4кб/сек, но в целом так себе, если с потоком не париться

В варианте VBR SPEEX по идее должен, как говорят авторы, звучать лучше большинства стандартных.
Верю. Есть правда и стандарты VBR - тот же G726.2 AMR-NB

C другой стороны переменный битовый поток порождает свои проблемы - с тем же буфером джитера и всё такое. SPEEX "просто сказка" в том смысле, что там есть много чего нахаляву. Дело не только в том, что он open source, но и в том, что там много всяких дополнительных вкусностей. На вкус и цвет..., пусть расцветают все цветы..., у SPEEX есть тоже свои достоинства

Потом речь идёт не о том, чтобы "сделать", а о том, чтобы портировать готовое. Т.е. на С и если говорить о sPEEX vbr - то во float.

Во float по нормальному, вообще-то лучше использовать float процессор. И действительно, стандартный IEEE float тянет примерно два порядка быстродействия на процессоре FIXED
Или пользоваться суррогатными типами если нужно сделать за так и быстро :-) Тянет примерно один порядок
Пацан спросил-пацан ответел :-)
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Apr 4 2008, 07:30
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(fontp @ Apr 4 2008, 10:21) *
SPEEX CELP и звучит как CELP. Как G723.1 на 6.3 кб/cек.
Не знаю, может, сэмплы неудачные, но по мне, так SPEEX 6 кб/с звучит значительно хуже G 723.1 5.3 кб/с.

Кроме того, G723.1 - это не CELP, которым, как известно, является FS-1016, и SPEEX очень похож на него. У G723.1 формирование адаптивной кодовой книги производится иным способом.


Цитата(fontp @ Apr 4 2008, 10:21) *
...А MELP звучит конечно великолепно для 2.4кб/сек, но в целом так себе, если с потоком не париться
Мне показалось, что никак уж не хуже SPEEX на нижнем битрейте.

Цитата(fontp @ Apr 4 2008, 10:21) *
В варианте VBR SPEEX по идее должен, как говорят авторы, звучать лучше большинства стандартных.
Интересно, а за счёт чего он будет звучать лучше, скажем, того же FS-1016?
Ну, а на VBR можно переделать любой вокодер. С уменьшением устойчивости к ошибкам передачи, естественно.

Цитата(fontp @ Apr 4 2008, 10:21) *
...C другой стороны переменный битовый поток порождает свои проблемы - с тем же буфером джитера и всё такое. SPEEX "просто сказка" в том смысле, что там есть много чего нахаляву. Дело не только в том, что он open source, но и в том, что там много всяких дополнительных вкусностей. На вкус и цвет..., пусть расцветают все цветы..., у SPEEX есть тоже свои достоинства
С этим спорить не буду. Нахаляву оно, конечно, слаще...
Не подумайте, что я отношусь неодобрительно к SPEEX проекту - наоборот, считаю его очень полезным. Только вот "до кондиции" ему ещё далековато...

Цитата(fontp @ Apr 4 2008, 10:21) *
Потом речь идёт не о том, чтобы "сделать", а о том, чтобы портировать готовое. Т.е. на С и если говорить о sPEEX vbr - то во float.
Ага, и при этом головой абсолютно не думать. Лафа, паньмаешш, мечта "имбедецила". biggrin.gif

Цитата(fontp @ Apr 4 2008, 10:21) *
...Или пользоваться суррогатными типами если нужно сделать за так и быстро :-) Тянет примерно один порядок.
А один порядок - это сколько?
По-моему, даже любой суррогатный тип уменьшит быстродействие DSP на типовых операциях значительно более 8-10 раз.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
fontp
сообщение Apr 4 2008, 07:52
Сообщение #7


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Цитата(Stanislav @ Apr 4 2008, 11:30) *
Не знаю, может, сэмплы неудачные, но по мне, так SPEEX 6 кб/с звучит значительно хуже G 723.1 5.3 кб/с.

Кроме того, G723.1 - это не CELP, которым, как известно, является FS-1016, и SPEEX очень похож на него.


Мне показалось, что никак уж не хуже SPEEX на нижнем битрейте.

Интересно, а за счёт чего он будет звучать лучше, скажем, того же FS-1016?


С 6.3 я погорячился, исправил на 5.3 ещё до Вашего поста.
G723.1 (5.3) - это ACELP, c FS-1016 одного поля ягода. "A" в ACELP влияет на скорость поиска,
но не на размер таблицы, а значит качество звучания
Слушать SPEEX нужно в соответствующем диапазоне > 4.8. На нижнем диапазоне 2.4 его лучше вообще не слушать.

Вообще-то главным образом качество CELP зависит от того как сделан поиск по стохастической кодовой книге - с разорваной обратной связью или без разорваной (разница между G729 и G729A)
Т.е. полный перебор или декомпозиция "переборов"
При одинаковых битрейтах качество зависит ещё от тщательности и развесистости векторного квантования.Не знаю уж, где оно лучше исполнено.
А так всё примерно одинаково (FS1016, SPEEX, G723/1 - 5.3) - линейные предсказания, спектральные пары, кодовые книги и т.д. Примерно одна фигня

Цитата(Stanislav @ Apr 4 2008, 11:30) *
А один порядок - это сколько?
По-моему, даже любой суррогатный тип уменьшит быстродействие DSP на типовых операциях значительно более 8-10 раз.


Да ладно. Посмотрите как написано в FastFloat16 в соответствующем EE185 для BF
Мантиссы умножил, порядки сложил - вот и умножение
Нормализовал операнды к большему порядку, сложил мантиссы - вот и сложение
Или деление. Фигня. Нормализация и целочисленное деление.
Нормализация у BF - это две операции, норм и шифт. На ADSP2105, понятно, ничего не получится, нет там аппаратной нормализации :-)
Всё инлайн. Без проверок переполнения и потери точности. В 10 раз даже много.
Нет, ну за три такта тоже не получится, конечно
Относительная точность - лучше 10**-4. Но это относительная точность, не абсолютная, как у fixed16.
Практически всегда достаточно такой, чего нельзя сказать про fixed16
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sigmaN   Операции с плавающей точкой без FPU   Apr 3 2008, 10:21
- - fontp   Можно, только не в 3-5, а скорее раз 8-10 Для этог...   Apr 3 2008, 10:29
|- - sigmaN   Цитата(fontp @ Apr 3 2008, 13:29) Можно, ...   Apr 3 2008, 12:57
|- - fontp   Цитата(sigmaN @ Apr 3 2008, 16:57) Да уж....   Apr 3 2008, 13:33
|- - DRUID3   Цитата(fontp @ Apr 3 2008, 16:33) Если ни...   Apr 3 2008, 14:24
|- - fontp   Цитата(DRUID3 @ Apr 3 2008, 18:24) Я ещ...   Apr 3 2008, 14:31
|- - sigmaN   Цитата(fontp @ Apr 3 2008, 17:31) Он хоче...   Apr 3 2008, 14:54
|- - DRUID3   Цитата(fontp @ Apr 3 2008, 17:31) Он хоче...   Apr 3 2008, 14:58
|- - Stanislav   Цитата(fontp @ Apr 4 2008, 11:52) С 6.3 я...   Apr 4 2008, 10:50
|- - fontp   Цитата(Stanislav @ Apr 4 2008, 14:50) Есл...   Apr 4 2008, 11:15
- - sigmaN   Господа, ну послушайте не сэмплы с сайта, которые ...   Apr 4 2008, 08:50
|- - fontp   Цитата(sigmaN @ Apr 4 2008, 12:50) Господ...   Apr 4 2008, 09:10
- - sigmaN   Сэмплы MELPe-PLUS Даааа, послушал я MELPe-Plus 4...   Apr 4 2008, 19:35
- - Degun   Кто пробовал для DSP фирмы Texas Instruments серии...   Apr 21 2008, 17:51
|- - fontp   Цитата(Degun @ Apr 21 2008, 21:51) Кто пр...   Apr 22 2008, 07:21
|- - rifch   Цитата(fontp @ Apr 22 2008, 11:21) Нужна ...   Apr 24 2008, 13:33
|- - fontp   Цитата(rifch @ Apr 24 2008, 17:33) Сделал...   Apr 24 2008, 13:39
|- - Degun   Цитата(fontp @ Apr 24 2008, 17:39) Обёртк...   Apr 25 2008, 06:08
|- - fontp   Цитата(Degun @ Apr 25 2008, 10:08) А разв...   Apr 25 2008, 07:16
|- - Degun   Цитата(fontp @ Apr 25 2008, 11:16) Так че...   Apr 25 2008, 12:49
- - Andrew32768   ... а если переписать этот класс с использованием ...   Jun 17 2008, 13:37
- - fontp   Цитата(Andrew32768 @ Jun 17 2008, 17:37) ...   Jun 17 2008, 14:00
- - Andrew32768   Цитата(fontp @ Jun 17 2008, 20:00) Как эт...   Jun 17 2008, 14:18
- - fontp   Цитата(Andrew32768 @ Jun 17 2008, 18:18) ...   Jun 17 2008, 14:45


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

 


RSS Текстовая версия Сейчас: 5th August 2025 - 21:28
Рейтинг@Mail.ru


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