Микропроцессор или DSP? А может, и тот, и другой?


PDF версия

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


Введение

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

Рис. 1. Процессоры общего назначения и сигнальные процессоры

Алгоритмы DSP имеют характерные особенности, определяющие архитектуру специализированных процессоров; они приведены в таблице 1 [1]. Большие объемы вычислений требуют параллелизации вычислительных блоков, а также аппаратной реализации основных функций. Соответственно изменяется и система команд — вводится основная операция умножения с накоплением, реализуемая за один цикл. Требования к высокой точности вычислений приводят к использованию многоразрядных регистров аккумуляторов, защитных разрядов и аппаратной реализации арифметики с насыщением. Для обеспечения высокой пропускной способности памяти и предсказуемости параметров доступа к данным используются гарвардская архитектура с параллелизацией доступа к памяти, специфические способы адресации (кольцевой буфер). Чтобы справиться с потоком данных в реальном времени, необходима статическая память с механизмом прямого доступа. Локальность времени исполнения обеспечивается аппаратной реализацией циклов и потоковой обработкой прерываний.

Таблица 1. Особенности алгоритмов обработки сигналов и сигнальных процессоров

Особенности алгоритмов DSP

Особенности DSP

Большие объемы вычислений

Параллельно работающие вычислительные блоки, аппаратное ускорение основных функций DSP

Высокая точность вычислений

Многоразрядные регистры аккумулятора, охранные биты, аппаратная реализация арифметики с насыщением

Высокая пропускная способность памяти

Гарвардская архитектура, поддержка параллельных передач данных

Предсказуемость параметров доступа к данным

Специализированные способы адресации

Локальность времени выполнения

Аппаратная реализация циклов, потоковая обработка прерываний

Математические алгоритмы

Блок умножения или умножения с накоплением, выполняющий операцию за 1 цикл, команда умножения с накоплением

Потоки данных

Статическая память без кэша, но с прямым доступом

Ограничения реального времени

Минимум динамических архитектурных особенностей, встроенная память (ОЗУ) вместо кэша

Стандартные особенности

16-разрядные типы данных, округление, арифметика с насыщением

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

Производительность

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

Таблица 2. Особенности вычислительных блоков в процессорах начального уровня

Сигнальный процессор начального уровня

Микропроцессор начального уровня

Специализированные аппаратные блоки выполняют все основные арифметические операции за 1 цикл

Умножение и многоразрядные сдвиги, как правило, требуют более 1 цикла

Обычно 16-разрядный, поддерживает и целочисленные, и нецелочисленные операции

32-разрядный, возможны только целые числа

Аппаратная поддержка управления точностью вычислений: «сторожевые» биты, насыщение, режимы округления

Насыщение, округление, как правило, требуют дополнительного цикла

Ограниченный набор битовых операций

Возможен расширенный набор битовых операций

Таблица 3. Особенности вычислительных блоков в производительных процессорах

Производительный сигнальный процессор

Производительный микропроцессор

До 8 арифметических модулей

Как правило, от 1 до 3 арифметических модулей

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

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

Поддержка различных разрядностей данных

Поддержка различных разрядностей данных

Набор битовых операций может варьироваться от очень ограниченного до разнообразного

Возможен расширенный набор битовых операций

Аппаратная обработка округлений и математики с насыщением

Насыщение и округление, как правило, требуют дополнительного цикла

