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


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

Страница 2
 >>

[i37020]

Присмотревшись к сегодняшним видео- и аудиокартам и даже - жестким дискам, нетрудно обнаружить, как по-хозяйски на многих из них обосновались «особенные» микропроцессоры, благодаря которым видеоизображение стремительно приблизилось к естественному, звук приобрел осязаемую объемность, а жесткие диски демонстрируют невиданную скорость обмена данными. Вместе с тем большинство из нас, погружаясь в многомерную виртуальность видео и звука, и не задумывается о тайной сути происходящих явлений…

Упомянутые микропроцессоры - одна из разновидностей (или отпочковавшаяся ветвь) процессоров цифровой обработки сигналов, известных во всем мире под аббревиатурой DSP (Digital Signal Processor), а у нас как ЦОС-процессоры  [1]. Спрос на DSP постоянно растет (~35% в год в странах цивилизованного капитализма), а цена неумолимо снижается - благодаря их широкому применению в следующих областях:

  • сотовая связь;

  • цифровое радиовещание и телефония;

  • цифровые видеокамеры, принтеры высокого разрешения, факсимильные аппараты и т. п.;

  • кодирование/декодирование аудио- и видеосигналов (плейеры DVD);

  • промышленные системы контроля, управления и диагностики.

Везде, где надо обрабатывать потоки информации в строго оговоренный и заранее известный срок, без малейшей заминки, то есть в реальном времени, используются DSP.

DSP пришли из мира военных компьютерных систем. Отсюда и наследование качеств, свойственных операционным системам Рис. 1. Смена поколения DSP-процессоровжесткого реального времени (ОСРВ), в которых любое промедление смерти подобно, а за «шаг влево, шаг вправо» по своевольному дележу ресурсов - расстрел. Многие ОСРВ имеют очень скромные аппетиты (и масштабируются при этом от автономных ПЗУ до многопользовательских сетевых приложений) и могли бы неплохо работать на персональных компьютерах, которые ныне угрожающими темпами перекочевывают живьем из офисов на свалку.

Не удивительно, что DSP можно, образно говоря, воткнуть куда угодно: они крайне неприхотливы к окружающему «железу» и готовы функционировать под управлением «лично-ПЗУшного» кода. Производители выпускают немало гибридов, объединяющих DSP и микроконтроллер, что фактически дает бортовой микрокомпьютер.

Самые характерные черты DSP:

  • рекордная скорость выполнения определенных вычислений;

  • компактность и малое энергопотребление;

  • благоприятное соотношение цена/производительность;

  • способность к запараллеливанию с DSP-собратьями для наращивания производительности.

С другой стороны, усовершенствование обычных процессоров (GPP - General Purpose Processor) не обходится без заимствования решений, типичных для DSP. Лучший пример - появление технологии MMX, содержание которой сводится к 57 инструкциям по обработке сигналов и видео. При этом полезно иметь в виду, что ни одна из «виндовых» операционных систем не является ОС реального времени, хотя порою обладает некоторыми чертами таковой.

DSP or QPP?

Вопрос, что лучше: DSP или GPP, возникает не из праздного любопытства. В более корректной постановке он звучит так: когда применять DSP, а когда GPP?

Конечно, простому пользователю чаще приходится выбирать лишь между полным апгрейдом своей ненаглядной персоналки или частичным апгрейдом вкупе с очередным приобретением какой-нибудь платы типа аппаратного декодера DVD  [2].

А вот кому придется поломать голову над данным вопросом, так это студентам АСУ и зрелым программистам-системотехникам, которым предстоит разрабатывать технику XXI века. Кто знает, может быть, завтра кому-то из нас суждено придумать-создать нечто, чтобы реакторы ни с того ни сего не взрывались, газо- и нефтепроводы не лопались, субмарины не тонули и системы пожарной сигнализации не изводили ложными срабатываниями настолько, чтобы их «вырубали из розетки».

