Цифровые процессоры обработки сигналов (Лекция). Основы выбора цифровых сигнальных процессоров

Для Symbian 01.08.2019
Для Symbian

Что такое DSP?

Цифровые сигнальные процессоры (DSP, Digital Signal Processors) принимают на вход предварительно оцифрованные физические сигналы, например, звук, видеоизображение, показания температуры, давления и положения, и производят над ними математические манипуляции. Внутренняя структура цифровых сигнальных процессоров специально разрабатывается таким образом, чтобы они могли очень быстро выполнять такие математические функции, как “сложение”, “вычитание”, “умножение” и “деление”.

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

Для иллюстрации этой концепции рассмотрим приведенную ниже блок-схему, на которой показано, как цифровой сигнальный процессор используется в составе MP3 аудиоплеера. В фазе записи аналоговый звуковой сигнал поступает в систему от приемника или иного источника. Этот аналоговый сигнал преобразовывается в цифровой сигнал при помощи аналого-цифрового преобразователя и передается в цифровой сигнальный процессор. Цифровой сигнальный процессор выполняет кодирование в формат MP3 и сохраняет файл в память. В фазе воспроизведения файл извлекается из памяти, декодируется цифровым сигнальным процессором и преобразовывается при помощи цифро-аналогового преобразователя обратно в аналоговый сигнал, который может быть воспроизведен в акустической системе. В более сложном примере цифровой сигнальный процессор может выполнять дополнительные функции, например, регулировку громкости, частотную компенсацию и обеспечение интерфейса пользователя.

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

Поскольку цифровой сигнальный процессор является программируемым, он может быть использован в самых разнообразных задачах. При создании проекта вы можете написать собственное программное обеспечение или использовать программное обеспечение, обеспечиваемое компанией Analog Devices или сторонними компаниями.

Более подробную информацию о преимуществах применения цифровых сигнальных процессоров при обработке сигналов реального мира вы можете найти, прочитав первую часть статьи Цифровая обработка сигналов 101 - Вводный курс в проектирование систем цифровой обработки сигналов, которая называется “Зачем нужен цифровой сигнальный процессор?”


Что находится внутри цифрового сигнального процессора (DSP)?

Цифровой сигнальный процессор включает в себя следующие ключевые компоненты:

  • Память программ: Содержит программы, которые цифровой сигнальный процессор использует для обработки данных
  • Память данных: Содержит информацию, которую необходимо обрабатывать
  • Вычислительное ядро: Выполняет математическую обработку, обращаясь к программе, содержащейся в памяти программ, и данным, содержащимся в памяти данных
  • Подсистема ввода/вывода: Осуществляет спектр функций для интерфейса с внешним миром

Для получения подробной информации о процессорах и прецизионных аналоговых микроконтроллерах компании Analog Devices мы предлагаем вам ознакомиться со следующими ресурсами:

Цифровая обработка сигналов - это сложный предмет, и он способен ошеломить даже наиболее опытных профессионалов в области цифровых сигнальных процессоров. Здесь мы дали лишь краткий обзор, но компания Analog Devices также предлагает дополнительные ресурсы, содержащие более подробную информацию о цифровой обработке сигналов:

  • - обзор технологий и вопросы практического применения
  • Серия статей в журнале Analog Dialogue: (на англ.яз.)
    • Часть 1: Зачем нужен цифровой сигнальный процессор? Архитектуры цифровых сигнальных процессоров и преимущества цифровой обработки сигналов перед традиционными аналоговыми схемами
    • Часть 2: Узнайте больше о цифровых фильтрах
    • Часть 3: Реализация алгоритмов на аппаратной платформе
    • Часть 4: Вопросы программирования для поддержки ввода/вывода в реальном времени
  • : Часто используемые слова и их значение

Практические занятия по цифровым сигнальным процессорам являются быстрым и эффективным способом ознакомиться с применением цифровых сигнальных процессоров компании Analog Devices. Они позволят вам овладеть уверенными практическими навыками работы с цифровыми сигнальными процессорами Analog Devices через курс лекций и практических упражнений. Расписание и информацию о регистрации вы можете найти на странице Обучение и разработка.

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

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

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

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

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

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

Таблица 1. Основные производители DSP и принадлежащие им доли рынка

Компании-лидеры рынка Company Name Доля рынка DSP
1 Texas Instruments 54,3%
2 Freescale Semiconductor 14,1%
3 Analog Devices 8,0%
4 Philips Semiconductors 7,5%
5 Agere Systems 7,3%
6 Toshiba 4,9%
7 DSP Group 2,2%
8 NEC Electronics 0,6%
9 Fujitsu 0,4%
10 Intersil 0,3%
Other Companies 0,5%
Total 100,0%

Следует помнить, что производители DSP, проектируя новые микросхемы, достаточно четко позиционируют их для использования в тех или иных приложениях. Это оказывает влияние и на их архитектуру, и на быстродействие, и на оснащение процессора тем или иным набором периферийных модулей. В таблице 2 показано позиционирование DSP с точки зрения их создателей.

Таблица 2. Области применения семейств сигнальных процессоров разных производителей

Обработка видео, видеонаблюдение, цифровые камеры, 3D графика TMS320DM64x/DaVinci, TMS320C64xx, TMS320C62xx (TI), PNX1300, PNX1500, PNX1700 (Philips) , MPC52xx (Freescale)
Обработка аудио, распознавание речи, синтез звука TMS320C62xx, TMS320C67xx (TI), SHARC (Analog Devices)
Портативные медиа устройства TMS320C54xx, TMS320C55xx (TI), Blackfin (Analog Devices)
Беспроводная связь, телекоммуникации, модемы, сетевые устройства TMS320C64xx, TMS320C54xx, TMS320C55xx (TI), MPC7xxx, MPC86xx, MPC8xx PowerQUICC I, MPC82xx PowerQUICC II, MPC83xx PowerQUICC II Pro, MPC85xx PowerQUICC III (Freescale), Blackfin, TigerSHARC (Analog Devices), PNX1300 (Philips)
Управление приводами, преобразование мощности, автомобильная электроника, предметы домашнего обихода, офисное оборудование TMS320C28xx, TMS320C24xx (TI), ADSP-21xx (Analog Devices), MPC55xx, MPC55xx (Freescale)
Медицина, биометрия, измерительные системы TMS320C62xx, TMS320C67xx, TMS320C55xx, TMS320C28xx (TI), TigerSHARC, SHARC (Analog Devices)

Формат данных и разрядность

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

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

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

Конечно, можно эмулировать операции с плавающей точкой и на процессоре с целочисленной арифметикой или перейти к обработке чисел удвоенной разрядности, однако это также значительно усложняет программу и значительно снижает быстродействие.

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

Стоит заметить, что разрядность данных и разрядность команд процессоров не всегда эквивалентны.

Скорость

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

Однако проблема сравнения скорости различных DSP состоит в том, что процессоры имеют различные системы команд, и для выполнения одного и того же алгоритма разными процессорами требуется разное число этих команд. Кроме того, иногда для выполнения различных команд одним процессором требуется различное количество тактов синхронизации. В результате процессор со скоростью 1000 MIPS вполне может оказаться в разы медленнее процессора со скоростью 300 MIPS, особенно при различной их разрядности.

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

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

Существуют компании, занимающиеся анализом и сравнением процессоров по основным характеристикам, в том числе и по скорости. Лидером среди таких компаний является BDTI - Berkeley Design Technology, Inc. (www.bdti.com). В качестве примера на рисунке 1 показано сравнение по скорости современных DSP разных производителей.

Рис. 1. Пример сравнения быстродействия различных DSP с фиксированной точкой

Организация памяти

Организация системы памяти процессора влияет на производительность. Это связано с тем, что ключевые команды DSP являются многооперандными и ускорение их работы требует одновременного чтения нескольких ячеек памяти. Например, команда MAC требует одновременного чтения 2 операндов и самой команды для того, чтобы ее можно было выполнить за 1 такт. Это достигается различными методами, среди которых применение многопортовой памяти, разделение на память программ и память данных (Гарвардская архитектура), использование кэша команд и т.д.

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

Большинство DSP с фиксированной точкой, применяющиеся во встраиваемых приложениях, предполагают малый объем внутренней памяти, обычно от 4 до 256 Кбайт и невысокую разрядность внешних шин данных.

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

Удобство разработки приложений

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

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

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

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