Для обработки больших потоков данных уместна концепция SIMD (Single Instruction — Multiple Data), т.е. использование одного потока команд для операций над несколькими потоками данных. В процессорах общего назначения такая обработка данных встречается только в высокопроизводительных семействах, например, PowerPC 74xx обеспечивает одновременное выполнение операций над четырьмя 32-разрядными числами с плавающей запятой или четырьмя 32-разрядными; восемью 16-разрядными или шестнадцатью 8-разрядными целыми числами. В DSP же инструкции, поддерживающие выполнение по принципу SIMD, встречаются и в самых простых моделях, пусть и в ограниченном варианте, например, только сложение двух пар 16-разрядных целых чисел. В высокопроизводительных DSP и гибридных процессорах возможности SIMD развиты не хуже, чем в мощных процессорах общего назначения.
В процессорах общего назначения используется как фон-Неймановская архитектура памяти (в системах начального уровня), так и гарвардская, как правило, в более мощных устройствах. В DSP использование гарвардской архитектуры характерно для моделей всех уровней производительности. Такая архитектура позволяет за один цикл обращения к памяти извлекать одновременно инструкцию и операнд, а в высокопроизводительных процессорах — несколько инструкций (до 8 в современных DSP и до 4 в процессорах общего назначения) и несколько слов данных от 16 до 64 бит (либо одно слово максимальной разрядности). Кэширование данных используется преимущественно в процессорах общего назначения, для DSP же характерно применение прямого доступа к памяти.
Большинство задач DSP подразумевает обработку данных в реальном времени. Процессор должен успеть выполнить требуемые операции над одной выборкой данных в потоке, прежде чем поступит следующая выборка. Помимо собственно вычислительной производительности на возможность работы в режиме реального времени оказывает влияние детерминированность и предсказуемость системы в целом. Недетерминированность приводит к неравномерной нагрузке процессора, затрудняет оптимизацию и отладку. Причины возникновения недетерминированности — многозадачность, алгоритм, изменяющийся в зависимости от данных, динамические особенности архитектуры (суперскалярность, предсказание ветвлений, зависимые от данных времена выполнения инструкций).
Динамические конструктивные особенности в большей мере характерны для процессоров общего назначения. Как правило, системы DSP строятся таким образом, чтобы избежать самой необходимости таких особенностей. В DSP начального уровня они не применяются, в производительных процессорах чаще всего используется кэширование, редко — суперскалярное выполнение и предсказание ветвлений. В процессорах общего назначения динамические особенности архитектуры, напротив, используются очень широко. В производительных системах обычно применяется суперскалярное выполнение инструкций с предсказанием ветвлений, динамическое кэширование применяется и на процессорах начального уровня. Рассмотрим перечисленные особенности более подробно.
Кэширование работает по принципу уменьшения среднего времени доступа — оно эффективно для большинства приложений, но время доступа может варьироваться достаточно широко. В то же время многие приложения, в т.ч. приложения жесткого реального времени, чувствительны как раз к максимальному, а не среднему времени доступа. Последовательность доступа к данным в системах DSP, как правило, хорошо предсказуема. Таким образом, прямой доступ к памяти может быть эффективнее кэшей. Некоторые типы кэш-памяти предоставляют возможность предварительной выборки данных. В некоторых DSP кэш может быть отключен или переконфигурирован для частичного использования как статического ОЗУ.
Предсказание ветвлений очень точно работает в большинстве приложений, в т.ч. и в приложениях обработки сигнала, где большинство ветвлений является частью цикла со счетчиком. Но сложные алгоритмы предсказания ветвлений вводят временную неопределенность. Сложно предсказать, является ли прогноз точным в конкретный момент времени.
Основные методы обеспечения высокой производительности путем одновременного выполнения нескольких инструкций — это суперскалярность и архитектура VLIW (Very Long Instruction Word) — очень длинное командное слово. В суперскалярных процессорах есть несколько вычислительных модулей, но задача распределения работы между ними решается аппаратно. Это очень усложняет дизайн процессора и может быть чревато ошибками. В процессорах VLIW задача распределения решается во время компиляции, и в инструкциях явно указано, какое вычислительное устройство должно выполнять ту или иную команду.
Суперскалярность используется в большинстве высокопроизводительных процессоров общего назначения. Ее характерные особенности:
– высокая аппаратная сложность, потребляемая мощность, большая площадь кристалла;
– сложная модель поведения, непостоянство временных параметров;
– высокая производительность при совместимости на уровне программного кода;
– низкая сложность сопутствующего программного обеспечения (компилятора).
Архитектура VLIW используется преимущественно в высокопроизводительных DSP:
– сниженная аппаратная сложность;
– отсутствие динамических особенностей поведения;
– не всегда совместимый програм­мный код;
– повышенная сложность сопутствующего программного обеспечения.

Трудоемкость разработки

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

Таблица 4. Особенности систем команд процессоров начального уровня

Сигнальный процессор начального уровня

Микропроцессор начального уровня

Специализированные сложные команды

Команды общего назначения

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

Обычно одна команда — одна операция

Низкая ортогональность

Хорошая ортогональность

Таблица 5. Особенности систем команд производительных процессоров

Высокопроизводительный сигнальный процессор

Высокопроизводительный микропроцессор

Высокопроизводительный микропроцессор с SIMD-расширениями

Команды малой или средней сложности

Простые команды

Команды средней сложности

Ортогональность варьируется от средней до очень высокой

Ортогональность варьируется от средней до очень высокой

Ортогональность варьируется от средней до очень высокой

Инструментальные средства разработки для обоих классов процессоров разнообразны, есть как примитивные варианты, так и сложные. Основные различия сводятся к поддержке специфических функций DSP. Средства разработки для DSP поддерживают специализированные расширения языка C (типы данных с фиксированной запятой, кольцевые массивы и указатели), что позволяет получить более производительный код, а средства симуляции и отладки моделируют работу процессоров с точностью до цикла обращения к памяти, что дает возможность максимально оптимизировать выполнение программы. Поддержка ПО для DSP сторонних производителей значительно варьируется — от неудовлетворительной до отличной. Уровень поддержки функций DSP в средствах разработки, ориентированных на процессоры общего назначения, очень низкий, но постепенно ситуация выправляется. Общим местом для этого класса процессоров является нехватка симуляторов с точностью до цикла. Поддержка стороннего ПО, не ориентированного на DSP, в средствах разработки для DSP ограничена, но расширяется. Процессоры общего назначения имеют очень широкую поддержку. Функции систем реального времени поддерживаются для обоих классов процессоров.
Некоторые средства разработки позволяют подключать внешние инструментальные средства высокого уровня. Для некоторых DSP возможно подключение математических пакетов, например MATCAD. Для процессоров общего назначения существуют средства разработки пользовательских интерфейсов и т.д.

