Процессоры цифровой обработки сигналов

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

Выбор вычислительных элементов

Сегодня возможности выбора чрезвычайно широки:

Сделанная на заказ интегральная микросхема (ИМС) для специфической вычислительной задачи

Выбор того или другого зависит от большого числа факторов, включающих:

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



Зачем нужны процессоры для специфических приложений ?

Генерализация и эффективность в некотором смысле обратно связаны друг с другом:

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

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

Архитектура процессоров цифровой обработки сигналов (Digital Signal Processor, DSP)

Содержание

Основные типы/области применения процессоров

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

Пространство "дизайна" микропроцессоров

Собственно, муки выбора довольно чётко определяет следующая картинка



Вернёмся к требованиям, предъявляемым к встраиваемым микропроцессорам.

Типичный пример оптимизации стоимости процессора:



Далее, пример расчёта вычислительной эффективности:



Размер кода также имеет немаловажное значение (по крайней мере, когда счёт идёт при миллионных выпусках на центы).

В большинстве чипов программа хранится в ROM, поэтому минимизация размера кода является критическим вопросом

Обычно ISA встраиваемого процессора располагает к минимизации размера кода:



Дадим своеобразное сравнение общецелевых и встраиваемых вычислений.


Встраиваемые системы

Вычислительные системы общего назначения

Исполняют одно или немного специализированных приложений, о которых часто известно во время разработки системы

Используются для общецелевого ПО :

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

Могут требовать доп. возможности для специфического приложения (например, DSP)

Не требуется доп. возможностей для специфического приложения

Не программируемы конечным пользователем

Программируемы конечным пользователем

Желателен минимальный размер кода

Минимизация размера кода не является проблемой

Легковесные ОС, ОС реального времени или нет

Тяжеловесные, многозадачные ОС- Windows, UNIX

Ограничения низкого потребления и стоимости

Меньшие ограничения на потребление/цену

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

Вообще говоря, нет ограничений реального времени

Производительность в реальном времени должна быть полностью предсказуемой:

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

Производительность в реальном времени может не быть полностью предсказуемой (в силу динамических особенностей архитектуры CPU):

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

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

Чем быстрее (выше производительность), тем всегда лучше

Эволюция GPPs и DSPs

Интересным является процесс "происхождения видов".

Из специализации DSP следует:

Несколько иначе трактуется производительность: Характеристикой типа “MIPS/MFLOPS” для DSP является скорость Умножения-Накопления (Multiply-Accumulate, MAC).

И связано это с базовыми операциями многих алгоритмов цифровой обработки.

Одна из классификаций процессоров по разрядности (возможно несколько устаревшая информация, но тем не менее)

DSP ядра и DSP чипы

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

В исторической перспективе развитие DSP архитектур и технологий производства выглядит так:



Последние поколения DSP по факту встраиваются в SoC, где они являются важным компонентом специализированной системы, позволяющей на лету обрабатывать аудио и видео потоки. В разрезе предыдущей картины интересно проследить развитие DSP на примере очень популярного семейства TMS320 от Texas Instruments:



Области применения цифровых сигнальных процессоров

Для начала отметим, что самым большим потребителем процессоров такого рода являются мобильные коммуникации.

(Инфраструктура телекоммуникаций)

Типичные алгоритмы и приложения цифровой обработки сигналов:



Ещё один взгляд на область приложений DSP:

Чем выше область, тем более сложный процессор используется и тем выше его стоимость

Примерная структура приложения цифровой обработки:



И та архитектура, на которой приложение выполняется:



Обратите внимание на 2 микропроцессора - один общего назначения (ARM) и второй специализированный (DSP).

В настоящее время всё программное обеспечение переносится на SoC (System-on-Chip), что позволило фактически разместить всю обработку и все специализированные процессоры на одном чипе. Уже сейчас чип представляет собой смесь процессоров, памяти и аппаратного обеспечения для специфических алгоритмов и I/O



Например, мультимедиа - терминальная электроника

переносится на ASIC Сопроцессор или ASP

Формат DSP алгоритма

В DSP-сообществе принято представлять формулы в графическом виде.

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

Часть выглядит естественно: Σ обозначает сложение, X -умножение. Другие не так очевидны: z–1 означает взятие переменной с более ранней итерации (задержка).

Такие графы легко декодировать

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



Типичные DSP алгоритмы:

Фильтр с конечным импульсным откликом (FIR)

Фильтры снижают шум сигнала и повышают качество изображения или сигнала путем отсечения нежелательных частот.

Фильтры с конечным импульсным откликом (FIR) вычисляют:

где

x - входная последовательность

y - выходная последовательность