Отладку готовых программ можно производить либо на аппаратном эмуляторе готовой системы, либо на программном симуляторе. Обычно отладка на симуляторе несколько проще с точки зрения используемой аппаратуры, однако она не позволяет выявить все возможные ошибки. Почти все производители обеспечивают разработчиков и симуляторами, и эмуляторами своих DSP. Почти все современные DSP поддерживают внутрисхемную эмуляцию в соответствии со стандартом IEEE 1149.1 JTAG. При использовании технологии JTAG мы переходим от эмуляции процессора внешним устройством к непосредственному контролю над процессором при выполнении программы, что позволяет значительно увеличить степень соответствия макета реальному устройству и, следовательно, повысить надежность процесса отладки.

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

Энергопотребление

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

Оценка потребления мощности является не простой задачей, так как эта величина варьируется в зависимости от выполняемых процессором задач. К сожалению, большинство производителей публикуют только «типичное» и «максимальное» потребление, а что понимается под этими определениями, не всегда ясно. Исключением является компания Texas Instruments, которая указывает потребление мощности в зависимости от типа команды и конфигурации процессора.

Стоимость

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

Методология выбора процессора

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

Например, для реализации приложения для нас в первую очередь важны скорость, цена, эффективность работы памяти и энергопотребление. Мы определили основных претендентов, среди которых DSP с ядром C64x и C64x+ от Texas Instruments и TigerSHARC от Analog Devices. На рисунке 2 показан граф сравнительных характеристик этих процессоров по критериям скорости, стоимости, энергопотребления и удобству средств разработки.


Рис. 2. Диаграмма для выбора DSP

Теперь приоритеты. Если нам в первую очередь необходима высокая скорость и низкая цена, мы выбираем Texas Instruments. Если мы конструируем мобильное устройство и нам нужно низкое энергопотребление, причем мы готовы пожертвовать скоростью, берем Analog Devices. Не исключена вероятность того, что выбранные процессоры окажутся очень близки по ключевым параметрам. В этом случае выбор будет определяться некритичными характеристиками: доступностью средств отладки, предыдущим опытом разработчика, доступностью компонентов и т.д.

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

Литература

  1. Jeff Bier, Choosing a Processor: Benchmarks and Beyond (S043), Berkeley, California: Berkeley Design Technology, Inc., USA, 2006.
  2. Choosing a DSP Processor, Berkeley, California: Berkeley Design Technology, Inc., USA, 2000.

Пока все прогрессивное (читай — зависящее от ПК) человечество замерло в затянувшемся ожидании Merced и прочих диковинных, обещающих невиданные доселе показатели производительности процессоров, малочисленная, но чрезмерно любопытная часть несознательных индивидуумов настойчиво ищет возможности получения сверхпроизводительности компьютеров уже сегодня. Индивидуализм этого "партизанского движения", естественно, подразумевает весьма скромные объемы финансирования, что исключает популярность в "партизанской среде" еще не окончательно родившегося, но уже слишком дорогого Merced. Страсти "по мощи" подогреваются запаздыванием с выходом на рынок многообещающей Sony Playstation II, тотальным снижением цен на клоновые RISC-процессоры 64-битового семейства MIPS и, наконец, ставшим уже отчетливым кризисом архитектуры ПК IBM PC. В этой ситуации более чем странной кажется малозаметность расположившегося отдельно в процессорной "табели о рангах" обширного семейства недорогих высокопроизводительных микропроцессоров, именуемого DSP. Представители "DSP-клана" в области процессорной архитектуры концентрируют лучшие (ожидающиеся в далеком будущем в "настольных" CPU) решения, а по соотношению "потребляемая мощность/производительность" (милливатт/MIPS) вообще кажутся настоящими "инопланетянами".

DSP и DSP — понятия разные

Инженерный английский — неиссякаемый источник "разбирательств" между страстными любителями аббревиатур. Терминология, связанная с предметом нашего обсуждения, не является исключением, посему попытаюсь сразу избавить читателя от возможных "подводных камней". Digital Signal Processing (DSP) — цифровая обработка сигналов — огромная междисциплинарная область науки, находящаяся "на стыке" более десятка сложнейших научных направлений. Digital Signal Processor (цифровой сигнальный процессор — ЦСП), предмет нашего обсуждения, — более "приземленное" понятие, но, увы, являющееся "овеществлением" разработок из области цифровой обработки сигналов. Поэтому без предварительного знакомства с основными положениями этой науки все же не обойтись.

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

Еще одно дублирование наблюдается в словах "цифровой" и "цифровая", что в сочетании с "сигналом" подсказывает: информация, заключенная в изменениях уже упомянутого "чего-то", представляется в цифровой форме.

Ну и, наконец, — "обработка" и "процессор" (он же, по-русски, — "обработчик"): с этой самой информацией совершается некоторая последовательность действий, преследующая достижение определенных целей.

Теперь облик ЦСП можно считать достаточно определенным: это некоторое цифровое электронное устройство, ориентированное на активное взаимодействие с реальным миром (в котором и присутствуют сигналы) и предназначенное для достижения заданных целей на основе заключенной в сигналах информации.

"Так ведь это же любой обычный микропроцессор можно назвать ЦСП" — скажете вы. Не совсем так. Несоизмеримость временных "шкал" реального мира (на который и рассчитаны ЦСП) и человеческого терпения или реакции (в самых исключительных случаях она меньше 0,05 с, что "развязывает руки" конструкторам универсальных микропроцессоров и операционных систем) — такой "маленький" нюанс приводит к громадному "отрыву" в архитектурах, показателях производительности и областях применения представителей двух параллельных миров DSP/CPU.

А причем здесь ПК?

Действительно, есть специфический класс задач (связанных с окружающей нас действительностью), есть инструментальные средства, облегчающие решение этих задач (ЦСП). К персональным компьютерам все это имеет, на первый взгляд, весьма отдаленное отношение, а ЦСП, присутствующие в подсистемах ПК (например, в звуковой карте или модеме), выполняют узкоспециализированные функции. Собственно, так есть, пока наши ПК выглядят приличных размеров ящиками, "сжигают" за сотню ватт, и пока нас это устраивает…

Но времена меняются — компьютеры становятся все меньше и меньше, они уже умещаются на ладони. Пусть сегодня они только игрушки — все эти не очень удобные записные книжки для "деловых людей" и уж совсем неудобные (точнее, неуклюжие) текстовые редакторы с перьевым вводом — но игрушки уже НОСИМЫЕ! Мы привыкаем к ним, перестаем замечать и, несмотря на все неудобства, используем их возможности в повседневной жизни. Иными словами, мы уже готовы к тотально-бытовой "мелкой" компьютеризации, а вот компьютеры — пока нет (отсюда и все неудобства палм-топов и PDA). Неготовность компьютеров не связана ни с низкой степенью интеграции используемых в них микросхем, ни с невысокой производительностью, ни с большой потребляемой мощностью. Основная причина этой неготовности — так называемая "ошибка верхнего уровня", накрепко укоренившаяся в головах разработчиков: почему-то все забыли о том, что носимый компьютер становится "частью" своего носителя и "живет" вместе с ним в РЕАЛЬНОМ ОКРУЖАЮЩЕМ МИРЕ! Теперь, очевидно, сам собой напрашивается один единственный вывод, который и является ответом на вопрос о "причастности ПК": раз DSP ориентированы на обработку сигналов реального мира и носимые персональные компьютеры как раз "живут" в реальном мире, значит… Правильно! Настоящие ПЕРСОНАЛЬНЫЕ (по признаку принадлежности к "персоне", а не как разновидность собственности) компьютеры должны основываться на DSP, а не на универсальном процессоре.

Не может быть

"…потому что специализированные процессоры не соответствуют требованиям, предъявляемым современным программным обеспечением", — процитируете вы кого-нибудь. Вполне возможно, что современное программное обеспечение до сих пор требует усилий для мирного сосуществования программ защищенного (32-битового) режима и 16-битовой BIOS (базовой системы ввода/вывода) ПК архитектуры IBM PC, и именно из-за этих самых требований существует реальная несовместимость между "совместимыми" процессорами (вспомните о всевозможных расширениях системы команд от Intel и AMD), и, наконец, из-за "современности" крепко забыта такая мелочь, как мобильность ПО, что замыкает порочный круг: "несовершенство платформы — платформенная зависимость ПО — совершенствование платформы до нового уровня несовершенства — еще большая платформенная зависисмость ПО — …".

На самом деле современные DSP приспособлены и к работе под управлением мультизадачных операционных систем реального времени, и для создания могучих 3D-акселераторов, и для обработки в реальном времени аудио/видеоинформации, и вообще Бог знает для чего. Судите сами: 32-битовые ЦСП Texas Instruments семейства TMS320C6700 могут "молотить" цифровое представление сигналов (или просто перемножать матрицы 4 x 4 в задачах трехмерной визуализации) со скоростью 1 GFLOPS при более чем скромных тактовой частоте в 167 MHz и цене в небольших партиях до $250, а замечательный и дешевый DSP SHARC (Analog Devices) при стоимости $10 (в больших партиях) "берет планку" 150 MFLOPS, потребляя всего… 0,3 В.