По большому счету, сравнивать в лоб DSP и GPP - все равно что сравнивать сверкающий хромированным кенгурятником монстроподобный джип-вседорожник с молниеносным болидом Формулы-1 или с экономично-резвым шоссейно-переднеприводным «народным вагоном». У каждого свое предназначение, своя ниша рынка, свои преимущества и недостатки. Хотя существуют и смежные области, в которых DSP и GPP еще посоревнуются за звание абсолютного лидера продаж. Какие именно? Не будем спешить с предположениями.

Справедливости ради отметим, что спектр DSP чрезвычайно широк: от скромной, ограниченной по функциям целочисленной «мелюзги» до всеядных программируемых ультра-«кремней». Производителей DSP в мире поболее, чем производителей GPP: Analog Devices, Texas Instruments, Motorola, Siemens, Hitachi, Lucent Technologies, IBM, DSP Group, Mentor Graphics, Zoran, Cirrus Logic… Линейка продукции одной только Texas Instruments насчитывает больше Рис. 2. Два мира, две архитектурыдесятка процессоров. Тактовая частота - от 30 до 300 МГц, поддерживаемая память - от 64 Кбайт до 4 Гбайт. Цена варьируется от пяти до более сотни «вечнозеленых» при закупочной партии в 10 тыс. штук.

Сущности

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

Первая особенность DSP - способность выполнять операцию умножения с накоплением суммы, часто называемую MAC (от Multiply-Aссumulate), за один цикл (single instruction cycle). Вторая особенность всех DSP - способность совершать несколько обращений к памяти опять-таки за один цикл. Третья особенность - генерация адресов регистров параллельно с выполнением арифметических операций. Все перечисленное предопределило тяготение к гарвардской архитектуре, согласно которой программы и данные хранятся в раздельных запоминающих устройствах, и процессор может одновременно обращаться к двум банкам памяти через две различные шины. Тогда как обычные процессоры, имеющие фон-неймановскую архитектуру, требуют дополнительных циклов, в частности, чтобы генерировать адреса, необходимые для загрузки операндов. А операнды не могут быть загружены, пока не будут выполнены инструкции, поскольку есть только одна шина данных.

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

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

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


Одной из первых попыток превращения «окошек» в ОС реального времени было создание IA-SPOX, берущей свое начало от SPOX - ОСРВ, признанной большинством изготовителей DSP. IA-SPOX представляет собой набор виртуальных драйверов, которые работают совместно с ядром Windows. Intel сделала ставку на IA-SPOX, чтобы реализовывать мультимедиа-функции программным путем (так называемые Native Signal Processing) без использования DSP [7]. Тогда Microsoft, очевидно, сделала предложение, от которого Intel «не смогла отказаться», и в результате мир заполонили ММХ-процессоры под управлением Windows, развивающейся традиционным путем. Интересно, какие шаги предпримут законодатели мод теперь, ведь справедливый натиск DSP становится все ощутимее? Недаром ставший стандартом де-факто Sound Blaster, в котором активно используется DSP-технология, ассоциируют с троянским конем, проложившим DSP путь на материнские платы [8].


Нюансы программирования

Фундаментальный вопрос: как программируемый DSP будет… программироваться!

Удивительно, но большая часть программ для DSP все еще пишется на ассемблере. По крайней мере, любой листинг на Си пестрит ассемблерными вставками. Задачи, требующие применения DSP, часто накладывают взаимоисключающие требования, и программисты ограничены в использовании трансляторов (сред разработки), генерирующих «медленный» ассемблерный код. Они вынуждены оптимизировать код вручную, минимизируя время его выполнения и приводя размеры программ к приемлемым значениям, что особенно актуально в крупносерийной продукции, где разница в стоимости более производительного DSP или дополнительного процессора может сыграть решающую роль [1].

В последнее время на рынке появляются все новые и новые среды разработки с упором на элементы графического программирования. Тут и VisualDSP от Analog Devices, и Pegasus от Jovian Systems и многие другие. Все бы хорошо, складывай и складывай кубики, как в конструкторе Лего, да код неповоротливый и длиннющий получается. Более того, может выйти «накладочка» с выбором операционной системы, АЦП или самого DSP.