h – импульсный отклик (коэффициенты фильтра)

N - число ступеней (коэффициентов) в фильтре

Выходная последовательность зависит только от входной последовательности и импульсного отклика. В памяти содержится N последних отсчетов в очереди задержек(Xi). Новый отсчет помещает данные в конец очереди задержек. Строб фильтра является multiply-add операцией (MAC, рассмотрено ранее). Каждый строб (всего N штук) обычно требует:

Цель: Хотя бы 1 FIR ступень на такт DSP инструкции, это определяющая характеристика DSP.

DSP должен удовлетворять требования вычисления частоты дискретизации приложения: более быстрые DSP накладны (большая стоимость/потребление, чем реально необходимо)

Примеры характеристик типичных фильтров


Рассмотрим реализацию фильтра на процессоре общего назначения:

Проблемы:

Типичные DSP алгоритмы:

Фильтр с бесконечным импульсным откликом (IIR)

Фильтры с бесконечным импульсным откликов (IIR) вычисляют:

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

И FIR, и IIR фильтры

Типичные DSP алгоритмы:

Дискретное преобразование Фурье (DFT)

Дискретное преобразование Фурье (Discrete Fourier Transform, DFT) позволяет делать спектральный анализ в области частот.

Оно вычисляется как

для k = 0, 1, … , N-1, где

x - входная последовательность моментов времени

y - выходная последовательность частот

Обратное дискретное преобразование Фурье вычисляется как

Быстрое преобразование Фурье (FFT) дает эффективный способ вычисления DFT.

Типичные DSP алгоритмы:

Дискретное косинусное преобразование (DCT)

Дискретное косинусное преобразование (Discrete Cosine Transform, DCT) часто используется при сжатии изображений & видео (например, JPEG, MPEG-2).

DCT и обратное DCT (IDCT) вычисляются как:

где e(k) = 1/sqrt(2) если k = 0; иначе e(k) = 1.

Вычислительная сложность: N-точечное, 1D-DCT требует N2 MAC операций

DSP бенчмарки

Бенчмаркинг используется для объективного сравнения производительности различных процессоров. Для DSP было предложено несколько бенчмарков, которые позволяют заинтересованным структурам определять возможности процессора при выборе платформы для реализации проекта.

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

DSPstone: Университет Aachen, приложения-бенчмарки

BDTImark2000: Berkeley Design Technology Inc

EEMBC (произносится “embassy”): EDN Embedded Microprocessor Benchmark Consortium

Пример:



Основные ISA/архитектурные черты DSP

Арифметика DSP


Размер слова влияет на точность чисел с фиксированной точкой

DSP имеют 16-битные, 24-битные, или 32-битные слова данных. DSP с поддержкой плавающей точкой стоит в 2-3 раза дороже, чем с поддержкой фиксированной точки, и медленнее

Программисты DSP могут масштабировать значения внутри кода. Эту хитрость позволяют делать как программные библиотеки, так и использование отдельных явных экспонент. Например, т.н. “Блокированная плавающая точка (Blocked Floating Point)” – когда используется одна экспонента для группы дробей.

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

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

Поддержана установка результата при сложении в самое большое положительное (2N–1–1) или самое малое отрицательное значение (–2N–1) : “насыщение”, что позволяет отказаться от обработки исключений.

Много DSP алгоритмов было разработаны в такой модели.


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

Используется почивший в бозе в архитектурах общего назначения длинный аккумуляторный регистр:

Недопустимо переполнение или необходимость масштабировать аккумулятор

Вариант 1: аккумулятор шире, чем произведение: это “сторожевые биты” (Motorola DSP: 24bit x 24bit => 48b произведение, 56b аккумулятор), что позволяет без переполнения складывать длинный массив чисел

Вариант 2: правый сдвиг и округление произведения перед сложением


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

3 стандартных варианта для DSP (поддерживаемых аппаратно)

IEEE 754 называет такой вариант округлением до ближайшего четного


Пример - Диаграмма функциональных блоков для TI 320C54x DSP (1995)

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


Память в DSP - общие сведения

В DSP используется гарвардская архитектура памяти - с одновременным доступом к нескольким значениям в памяти. Например, один доступ для данных отсчетов сигнала и один для коэффициентов фильтра.


В итоге:


Как пример - приведём диаграмму блоков памяти для простого процессора TI TMS320C3x – иллюстрирующую гарвардскую архитектуру.


Иной пример - архитектура памяти более сложного процессора TI 320C62x/67x DSP (1997) – (DSP 4го поколения)


Богатство режимов адресации в DSP

DSP имеют "стандартные" режимы адресации: непосредственный, со смещением, регистровый косвенный. Это всё связано с тем, что ж елательно сохранять тракт данных к MAC занятым для нормальной загрузки DSP.

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