Цифры, факты, история

Еще раз попытаюсь защититься от возможных упреков в "выпячивании" достоинств никого не интересующей узкоспециализированной технологии. Состояние рынка полупроводников — лучший показатель перспективности той или иной технологии — свидетельствует о постоянно растущей популярности DSP: так, в 1998 г. на фоне общего десятипроцентного спада объемов продаж всего, попадающего в категорию "semiconductor", рынок универсальных программируемых DSP вырос на 9% (до уровня 4 млрд. долл.), а узкоспециализированных — на 15% (5,3 млрд. соответственно). Следовательно, факт популярности DSP можно считать доказанным. Заодно, учитывая особенности DSP, также уверенно можно говорить и о явном проявлении наконец-то "здоровой" тенденции в компьютинге: активное внедрение в реальный окружающий мир (а иначе зачем DSP?).

Если о состоянии рынков информации более чем достаточно, то история DSP — предмет, достойный отдельного исследования. Кое-что, впрочем, отыскать в дебрях Internet можно: титула одного из самых дальних предков современных DSP по праву заслуживает канувший в Лету микропроцессор 8×300, разработанный компанией SMS (впоследствии продавшей 8×300 другой, более известной компании Signetics). Появившийся в 1978 г. 8×300 был почти сразу забыт, и на смену ему в 1979 г. к "DSP-играм" решила подключиться Intel. Для своего времени ЦПС Intel 2920 был удивительным устройством, объединяющим на одном кристалле и аналого-цифровой преобразователь (АЦП), и специализированный микропроцессор, и ЦАП (цифро-аналоговый преобразователь). По сути, с точки зрения инженера-разработчика, 2920 выглядел неким аналоговым устройством с произвольно задаваемыми свойствами. ЦПС был бы очень удачным, если бы не одно "но": DSP от Intel получился слишком медленным (на выполнение самых "быстрых" команд при максимальной тактовой частоте 2920 требовалось 0,9 мкс, что фактически исключало возможность его применения в каких-либо реальных задачах). Крайне низкая производительность привела к тому, что 2920 "умер, еще не родившись", и этот печальный опыт заставил корпорацию Intel надолго забыть о DSP-разработках.

Вслед за Intel на DSP-рынок устремились Lucent Technologies и NEC, представившие в 1980 г. первый программируемый DSP. На этом историческом фоне малозаметным кажется факт, что Texas Instruments еще в 1978 г. производила в больших партиях чипы для игрушек "Speak & Spell" ("говори и слушай"). При более детальном рассмотрении оказывается: Texas Instruments опередила всех, начав масштабное серийное производство первых специализированных DSP. Впоследствии, в 1982 г., Texas Instruments (TI) анонсировала свой первый универсальный программируемый DSP TMS32010, архитектура которого стала абсолютным законодателем мод на рынке цифровой обработки сигналов, а сама компания TI — аналогом Intel в мире процессоров для ПК. Сегодня перечень имен производителей самых разных DSP трудно перечислить, специалисты насчитывают более 300 (!) уникальных архитектур, реализованных "в кремнии", и даже надолго забывшая о DSP-рынке Intel объявила о планах совместной разработки с Analog Devices ЦПС нового поколения.

Архитектурная эволюция

Обилие архитектур DSP способно охладить любую настойчивость, но… Все ЦПС должны, в силу своей специфики, отвечать одним и тем же требованиям. Характерные для задач обработки сигналов свойства процессоров назвать уникальными трудно: здесь необходимы очень быстрая арифметика (а где она не нужна?), высокая скорость обмена процессора с внешними устройствами, преобразующими сигналы из окружающего мира в электрическое представление, и, наконец, высокая пропускная способность подсистемы памяти. Так что на самом деле данные требования не слишком специфичны — именно всего этого мы хотим от наших ПК, повышая частоту системной шины, совершенствуя периферийные интерфейсы (например, переходом от PCI к PCI 2) и устанавливая модули памяти SDRAM.

Другое дело, что алгоритмы обработки сигналов обладают некоторой общностью, что вызывало необходимость концентрации усилий конструкторов и архитекторов DSP на эффективном решении ряда частных задач. Фундаментальными для цифровой обработки считаются примитивные операции сложения и умножения двух чисел-операндов, индексирования массивов данных и задержки. Арифметическая подгруппа в этом перечне (сложение и умножение) достаточно очевидна: для выполнения соответствующей операции надо где-то взять два операнда, произвести над ними необходимую операцию с размещением результата во временном "хранилище", затем записать результат из этого "хранилища" в определенное место (ячейку оперативной памяти или регистр процессора). С адресными операциями (индексированием массивов данных) дело обстоит сложнее: ЦПС должен уметь очень быстро выбирать данные из последовательных массивов и выполнять редко встречающуюся в RISC (да и CISC) процессорах команду копирования типа "память—память". Операция задержки, несмотря на "страшное" немикропроцессорное название, означает всего лишь очень быстрое "припрятывание" данных для последующего использования.

В целом, не будет большой ошибки в утверждении, что все архитектурные новшества и кажущиеся "излишества" современных ЦПС отражают стремления конструкторов добиться высокой эффективности именно этих четырех базовых операций.

Для ускорения арифметических вычислений в DSP используют несколько арифметико-логических устройств (АЛУ), работающих "в параллель", что в случае "хитро" устроенной внутренней регистровой памяти позволяет вводить в систему команд ЦПС очень интересные инструкции, в переводе на человеческий язык означающие приблизительно следующее: "умножить содержимое регистра 1 с содержимым регистра 2 и сложить результат умножения с содержимым регистра 3". И все это — одна команда, выполняющаяся за один такт. Восхищаться пока рано: операция умножения с накоплением (именно так называется подобный перечень действий) — классика цифровой обработки сигналов, а реализующие ее аппаратные средства постепенно проникают в еще недавно считавшиеся универсальными процессоры, в первую очередь RISC-архитектуры, в частности во многие клоны MIPS.

Эффективная реализация операции задержки требует, чтобы у хорошего DSP было много внутренних регистров (в принципе, чем больше, тем лучше), в этом случае легко найти одну из незанятых регистровых ячеек для "припрятывания" данных. Кроме того, высокая скорость выполнения этой операции может быть достигнута только путем хороших архитектурных решений, например удачной логической организацией регистрового массива DSP. В нашем контексте это свойство ЦСП также кажется весьма привлекательным — обилие внутренних регистров и их логическая организация существенно упрощают разработку компиляторов с языков высокого уровня (что, к слову, подтверждается практикой — на ftp-сайте Texas Instruments можно найти очень удачные модификации известного компилятора C gcc, генерирующего код для ЦСП семейств TMS).

Самой сложной операции — индексации массивов данных — DSP обязаны своей уникальностью. Обилие регистров и быстрая арифметика свойственны, например, RISC-процессорам (да и многим CISC). А вот выделенная в отдельную подсистему процессора "машина" генерации адресов — это та самая изюминка, придающая специфичность DSP, но ни в коем случае не ограничивающая их область применения. Как раз наоборот — единственный регистр счетчика команд в обычных процессорах принципиально не может превосходить по показателям целую подсистему. Эффективность генератора адресов — один из самых важных показателей, определяющих эффективность всего ЦПС в целом. Практически во всех DSP генераторы адресов работают "прозрачно" для всех остальных подсистем процессора, т. е. не отнимают машинного времени и не требуют приостановки выполнения основных операций. Кроме того, за счет применения генератора адресов ЦСП характеризуются очень развитыми способами адресации (для знающих язык программирования C — уж на что он богат на фокусы с указателями, в любом DSP присутствуют машинные команды, реализующие чуть ли не все возможные адресные операции этого языка).

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

