Свежий номер №41 (370) / Не спи - проворонишь диэспи
 
Андрей Волов, volov@ippe.obninsk.com 22.11.2000


 
<< Страница 1

Страница 1
Страница 2
Выбор

Есть два пути выбора DSP. Первый начинается с выбора оптимального соотношения стоимости/эффективности DSP для конкретной задачи, после чего создается программное обеспечение, вручную или путем использования подходящей простой среды разработки приложений (если таковая будет найдена для выбранного DSP).

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

При штучном производстве второй путь еще как-то оправдан. При массовом - лучше идти первым путем. Очевидно, и в том и в другом случае целесообразно использовать готовые библиотеки ЦОС.

Советую воспользоваться бесплатным виртуальным «DSP Калькулятором» [3], чтобы предварительно выбрать DSP для вашей задачи. При этом следует хорошо представлять, какой величины поток входных/выходных данных будет обрабатываться. Например, для 64-канального сонара получим 25,6 Мбит/с (16 бит, 200 кГц), а для радара входной и выходной потоки вместе потянут на 160 Мбит/с (12 бит, 40 МГц).

Oценка производительности

Обычно быстродействие DSP измеряется в миллионах инструкций в секунду (МIPS). Но одна инструкция может содержать разное число команд для разных процессоров. При измерении производительности в миллионах операций в секунду (MOPS) или миллионах операций с плавающей запятой в секунду (MFLOPS) понятие «операция» порой трактуется по-разному. Иногда для сравнения используется MMACS (миллионы умножений/сложений в секунду), но при таком подходе не учитывается, как вводятся блоки данных и обновляются указатели, как выполняются параллельные функции и др. Например, если сравнить процессоры TMS320C6202 (250 МГц) и TMS320C549 (120 МГц), то соотношение по МIPS составит примерно 17:1, а по MMACS - примерно 4:1. При этом соотношение по скорости вычислений составит около 2:1 для фильтра и ~8:1 для быстрого преобразования Фурье [1].

Реальная производительность DSP зависит от особенностей конкретной прикладной задачи (программы)! Грубо говоря, не исключено, что для фильтрации будет оптимален один DSP, для вычисления БПФ - другой, а для выполнения некой специфической задачи - третий.

В сравнении производительности при выполнении некой практической задачи таится другая опасность. Например, при декодировании АС-3-звука 39% ресурсов уходит на обратное преобразование косинусов (IDCT), 11% - на нормировку, 25% - на блочно-оконную предобработку и 25% - на остальные подзадачи [1]. Поскольку каждый DSP в рамках той или иной подзадачи программируется по-своему, то получаем сравнение искусства программиста, а не производительности процессора.

Таким образом, для оценки производительности целесообразно использовать комплексный подход, оценивая скорость выполнения нескольких элементарных базовых (kernel) задач.

Азбука DSP: цифровой фильтр

Специфику работы DSP легче понять, если в качестве примера рассмотреть алгоритм цифрового фильтра. Возьмем FIR - Finite Impulse Response (или, по-русски, КИХ) фильтр, как наиболее простой. Из названия следует, что фильтр имеет конечно-импульсную характеристику, то есть его отклик на мгновенное воздействие ограничен во времени. Амплитудно-частотная характеристика (АЧХ) фильтра неизбежно будет отличаться от идеальной, особенно на границах рабочей полосы фильтра, как бы мы ни пытались подобрать весовые коэффициенты. Желающим поупражняться в конструировании цифровых фильтров рекомендуем скачать бесплатную (по крайней мере, до 1 декабря) программку, зарегистрировавшись по адресу www.techonline.com/analog/2192.htm  [4].

Отклик фильтра в момент времени t вычисляется следующим образом (для прозрачности запишем на «школьном» Паскале):

Y[t]:=0;

for i:=1 to N do Y[t]:=Y[t]+W[i]*X[t-i];

где X[i] - исходный сигнал, W[i] - весовые коэффициенты.

Каждый раз для получения одного значения на своем выходе некаузальный фильтр использует предысторию сигнала в пределах N отсчетов. Поэтому при поступлении очередного отсчета приходится переставлять элементы массива X, сдвигая их на один влево и отбрасывая уже не нужный первый элемент массива. Не влезая в дебри, замечу: эта процедура на DSP отъедает значительно меньшую часть вычислительных ресурсов, чем на GPP.

