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

 
 
 
Reply to this topicStart new topic
> DSP. Умножения vs сравнения в конвейере
Grizzzly
сообщение Feb 18 2017, 17:28
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Стоит задача выбора алгоритма для реализации на цифровом сигнальном процессоре. В первом 3500 умножений и 64 сравнения, еще около 5000 сложений. Во втором умножений порядка 500, 5400 сложений и 2100 сравнений. То есть операций умножения и сложения меньше, а вот сравнений больше в 30 с лишним раз. Суммарное число операций при этом немного меньше, чем в первом. Насколько я понимаю, все эти операции выполняются за такт, но при выполнении условных операций будет останавливаться конвейер. Эти сравнения нужны для выбора максимального элемента из 16 штук в массиве, таких массивов много.
Для того чтобы получить максимальное быстродействие, лучше использовать алгоритм с меньшим числом сравнений, но несколько большим суммарным числом операций?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 18 2017, 21:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Grizzzly @ Feb 18 2017, 23:28) *
Насколько я понимаю, все эти операции выполняются за такт, но при выполнении условных операций будет останавливаться конвейер.

С чего Вы взяли?
Насколько я помню ассемблер C55xx там есть команда "нахождение максимального/минимального из двух".
Выполнялась за такт (ну если конечно не было каких-то stall-ов).
Важнее знать - можно-ли совместить умножения со сложениями. Тогда их можно выполнить за одну MAC.
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Feb 18 2017, 22:17
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Цитата(jcxz @ Feb 19 2017, 00:48) *
С чего Вы взяли?

Спасибо за ответ. Почему-то казалось, что сравнение будет приводить к такому. Неправ.

По поводу совместных умножений и сложений - в первом алгоритме умножаются матрицы 6х8 на вектора 8х1, вычисляются евклидовы расстояния. Значит, можно объединить.
Получилось, что около 3500 MAC + 64 сравнения ~ 3500
Во втором алгоритме тоже евклидовы расстояния, а далее итерационно происходят суммирования и сравнения: 512 MAC + 4900 сложений и 2100 сравнений ~ 7500
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 19 2017, 06:30
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Grizzzly @ Feb 19 2017, 04:17) *
Получилось, что около 3500 MAC + 64 сравнения ~ 3500
Во втором алгоритме тоже евклидовы расстояния, а далее итерационно происходят суммирования и сравнения: 512 MAC + 4900 сложений и 2100 сравнений ~ 7500

Всё сильно зависит от процессора и компилятора. DSP это не ARM, в нём много сложных команд, выполняющих много действий. В каждом DSP свой набор таких команд. И результат реализации заранее не очевиден.
Попробуйте реализовать оба этих способа и посмотреть что получится.
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Feb 19 2017, 08:09
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Цитата(jcxz @ Feb 19 2017, 09:30) *
Всё сильно зависит от процессора и компилятора. DSP это не ARM

Как раз до этого только под ARM программировал.
Посмотрел на будущее еще SIMD и параллельные MAC операции на C66xx и подобных - это вообще отдельная тема, у каждой модели свои регистры. Пока не реализуешь, даже примерно не поймешь. Спасибо, буду пробовать.
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Feb 19 2017, 12:00
Сообщение #6


I WANT TO BELIEVE
******

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



И еще наивная реализация на Си будет существенно отличаться по скорости с продуманной реализацией на asm. Где как раз вы и сможете применить все эти редкие инструкции с максимальным эффектом.
Компиляторы конечно умнеют, а последний раз я с DSP имел дело лет 7 назад, но всё-же тогда FIR фильтр реализованный на Си проигрывал asm реализации во много раз(больше 2х).


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
bve
сообщение Feb 20 2017, 20:34
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 316
Регистрация: 20-02-05
Из: Ленинградская обл.
Пользователь №: 2 765



Как уже говорилось,многое зависит от самого сигнальника, а также от Вашего понимания термина "сравнение"!
Если это выбор минимального/максимального, а также клиппирование, то, например, у ADSP21xxx есть специальные
команды, выполняемые за один такт, а если после сравнения надо сделать несколько операций - то может потребоваться
переход к другому участку кода - а это уже потери....

Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Feb 20 2017, 21:31
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Ясно. Спасибо. Изначально просто хотелось прикинуть, имея перд глазами таблички с числом операций по алгоритмам, что же будет выгоднее. Теперь осознал, что умозрительно не получится заранее всё учесть.
P.S. У меня цепочка сравнений из 15 штук для поиска максимума в массиве из 16 элементов. Так что это выбор максимума.
Go to the top of the page
 
+Quote Post

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

 


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


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