Самые интересные и неожиданные архитектурные находки сконцентрированы в подсистемах памяти DSP. Насущная необходимость включения в систему команд однотактных инструкций умножения с накоплением привела к тому, что ничего общего со "стандартными" универсальными CPU у ЦПС не осталось. Действительно, за один такт невозможно одновременно прочитать или записать данные, адресуемые по одной единственной адресной шине, — для этого необходимо столько адресных шин, сколько единиц данных выступают в качестве операндов команды. Самое интересное, что разработчики DSP нашли совершенно нетривиальное и изящное решение этой проблемы даже в случае использования привычной фон-Неймановской архитектуры памяти (единая физическая память для программы и данных). "Зачем вообще использовать фон-Неймановскую архитектуру?" — спросите вы. Ведь существует и реализована в очень многих процессорах Гарвардская архитектура (раздельные физические память программ и данных с, соответственно, раздельными шинами), но… Универсальный DSP должен уметь работать с внешней оперативной памятью — многие программы обработки сигналов очень сложны, для хранения реализующего их кода и промежуточных данных требуется существенная емкость ОЗУ (большинство современных DSP имеют встроенные механизмы управления дешевой и быстрой SDRAM емкостью от 16 до 64 MB). Для реализации настоящей Гарвардской архитектуры требуются по две шины адреса и данных, что при 32-разрядном процессоре выливается в 128 выводов — это слишком дорого и слишком неудобно. В таком балансировании между производительностью и ценой DSP-архитекторы таки нашли неожиданно "равновесное положение": Гарвардская внутренняя и модифицированная фон-Неймановская внешняя архитектуры одновременно. Мы уже привыкли к тому факту, что процессоры работают на более высокой тактовой частоте, чем, например, шины памяти, поэтому DSP-модификация "неймана" покажется несколько странной: шина памяти работает на повышенной (обычно в 4 раза) по отношению к внутренней процессорной частоте. Это позволяет за один период (такт) процессора произвести несколько обращений к памяти — просто и эффективно, а заодно сэкономить на целой куче лишних выводов.

Теперь, естественно, напрашивается вопрос: а как достигается такое высокое быстродействие DSP, если процессор работает на пониженной частоте? На сегодняшний день практически во всей DSP-индустрии есть несколько излюбленных приемов и архитектурных решений, играющих роль "структурного умножения тактовой частоты". Здесь берут не числом (не мегагерцами), а умением. Модные абстрактные термины типа VLIW (очень длинные машинные команды) давно и с успехом работают, например в процессорах Texas Instruments семейства TMS320C6xxx, 256-битовый код команды которых способен "инкапсулировать" до восьми 32-битовых операндов, представленных числами с плавающей и фиксированной точкой. Для "утилизации" подобных команд применяются несколько (в случае с TMS320C6xxx — шесть) арифметико-логических устройств и отдельных быстрых аппаратных умножителей. В несоизмеримо более дешевом SHARC от Analog Devices (модель ADSP-21065L, цена в больших партиях $10) применяются три отдельных АЛУ со скоростными умножителями (способные работать "в параллель"), отдельный аппаратный "сдвигатель" данных (shifter, обеспечивающий "сдвиг" битового содержимого на указанное в качестве операнда число битов N влево или вправо, что эквивалентно очень быстрому умножению или делению на 2**N), внутренняя Гарвардская и внешняя модифицированная фон-Неймановская архитектуры (тактовая частота шины оперативной памяти до 60 MHz), встроенная двухпортовая память (с возможностью одновременного доступа двумя подсистемами процессора) перестраиваемой конфигурации и, наконец, очень специфическая (но и крайне удобная) система команд. Ассемблер SHARC напоминает язык программирования достаточно высокого уровня, ориентированный на разработку математических приложений (скажу так: упрощенный параллельный FORTRAN). Несмотря на относительно "короткий" битовый формат команды (69 битов), на ассемблере 21065 можно записать, например, следующую однотактную команду:

IF MS MRF=0; F6=(F2+F3)/2;

(если выполняется условие "MRF равно 0", то вычислить полусумму регистров F2 и F3 с размещением результата в регистре F6).

В итоге десятидолларовый чип выполняет весьма ресурсоемкую программу 1024-точечного комплексного быстрого преобразования Фурье за… 304 мкс (для сравнения попробуйте эту задачку в качестве теста своего Pentium).

Возвращаясь к ПК

Естественно, что в столь небольшом объеме статьи невозможно было провести углубленный обзор различных DSP. Но главная цель, думаю, достигнута — вы узнали, что есть на свете быстрые, удобные в программировании и дешевые процессоры.

А что касается вопроса о ПК — давайте забудем на секунду обо всех этих PCI- и AGP-шинах, графических акселераторах, монстроидальных операционных системах. Попытаемся представить себе функционально многопроцессорный компьютер (один процессор — CPU, второй — графико-оконная подсистема, третий — умная подсистема ввода/вывода), для которого существуют стандарты только на языки программирования, системные вызовы CPU-модуля и команды, которыми обмениваются отдельные модули (например, упакованная в 32-разрядное слово команда "открыть окно размером 1024 x x 1024 пиксела" или "нарисовать линию из текущей позиции в точку с координатами X, Y"). Набравшись наглости, представим себе, что операционная система нашего ПК вообще не имеет понятия о всяких там накопителях: жестких дисках, CD-ROM и прочих, зато знает, что такое ftp (реализация подобной вещи существует и называется Andrew Filesystem), соответственно — модуль ввода/вывода представляет собой "тонкий" ftp-сервер.

И наконец, соединим функциональные модули быстродействующим последовательным каналом (например, дешевым гигабитовым 1355, о котором я уже рассказывал). Если все получается (а оно именно получается), добавлю: все процессоры в этом ПК — DSP класса SHARC (или более мощные для производительных моделей). Получаем: открытую на уровне спецификации, развязывающую руки производителям (пусть конкурируют сколько угодно ВНУТРИ функциональных модулей, лишь бы не трогали НАРУЖНЫЕ межмодульные спецификации) архитектуру, изначально сетеориентированную (ftp-файловая система не делает различий между локальными и удаленными накопителями), очень производительную (даже при "скромных" вычислительных возможностях 21056L — вы не задумывались, сколько ресурсов "сжирают" выполняющиеся на одном процессоре ОС и графическая/оконная подсистема), дешевую, и, что главное, РЕАЛЬНО СПОСОБНУЮ СООТВЕТСТВОВАТЬ РАСТУЩИМ ТРЕБОВАНИЯМ МОБИЛЬНЫХ ПОЛЬЗОВАТЕЛЕЙ. Потому, что именно DSP "по зубам" такие задачки, как распознавание речи и визуальных образов, синтез речевых сообщений, быстрый поиск в базах данных, 3D-визуализация в реальном времени — почти все, на что способно наше сегодняшнее воображение.

Digital Signal Processor

DSP (D igital S ignal P rocessor) (в переводе с английского языка, означает цифровой сигнальный процессор (ЦСП) или, его еще называют, как сигнальный микропроцессор (СМП) с его архитектурой, оптимизированной для оперативных потребностей цифровой обработки сигналов) - специализированный микропроцессор, особенностью работы которого является поточный характер обработки больших объемов данных в реальном масштабе времени и, обычно, с интенсивным обменом данных с другими внешними устройствами. (Нужен для преобразования сигналов, представленных в виде цифр, как правило, в режиме реального времени).

Реальный масштаб времени (реальное время работы, Real Time Scale) – это такой режим работы устройства, при котором регистрация и арифметическая обработка (а при необходимости и анализ, визуализация, сохранение, систематизация, синтез и передача по каналам связи) данных производится без потерь информации, поступающей от ее источника

Описание

Цель DSP

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

Типичная система цифровой обработки

Цифровая обработка

Алгоритмы цифровой обработки сигналов обычно требуют быстрое выполнение большого количество математических операций и неоднократность на ряде выборок данных. Сигналы (возможно, от аудио или видео) постоянно преобразовываются из аналогового в цифровой сигнал, используются в цифровой форме, и затем преобразовываются назад в аналоговую форму. У многих приложений DSP есть ограничения на задержку; т.е. для системы, чтобы функционировать, операция DSP должна быть завершена в некотором установленном времени и задержана, обработка не жизнеспособна.

Преимущества DSP

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

Архитектура

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

Архитектура и ее особенности

Архитектура ЦСП имеет ряд особенностей, в отличии от микропроцессоров общего применения. Она заключается в максимальном ускорении выполнения однотипных задач по цифровой обработке сигналов (поиск сигналов, преобразование Фурье и т.п.). В математике такие задачи приводятся к более простым по правилу "разделяй и властвуй". В нашем случае таким типом подзадач является поэлементное произведение элементов многокомпонентных векторов действительных чисел(это числа, которые могут быть записаны в виде конечной или бесконечной (периодической или непериодической) десятичной дроби.) и последующему суммированию результатов произведения.