Например:

Всё вышеперечисленное позволяет выполнить 1 такт цифрового фильтра за один такт процессора.

Особым является режим адресации для FFT (преобразования Фурье) - адресация с обратным порядком бит.

FFT начинается или заканчивается с данными в порядке возрастания:

0 (000)

0 (000)

1 (001)

4 (100)

2 (010)

2 (010)

3 (011)

6 (110)

4 (100)

1 (001)

5 (101)

5 (101)

6 (110)

3 (011)

7 (111)

7 (111)

Как избежать накладных расходов для инструкций проверки адреса в FFT? С помощью бит-реверсивной адресации и использования автоинкрементной адресации. Поэтому большинство DSP имеют бит-реверсивную адресацию для FFT с основанием 2.

На рисунке показан поток данных в FFT алгоритме с основанием 2 и динамическим прореживанием – децимацией (decimation-in-time)


Ещё одной особенностью является адресация циклических буферов.


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

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


Итоги:


Исполнение инструкций DSP

Исполнение инструкций в DSP-архитектуре имеет следующие особенности:

Пример использования циклов архитектуры DSP с низкими или нулевыми накладными расходами

Пример внутреннего цикла FIR фильтра на TI TMS320C54xx:



Специализированные периферийные устройства DSP

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


Пример - диаграмма блоков для TI TMS320C203/LC203, DSP–ядро - 1995 год, обратите внимание на состав периферии


Суммарная информация по архитектурным особенностям DSP

Все эти особенности жизненно важны для дизайна архитектуры, управляемой бенчмарками (или алгоритмами).

Последствия: особенности разработки ПО для DSP архитектур

Классификация DSP-архитектур

Современные традиционные DSP: (2-е поколение) (самые дешевые)

Улучшенные традиционные DSP: (3-е поколение)

DSP с выдачей нескольких инструкций: (4-е поколение)

Суперскалярный, пример: LSI Logic ZPS400, ZPS500

Пример: Традиционный DSP: TI TMS320C54xx

Второе поколение DSP.


Пример: Улучшенный традиционный DSP: TI TMS320C55xx

Третье поколение DSP.

TMS320C55xx основан на более раннем семействе Texas Instruments' TMS320C54xx, но содержит существенные улучшения в архитектуре и наборе инструкций, включая:


Пример: 16-битный с фиксированной точкой VLIW DSP: TI TMS320C6201 Revision 2 (1997)

Четвертое поколение DSP. DSP с выдачей нескольких инструкций

TMS320C62xx -это первый DSP процессор с фиксированной точкой от Texas Instruments, который основан на VLIW-подобной архитектуре, позволяющей исполнять до восьми 32-битныхRISC-подобных инструкций за такт.

TMS320C67xx - Версия с плавающей точкой

Более дружествен компилятору. Большая стоимость/потребление. В DSP этого класса добавлена поддержка SIMD инструкций


Внутренняя архитектура памяти в TI TMS320C62xx:

Отдельные пространства для программы и данных

Программная память:

16K 32-битных инструкций (2K пакеты выборки)

256-битная ширина полосы выборки, конфигурируемая как кэш с прямым отображением, память программы с отображением в память

Память данных:

32K x 16

Однопортовая, с обращениями от обеих шин данных CPU

4 x 8K 16-битных банков

2 возможных одновременных обращения к памяти (4 банка)

4-канальная с чередованием, банки и чередование минимизируют конфликты доступа

Функциональные устройства в TI TMS320C62xx


Выполнение инструкций статически спланировано, например упаковка инструкций TI TMS320C62xx (8-канальный VLIW):


Функционирование конвейера в TI TMS320C62xx осуществляется следующим образом (показаны этапы конвейера и пример исполнения инструкций).


В конвейере C62xx используются слоты задержки: добавляется количество дополнительных тактов, до тех пор, пока результат:


FIR фильтр на TMS320C54xx и TMS320C62xx - отличный пример

  1. Стандартный DSP 2го поколения
  2. VLIW DSP 4го поколения

Пример: TI TMS320C64xx

C64xx (также C62xx и C67xx) VLIW потребляет больше, чем стандартные DSP, памяти команд, из-за упрощенных (RISC-подобных, фиксированной ширины) инструкций. Требуется больше инструкций и пропускной способности


StarCore 140: Тоже VLIW но с кодированием инструкций переменной длины (меньшее использование памяти, чем в C64xx)

Вычислительная эффективность:


Пример: Суперскалярный DSP: LSI Logic ZSP400

Пример: один из результатов бенчмарков:



Спасибо за внимание!