Доступность и совместимость

Основное преимущество процессоров общего назначения — существование нескольких стандартных архитектур (PowerPC, MIPS, ARM, x86), на основе которых построено подавляющее большинство мощных процессоров, что обеспечивает переносимость кода не только внутри семейств, но и между ними. В сегменте процессоров начального уровня разнообразие выше, но и там двоичная совместимость кода встречается часто. Некоторые процессорные ядра (ARM, MIPS) могут производиться по лицензии, в т.ч. и в составе сложных многоядерных систем.
Сигнальные процессоры, напротив, в большинстве случаев используют проприетарные архитектуры. Лицензирование ядра для стороннего производства встречается очень редко (CEVA-X). Двоичная совместимость кода между поколениями процессоров может быть неполной. Полностью совместимы по коду, например, процессоры крупного семейства C6xxx производства Texas Instruments.

Стоимость

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

Потребляемая мощность

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

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

При оценке производительности процессоров для обработки сигнала необходимо учитывать особенности приложений и продуктов. Относительная производительность может сильно варьироваться в зависимости от используемых средств. К данным, приводимым производителем, стоит относиться скептически: количество миллионов операций в секунду ни о чем не говорит. Точный инструмент — это тестовые программы.
При оценке эффективности использования процессора важно рассматривать не только скорость вычислений, но и соотношение цена/производительность, энергопотребление, использование памяти. На рисунках 2—4 приведены сравнительные диаграммы производительности для разных процессоров.

 

Рис. 2. Сравнение производительности процессоров начального уровня (стоимостью до 10 долл.)
Рис. 3. Сравнение производительности процессоров верхнего уровня
Рис. 4. Соотношение быстродействия и потребляемой мощности для лицензируемых ядер
Выводы и заключение

Итак, в каком случае оптимальным будет выбор специализированного сигнального процессора?
– Если требуется максимальное быстродействие или производительность при высокой нагрузке;
– если есть совместимое ПО, и вы намерены его повторно использовать;
– разработчики уже знакомы с ним;
– если не требуется решать много задач помимо обработки сигнала;
– если вы предполагаете разрабатывать ПО, использующее цифровую обработку сигналов;
– при использовании DSP можно задействовать уже имеющееся качественное ПО;
– вам не нужна многофункциональная операционная система;
– требуется максимальный детерминизм времени выполнения;
– DSP предлагает наиболее полную интеграцию в разрабатываемую сис­тему.
В то же время процессор общего назначения оптимален при следующих условиях:
– микропроцессор обеспечивает достаточную производительность и эф­фек­тивность для нагрузки в части DSP;
– есть совместимое ПО, и вы намерены его повторно использовать;
– вы хотите иметь возможность менять производителей оборудования в пределах стандартной промышленной архитектуры;
– разработчики уже знакомы с ним;
– вам необходимо решать другие задачи помимо обработки сигнала;
– вы не планируете разрабатывать ПО, ориентированное на DSP;
– при использовании процессора общего назначения можно задействовать уже имеющееся качественное ПО;
– вам требуется многофункциональная операционная система;
– детерминизм и предсказуемость времени выполнения не критичны;
– микропроцессор предлагает наиболее полную интеграцию в разрабатываемую систему.
Если предстоит решать комплексные задачи, включающие помимо обработки сигнала и задачи общего назначения, управления и т.д., то возможно несколько вариантов:
– два процессора или двухъядерный чип — сочетает максимум возможностей двух классов процессоров. Но стоимость такого решения высока, а разработка программного обеспечения достаточно трудоемкая;
– микропроцессор с расширениями DSP или сигнальным сопроцессором обеспечивает высокую вычислительную производительность в алгоритмах обработки сигналов, сохраняя характерные особенности процессоров общего назначения. Но, как правило, программное обеспечение, средства разработки и SDK для решения задач DSP не самые эффективные, не позволяют создать максимально производительное решение малыми усилиями. Интеграция такого устройства в систему тоже может вызвать затруднения;
– гибридный процессор — макси­маль­но компромиссное решение. Не­пло­хо справляется и с общими задачами, и с алгоритмами DSP. Но, как правило, программное обеспечение, инструменты для решения общих задач DSP — не самые оптимальные и удобные.
– медиапроцессоры и процессоры, ориентированные на конкретные приложения. Свою задачу выполняют отлично. Но большая часть их ориентирована на мультимедийные приложения.
Современные микропроцессоры решают весь спектр потенциальных задач, связанных с цифровой обработкой сигнала. Проблема выбора лучшего варианта из всего многообразия сложна, и однозначного пути ее решения нет — все зависит от конкретной системы, требований к ней и их приоритетности. В статье рассмотрены основные критерии выбора и соответствие типов процессоров этим критериям, но окончательное решение остается за разработчиком.

Литература:

Оставьте отзыв

Ваш емейл адрес не будет опубликован. Обязательные поля отмечены *