Исходя из этого, процессоры специально оптимизируют под определенные операции(в нашем случае под перемножение и суммирование). В следствии чего растет производительность и быстродействие. Первоочередно ЦСП направлены на многократное умножение с очень быстрым расчетом адресов перемножаемых элементов массивов:

  1. "Умножение с накоплением"(как правило, реализована аппаратно и выполняется за один машинный цикл) (M = M + X × Y), где M, X и Y - элементы действительных массивов с автоматическим расчетом адресов элементов массивов. (MAC)
  2. Аппаратная реализация многократного повторения заданного набора команд.
  3. Использование нескольких портов обращения к памяти DSP для одновременного(за один машинный такт) выбора команд и двух аргументов операции для быстрого выполнения умножения с накоплением.
  4. Способность к векторно-конвейерной обработки при помощи генераторов адресных последовательностей.

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

Архитектура программного обеспечения

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

Цифровые сигнальные процессоры иногда используют жестко фиксированное по времени кодирование, чтобы упростить аппаратные средства и эффективность кодирования умножения. Многократные арифметические модули могут потребовать, чтобы архитектура памяти поддерживала несколько выполнений за командный цикл. Специальные средства управления циклом, такие как архитектурная поддержка выполнения нескольких командных слов в очень трудном цикле, без издержек для вызовов команды или тестирования выхода.

Аппаратная архитектура

Архитектура памяти

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

DSP может иногда полагаться на поддержку кода, чтобы знать об иерархиях кэша и связанных задержках. Это - компромисс, который допускает лучшую производительность. Кроме того, используется широкое применение прямой доступ к памяти.

Адресация и виртуальная память

DSPS часто использует многозадачные операционные системы, но не имеет никакой поддержки виртуальной памяти или защиты. Операционные системы, которые используют виртуальную память, требуют большего количества времени для переключения среди процессов, которое увеличивает задержку.

  • Аппаратные средства адресации по модулю
    • Разрешает реализацию круговых буферов, без необходимости тестировать на упаковку
  • Бит-реверсная адресация, специальный способ адресации
    • Полезно для вычисления быстрого преобразования Фурье
  • Исключение блока управления памятью
  • Модуль вычисления адреса памяти

Примеры : TMS320Cхххх, ADSP-21XX

Рис. 1. Архитектура процессоров семейства ADSP-218x

Особенности ЦСП

Характерные особенности ЦСП (DSP):

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

Основные параметры ЦСП

Основные параметры ЦСП:

  1. Тип арифметики(с фиксированной/плавающей точкой).
  2. Разрядность данных(для фиксированной/плавающей - 16/32 бита, соответственно).
  3. Быстродействие.
  4. Тактовая частота(внутренняя и/или внешняя) и Время командного цикла(время выполнения одного этапа команды).
  5. Количество выполняемых команд за единицу времени.
  6. Количество выполняемых операций за единицу времени (MIPS).
  7. Количество выполняемых операций с плавающей точкой за единицу времени.
  8. Количество выполняемых операций умножения с накоплением за единицу времени.
  9. Виды (RAM и флэш-память) и объём внутренней памяти(сколько данных ЦСП может обработать без обращения к внешней памяти).
  10. Адресуемый объём памяти.
  11. Количество и параметры портов ввода-вывода.
  12. Состав внутренних дополнительных устройств(таймеры, компрессоры и тд).
  13. Напряжение питания и потребляемая мощность.
  14. Состав и функциональность средств разработки и поддержки.
  15. Перечень языков программирования, для которых есть компиляторы под данную систему;
  16. Наличие и возможности средств отладки готовых программ;
  17. Доступность документации и технической поддержки;
  18. Наличие библиотек стандартных подпрограмм и математических функций;
  19. Наличие, доступность и возможности совместимых устройств - АЦП , ЦАП , контроллеры питания и т. д.
  20. Допустимые параметры окружающей среды.
  21. Другие, в зависимости от назначения.

Сферы применения

Выделяют достаточно много сфер применения ЦСП.

Сферы применения DSP:

  1. Коммуникации (Кодирование информации и/или уплотнение каналов(спектральное))
  2. Распознавание чего-либо
  3. Анализатор спектра (прибор для наблюдения и измерения относительного распределения энергии электрических (электромагнитных) колебаний в полосе частот) и т.д.

Зачастую, это сферы, где необходима быстродействующая обработка каких либо сигналов (информации).

История

До того, как появились микросхемы DSP, множество приложений DSP были реализованы, используя секционные микропроцессоры. BS Chip(разрядно-модульный кристалл) AMD 2901 со своим набором компонентов пользовался популярностью. AMD также создавала аналогичные модели, однако, очень часто обнаруживались характерные особенности конкретной разработки. Эти секционные архитектуры временами содержали периферийную микросхему множителя. Примерами этих множителей был ряд от TRW, включая TDC1008 и TDC1010, некоторые из которых включали аккумулятор, обеспечивая необходимую функцию умножения с накоплением (MAC) .

В 1976г. году Ричард Уиггинс предложил концепцию "Speak & Spell" Полу Бредлову, Ларри Брантингхаму, и Джину Францу в научно-исследовательском центре Texas Instruments (Даллас). Два года спустя, в 1978г., они создали первую "Speak & Spell" с технологической главной центральной частью, являющейся TMS5100, как первый цифровой сигнальный процессор отрасли. Это также влекло другие этапы, будучи первой микросхемой, для использования кодирования с линейным предсказанием, чтобы выполнить речевой синтез.

В свою очередь, Intel 1978г. производил "процессор аналогового сигнала"-2920. Он включал конвертер из аналогового сигнала в цифровой и обратно, на микросхеме с встроенным внутрь сигнальным процессором, но он не обладал аппаратным множителем и не пользовался спросом на рынке. В 1979г. AMI выпускал периферийный прибор обработки данных-S2811. Он создавался, как связующее устройство микропроцессора, со способностью настройки владельцем. S2811, аналогично, не пользовался спросом на рынке.

В 1980г. реализован первый автономный процессор: DSP – NEC µPD7720 и AT&T DSP1 – были представлены на МК(Международной Конференци) Твердотельных схем "80. Эти два процессора вдохновили исследование в телекоммуникациях PSTN.

АльтамираDX1 - другое раннее DSP, используемое квадрафонические целочисленные конвейеры с задержанными ответвлениями и предсказаниями ветвлений.

TMS32010 - еще один ЦСП, произведенный Texas Instruments (TI), и представленный в 1983г., обладал большим успехом. Он основывался на Гарвардской архитектуре, и так содержал индивидуальную инструкцию и память данных. Он обладал специальной системой команд с инструкциями: загрузка с накоплением или умножение с накоплением. Он умел работать над 16-ти разрядными числами и для умножения на это требовалось 390 нс. TI - теперь лидер рынка в ЦСП общего назначения.

Цифровой сигнальный процессор (англ. digital signal processor , DSP , цифровой процессор обработки сигналов (ЦПОС) ) - специализированный микропроцессор , предназначенный для обработки оцифрованных сигналов (обычно, в режиме реального времени).

Особенности архитектуры

Архитектура сигнальных процессоров, по сравнению с микропроцессорами общего применения, имеет некоторые особенности, связанные со стремлением максимально ускорить выполнение типовых задач цифровой обработки сигналов, таких, как цифровая фильтрация , преобразование Фурье , поиск сигналов и т. п. Математически эти задачи сводятся к поэлементному перемножению элементов многокомпонентных векторов действительных чисел, последующему суммированию произведений (например, в цифровой фильтрации выходной сигнал фильтра с конечной импульсной характеристикой равен сумме произведений коэффициентов фильтра на вектор выборок сигнала, аналогичные вычисления производятся при поиске максимумов корреляционных и автокорелляционных функций выборок сигналов). Поэтому сигнальные процессоры оптимизированы по быстродействию для выполнения именно таких операций. И ЦСП ориентированы, в первую очередь, на многократное выполнение умножения с расчётом «на лету» адресов перемножаемых элементов массивов:

  • Операция «умножение с накоплением» (англ. multiply-accumulate , MAC ) (Y = Y + A × B ), где Y, A, B - элементы действительных массивов с автоматическим расчетом адресов элементов массивов и обычно реализована аппаратно и исполняется за один машинный цикл.
  • Аппаратная реализация многократного повторения заданного набора команд, то есть циклы с заранее назначенной длиной без использования счетчиков цикла и команд проверки обнуления счетчика цикла - признака выхода из цикла.
  • Возможность одновременной в одном машинном такте выборки команды и двух операндов для максимально быстрого выполнения команды MAC. Для этого ЦСП имеет несколько портов обращения к памяти (независимых областей памяти, каждая со своим комплектом шин адреса и данных).
  • Поддержка векторно-конвейерной обработки с помощью генераторов адресных последовательностей.