Операционные системы и среды разработки

Популярная среди операционных систем реального времени VxWorks имеет большие возможности для применения нескольких процессоров. Активно внедряется специализированная ОС WiSP, основанная на VxWorks, со средой разработки Tornado, но поддержка некоторых популярных DSP в ней пока не реализована.

Необходимо отметить, что Texas Instruments и Analog Devices обеспечивают потребителей собственными инструментальными средствами разработки (Cи-транслятором, отладчиком, компоновщиком, Cи-библиотекой, математическими и DSP-библиотеками, загрузчиком), включая драйверы для WinNT и/или Рис. 3. DSP против... или Тесты быстродействия КИХ-фильтров на разных процессорахнекоторых ОС реального времени.

Имеются специальные ОС реального времени: Parallel C (теперь называемая Diamond), Virtuoso, SPOX, которые оптимизированы для DSP и даже для… Pentium (как SPOX). Одно из отличий этих OС - то, что код программы выполняется не только на главном (host) процессоре, но и на процессорах DSP целевой (target) платы. Следовательно, этот код распределен по многим различным типам памяти, обычно расположенным на DSP-платах: быстрая SRAM, медленная DRAM, внешняя ROM и энергонезависимая оперативная память. При этом необходима очень осторожная организация потоков данных между устройствами ввода-вывода, DSP и CPU. Отметим, что Windows (95 или NT) может быть установлена и функционировать на host CPU, размещенном на той же самой шине, что и платы target DSP, но не все DSP-платы поддерживают такую комбинацию без дополнительного специального программного обеспечения [2].

В случае операционной системы Diamond, Win32-сервер (драйвер связи) заботится о загрузке и старте приложений Diamond, связи между host- и target-системами, и об обслуживании запросов ввода-вывода из target-платы. Diamond - система с кросс-разработкой, загружаемая из PC-совместимого компьютера под управлением DOS/Windows, или из SPARC-системы под управлением Sun OS 4.x или Solaris 2.x. Исходные файлы хранятся, редактируются и компилируются на host-компьютере, что позволяет использовать стандартные инструментальные средства. Полезно помнить, что программирование требует наличия инструментальных средств разработки 32-битных приложений, поддерживающих Microsoft Foundation Classes.

Для простых применений, где не нужно запараллеливать несколько DSP и каждый DSP по отдельности выполняет одну простую функцию, можно обойтись без специализированной операционной системы: код для DSP просто загружается в ПЗУ на target-плате. Когда же возрастает количество и сложность задач, возлагаемых на DSP, использование ОСРВ будет оправданно, - дабы распределить ресурсы системы (оперативная память и т. д.), а также потоки обработанных и необработанных данных.

Ожидается, что в ближайшем будущем появятся очень мощные и простые в использовании среды разработки программного обеспечения для DSP в различных ОС реального времени. ОС Diamond активно поддерживается разработчиками подобных сред, но количество драйверов пока ограничено. Ходят слухи, что уже удается «полуавтоматом» генерировать коды, размер которых лишь на 25% больше кустарного.


1 (обратно к тексту) - В каждой стране, особенно с нездоровыми амбициями, DSP норовят обозвать по-своему: не удивляйтесь, если где-то услышите «цифрова обробка процессор» или что-то в этом духе.
2 (обратно к тексту) - Владельцы компьютера хуже РII-400 будут разочарованы качеством программного декодирования DVD-видео из-за дергания картинки (при быстром перемещении в кадре немелких объектов или смене крупных планов). Обладателей же Р-100 не спасет и аппаратный декодер - звук (на выходе самого декодера) при проигрывании DVD будет заикаться.
3 (обратно к тексту) - Одна из попыток преодолеть ограничения целочисленной арифметики - проект SARITH (Safe ARITHmetic). - Г.Б.

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

Страница 2
 >>


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


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