Цифровой сигнальный процессор (DSP — , ЦПОС — цифровой процессор обработки сигналов) — специализированный микропроцессор, предназначенный для обработки оцифрованных сигналов (обычно, в режиме реального времени)Цифровые процессоры обработки сигналов: справочник. Под. ред. А. Г. Остапенко, М., Радио и связь, 1994..
Особенности архитектуры Архитектура сигнальных процессоров, по сравнению с микропроцессорами общего применения, имеет некоторые особенности, связанные со стремлением максимально ускорить выполнение типовых задач цифровой обработки сигналов, таких, как цифровая фильтрация, преобразование Фурье, поиск сигналов. Математически эти задачи сводятся к поэлементному перемножению многокомпонентных векторов действительных чисел, последующему суммированию произведений (например, в цифровой фильтрации выходной сигнал фильтра с конечной импульсной характеристикой равен сумме произведений коэффициентов фильтра на вектор выборок сигнала, аналогичные вычисления производятся при поиске максимумов корреляционных и автокорелляционных функций выборок сигналов). Поэтому сигнальные процессоры оптимизированы по быстродействию для выполнения именно таких операций. И сигнальные процессоры ориентированы, в первую очередь, на многократное выполнение умножения с расчётом «на лету» адресов перемножаемых элементов массивов: операция «умножение с накоплением» (, ) — , где , , — элементы массивов вещественных чисел с автоматическим расчётом адресов элементов массивов и обычно реализована аппаратно и исполняется за один машинный цикл; аппаратная реализация многократного повторения заданного набора команд, то есть циклы с заранее назначенной длиной без использования счётчиков цикла и команд проверки обнуления счётчика цикла — признака выхода из цикла. возможность одновременной в одном машинном такте выборки команды и двух операндов для максимально быстрого выполнения команды MAC; для этого сигнальный процессор имеет несколько портов обращения к памяти (независимых областей памяти, каждая со своим комплектом шин адреса и данных); поддержка векторно-конвейерной обработки с помощью генераторов адресных последовательностей.
Ограниченность аппаратных ресурсов первых сигнальных процессоров накладывала существенный отпечаток на их архитектуру: гарвардская архитектура (разделение памяти команд и данных), как правило, модифицированная; с разделением памяти на сегменты с независимым доступом; детерминированная работа с известными временами выполнения команд, что позволяет выполнять планирование работы в реальном времени; сравнительно небольшая длина конвейера, так что незапланированные условные переходы могут занимать меньшее время, чем в универсальных процессорах; экзотический набор регистров и инструкций, часто сложных для компиляторов. Некоторые архитектуры тогда использовали VLIW.
В современной микроэлектронике процессоры общего назначения зачастую содержат аппаратную поддержку типовых операций сигнальных процессоров. Особо ёмкие по времени задачи обработки сигналов решаются на основе программируемой логики, где можно достичь предельной оптимизации выполнения конкретной операции. Специализированные сигнальные процессоры всё чаще делают векторными. В то же время классические цифровые сигнальные процессоры снабжают развитыми наборами команд процессоров общего назначения и сглаживают особенности программной модели, позиционируя их как изделия широкого применения с ускоренными функциями обработки сигналов. Все эти тенденции приводят к размыванию классического понятия сигнального процессора.
Области применения Сигнальные процессоры применяются в для решения следующего рода задач: уплотнение каналов передачи данных (для коммуникационном оборудовании); кодирование аудио- и видеопотоков (аудиопроцессоры, видеопроцессоры); речевые и музыкальные синтезаторы (в том числе микросхемы генераторов звуковой частоты); распознавание речи и изображений; анализаторы спектра; системы гидро- и радиолокации; управление технологическими процессами.
История
Предшествующие разработки До 1980 года несколько компаний выпустили устройства, которые можно считать предшественниками ЦСП. Так, в 1978 году Intel выпустила «процессор аналоговых сигналов» 2920. В его состав входили АЦП, ЦАП и процессор обработки цифровых данных, однако аппаратная функция умножения отсутствовала. В 1979 AMI выпускает S2811 — периферийное устройство, управляемое основным процессором компьютера. Оба изделия не достигли успеха на рынке.
Первое поколение (начало 1980-х) Основную историю цифровых сигнальных процессоров принято отсчитывать от 1979—1980 годов, когда Bell Labs представила первый однокристальный сигнальный процессор Mac 4, а также на «IEEE International Solid-State Circuits Conference '80» были показаны компании NEC и компании AT&T, которые, однако, не получили широкого распространения. Стандартом де-факто стал выпущенный чуть позже кристалл фирмы Texas Instruments, по многим параметрам и удачным техническим решениям превосходящий изделия конкурентов. Вот некоторые его характеристики: АЛУ: размер слова: 16 бит; разрядность вычислителя: 32 бит; быстродействие: 5 млн операций сложения или умножения в секунду; длительность командного цикла: 160—280 нс; память: ОЗУ: 144—256 слов; ПЗУ программ: 1,5—4 К слов; ППЗУ: до 4К слов (отдельные модели); внешняя шина: разрядность: 16 бит; адресуемое пространство: 4К слов пропускная способность: 50 Мбит/с устройства ввода-вывода: 8 портов по 16 разрядов;
Второе поколение (середина 1980-х) Благодаря прогрессу в полупроводниковых технологиях в этот период были выпущены изделия, имеющие расширенные функции по сравнению с первым поколением. К характерным отличиям можно отнести: увеличение объёма ОЗУ до слов; добавлена возможность подключения внешней памяти программ и внешней памяти данных объёмом до 128 К слов; быстродействие повышено в 2—4 раза; улучшенные подсистемы прерываний и ввода-вывода.
Много позднее также были выпущены устройства, формально относящиеся ко второму поколению, но имеющие следующие усовершенствования: увеличена разрядность данных; пониженное напряжение питания и, как следствие, энергопотребление; введены режимы экономии энергии; аппаратная поддержка мультипроцессорности (система совместного доступа к внешней памяти); аппаратная поддержка кольцевых буферов; аппаратная поддержка операций циклов; расширены способы адресации; две внутренние шины данных, что позволяет значительно ускорить парную обработку данных (координаты X/Y, действительная и мнимая часть и т. д.), либо виртуально удвоить разрядность обрабатываемых данных; введена кэш-память.
Третье поколение (конец 1980-х) Третье поколение принято связывать с началом выпуска изделий, реализующих арифметику с плавающей запятой. Характерные особенности первых выпущенных образцов: производительность: порядка 20—40 млн MIPS; два блока ОЗУ по 1 К 32-разрядных слов с возможностью одновременного доступа; кэш-память объёмом 64 слова; разрядность регистров: 32 бит; разрядность АЛУ: 40 бит; регистры для операций с повышенной точностью; встроенные контроллеры ПДП; разрядность шин: 32 бит для команд и 24 бит для адреса.
Четвёртое поколение Четвёртое поколение характеризуется значительным расширением наборов команд, созданием VLIW и суперскалярных процессоров. Заметно возросли тактовые частоты. Так, например, время выполнения команды MAC () удалось сократить до 3 нс.
Современные ЦСП Лучшие современные цифровые сигнальные процессоры можно характеризовать следующими параметрами: тактовая частота — 1 ГГц и выше; многоядерность; наличие двухуровневого кеша; встроенные многоканальные контроллеры прямого доступа к памяти; быстродействие порядка нескольких тысяч MIPS и MFLOPS; выполнение до 8 параллельных инструкций за такт; совместимость со стандартными шинами (PCI и другими).
Основные параметры По типу арифметики сигнальные процессоры делятся на процессоры, обрабатывающие данные с фиксированной точкой и обрабатывающие данные с плавающей точкой. Устройства с плавающей точкой удобнее в применении, но они заметно сложнее по устройству и более дороги.
Другой ключевой параметр сигнального процессора — разрядность данных. Большинство процессоров с фиксированной точкой обрабатывают данные с разрядностью 16 бит, процессоры с плавающей точкой — 32 бита. Многие модели могут обрабатывать данные с двойной точностью.
Быстродействие как интегральную характеристику определить достаточно сложно, поэтому скорость работы характеризуют несколькими параметрами, а также временем решения некоторых реальных задач. Для характеризации быстродействия используют такие параметры, как тактовая частота и время командного цикла. Для современных цифровых сигнальных процессоров тактовая внутренняя частота может отличаться от внешней, поэтому могут указываться два значения. Время командного цикла указывает на время выполнения одного этапа команды, то есть время одного цикла конвейера команд. Так как команды могут исполняться за разное количество циклов, а также с учётом возможности одновременного исполнения нескольких команд, этот параметр может характеризовать быстродействие достаточно приближённо. Альтернативный параметр, характеризующий быстродействие — количество выполняемых команд за единицу времени; различное время исполнения команд, а также исполнение нескольких команд одновременно не позволяют использовать этот параметр для надёжной характеристики быстродействия. Широко используемый в процессорах общего назначения параметры быстродействия MIPS — количество выполняемых операций за единицу времени — учитывает одновременную обработку нескольких команд и наличие параллельных вычислительных модулей, поэтому достаточно хорошо может указывать на быстродействие и сигнальных процессоров, но некоторой проблемой остаётся то, что понятие «операции» чётко не формализовано. Эта же сложность относится и к параметру FLOPS (количество выполняемых операций с плавающей точкой за единицу времени).
Более показательным для цифровых сигнальных процессоров является такой параметр, как количество выполняемых операций умножения с накоплением за единицу времени, поскольку данная команда, с одной стороны, является базовой для многих вычислений, а с другой — достаточно проста. Поэтому время её исполнения можно использовать в том числе и для оценки общей производительности процессора.
Объём внутренней оперативной памяти показывает, сколько данных сигнальный процессор может обработать без обращения к внешней памяти, что может характеризовать общее быстродействие системы, а также возможность работать «в реальном времени». Тип ПЗУ определяет возможности по программированию устройства. Модели с обычным ПЗУ подходят для крупносерийного производства, ППЗУ (однократно программируемое) удобно для небольших тиражей, а применение Flash-памяти позволяет менять программу устройства многократно во время эксплуатации. На данный момент не очень мощные процессоры чаще всего снабжены достаточно большой флеш-памятью и заметным объёмом оперативной памяти и поэтому могут являться самодостаточными без добавления внешней памяти и на этапе разработки, и на этапе производства, что повышает конкурентоспособность таких процессоров в ряде сегментов рынка. Мощные сигнальные процессоры, как правило, полагаются на внешнюю память, подключённую по достаточно быстрым шинам, а размещение там флеш-памяти может быть технически проблематичным, например, из-за заметного выделения тепла.
Объём адресуемой внешней памяти характеризуется шириной внешней шины адреса.
Также процессоры могут различаться по способу начальной загрузки.
Количество и параметры портов ввода-вывода показывают возможности по взаимодействию с внешними по отношению к нему устройствами.
Процессоры могут включать различные внутренние дополнительные устройства, в их число могут входить разнообразные по назначению устройства, например, «общего применения» — таймеры, контроллеры ПДП, а также проблемно-ориентированные — АЦП, кодеки, компрессоры данных и другие.