Ограниченность аппаратных ресурсов первых ЦСП накладывала существенный отпечаток на их архитектуру:

  • Гарвардская архитектура (разделение памяти команд и данных), как правило, модифицированная ; с разделением памяти на сегменты с независимым доступом.
  • Детерминированная работа с известными временами выполнения команд, что позволяет выполнять планирование работы в реальном времени .
  • Сравнительно небольшая длина конвейера , так что незапланированные условные переходы могут занимать меньшее время, чем в универсальных процессорах.
  • Экзотический набор регистров и инструкций, часто сложных для компиляторов . Некоторые архитектуры тогда использовали VLIW .

В современной микроэлектронике процессоры общего применения зачастую содержат аппаратную поддержку типовых операций ЦОС. Особо времяёмкие задачи ЦОС решаются на основе программируемой логики , где можно достичь предельной оптимизации выполнения конкретной операции. Специализированные процессоры ЦОС все чаще делают векторными . В то же время классические ЦСП снабжают развитыми наборами команд процессоров общего применения и сглаживают особенности программной модели, позиционируя их как изделия широкого применения с ускоренными функциями ЦОС. Все эти тенденции приводят к размыванию классического понятия ЦСП.

Области применения

  • Коммуникационное оборудование:
    • Уплотнение каналов передачи данных;
    • Кодирование аудио- и видеопотоков;
  • Системы гидро- и радиолокации;
  • Распознавание речи и изображений;
  • Речевые и музыкальные синтезаторы;
  • Управление технологическими процессами;
  • Другие области, где необходима быстродействующая обработка сигналов, в том числе в реальном времени.

История

Предшествующие разработки

До 1980 года несколько компаний выпустили устройства, которые можно считать предшественниками ЦСП. Так, в 1978 Intel выпускает «процессор аналоговых сигналов» 2120. В его состав входили АЦП , ЦАП и процессор обработки цифровых данных, однако аппаратная функция умножения отсутствовала. В 1979 AMI выпускает S2811 - периферийное устройство, управляемое основным процессором компьютера. Оба изделия не достигли успеха на рынке.

Первое поколение (начало 1980-х)

Основную историю ЦСП принято отсчитывать от 1979-1980 годов, когда Bell Labs представила первый однокристальный ЦСП Mac 4, а также на «IEEE International Solid-State Circuits Conference "80» были показаны µMPD7720 компании NEC и DSP1 компании AT&T , которые, однако, не получили широкого распространения. Стандартом де-факто стал выпущенный чуть позже кристалл TMS32010 фирмы Texas Instruments , по многим параметрам и удачным техническим решениям превосходящий изделия конкурентов. Вот некоторые его характеристики:

  • АЛУ :
    • Размер слова: 16 бит;
    • Разрядность вычислителя: 32 бит;
    • Быстродействие: 5 млн операций сложения или умножения в секунду;
  • Длительность командного цикла: 160-280 нс;
  • Память:
    • ОЗУ : 144-256 слов;
    • ПЗУ программ: 1,5-4 К слов;
    • ППЗУ : до 4К слов (отдельные модели);
  • Внешняя шина:
    • Разрядность: 16 бит;
    • Адресуемое пространство: 4К слов
    • Пропускная способность: 50 Мбит/с
  • Устройства ввода-вывода: 8 портов по 16 разрядов;

Второе поколение (середина 1980-х)

Благодаря прогрессу в полупроводниковых технологиях в этот период были выпущены изделия, имеющие расширенные функции по сравнению с первым поколением. К характерным отличиям можно отнести:

  • Увеличение объёма ОЗУ до 0,5 К слов;
  • Добавлена возможность подключения внешней памяти программ и внешней памяти данных объёмом до 128 К слов;
  • Быстродействие повышено в 2-4 раза;
  • Улучшенные подсистемы прерываний и ввода-вывода.

Много позднее также были выпущены устройства, формально относящиеся ко второму поколению, но имеющие следующие усовершенствования:

  • Увеличена разрядность данных;
  • Пониженное напряжение питания и, как следствие, энергопотребление;
  • Введены режимы экономии энергии;
  • Аппаратная поддержка мультипроцессорности (система совместного доступа к внешней памяти);
  • Аппаратная поддержка кольцевых буферов;
  • Аппаратная поддержка операций циклов;
  • Расширены способы адресации;
  • Две внутренние шины данных, что позволяет значительно ускорить парную обработку данных (координаты X/Y, действительная и мнимая часть и т. д.), либо виртуально удвоить разрядность обрабатываемых данных;
  • Введена кэш-память.

Третье поколение (конец 1980-х)

Третье поколение ЦСП принято связывать с началом выпуска изделий, реализующих арифметику с плавающей запятой. Характерные особенности первых выпущенных образцов:

  • Производительность: порядка 20-40 млн оп./сек. (MIPS);
  • Два блока ОЗУ по 1 К 32-разрядных слов с возможностью одновременного доступа;
  • Кэш-память объёмом 64 слова;
  • Разрядность регистров: 32 бит;
  • Разрядность АЛУ: 40 бит;
  • Регистры для операций с повышенной точностью;
  • Встроенные контроллеры ПДП;
  • Разрядность шин: 32 бит для команд и 24 бит для адреса;

Четвёртое поколение

Четвёртое поколение ЦСП характеризуется значительным расширением наборов команд, созданием VLIW и суперскалярных процессоров. Заметно возросли тактовые частоты. Так, например, время выполнения команды MAC (Y:= X + A × B ) удалось сократить до 3 нс.

Современные ЦСП

Лучшие современные ЦСП можно характеризовать следующими параметрами:

  • Тактовая частота - 1 ГГц и выше;
  • Многоядерность;
  • Наличие двухуровневого кеша;
  • Встроенные многоканальные контроллеры прямого доступа к памяти;
  • Быстродействие порядка нескольких тысяч MIPS и MFLOPS ;
  • Выполнение до 8 параллельных инструкций за такт;
  • Совместимость со стандартными шинами (PCI и др.)

Основные параметры ЦСП

  • Тип арифметики . ЦСП делятся на процессоры, обрабатывающие данные с фиксированной точкой и обрабатывающие данные с плавающей точкой. Устройства с плавающей точкой удобнее в применении, но они заметно сложнее по устройству и более дороги;
  • Разрядность данных . Большинство ЦСП с фиксированной точкой обрабатывают данные с разрядностью 16 бит, процессоры с плавающей точкой - 32 бита. Многие модели могут обрабатывать данные с двойной точностью.
  • Быстродействие . Быстродействие как интегральную характеристику определить достаточно сложно, поэтому скорость работы характеризуют несколькими параметрами, а также временем решения некоторых реальных задач.
    • Тактовая частота и Время командного цикла . Для современных ЦСП тактовая внутренняя частота может отличаться от внешней, поэтому могут указываться два значения. Время командного цикла указывает на время выполнения одного этапа команды, то есть время одного цикла конвейера команд. Так как команды могут исполняться за разное количество циклов, а также с учётом возможности одновременного исполнения нескольких команд, этот параметр может характеризовать быстродействие ЦСП достаточно приближённо.
    • Количество выполняемых команд за единицу времени . Различное время исполнения команд, а также исполнение нескольких команд одновременно не позволяют использовать этот параметр для надёжной характеристики быстродействия.
    • Количество выполняемых операций за единицу времени (MIPS) . Данный параметр учитывает одновременную обработку нескольких команд и наличие параллельных вычислительных модулей, поэтому достаточно хорошо может указывать на быстродействие ЦСП. Некоторой проблемой здесь остаётся то, что понятие «операции» чётко не формализовано.
    • Количество выполняемых операций с плавающей точкой за единицу времени . Параметр аналогичен предыдущему и используется для процессоров с плавающей точкой.
    • Количество выполняемых операций MAC за единицу времени . Данная команда, с одной стороны, является базовой для многих вычислений, а с другой - достаточно проста. Поэтому время её исполнения можно использовать в том числе и для оценки общей производительности ЦСП.
  • Виды и объём внутренней памяти . Объём внутренней оперативной памяти показывает, сколько данных ЦСП может обработать без обращения к внешней памяти, что может характеризовать общее быстродействие системы, а также возможность работать «в реальном времени». Тип ПЗУ определяет возможности по программированию устройства. Модели с обычным ПЗУ подходят для крупносерийного производства, ППЗУ (однократно программируемое) удобно для небольших тиражей, а применение Flash-памяти позволяет менять программу устройства многократно во время эксплуатации. На данный момент не очень мощные DSP чаще всего снабжены достаточно большой Flash-памятью (её цена неуклонно снижается) и заметным объёмом RAM и поэтому могут являться самодостаточными без добавления внешней памяти и на этапе разработки, и на этапе производства, что повышает конкурентоспособность таких DSP в ряде сегментов рынка. Мощные DSP, как правило, полагаются на внешнюю память, подключённую по достаточно быстрым шинам, а размещение там Flash-памяти может быть технически проблематичным, например, из-за заметного выделения тепла.
  • Адресуемый объём памяти . Объём адресуемой внешней памяти характеризуется шириной внешней шины адреса.
  • Способ начальной загрузки .
  • Количество и параметры портов ввода-вывода . Данный параметр показывает возможности ЦСП по взаимодействию с внешними по отношению к нему устройствами.
  • Состав внутренних дополнительных устройств . В число внутренних могут входить разнообразные по назначению устройства, например, общего применения - таймеры, контроллеры ПДП и т. д., а также проблемно-ориентированные - АЦП, кодеки, компрессоры данных и другие.
  • Напряжение питания и потребляемая мощность . Данная характеристика особенно важна для ЦСП, встраиваемых в переносные устройства. Обычно предпочтительнее низковольтные устройства (1,8-3,3В), которые имеют быстродействие аналогично 5В процессорам, но заметно экономнее в плане потребления энергии. Многие устройства имеют режимы экономии при простое, либо позволяют программно отключать часть своих устройств.
  • Состав и функциональность средств разработки и поддержки .
    • Перечень языков программирования, для которых есть компиляторы под данную систему;
    • Наличие и возможности средств отладки готовых программ;
    • Доступность документации и технической поддержки;
    • Наличие библиотек стандартных подпрограмм и математических функций;
    • Наличие, доступность и возможности совместимых устройств - АЦП, ЦАП, контроллеры питания и т. д.
  • Допустимые параметры окружающей среды .
  • Другие, в зависимости от назначения.

