Процессоры цифровой обработки сигналов
Для решения большого количества промышленных задач необходима цифровая обработка дискретизированного сигнала. Несмотря на то, что немало задач можно решить с помощью персонального компьютера, существуют разнообразные ограничения на размеры, мощность, производительность в пересчёте на Ватт и иные иногда кажущиеся фантастическими ограничения. Тем более, что специализированный процессор справляется с задачей гораздо эффективнее, чем универсальный. Однако, специфика сигнальных процессоров такова, что они проигрывают в удобстве разработки и требует высокой квалификации программиста. Менеджер проекта должен тщательно оценивать необходимую производительность и затраты, перед тем как выбрать тот или иной вариант решения задачи. С другой стороны, современные SoC - Systems on Chip - содержат в качестве компонентов большое количество сигнальных процессоров, поэтому для эффективной работы с современной элементной базой знания по архитектурам процессоров цифровой обработки сигналов просто необходимы.
Выбор вычислительных элементов
Сегодня возможности выбора чрезвычайно широки:
- Процессоры общего назначения (General Purpose Processors, GPPs):
Предназначены для широкого спектра вычислений (настольные компьютеры, сервера, кластеры...)
- Процессоры для специфических приложений (Application-Specific Processors, ASPs):
процессоры с ISA и архитектурными особенностями для специфических областей применения
Например, процессоры цифровой обработки сигналов ( Digital Signal Processors, DSPs), сетевые процессоры (Network Processors, NPs), медиа процессоры, графические процессоры (Graphics Processing Units, GPUs), векторные процессоры ...
- Сопроцессоры (Co-Processors):
Аппаратная («зашитая») реализация специфических алгоритмов с ограниченным программным интерфейсом (расширяют GPPs или ASPs)
- Конфигурируемое аппаратное обеспечение (Configurable Hardware):
- Программируемые логические матрицы (Field Programmable Gate Arrays, FPGAs)
- Конфигурируемый массив простых процессорных элементов
- Интегральные схемы для специфических приложений (Application Specific Integrated Circuits, ASICs):
Сделанная на заказ интегральная микросхема (ИМС) для специфической вычислительной задачи
Выбор того или другого зависит от большого числа факторов, включающих:
Последующий рисунок прямо говорит о том, что за производительность надо платить. Поэтому важно понять с самого начала, сколько будет стоить производительность.
Зачем нужны процессоры для специфических приложений ?
Генерализация и эффективность в некотором смысле обратно связаны друг с другом:
- Чем более общим является вычислительный элемент, и чем большее число задач он способен выполнять, тем менее эффективным (например, в плане вычислений на площадь чипа/ватт) он будет при выполнении любой из этих специфических задач.
Важно отметить, что эффективность процессора может быть временной - пока конкуренты не подтянули в новом цикле разработки новый процессор на новый техпроцесс.
- Поэтому решения, принятые при разработке, практически всегда компромиссны; разработчики выделяют ключевые моменты требований приложений, которым необходимо удовлетворить и довольствуются компромиссными вариантами в менее важных областях.
Для решения вычислительно интенсивных и специализированных задач, для которых машины общего назначения не могут достичь необходимой производительности (или другие требования):
- Для специфических областей приложений, таких как обработка изображений или цифровых сигналов(для которых многие вычислительные задачи являются специализированными и могут быть хорошо определены), в течение многих лет разрабатываются и производятся процессоры специального назначения (или Application-Specific Processors, ASPs), присоединенные процессоры, и сопроцессоры.
Таким образом, "общая" архитектура даёт нам гибкость и переносимость. Специфическая архитектура обеспечивает скорость и малое энергопотребление, но усложняет жизнь. (Поэтому столь трудно перепрыгнуть с архитектуры на архитектуру.)
Архитектура процессоров цифровой обработки сигналов (Digital Signal Processor, DSP)
Содержание
- Классификация основных типов/областей применения процессоров
- Требования встраиваемых процессоров
- DSP и CPU общего назначения
- DSP ядра и DSP чипы
- Классификация DSP приложений
- Формат алгоритмов DSP
- DSP бенчмарки
- Базовые архитектурные черты DSP
- Соображения по разработке ПО для DSP
- Классификация современных DSP архитектур и примеры DSP:
- классические DSPs: TI TMSC54xx
- Улучшенные классические DSPs: TI TMSC55xx
- Multiple-Issue DSPs:
- VLIW DSPs: TI TMS320C62xx, TMS320C64xx
- Суперскалярные DSPs: LSI Logic ZSP400/500 DSP core
Основные типы/области применения процессоров
Продвижение вниз по списку ведёт к увеличению объёма производства, при этом архитектура упрощается и снижается цена (в стиральной машине большая вычислительная мощность не нужна.
- Обобщенные вычисления & процессоры общего назначения (General Purpose Processors, GPPs)
- Высокая производительность: вообще, чем быстрее, тем лучше
- RISC или CISC: Intel P4, IBM Power4, SPARC, PowerPC, MIPS ...
- Используются для общецелевого ПО
- Программируемы конечным пользователем
- Производительность в режиме реального времени может не быть полностью предсказуемой (за счет динамических особенностей архитектуры)
- Тяжеловесные, многозадачные ОС - Windows, UNIX
- Обычно низкие стоимость и потребление не требуются (сейчас меняется)
- Рабочие станции, персональные компьютеры (PC’s), ноутбуки, кластеры
- Встраиваемые вычисления & встраиваемые процессоры и процессорные ядра
- Ограничениями являются стоимость, потребление, размер кода и операции в режиме реального времени
- С учетом ограничений реального времени, более быстрый процессор может не быть более хорошим
например: Intel XScale, ARM, 486SX, Hitachi SH7000, NEC V800...
- Часто требуют поддержки цифровой обработки сигналов (Digital signal processing, DSP) или другой поддержки специфических приложений (например сеть, медиа обработка)
- Одна или мало специализированных программ, которые учитываются на стадии разработки
- Не программируемы конечным пользователем
- Легковесные ОС, часто ОС реального времени или вообще отсутствует
Примеры: Мобильные телефоны, коммуникации, электроника...
- Микроконтроллеры
- Чрезвычайно чувствительны к размеру кода/стоимости/потребляемой мощности
- Однозадачные
- Малый размер слова – часто 8 бит, в последнее время идёт миграция в 32 бита (ибо стоимость различается на пару центов)
- Обычно ОС нет
- Наибольшие объемы производства на данный момент
- Примеры: Системы контроля, автомобили, тостеры, пожарная сигнализация, ...
Пространство "дизайна" микропроцессоров
Собственно, муки выбора довольно чётко определяет следующая картинка
Вернёмся к требованиям, предъявляемым к встраиваемым микропроцессорам.
- Обычно должны удовлетворять строгим ограничения реального времени:
- Производительность в режиме реального времени должна быть полностью предсказуема:
- Избегание динамических особенностей архитектуры процессоров, которая может затруднить предсказание производительности в реальном времени ( например кэш, динамическое планирование, аппаратная спекуляция…)
- При условии, что удовлетворяются ограничения реального времени, более быстрый процессор не желателен из-за увеличения требований к стоимости/потреблению.
- Оптимизированы для одной (или малого числа) программ(ы) – код часто внутри ROM чипа или в EPROM/flash памяти, расположенной внутри/вне чипа
- Минимальный размер кода (один из начальных стимулов для языка Java)
- Производительность достигается оптимизацией тракта данных
- Низкая стоимость
- Минимально возможная площадь
- Высокая вычислительная эффективность: Вычисления на площадь устройства
- Технология СБИС обычно не самая передовая (опоздание на одно поколение)
- Высокий уровень интеграции периферийных устройств (Подход System-on-Chip -SoC- уменьшает стоимость/потребление системы)
- Быстрое продвижение на рынке
- Совместимые архитектуры (например, семейство ARM) позволяет повторное использование кода
- Настраиваемые ядра (System-on-Chip, SoC).
- Низкое энергопотребление, если приложение требует мобильности
Типичный пример оптимизации стоимости процессора:
Далее, пример расчёта вычислительной эффективности:
Размер кода также имеет немаловажное значение (по крайней мере, когда счёт идёт при миллионных выпусках на центы).
В большинстве чипов программа хранится в ROM, поэтому минимизация размера кода является критическим вопросом
Обычно ISA встраиваемого процессора располагает к минимизации размера кода:
- Часто используется кодирование инструкций переменной длины :
- Например, Piranha имеет инструкции трех размеров – основные по 2 байта, и 2 байта + непосредственные 16 или 32 бит
- Сложные/специализированные инструкции
- Сложные режимы адресации
Дадим своеобразное сравнение общецелевых и встраиваемых вычислений.
Встраиваемые системы
|
Вычислительные системы общего назначения
|
Исполняют одно или немного специализированных приложений, о которых часто известно во время разработки системы
|
Используются для общецелевого ПО :
Предназначены для исполнения полностью общего набора приложений, о которых может быть ничего неизвестно во время разработки системы
|
Могут требовать доп. возможности для специфического приложения (например, DSP)
|
Не требуется доп. возможностей для специфического приложения
|
Не программируемы конечным пользователем
|
Программируемы конечным пользователем
|
Желателен минимальный размер кода
|
Минимизация размера кода не является проблемой
|
Легковесные ОС, ОС реального времени или нет
|
Тяжеловесные, многозадачные ОС- Windows, UNIX
|
Ограничения низкого потребления и стоимости
|
Меньшие ограничения на потребление/цену
|
Обычно должны удовл. требованиям реального времени (например, частота дискретизации сигнала)
|
Вообще говоря, нет ограничений реального времени
|
Производительность в реальном времени должна быть полностью предсказуемой:
Избегание динамических особенностей архитектуры процессоров, которая может затруднить предсказание производительности в реальном времени
|
Производительность в реальном времени может не быть полностью предсказуемой (в силу динамических особенностей архитектуры CPU):
Суперскалярные: динамическое планирование, аппаратная спекуляция, предсказание переходов, кэш.
|
При условии, что удовлетворяются ограничения реального времени, более быстрый процессор не желателен из-за увеличения требований к стоимости/потреблению
|
Чем быстрее (выше производительность), тем всегда лучше
|
Эволюция GPPs и DSPs
Интересным является процесс "происхождения видов".
- Процессоры общего назначения (GPPs) восходят корнями к «дедушке» Eckert, Mauchly, Von Neumann (ENIAC)
- Процессоры цифровой обработки сигналов (DSPs) - это микропроцессоры, разработанные сравнительно недавно для эффективных математических манипуляций над цифровыми сигналами с использованием алгоритмов цифровой обработки.
- DSP обычно обрабатывают бесконечные непрерывные потоки дискретизированных данных (сигналы), в тоже время, удовлетворяя ограничениям реального времени и потребления.
- DSP развились из процессоров аналоговой обработки сигналов (Analog Signal Processors, ASPs), которые использовали аналоговую аппаратуру для трансформирования физических сигналов (классическая электротехника)
- ASP перешли в DSP так как:
- DSP нечувствительны к среде (например, одинаковый отклик в снегах или пустыне, если вообще работает)
- Производительность DSP идентична даже с различиями в компонентах; поведение двух аналоговых систем различается, даже если они составлены из компонентов с отличием в 1% (повторяемость)
- Различная история и различные требования приложений привели к различным терминам, различным метрикам, архитектурам, и некоторым новым изобретениям.
Из специализации DSP следует:
- DSP имеют тенденцию исполнять одну (или мало) программ, а не много программ.
- Поэтому ОС (если есть) намного проще, нет виртуальной памяти или защиты, ...
- DSP обычно исполняют приложения с сильными ограничениями реального времени:
- DSP должны соответствовать вычислительным требованиям для частоты дискретизации сигнала приложения:
- Более быстрый DSP – не нужен (большая стоимость DSP, потребление..)
- Должно учитываться все, что может произойти в течение временного слота (внутренние циклы в DSP алгоритме, частота дискретизации данных)
- Должны быть учтены все возможные прерывания или исключения и их суммарное время вычитается из времени интервала.
- Поэтому исключения – это ПЛОХО.
- DSP обычно обрабатывают бесконечные непрерывные потоки данных:
- Требует высокой пропускной способности памяти (с предсказуемой задержкой, например, без кэша) для поточной выборки данных в реальном времени и предсказуемого времени обработки этой выборки
- Дизайн DSP ISA и архитектур процессоров управляется требованиями DSP алгоритмов.
- Поэтому DSP являются процессорами для специфических приложений
Несколько иначе трактуется производительность: Характеристикой типа “MIPS/MFLOPS” для DSP является скорость Умножения-Накопления (Multiply-Accumulate, MAC).
И связано это с базовыми операциями многих алгоритмов цифровой обработки.
- MAC часто используется в DSP алгоритмах, включающих вычисление скалярного произведения векторов (vector dot product), таких как цифровые фильтры, корреляция, и преобразования Фурье.
- DSP оцениваются по тому, могут ли они загружать устройства умножения 100% времени и как много MAC’ов за такт происходит.
- "SPEC" для DSP включает (в основном) 4 алгоритма:
- Фильтры с бесконечным импульсным откликом (Infinite Impulse Response, IIR)
- Фильтры с конечным импульсным откликом (FIR)
- БПФ (FFT), и
- конвольверы
- Для DSP важны целевые алгоритмы:
- Совместимость бинарного кода - не слишком большая проблема
- Высокоуровневое ПО не так важно для DSP, как для GPP.
- Люди до сих пор пишут на ассемблере для того, чтобы минимизировать площадь микросхемы под ROM в DSP чипе. Тенденции к переходу на языки высокого уровня и использования оптимизированных библиотек есть, но не все компиляторы даже отдалённо хороши и не все библиотеки содержат полезный набор функций.
Одна из классификаций процессоров по разрядности (возможно несколько устаревшая информация, но тем не менее)
- 32-BIT FLOATING POINT (5% DSP рынка):
- TI TMS320C3X, TMS320C67xx (VLIW)
- AT&T DSP32C
- ANALOG DEVICES ADSP21xxx
- Hitachi SH-4
- 16-BIT FIXED POINT (95% DSP рынка):
- TI TMS320C2X, TMS320C62xx (VLIW)
- Infineon TC1xxx (TriCore1) (VLIW)
- MOTOROLA DSP568xx, MSC810x (VLIW)
- ANALOG DEVICES ADSP21xx
- Agere Systems DSP16xxx, Starpro2000
- LSI Logic LSI140x (ZPS400) superscalar
- Hitachi SH3-DSP
- StarCore SC110, SC140 (VLIW)
DSP ядра и DSP чипы
Обычно DSP выпускаются в виде собираемых ядер или готовых упакованных чипов. Первого вариант в современной реальности - это код описания процессора для языке VHDL или Verilog.
- Собираемые ядра:
- Подбираются под принятый процесс изготовления
- Различные варианты по скорости, размеру и потреблению
- Возможность выбора периферийных устройств, и т.п. (SoC)
- Требуют значительных усилий от разработчиков аппаратного обеспечения.
- Готовые упакованные чипы:
- Высокооптимизированы для достижения скорости, энергетической эффективности и/или стоимости.
- Ограниченная производительность, варианты интеграции.
- Часто к ним есть более зрелые инструменты, поддержка ПО от третьих сторон
В исторической перспективе развитие DSP архитектур и технологий производства выглядит так:
Последние поколения DSP по факту встраиваются в SoC, где они являются важным компонентом специализированной системы, позволяющей на лету обрабатывать аудио и видео потоки. В разрезе предыдущей картины интересно проследить развитие DSP на примере очень популярного семейства TMS320 от Texas Instruments:
Области применения цифровых сигнальных процессоров
Для начала отметим, что самым большим потребителем процессоров такого рода являются мобильные коммуникации.
- Цифровые аудио приложения
- MPEG аудио
- Портативное аудио
- Цифровые камеры
- Мобильные телефоны
- Носимые медицинские ус-ва
- Устройства хранения:
- Сервоуправление дискового накопителя
- Военные приложения:
- Управление процессом производства
- Сейсмические исследования
- Сетевые технологии:
(Инфраструктура телекоммуникаций)
- Беспроводные
- Базовые станции
- Кабельные модемы
- ADSL
- VDSL
Типичные алгоритмы и приложения цифровой обработки сигналов:
Ещё один взгляд на область приложений DSP:
Чем выше область, тем более сложный процессор используется и тем выше его стоимость
- Уровень high-end:
- Военные приложения (например, радар/сонар)
- Беспроводная базовая станция - TMS320C6000
- Кабельный модем
- Шлюзы
- Средний уровень:
- Управление процессом производства
- Мобильный телефон- TMS320C540
- Факс/голосовой сервер
- Уровень low end:
- Устройства хранения- TMS320C27 (контроллеры жестких дисков)
- Цифровые камеры - TMS320C5000
- Переносные телефоны
- Беспроводные гарнитуры
- Любительское аудио
- Автомобили, термостаты, ...
Примерная структура приложения цифровой обработки:
И та архитектура, на которой приложение выполняется:
Обратите внимание на 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 штук) обычно требует:
- Две выборки данных
- Требуется для потока данных отсчетов в реальном времени
- Предсказуемые задержки данных/полосы
- Специальные режимы адресации
- Умножения
- Накопления
- Повторяющиеся вычисления, multiply and accumulate (MAC), Требует эффективной MAC поддержки
- Записи в память для обновления линии задержки
- Специальные режимы адресации (например, по модулю)
Цель: Хотя бы 1 FIR ступень на такт DSP инструкции, это определяющая характеристика DSP.
DSP должен удовлетворять требования вычисления частоты дискретизации приложения: более быстрые DSP накладны (большая стоимость/потребление, чем реально необходимо)
Примеры характеристик типичных фильтров
Рассмотрим реализацию фильтра на процессоре общего назначения:
Проблемы:
- Пропускная способность шины/памяти является узким местом
- Накладные расходы на управляющие конструкции цикла
- Нет походящего режима адресации, специальных инструкций - Например, MAC инструкции
- производительность GPP процессора в реальном времени (чтобы соответствовать частоте дискретизации сигнала) может не быть полностью предсказуемой (из-за динамических особенностей архитектуры процессора):
- Суперскаляр: динамическое планирование, аппаратная спекуляция, предсказание переходов, кэш.
Типичные 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, приложения-бенчмарки
- ADPCM TRANSCODER - CCITT G.721, REAL_UPDATE, COMPLEX_UPDATES
- DOT_PRODUCT, MATRIX_1X3, CONVOLUTION
- FIR, FIR2DIM, HR_ONE_BIQUAD
- LMS, FFT_INPUT_SCALED
BDTImark2000: Berkeley Design Technology Inc
- 12 ключевых DSP алгоритмов на оптимизированном вручную ассемблерном коде:
- FIR, IIR, скалярное произведение векторов, векторное сложение, векторный максимум, FFT ….
- Возвращает для процессора одно число (больше значит быстрее)
- Использует только встроенную память чипа (пропускная способность памяти является одним из основных узких мест в производительности встраиваемых приложений).
EEMBC (произносится “embassy”): EDN Embedded Microprocessor Benchmark Consortium
- 30 компаний, организованных Electronic Data News (EDN)
- Бенчмарк оценивает скомпилированный C код на большом числе встраиваемых процессоров (микроконтроллерах, DSPs, и т.д..)
- Области приложений: автопром, потребители, офисные автоматы, сети и телекоммуникации
Пример:
Основные ISA/архитектурные черты DSP
- Тракт данных, сконфигурированный под DSP алгоритмы
- Арифметика с фиксированной точкой (большинство DSP) Особенность DSP ISA
- Модульная арифметика (для обработки переполнения используется насыщение)
- MAC- Устройство(а) multiply-accumulate Архитектурные особенности DSP
- Поддержка аппаратного округления
- Несколько банков и шин памяти (Обычно нет кэша данных для предсказуемой быстрой дискретизации потока данных (память и так быстрая))
- Гарвардская архитектура
- Несколько (2-3) устройств памяти данных
- Специализированные режимы адресации Особенность DSP ISA Архитектурные особенности DSP (Обычно используются выделенные устройства для генерации адресов)
- Адресация с обратным порядком бит
- Циклические буферы
- Специализированный набор инструкций и контроля исполнения Особенность DSP ISA (Для удовлетворения ограничениям дискретизации/обработки сигнала в реальном времени)
- Циклы с нулевыми накладными расходами
- Поддержка быстрых MAC
- Быстрая обработка прерываний
- Специализированные периферийные устройства для DSP
- В стиле System-on-Chip(Soc)
Арифметика DSP
- DSP имеют дело с числами, представляющими сигналы реального мира - Нужны “вещественные числа”/ дроби
- DSP используют числа для адресации - Нужны целые
- DSP ISA (и DSP) должны поддерживать “числа с фиксированной точкой” так же, как и целые
- пока что разрядность в основном 16 бит
Размер слова влияет на точность чисел с фиксированной точкой
DSP имеют 16-битные, 24-битные, или 32-битные слова данных. DSP с поддержкой плавающей точкой стоит в 2-3 раза дороже, чем с поддержкой фиксированной точки, и медленнее
Программисты DSP могут масштабировать значения внутри кода. Эту хитрость позволяют делать как программные библиотеки, так и использование отдельных явных экспонент. Например, т.н. “Блокированная плавающая точка (Blocked Floating Point)” – когда используется одна экспонента для группы дробей.
Поддержка чисел с плавающей точкой упрощает разработку DSP приложений высокого уровня, но стоит гораздо дороже при массовом выпуске устройств на базе DSP.
DSP позаимствовали у аналоговых устройств модульную арифметику. Также есть аппаратная поддержка действий при переполнении (в понимании обработки сигналов).
Поддержана установка результата при сложении в самое большое положительное (2N–1–1) или самое малое отрицательное значение (–2N–1) : “насыщение”, что позволяет отказаться от обработки исключений.
Много DSP алгоритмов было разработаны в такой модели.
Для существенного ускорения вычислений в тракте данных DSP используются специализированные вычислительные устройства.
- Специализированные аппаратные функциональные устройства производят все ключевые арифметические операции за 1такт, включая:
- Сдвиги
- Насыщения
- Проверку сторожевых битов (guard bits)
- Обработку режимов округления
- Умножение/сложение (MAC)
- 50% инструкций могут включать умножение - умножение надо делать с задержкой в 1 такт
- Необходимо быстро выполнять multiply-accumulate (MAC)
- n-bit множитель => 2n-bit произведение
Используется почивший в бозе в архитектурах общего назначения длинный аккумуляторный регистр:
Недопустимо переполнение или необходимость масштабировать аккумулятор
Вариант 1: аккумулятор шире, чем произведение: это “сторожевые биты” (Motorola DSP: 24bit x 24bit => 48b произведение, 56b аккумулятор), что позволяет без переполнения складывать длинный массив чисел
Вариант 2: правый сдвиг и округление произведения перед сложением
Используется значительное число режимов округления, о которых на процессорах общего назначения знают лишь специалисты Даже с использованием сторожевых битов, необходимо округление при сохранении аккумулятора в памяти
3 стандартных варианта для DSP (поддерживаемых аппаратно)
- Отсечение: отбрасывание битов результата => смещение увеличивается
- Округление до ближайшего целого: < 1/2 то округление вниз, >=1/2 то округление вверх меньшее смещение
- Схождение: < 1/2 то округление вниз, > 1/2 то округление вверх, = 1/2 то округление установкой в 0 наименее значащего бита (+1 если 1, +0 если 0) => то нет смещения
IEEE 754 называет такой вариант округлением до ближайшего четного
Пример - Диаграмма функциональных блоков для TI 320C54x DSP (1995)
Процессор до сих пор успешно используется в различных приложениях.
Память в DSP - общие сведения
- Исполнение одной ступени FIR подразумевает несколько обращений к памяти
- DSP требуют нескольких портов данных
- Некоторые DSP используют специальные техники для снижения требований к пропускной способности памяти:
- Буфер повторения инструкций (Instruction repeat buffer): выполнить n инструкций m раз
- Часто запрещают прерывания, тем самым увеличивая время отклика на прерывание
- Некоторые современные DSP имеют кэши инструкций
- Позволяют программисту “запирать” инструкции в кэше
- Опция, позволяющая превратить кэш в быструю память программ (XScale тоже)
- Как правило, DSP не имеют кэшей данных.
- Могут иметь несколько устройств памяти данных
- Например, одно для данных отсчетов сигнала и одно для коэффициентов фильтра
В DSP используется гарвардская архитектура памяти - с одновременным доступом к нескольким значениям в памяти. Например, один доступ для данных отсчетов сигнала и один для коэффициентов фильтра.
В итоге:
Как пример - приведём диаграмму блоков памяти для простого процессора TI TMS320C3x – иллюстрирующую гарвардскую архитектуру.
Иной пример - архитектура памяти более сложного процессора TI 320C62x/67x DSP (1997) – (DSP 4го поколения)
Богатство режимов адресации в DSP
DSP имеют "стандартные" режимы адресации: непосредственный, со смещением, регистровый косвенный. Это всё связано с тем, что ж елательно сохранять тракт данных к MAC занятым для нормальной загрузки DSP.
Предположение: любые дополнительные инструкции означают такты накладных расходов во внутреннем цикле, поэтому сложная адресация – это хорошо (Для соответствия шаблонам доступа к данным в DSP алгоритмах, а также для уменьшения числа инструкций (размер кода)).
Например:
- Автоинкрементные/автодекрементные регистровые косвенные
- lw r1,0(r2)+ => r1 <- M[r2]; r2<-r2+1
- Опция, позволяющая сделать это перед адресацией, с +или -
- Режим адресации с “обратным порядком бит(bit reverse)” в адресе (бит-реверсивный).
- “модульная” или “циклическая” адресация
- Не используют обычный тракт данных для вычисления причудливых режимов адресации: а используют специальные устройства генерации адресов
Всё вышеперечисленное позволяет выполнить 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 работают с непрерывным I/O
- Часто взаимодействуют с I/O буфером (линии задержки)
- Буферы часто организованы циклическими
- Что можно сделать, чтобы избежать накладных расходов на инструкции проверки адреса для циклического буфера?
- Вариант 1: Хранить регистры начала и конца для регистра адреса при использовании автоинкрементной адресации, переустанавливать на начало по достижении конца буфера
- Вариант 2: Хранить регистр длины буфера, предполагая, что буфер начинается на адресе с определенным выравниванием, переустанавливать на начало по достижении конца
- Каждый DSP имеет “модульную” или “циклическую” адресации Каждый DSP имеет “модульный” или “циклический” режим адресации
- Инструкции используют 3 элемента:
- адрес буфера
- размер буфера
- величину инкремента
- Это позволяет циклически обращаться к:
- элементам задержки (отсчеты сигнала)
- коэффициентам фильтра в памяти данных
Таким образом вычисление адресов в DSP производится с помощью специализированных функциональных устройств (адресных генераторов).
Выделенные устройства генерации адресов поддерживают модульную арифметику и арифметику с обратным порядком бит (бит-реверсивную). Часто устройства дублируются, чтобы вычислять несколько адресов за такт.
Итоги:
Исполнение инструкций DSP
Исполнение инструкций в DSP-архитектуре имеет следующие особенности:
- Можно указывать несколько операций в одной инструкции
например, составная инструкция может производить: умножение + сложение + загрузку + изменение адресного регистра
- Должна быть поддержка Multiply-Accumulate (MAC)
- Требуется поддержка параллельного перемещения данных
- Обычно есть специальная поддержка циклов для снижения накладных расходов на переход
- В цикле повторяется инструкция или последовательность инструкций
- Значение 0 в регистре-счётчике итераций обычно означает выполнение цикла максимальное число раз
- При вычислении числа повторений, надо быть уверенным, что 0 не означает 0
- Могут иметь арифметический сдвиг влево с насыщением
- Могут иметь предикатное исполнение инструкций для снижения числа переходов (новые VLIW-DSP 4-го поколения)
Пример использования циклов архитектуры DSP с низкими или нулевыми накладными расходами
Пример внутреннего цикла FIR фильтра на TI TMS320C54xx:
Специализированные периферийные устройства DSP
DSP процессоры отличаются широким набором периферии (в тех случаях, когда DSP выпускается в виде отдельного чипа) или же интерфейсов для взаимодействия с иными микропроцессорными устройствами. Периферия DSP (как и SoC) является специализированной и служит для решения встраиваемых задач. Периферийные устройства на чипе специально разрабатываются для “фонового” функционирования, даже когда ядро отключено, и с учётом специальных режимов энергосбережения. Периферийные устройства могут "будить" процессорные ядра для выполнения операций ввода-вывода.
Пример - диаграмма блоков для TI TMS320C203/LC203, DSP–ядро - 1995 год, обратите внимание на состав периферии
Суммарная информация по архитектурным особенностям DSP
- Тракт данных, сконфигурированный для операций DSP
- Арифметика с фиксированной точкой (Наиболее распространено в 95% всех DSP)
- Быстрое выполнение MAC- Multiply-accumulate
- Избежание особенностей архитектуры процессора, которые могут затруднить предсказание производительности в режиме реального времени (например, динамическое планирование, аппаратная спекуляция, предсказание переходов, кэш) - для достижения предсказуемой производительности в реальном времени
- Несколько шин и банков памяти
- Гарвардская архитектура
- Несколько устройств доступа к памяти данных
- Выделенные устройства генерации адресов
- Специализированные режимы адресации
- Адресация с обратным порядком бит
- Циклические буферы
- Специализированный набор инструкций и контроля передачи управления
- Циклы с нулевыми накладными расходами
- Поддержка MAC
- Специализированные периферийные устройства для DSP (SoC)
Все эти особенности жизненно важны для дизайна архитектуры, управляемой бенчмарками (или алгоритмами).
Последствия: особенности разработки ПО для DSP архитектур
- Отличается от разработки ПО общего назначения:
- Сложные, требующие много ресурсов алгоритмы.
- Специализированные и/или сложные архитектуры процессоров.
- Серьезные ограничения по стоимости/хранению.
- Тяжелые ограничения реального времени.
- Оптимизация очень важна. (Вплоть до написания на ассемблере).
- Повышенная сложность тестирования.
- Ключевые инструменты:
- Ассемблер, линкер.
- Симулятор набора инструкций.
- Генератор кода HLL : C компилятор. (Набирает популярность всё больше и больше.)
- Утилиты отладки и профилирования.
- Повышенной важности:
- Программные DSP библиотеки.
- Операционные системы реального времени.
Классификация DSP-архитектур
Современные традиционные DSP: (2-е поколение) (самые дешевые)
- Аналогичны DSP начала 1980х
- Одна инструкция/такт. Пример: TI TMS320C54x
- Сложные инструкции/недружественны компилятору
Улучшенные традиционные DSP: (3-е поколение)
- Добавим параллельные устройства исполнения: SIMD операции
- Сложные составные инструкции.
- Пример: TI TMS320C55x
- Недружественны компилятору
DSP с выдачей нескольких инструкций: (4-е поколение)
- VLIW, пример: TI TMS320C62xx, TMS320C64xx
- Более простые (типа RISC, фиксированная ширина) инструкции, чем для стандартных DSP, требуется больше инструкций и пропускной способности инструкций,
- Более дружественны компилятору - но большая стоимость/потребление
- Поддержка SIMD инструкций добавлена в недавние DSP этого класса
Суперскалярный, пример: LSI Logic ZPS400, ZPS500
Пример: Традиционный DSP: TI TMS320C54xx
Второе поколение DSP.
- 16-битный с фиксированной точкой
- Выдает одну 16-битную инструкцию/такт
- 1 MAC-устрйоство
- Модифицированная гарвардская архитектура памяти
- Периферийные устройства, типичные для стандартных DSP:
- 2-3 синхронных последовательных порта, параллельный порт (в т.ч. для связи между чипами)
- Битовый I/O, Таймер, DMA
- Недорогой (100 MHz ~$5 за 10 000 штук).
- Низкое потребление (60 mW @ 1.8V, 100 MHz).
Пример: Улучшенный традиционный DSP: TI TMS320C55xx
Третье поколение DSP.
TMS320C55xx основан на более раннем семействе Texas Instruments' TMS320C54xx, но содержит существенные улучшения в архитектуре и наборе инструкций, включая:
- Две инструкции/такт
- Инструкции планируются для параллельного исполнения программистом на ассемблере или компилятором.
- Два MAC устройства.
- Сложные, составные инструкции: Исходный ассемблерный код совместим с C54xx
- Инструкции смешанной длины: от 8 до 48 бит.
- 200 MHz @ 1.5 V, ~130 mW , $17 в партиях по 10 000 шт
- Недружественная к компилятору архитектура.
Пример: 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
- L-Unit (L1, L2)
- 40-битные целочисленные ALU, ФУ сравнения
- Подсчет бит, нормализация чисел
- S-Unit (S1, S2)
- 32-битные ALU, 40-битные сдвиги
- Битовые операции, переходы
- M-Unit (M1, M2)
- D-Unit (D1, D2)
- 32-битные сложение/вычитание
- Вычисления адресов
Выполнение инструкций статически спланировано, например упаковка инструкций TI TMS320C62xx (8-канальный VLIW):
Функционирование конвейера в TI TMS320C62xx осуществляется следующим образом (показаны этапы конвейера и пример исполнения инструкций).
В конвейере C62xx используются слоты задержки: добавляется количество дополнительных тактов, до тех пор, пока результат:
- Не записан в регистровый файл
- Не доступен для использования последующими инструкциями
- Многотактовая инструкция NOP может заполнять слоты задержки, в то же время минимизируя влияние на размер кода
- Все инструкции могут быть предикатными (по аналогии с Intel IA-64)
- A1, A2, B0, B1, B2 могут быть использованы как условия
- Основываясь на нулевом или ненулевом значении
- Инструкции сравнения позволяют использовать другие условия (<, >, и т.д.)
- Уменьшает число переходов
- Увеличивает параллелизм Особенности адресации в наборе инструкций C60хх:
- Архитектура Load-Store
- Два устройства адресации (D1, D2)
- Ортогональные
- Любой регистр может быть использован для адресации или индексирования
- Могут быть адресованы знаковый/беззнаковый байт, полуслово, слово, двойное слово
- Индексы масштабируются под тип
- Регистр или 5-битный беззнаковый постоянный индекс
- Режимы косвенной адресации
Пре-инкремент
|
*++R[index]
|
Пост-инкремент
|
*R++[index]
|
Пре-декремент
|
*--R[index]
|
Пост-декремент
|
*R--[index]
|
Положительное смещение
|
*+R[index]
|
Отрицательное смещение
|
*-R[index]
|
- 15-битное положительное/отрицательное постоянное смещение от B14 или B15 (стек)
- Циклическая адресация
- Быстро и недорого: размеры степени 2 и выравнивание
- До 8 различных указателей/буферов, до 2 различных размеров буфера
- Адресация с обратным порядком бит
- Поддержка Dual Endian
FIR фильтр на TMS320C54xx и TMS320C62xx - отличный пример
- Стандартный DSP 2го поколения
- VLIW DSP 4го поколения
Пример: TI TMS320C64xx
- Выпущенный в начале 2000 года, TMS320C64xx является расширением более ранней архитектуры Texas Instruments TMS320C62xx.
- TMS320C64xx имеет 64 32-битных регистров общего назначения, в 2 раза больше, чем в TMS320C62xx.
- Набор инструкций TMS320C64xx является надмножеством используемого в TMS320C62xx, и, помимо других улучшений, добавляет значительные возможности SIMD/медиа обработки:
- 8-битные операции для обработки изображения/видео.
- Первоначально имел тактовую частоту в 600 MHz (сейчас 1 GHz), но:
- 11-ступенчатый конвейер с большими задержками
- Динамические кэши.
- $100 в партиях по 10 000 штук.
- Единственное DSP семейство с совместимыми версиями с фиксированной точкой и плавающей точкой.
C64xx (также C62xx и C67xx) VLIW потребляет больше, чем стандартные DSP, памяти команд, из-за упрощенных (RISC-подобных, фиксированной ширины) инструкций. Требуется больше инструкций и пропускной способности
StarCore 140: Тоже VLIW но с кодированием инструкций переменной длины (меньшее использование памяти, чем в C64xx)
Вычислительная эффективность:
Пример: Суперскалярный DSP: LSI Logic ZSP400
- Единственный в своём роде
- 4-портовое суперскалярное 16-битное с фиксированной точкой DSP ядро.
- 16-битные RISC-подобные инструкции
- Раздельные кэши для инструкций и данных на чипе
- Два MAC устройства, два устройства ALU/сдвигов
- Ограниченная поддержка SIMD.
- MAC’и можно скомбинировать для 32-битных операций.
- Возможные недостатки:
- Динамическое поведение затрудняет разработку ПО для DSP :
- Проверки поведения в реальном времени
- Оптимизация кода.
Пример: один из результатов бенчмарков:
Спасибо за внимание!