Нетрудно прикинуть, что для стереосигнала  [5] с частотой дискретизации 44100 Гц вычисление каждого выходного значения фильтра должно осуществляться (в реальном времени) в течение интервала между отсчетами: 1/44100/2=~11 мкс. Для N=128 (чем больше, тем точнее фильтр будет вырезать ненужные частотные составляющие) получаем 128 умножений плюс 128 сложений, то есть очень приличную задачку, Рис. 4. Спецпроцессор БПФкоторая может стать не по зубам многим хваленым GPP.

Кстати, для подавления эха в телефонных линиях используется адаптивный FIR-фильтр, в котором весовые коэффициенты постоянно обновляются (подстраиваются) согласно алгоритму LMS. В этом случае добавляется как минимум N+1 сложений и N умножений.

При кодировании-сжатии стереозвука число одновременно задействуемых фильтров может достигать 32. Правда, это простые полосовые фильтры с некоторым проникновением частотных компонентов в рабочие области частот соседних фильтров, так что вычислений не столь много, и самым крутым GPP «сам бог велел» успевать делать это в реальном времени.

Итак, FIR-фильтр - это базовая задача цифровой обработки, в силу своей простоты не слишком подверженная влиянию особенностей алгоритмического воплощения. Поэтому добросовестные производители DSP указывают время, за которое вычисляется либо одно выходное значение фильтра, либо блок из нескольких дискрет. Также поэтому FIR-фильтр используется независимыми тестерами производительности DSP. На рис. 3 можно видеть время выполнения фильтрации разными высокопроизводительными DSP и PIII-1000. Трехкратный «тормоз» того же 100-мегагерцового ADSP-21160 относительно гигагерцового Pentium, по сути, нельзя считать явным проигрышем, поскольку, например, по одному DSP можно посадить рядышком с АЦП на каждый канал, а вот с «пнем» такой фокус не пройдет: вентиляторов не напасешься. Целочисленным 250-мегагерцовому TMS320C6202 и трехсотке от Siemens удалось обскакать многоуважаемый GPP, но, опять-таки, суть не в скорострельности как таковой, а в том, Рис. 5а. DSP для PCIчто каждый процессор должен заниматься своим делом.

БПФ: от тестов к практике

БПФ стало базовой задачей цифровой обработки сигналов благодаря своей фундаментальности и массовому применению. Не буду утомлять рассказом про так называемые бабочки самого алгоритма БПФ (хотя эти бабочки определяют программирование алгоритма), отмечу только, что обработка данных происходит исключительно блоками. Например, накопили блок из 1024 отсчетов, после чего вычислили БПФ, продолжая параллельно накапливать следующий блок дискрет, и т. д. При этом сдвижка в реальном времени между блоками на одну дискрету практически не используется в «мирной» обработке сигналов из-за высокой требовательности к вычислительным ресурсам.

Зависимость скорости вычислений от объема блока - нелинейная, так что, например, для 2048 отсчетов время вычислений возрастет не в два раза (относительно 1024 отсчетов), а больше  [6]. Тем не менее БПФ Рис. 5б. DSP для CompactPCIиспользуется во всех «правильных» тестах по оценке производительности DSP.

Поскольку лишь некоторые DSP заточены под БПФ-вычисления, в высокопроизводительных системах реального времени применяются комбинации различных DSP. Так, векторный LH9124 от Sharp наиболее подходит для выполнения интенсивных математических вычислений при высокоскоростном вводе данных. В частности, фирма Sundance MultiProcessor Technology [4] производит почти не устаревшую «милитаристскую» плату SMT311 (512 Кбайт быстрой SRAM, 32 Кбайт ROM начальной загрузки, 12795 долларов), которая имеет интегральный двойной конструктив на основе TMS320C44 и LH9124 и оптимизирована для БПФ (1024 точки комплексного БПФ за 80 мкс). Следует отметить, что SMT311 (см. рис. 4) был спроектирован именно для обработки гигантских потоков данных, параллельной обработки больших массивов, в частности для радаров и гидроакустики. SMT311 можно подключать к несущей плате модели SMT301 (размер «C», восемь TIM-слотов, 4795 долларов). Пусть цены вас не пугают, высокая Рис. 5в. DSP для VMEнадежность (особенно конструктива VME) в жестких условиях эксплуатации того стоит.