Часто используются также интегральные характеристики ЦСП, например, показатель «мощность/ток/быстродействие», например, ma/MIPS (миллиампер на 1 млн инструкций в секунду), что позволяет оценить реальную потребляемую мощность в зависимости от сложности задачи, решаемой процессором в указанный момент.

Выбор ЦСП целиком определяется назначением разрабатываемой системы. Например, для массовых мобильных устройств важна дешевизна процессора, низкое энергопотребление, в то время как стоимость разработки системы отходит на второй план. С другой стороны, для измерительного оборудования, систем обработки звуковой и видеоинформации важны эффективность процессора, наличие развитых инструментальных средств, многопроцессорность и т. д.

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

Как отмечено ранее, отдельные характеристики типа тактовой частоты, MIPS, MOPS, MFLOPS позволяют оценить быстродействие ЦСП достаточно неоднозначно. Поэтому для решения задачи измерения и сравнения характеристик разных ЦСП используют специальные наборы тестов, имитирующих некоторые распространенные задачи цифровой обработки сигналов. Каждый тест состоит из нескольких небольших программ, которые пишутся на ассемблере и оптимизируются под заданную архитектуру. Эти тесты могут включать реализацию:

  • Фильтры КИХ и БИХ ;
  • Перемножение векторов ;

Наиболее авторитетным пакетом тестов на сегодняшний день является тест BTDImark2000 (), который, кроме указанных алгоритмов, включает также оценку используемой алгоритмом памяти, время разработки системы и другие параметры.

Устройство

Гарвардская архитектура

Цифровые сигнальные процессоры строятся на основе т. н. «Гарвардской архитектуры», отличительной особенностью которой является то, что программы и данные хранятся в различных устройствах памяти - памяти программ и памяти данных. В отличие от архитектуры фон Неймана , где процессору для выборки команды и двух операндов требуется минимум три цикла шины, ЦСП может производить одновременные обращения как к памяти команд, так и к памяти данных, и указанная выше команда может быть получена за два цикла шины. В реальности, благодаря продуманности системы команд и другим мерам, это время может быть сокращено до одного цикла. В реальных устройствах память команд может хранить не только программы, но и данные. В этом случае говорят, что ЦСП построен по модифицированной гарвардской архитектуре.

Память команд и память данных обычно располагаются на кристалле ЦСП. В связи с тем, что эта память имеет относительно небольшой объём, возникает необходимость в использовании внешних (относительно кристалла процессора) запоминающих устройств. Для таких устройств раздельные шины команд и данных не используются, так как это потребовало бы значительно увеличить количество внешних выводов кристалла, что дорого и непрактично. Поэтому взаимодействие ЦСП с внешними запоминающими устройствами происходит по одному комплекту шин без разделения на команды и данные. Следует также заметить, что обращение к внешней памяти всегда занимает значительно больше времени, чем к внутренней, поэтому в приложениях, критичных ко времени исполнения, такие обращения необходимо минимизировать.

Структурная схема

Конвейерное исполнение команд

Конвейер представляет собой вычислительный поток, который на каждой стадии выполняет определенную микрооперацию , поэтому на конвейере в каждый момент времени находится несколько команд на разной стадии выполнения. Это позволяет повысить быстродействие.

Наличие нескольких конвейеров реализует суперскалярную архитектуру.

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

Для оптимизации загрузки конвейеров необходимо следующее:

  • Компиляция машинного кода под конкретный процессор.
  • Оптимизация загрузки конвейера в блоки предварительного декодирования команд.

В итоге команды выполняются не в том порядке, в каком их записывал программист.

Аппаратная реализация основных функций

Умножители

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

Функционально умножители делятся на два вида:

Сдвигатели

Сдвигателем называется как устройство, выполняющее операцию сдвига данных, так и регистр, в котором хранится результат сдвига.

С точки зрения выполняемых функций, сдвигатели делятся на:

  • Предсдвигатели , выполняющие сдвиг до начала операции или в ходе её исполнения;
  • Постсдвигатели , выполняющие сдвиг после исполнения операции.

В обоих случаях структура регистра, хранящего результат сдвига, совпадает со структурой аккумулятора .

Функции предсдвигателей Функции постсдвигателей

  • Масштабирование результатов при сохранении в память. При этом содержимое аккумулятора (результат основной операции) остается неизменным;
  • Удаление битов расширения знака;
  • Нормализация;
  • Выделение одинакового порядка.

Устройства генерации адреса

Аппаратная организация циклов

АЛУ

АЛУ - блок процессора, который под управлением декодера команд выполняет арифметические и логические преобразования над данными, называемыми в этом случае операндами. Разрядность операндов обычно называют размером машинного слова.

Регистры

Аккумулятор

Аккумулятор - регистр, предназначенный для сохранения результатов операций. В архитектуре многих ЦСП предусмотрено два аккумулятора, что позволяет повысить скорость выполнения операций, требующих хранения промежуточных результатов. Технически аккумулятор может состоять из нескольких регистров :

  • EXT - регистр расширения;
  • MSP - регистр старшего слова;
  • LSP - регистр младшего слова.

Наличие регистра EXT позволяет повысить точность вычисления промежуточных результатов, а также увеличить диапазон хранения значений, не приводящих к переполнению. При сохранении значения аккумулятора в ячейку памяти или в обычный регистр, его значение округляется с учетом стандартной ширины этой ячейки или регистра. С другой стороны, при необходимости, содержимое регистра EXT может быть сохранено отдельно.

Способы адресации

Процессор поддерживает режимы прямой адресации, косвенной адресации с пред- и постинкрементом и специфические для задач цифровой обработки сигналов режимы циклической адресации и адресации с реверсированием бит адреса.

Классификация ЦСП по архитектуре

Следует отметить, что приведенная ниже классификация достаточно условна, так как разнообразие технических решений зачастую не позволяет однозначно отнести каждое конкретное устройство к одному из указанных типов. Поэтому нижесказанное следует скорее использовать как материал для понимания особенностей архитектуры ЦСП, чем для реальной классификации каких-либо изделий.

Особенности архитектуры ЦСП удобно рассматривать на примере конкретного алгоритма цифровой обработки данных, например, КИХ-фильтра , выходной сигнал которого можно записать как:

Y (n) = ∑ i = 0 P b i x (n − i) {\displaystyle y\left(n\right)=\sum _{i=0}^{P}b_{i}x\left(n-i\right)} , где

Как можно легко заметить, вычисление результата является классическим примером использования операции «умножение с накоплением» - MAC (Y:= X + A × B) .

Стандартные ЦСП

На рисунке показано два варианта выполнения команды MAC на стандартном ЦСП. В первом варианте оба операнда хранятся в памяти данных, поэтому на их выборку требуется два такта, то есть время выполнения n сложений равно 2n . Во втором случае один из операндов хранится в памяти программ, поэтому команда исполняется за один такт, и общее время выполнения цикла будет равно n тактов (следует уточнить, что в реальности для исполнения за один такт MAC должна исполняться внутри специальной команды цикла для исключения повторной выборки самого кода команды, что требует дополнительного такта). Здесь видно, что эффективная реализация алгоритма требует использования памяти программ для хранения данных.

