|
|
  |
DSP. Умножения vs сравнения в конвейере |
|
|
|
Feb 18 2017, 17:28
|
Знающий
   
Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748

|
Стоит задача выбора алгоритма для реализации на цифровом сигнальном процессоре. В первом 3500 умножений и 64 сравнения, еще около 5000 сложений. Во втором умножений порядка 500, 5400 сложений и 2100 сравнений. То есть операций умножения и сложения меньше, а вот сравнений больше в 30 с лишним раз. Суммарное число операций при этом немного меньше, чем в первом. Насколько я понимаю, все эти операции выполняются за такт, но при выполнении условных операций будет останавливаться конвейер. Эти сравнения нужны для выбора максимального элемента из 16 штук в массиве, таких массивов много. Для того чтобы получить максимальное быстродействие, лучше использовать алгоритм с меньшим числом сравнений, но несколько большим суммарным числом операций?
|
|
|
|
|
Feb 18 2017, 21:48
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Grizzzly @ Feb 18 2017, 23:28)  Насколько я понимаю, все эти операции выполняются за такт, но при выполнении условных операций будет останавливаться конвейер. С чего Вы взяли? Насколько я помню ассемблер C55xx там есть команда "нахождение максимального/минимального из двух". Выполнялась за такт (ну если конечно не было каких-то stall-ов). Важнее знать - можно-ли совместить умножения со сложениями. Тогда их можно выполнить за одну MAC.
|
|
|
|
|
Feb 18 2017, 22:17
|
Знающий
   
Группа: Свой
Сообщений: 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
|
|
|
|
|
Feb 19 2017, 08:09
|
Знающий
   
Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748

|
Цитата(jcxz @ Feb 19 2017, 09:30)  Всё сильно зависит от процессора и компилятора. DSP это не ARM Как раз до этого только под ARM программировал. Посмотрел на будущее еще SIMD и параллельные MAC операции на C66xx и подобных - это вообще отдельная тема, у каждой модели свои регистры. Пока не реализуешь, даже примерно не поймешь. Спасибо, буду пробовать.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|