Специализированные БПФ-процессоры являются «закрытой» продукцией; самый быстродействующий из известных - это, пожалуй, DSP-24, который вычисляет 1024 точки комплексного БПФ за 21 мкс [5]. Другой DSP общего назначения - ADSP 2106x SHARC (40 МГц, 560 Мбит/с общий ввод-вывод, 4 Мбайт, расширенная точность 40 бит, поддержка многопроцессорности) - имеет быстродействие 385-510 мкс для 1024 комплексных точек и 260 мкс для реальных чисел. Еще один высокоэффективный DSP с плавающей запятой - TMS320C67 (167 МГц, ~400 Мбит/с, 1 Мбайт, 64 бит, двойная точность) - вычисляет 1024 точки за 109 мкс, тогда как TMS320C6201 (с фиксированной точкой) - за 70 мкс [6]. [7] Последние используются ведущими российскими фирмам при производстве DSP-модулей для шин PCI, CompactPCI и VME (рис. 5). Так что, расплатившись родными деревянными, хочешь - втыкай DSP в «домашнюю» персоналку, а хочешь - в «промышленный» крейт со встраиваемым host-процессором. Альянс одного GPP и нескольких DSP - вот золотая середина!


DSP

Цена, S

Производительность

Частота, МГц

Арифметика

Примечание

TMS320C6712

~10
(25 тыс. шт.)

600 MFLOPS

100

Плавающая
точка

Производительность достаточна для кодирования шести каналов ААС-звука в реальном времени

ADSP-2199

~5
(25 тыс. шт.)

320 MIPS

160

16 бит

Голосовые технологии, подавление эха, модемы, факсы

TMS320DSC21

<15
(100 тыс. шт.)

100-500 MIPS

?

?

Объединяет ядра ARМ7, C54X и два сопроцессора обработки изображений. Используется в цифровой фотокамере Hewlett-Packard PhotoSmart 315 (рис. 6)

CS49300

15
(10 тыс. шт.)

?

?

?

Универсальный DSP-аудиодекодер: 24 бита, 192 кГц, до восьми каналов AC3/THX EX, DTS, AAC, MPEG, PCM, LMP


Вместо заключения

Перефразируя знаменитого режиссера, нередко после прочтения некого опуса хочется воскликнуть: «О чем Рис. 6. И для фотоаппаратастатья? Да ни о чем…»

Так о чем же все-таки эта статейка? Да простят меня читатели за «галоп по Европе», но желание приоткрыть мир DSP, который существует и бурно развивается независимо от представления о нем массовых пользователей, было абсолютно искренним.

Реальная тенденция такова, что каждый из нас неизбежно столкнется с DSP: как покупатель готовой продукции и/или ее разработчик.

Безусловно, для некоторых читателей информация, изложенная в статье, не станет открытием. Но если кто-то придет к выводу, что при выборе своей будущей специальности или при создании российского продукта на уровне мировых стандартов ему не обойтись без DSP, то цель статьи будет достигнута. Кстати, взрывной спрос на DSP-программистов более чем вероятен, а уж «за бугром» и подавно.

Напоследок в полной уверенности скажу: кто сегодня прозевает DSP, того завтра опередят более мудрые конкуренты.

Источники

[1] www.bdti.com.

[2] www.3L.com/tech/ws32/boards.htm.

[3] www.spectrumsignal.com.

[4] www.sundance.com.

[5] www.dsparchitectures.com.

[6] www.orc.ru/~insys/dspcard/adp6267pci.htm.

[7] С. Сорокин. Windows// Современные технологии автоматизации №2, 1997, с. 18.

[8] www.analog.com/publications/whitepapers/products/soundbls.html.


4 (обратно к тексту) - Позволяющую вдобавок рассчитывать БИХ-фильтры и тут же проверять импульсные, фазовые, амплитудные и иные характеристики синтезированного фильтра. - Г.Б.
5 (обратно к тексту) - И, соответственно, двух каналов.
6 (обратно к тексту) - Наряду с вычислением БПФ двух последовательностей длиной 1024 отсчета дополнительно потребуется 2048 умножений. - Г.Б.
7 (обратно к тексту) - Ради интереса сравните с данными из следующей статьи. - Г.Б.

 
<< Страница 1

Страница 1
Страница 2


Андрей Волов
volov@ippe.obninsk.com
 


<< Ключи и отмычки DSP
Все материалы номера
Незадача >>