Одним из вариантов, позволяющим отказаться от использования памяти программ для хранения данных, является применение т. н. «двухпортовой памяти», то есть памяти, имеющей два комплекта входных шин - двух шин адреса и данных. Такая архитектура позволяет произвести одновременное обращение по двум адресам (правда, при этом они должны находиться в разных адресуемых блоках). Данное решение применяется в ЦСП компаний Motorola (DSP56000) и Lucent (DSP1600).

При указанной архитектуре повысить производительность можно только увеличением тактовой частоты.

Улучшенные стандартные ЦСП

«Улучшенные стандартные ЦСП» для повышения производительности системы, по сравнению со стандартными ЦСП, используют следующие методы повышения параллелизма:

  • Увеличение количества операционных и вычислительных устройств;
  • Введение специализированных сопроцессоров;
  • Расширение шин для увеличения количества передаваемых данных;
  • Использование памяти с многократным доступом (несколько обращений за такт);
  • Усложнение системы команд;

Многие из этих способов применялись уже начиная с самых первых процессоров, поэтому зачастую их невозможно однозначно классифицировать как «стандартные» или «улучшенные».

На рисунке показан пример реализации вычисления двух параллельных команд MAC. Для этого в ЦСП присутствуют два модуля MAC и два аккумулятора. Блоки MAC получают данные по трём шинам одновременно, причём одно из значений является для них общим. Таким образом, происходит одновременное исполнение двух команд:

  • АК1:= АК1 + D1 × D2
  • АК2:= АК2 + D1 × D3

Особенность показанного решения состоит в том, что к выполнению двух параллельных команд с одним общим сомножителем можно свести многие алгоритмы ЦОС, например:

  • КИХ-фильтр с симметричными коэффициентами. В качестве одинаковых сомножителей используются коэффициенты фильтра, а на раздельные шины подаются два разных набора отсчётов сигнала, то есть параллельно рассчитываются две половины фильтра, которые затем суммируются.
  • Двухканальная обработка. На общую шину подаются отсчёты сигнала, а на раздельные - наборы коэффициентов.

В некоторых процессорах (Lucent DSP16xxx, ADI ADSP-2116x) используются два одинаковых ядра, каждый со своей памятью, то есть одна команда исполняется одновременно в двух ядрах с различными данными. Это позволяет обойти ограничение на использование полностью независимых данных.

Характерным недостатком таких процессоров можно считать необходимость в высокой квалификации разработчика, так как эффективное использование указанных особенностей требует программирования на языке ассемблера, хорошего знания архитектуры и системы команд, то есть эти устройства считаются «недружественными» к языкам высокого уровня.

ЦСП с архитектурой VLIW

Основное отличие VLIW -процессоров состоит в том, что коды команд ещё на этапе компиляции собираются в большие «суперкоманды» и выполняются параллельно. Обычно такие процессоры используют RISC-архитектуру с фиксированной длиной команды, где каждая из них выполняется в отдельном операционном модуле. К характерным особенностям таких процессоров можно отнести:

  • Большой набор операционных модулей, работающих независимо друг от друга. В состав таких модулей могут входить:
    • Арифметические:
      • модули арифметических операций и операций сравнения;
      • модули логических операций;
      • модули умножения чисел с плавающей и фиксированной точкой;
      • модули генерации констант.
    • Модули генерации адреса, в том числе для линейных и циклических буферов;
  • Необходимость оптимизации компилятора под каждую модель процессора, так как между моделями может меняться состав и функции вычислительных блоков, что влечет за собой изменение перечня команд, которые могут выполняться одновременно;
  • Необходимость в наличии сверхшироких шин данных (порядка 128 бит), чтобы код операции, состоящий из отдельных команд (до 8-ми), мог быть получен из памяти за одно обращение.
  • Высокие требования к объёму памяти программ, что также связано с большой длиной операции.

Обычно, если процессор имеет несколько одинаковых модулей, то при создании программы на ассемблере имеется возможность указания только типа необходимого операционного модуля, а конкретное устройство будет назначено компилятором. С одной стороны, это упрощает программирование таких устройств, а с другой стороны, позволяет достаточно эффективно использовать их ресурсы.

Суперскалярные ЦСП

Суперскалярные процессоры также характеризуются большим набором параллельных операционных модулей и возможностью одновременного исполнения нескольких команд. Однако, по сравнению с VLIW, они имеют две характерные особенности:

  • Команды процессора не группируются в блоки, каждая из них поступает в процессор независимо;
  • Команды для параллельного исполнения группируются внутри процессора на основе состава и текущей загруженности операционных блоков, а также зависимости между данными.

С помощью описанного подхода можно обойти следующие недостатки VLIW:

  • Неэффективное использование памяти из-за большой длины групповой операции;
  • Зависимость скомпилированного кода от состава операционных модулей конкретного процессора.

Платой за решение этих проблем становится значительное усложнение схемы процессора, в котором появляется модуль планирования выполнения команд.

Суперскалярные процессоры планируют исполнение команд не только на основе информации о загруженности операционных блоков, но и на основе анализа зависимостей между данными. К примеру, команда сохранения результата арифметической операции не может быть выполнена раньше самой операции вычисления, даже если модуль обращения к памяти в данный момент свободен. Эта особенность приводит в том числе к тому, что один и тот же набор команд может по-разному исполняться в различных местах программы, что делает невозможным точную оценку производительности. Особенно это важно для систем, работающих в реальном времени, ведь оценка по наихудшему результату приведет к тому, что ресурсы процессора будут использованы не полностью. Таким образом, в этих системах задача точной оценки производительности суперскалярных ЦСП остается открытой.

Классификация ЦСП по назначению

В целом, по назначению ЦСП можно разделить на две группы:

  • ЦСП общего назначения;
  • Проблемно-ориентированные ЦСП.

«Проблемная ориентация» обычно относится не к дополнительным командам, а к набору встроенных специализированных периферийных устройств. Например, ЦСП, предназначенные для управления электродвигателями , могут содержать на кристалле генераторы сигналов ШИМ , контроллеры локальной промышленной сети и т. д. Процессоры, используемые для обработки голосовых сигналов, часто содержат модули манипуляции разрядами (BMU) и сопроцессоры исправления ошибок. В цифровых фото- и видеокамерах применяются ЦСП с модулями кодирования/декодирования MPEG1, MPEG4, JPG, MP3, AAC и др.

  • При программировании на ассемблере программисту доступны все ресурсы процессора и системы, что позволяет использовать их максимально эффективно;
  • От программиста требуется хорошее знание архитектуры каждого конкретного процессора, с которым он работает, то есть требуемая квалификация персонала должна быть достаточно высокой;
  • Создание и отладка программ на ассемблере - длительный трудоёмкий процесс, также требующий высокой квалификации.
  • С другой стороны, при использовании языков среднего и высокого уровня, в частности, C, можно заметно упростить и ускорить создание программ, но при этом ресурсы системы будут использоваться менее эффективно, по сравнению с программой, целиком написанной на ассемблере.

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

    Особенности ассемблеров ЦСП

    К интересным особенностям ассемблеров ЦСП можно отнести следующее:

    • Наличие двух форм записи многих команд - мнемонической и алгебраической . Мнемоническая форма аналогична записи команд для обычных микропроцессоров, например, ADD dst, src . Другая, алгебраическая, в ассемблерах стандартных микропроцессоров используется реже, в то время как на языке ЦСП упомянутая команда может быть записана в виде dst = dst + src . Обычно ассемблеры ЦСП понимают обе формы записи, но, например, ассемблеры Analog Devices и Lucent Technologies используют только алгебраическую запись.
    • Средства организации стандартных структур, например, специальных аппаратных команд повторения одной команды или блока кода. При этом, в отличие от команд повторения обычных процессоров, ЦСП может пропускать цикл выборки кода повторяемой команды, что уменьшает время выполнения каждого повторения как минимум на 1 цикл шины, что при двухцикловой команде даёт двойной выигрыш по времени.

    Совместимость внутри семейств ЦСП

    Обычно ЦСП выпускаются семействами, и изделия внутри семейств имеют аналогичные языки ассемблера, или даже совместимы на уровне машинных кодов. Также внутри семейства обычно используются одинаковые наборы библиотек подпрограмм. Как и в обычных микропроцессорах, зачастую старшие модели ЦСП могут исполнять машинный код младших моделей, либо их ассемблер включает все команды младших моделей как подмножество собственного набора команд.

    Отладка программ

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



    Рекомендуем почитать

    Наверх