Генри Дэвис (перевод М. Ахметова, А. Биленко) Стандартный DSP или конфигурируемый микроконтроллерМикроконтроллеры, в отличие от большинства DSP, обладают более широким набором периферийных устройств. Это связано с острой конкуренцией в сфере их применения. DSP, в свою очередь, используются во многих приложениях благодаря привлекательной цене. Но в конечном итоге только инженерная интуиция, помноженная на знание требований, предъявляемых к разработке, позволяет сделать правильный выбор: стандартный DSP или современный конфигурируемый микроконтроллер. Технические проблемы декодирования MP3 и способы их решения дают нам возможность сравнить эти два варианта. Вс╦ теч╦т, вс╦ изменяетсяЕсли добавить к этому мудрому изречению концовку "и совершенствуется", его можно будет в полной мере применить к технологиям цифровой обработки сигналов. Производительность DSP продолжает неуклонно повышаться, несмотря на все мрачные предсказания о технологических и физических барьерах. Более того, так же неуклонно множится и раст╦т количество новых периферийных устройств, расположенных на кристалле. Однако же, в соответствии с упомянутой крылатой фразой, для многих областей применения DSP, традиционно использовавших именно сигнальные процессоры, появился некий альтернативный и даже конкурирующий вариант - конфигурируемый микроконтроллер. Не секрет, что почти каждый производитель микроконтроллеров не может удержаться от попыток внедрения своих изделий в область DSP-приложений, добавляя в архитектуру своих микроконтроллеров элементы, присущие DSP. Некоторые из подобных микроконтроллеров содержат модули умножителя-аккумулятора МАС, отображ╦нные в адресном пространстве, другие - включают в состав набора инструкций команды, характерные для DSP. В результате, появился целый ряд инструментальных средств, предназначенных для оценки эффективности чипа как цифрового сигнального процессора, микроконтроллера или как объектно-специализированного устройства. Стандартные тесты на производительность могут охарактеризовать только один е╦ тип - вычислительную мощность процессора. Многие компании используют системы, объединяющие целые блоки таких тестов, оптимизированных для конкретных процессоров. В итоге, когда разработчик знакомится с результатами тестов, он может оценить эффективность работы процессорного устройства. Но почти все такие измерения теряют эффективность, когда речь заходит о правильном выборе периферийных устройств, доступных разработчику. Широкий выбор периферийных модулей был характерной и отличительной чертой микроконтроллеров в течение довольно долгого времени. Существует множество микроконтроллеров, обеспечивающих почти идеальный выбор производительности, памяти и периферии для самых разнообразных применений. Драйверы жидкокристаллических дисплеев, высоковольтные интерфейсы и линии с высокой нагрузочной способностью для управления внешними устройствами, цифро-аналоговые преобразователи, последовательные интерфейсы - это только верхушка айсберга, скрывающего всю остальную микроконтроллерную периферию. В то же время, сигнальные процессоры вряд ли могут похвастаться таким широким выбором. Большинство семейств DSP представляют ограниченный набор периферийных устройств, в основном это базовые функции ввода/вывода и наиболее распростран╦нные последовательные интерфейсы. В какой-то мере подобное положение объясняется самой историей развития микроконтроллерной линии, ориентированной в основном на применения в изделиях широкого потребления. Но наиболее веской причиной большего многообразия периферийных устройств является пожалуй очень жестокая конкуренция в каждой из областей применения, использующей МК. Итогом этой борьбы может стать конфигурируемый микроконтроллер на основе ASIC фирмы ARC. Архитектура ARC предлагает прототип расширяемого и конфигурируемого ASIC-ядра. Основанная на системе команд с 32-разрядной шиной, архитектура ARC позволяет инженеру сконфигурировать и расширить возможности процессора, включая использование своих инструкций и периферийных устройств. В отличие от традиционных встраиваемых процессоров, изначально ориентируемых для работы в качестве компонента на плате, ARC спроектировала сво╦ процессорное ядро специально для однокристальных SoC (system-on-chip) приложений. В результате стало возможным интегрировать ARC-ядро в SoC значительно быстрее, чем при использовании других процессоров. Иногда это занимает буквально несколько дней. ARC представляет свои архитектуры в виде программных макросов, что снимает проблему зависимости от конкретного ASIC-производителя. Другим преимуществом такого подхода является возможность использования новых технологий производителя (по мере их появления), осуществляя просто ресинтез макроса, вместо трудо╦мкой и дорогой операции обновления производственного процесса на аппаратном уровне. ARC-процессоры обеспечены поддержкой широкого набора программных и аппаратных средств разработки и отладки. В их число входит ARChitect - графическая среда на основе концепции "укажи и кликни" (point-and-click), с помощью которой можно создать конфигурацию процессора в течение нескольких минут. При этом разработчику нет необходимости самостоятельно модифицировать HDL-код. Специальный программный инструментарий автоматически модифицирует HDL-код в соответствии с изменениями, произвед╦нными в графической оболочке ARChitect. Множество современных проектов используют одновременно микроконтроллеры и цифровые сигнальные процессоры. Технология ARC позволяет разработчикам либо объединить их в одно ядро, либо сконфигурировать ARC-процессоры как отдельный микроконтроллер и отдельный DSP. Работу выполняет DSPЕсли сравнить конфигурируемый микроконтроллер с DSP, то цифровые сигнальные процессоры фирмы Analog Devices, пожалуй, обладают наиболее типичными характеристиками. Например, сигнальный процессор ADSP-2186M при относительно невысокой стоимости объединяет высокопроизводительное DSP-ядро с архитектурой, оптимизированной под использование языков высокого уровня, и ряд периферийных модулей, включающих два последовательных порта, 16-разрядный внутренний контроллер DMA, программируемый таймер и контроллер прерываний. Цикл выполнения инструкции составляет 13 нс (75 MIPS) при рабочем напряжении питания процессорного ядра 2,5 В (3,3 В для линий ввода/вывода). Код программы и используемые данные размещаются во внутреннем ОЗУ программ и ОЗУ данных объ╦мом по 8 Кслов. ADSP-2186 имеет и некоторые "микроконтроллерные" черты, включающие программируемые сигналы стробирования памяти и раздельное адресное пространство для памяти и устройств ввода/вывода. Наглядным примером необходимости одновременного использования свойств DSP и микроконтроллера является реализация алгоритма сжатия аудиоданных MP3, который явился результатом настойчивого желания людей обмениваться музыкальными произведениями через Интернет, экономя при этом трафик. Для процесса декодирования необходима весьма скромная вычислительная мощность DSP и минимальные возможности интерфейса. Однако, "скромность" по отношению к стандартам DSP превращается в процесс "значительной" обработки в случае стандартных микроконтроллеров. Декодирование включает ориентированные на побитовую обработку и управляющие е╦ интенсивностью алгоритмы, которые в действительности являются неким гибридом, реализующим лучшие стороны DSP и микроконтроллеров. Битовый поток данных MPEG разделяется на пакеты, именуемые фреймами, и формат MPEG характеризуется фиксированным числом фреймов в секунду. При заданной скорости битового потока и частоты дискретизации, задаваемыми при кодировании аудиофайла, каждый пакет имеет определ╦нный размер и декодируется независимо от других, что позволяет достаточно просто двигаться вдоль битового потока к следующему или предыдущему фреймам. Сам процесс декодирования начинается с определения начала фрейма по специальным синхронизирующим битовым последовательностям. После этого, для корректного декодирования декодер определяет по заголовку пакета, каким образом происходило исходное сжатие данных. Передача потока данных начинается после того, как из заголовка считывается масштабирующий коэффициент, управляющий усилением для определ╦нной полосы частот. Затем в потоке данных определяется фактическое значение уровня сигнала для конкрентой частоты, квантованное и закодированное с помощью кодов Хаффмана. Дешифратор декодирует эти коды, восстанавливает значение уровня сигнала и преобразует его во временные интервалы, восстанавливая тем самым из выходного потока исходные сигналы. Алгоритм Хаффман-кодирования минимизирует общий размер в битах, используя множественные Хаффман-ветвления, учитывающие содержание данных. Хаффман-декодер выбирает соответствующее Хаффман-ветвление и затем просматривает его для каждого символа фрейма для того, чтобы корректно декодировать его значение. После декодирования значений происходит восстановление их истинных значений в ре-квантователе с использованием масштабных коэффициентов. В принципе, битовые потоки достаточно просты, но они могут стать более сложными, если увеличить количество каналов. Простейшая структура стерео- сигнала - это передача каждого канала отдельно в каждом фрейме. Наиболее "интеллектуальные" шифраторы устраняют избыточность двух каналов, передавая для дальнейшего сжатия исходного сигнала сумму и разницу. В случае, когда кодировка использует такой тип представления, для восстановления двух исходных каналов дешифратор должен выполнить стереообработку. Затем он симметрично увеличивает значение частоты в пределах каждой полосы частот, сглаживая тем самым искажения, внес╦нные эффектом наложения, возникающим вследствие квантования. Дискретное косинус-преобразованиеПока мы говорили о сигналах в частотной области. Однако для синтеза выходных сигналов, производится некая трансформация, обратная используемой шифратором и носящая характер время-частотного преобразования. При тр╦хуровневой кодировке, два преобразования производятся друг за другом (речь ид╦т об обратном дискретном косинус-преобразовании), что позволяет достичь более высокого разрешения по частоте, чем при других видах преобразования. Оба они критичны к косинус-преобразованию, то есть, если во время кодирования квантование не производится, то дешифратор полностью восстанавливает исходный сигнал. Для устранения разрывов между преобразованными блоками, которые заполнены звуковыми шумами и прочим "мусором", преобразование использует 50% перекрытие. Итак, внутри каждого преобразуемого блока размером X шифратор позиционирует входной указатель только для X/2 отсч╦тов. Дешифратор делает обратное: каждый восстановленный блок пересекается только с половиной исходных отсч╦тов. Этот процесс сглаживает все "разрывы". После того, как дешифратор произв╦л все преобразования, полученные данные пропускаются через низкочастотный фильтр, на выходе которого и получается восстановленный сигнал. Низкочастотная фильтрация в дешифраторе осуществляется св╦рткой с синусоидальным опорным сигналом. Технически, каждый выходной отсч╦т представляет собой средне взвешенное значение примерно 512 отсч╦тов, которые были преобразованы во временный интервал, так что MPEG аудиостандарт определяется формой 512 составляющих. Дискретное косинус-преобразование можно определить как: где нормирующий коэффициент равен , =½ for > 0. Если строго следовать уравнению, для реализации преобразования требуется 4096 операций умножения и 4032 операции сложения. Для осуществления этого алгоритма "в лоб" требуется быстродействие около 3 млн. операций умножения-сложения в секунду. Однако разумная оптимизация может уменьшить это число до двух млн. Таким образом, можно реализовать алгоритм MP3, используя DSP с производительностью приблизительно 15 MIPS, что легко достижимо при использовании практически любого доступного DSP. Природа алгоритма дискретного косинус-преобразования такова, что позволяет достаточно просто оценить и архитектуры DSP различного назначения. DSP для дискретного косинус-преобразованияРассмотрим пример ADSP-2186M. Одноцикловая неконвейерная реализация этого DSP упроcтит нам технический анализ, поскольку не прид╦тся учитывать задержки или другие особенности, обычно присущие конвейерной обработке. Данный DSP использует одноцикловые команды умножения-сложения, которые могут независимо и одновременно адресовать два операнда. К сожалению, особенности зигзагообразной адресации, которые составляют суть алгоритма дискретного косинус-преобразования, не включают возможность модульной адресации, реализованной в семействе 2100. Однако это небольшая проблема, поскольку практически любая оптимизация по коду приводит к повышению производительности алгоритма косинус-преобразования. Обычно используется разв╦рнутое циклическое кодирование, при котором вместо имеющегося механизма адресации используется прямая адресация. Оптимизация алгоритма для 2186 - это достаточно простой и понятный процесс, который требует лишь времени и сообразительности. В противоположность DSP, ядро Tangent фирмы ARC является процессором с конвейерной системой команд на базе RISC-архитектуры. (Набор команд ARC привед╦н на врезке.) Ядро использует конвейерные команды, которые по своей сути являются последовательностью функциональных устройств, выполняющих команды на различных шагах. Каждое функциональное устройство получает данные на вход и созда╦т выходной поток, который хранится в выходных буферах. Как на конвейере, выход одного этапа становится входом следующего, допуская при этом параллельную обработку на всех этапах. Результатом этого является большая производительность. Ядро Tangent на базе конвейерной обработки реализует и другие этапы выполнения заданий, например, команды выборки, декодирования, загрузки данных и результатов, а также арифметические операции. Конвейер предполагает непрерывный поток команд, последовательно выбираемых из ячеек памяти и прерываемый при необходимости операций перехода. В момент перехода формируется список команд, которые не должны выполняться с текущей позиции после команды перехода; это условие носит название конвейерного прерывания. Реализация неоптимизированного алгоритма дискретного косинус-преобразования MP3 при испорльзовании базового ядра ARC, потребует 4096 операций умножения, 4032 операции сложения, 8128 вычислений адреса и аналогичное количество выборок операнда. Хотя необходимый уровень вычислений более чем в шесть раз превышает производительность, которую требует для этого ADSP-2186M, или примерно в 100 раз производительность самого Tangent, задача хорошо сочетается с возможностями процессора на базе ядра Tangent. Но вопрос оказывается на бит сложнее. Поскольку ядро Tangent использует многокаскадный конвейер, необходимо рассматривать вопросы останова и прерывания конвейерной обработки с уч╦том производительности, которая потребуется для достижение функционирования в реальном времени. Останов конвейера происходит в тех случаях, когда отсутствуют необходимые данные, или когда процессору это нужно по ряду других причин. Естественно, что процессор останавливается и в том случае, когда он не получает результаты процесса вычислений или, когда время доступа к памяти слишком велико. Прерывания возникают в случае, когда в ходе выполнения программы необходимо перейти на другую ветвь алгоритма, поскольку целевая команда находится за пределами конвейера. Если используется базовое ядро, прерывания и остановы конвейерной обработки вполне могут происходить, однако это нежелательно. Поэтому необходимо реорганизовать программу таким образом, чтобы избежать остановов, увеличивая, например, время ожидания в результате прерываний. Использование ресурсов мощностиДопуская, что оба процессора потребляют примерно одинаковую мощность на единицу производительности, DSP фирмы Analog Devices казалось бы должны выигрывать в борьбе за экономичность. Однако ядро Tangent позволяет инженеру-разработчику дополнительно к базовой системе команд использовать специальные команды умножения-сложения, двухпортовую память и аналогичный DSP модуль адресации. Поэтому, за исключением архитектуры load-store, процессор Tangent может достичь того же уровня производительности, что и основные современные DSP. Следовательно, оба процессора потребляют одинаковую мощность, если их использовать для одного и того же процесса. Но вс╦ же ARC чуть-чуть лучше всех стандартных DSP. Поскольку компания ARC поставляет процессор в виде "пластилина" для разработчика, его можно "вылепить" или для использования в малопотребляющих изделиях, или для изделий, требующих определ╦нного быстродействия. В этом смысле переконфигурируемое ядро имеет важное преимущество, но оно же может привести и к некоторым потерям. Для DSP, оптимизированного "вручную" и изготавливаемого с использованием стандартной полупроводниковой технологии, размер его "неизменной" части будет вероятно меньше эквивалента синтезируемой части, использующей ядро ARC. Различие в размерах зависит от многих факторов, включая размер и тип памяти на кристалле, заверш╦нности и устойчивости работы модулей из библиотеки прикладных программ, качества инструментальных средств синтеза и умения инженера, управляющего процессом синтеза. Традиционно, размер и тип памяти имеют определяющее значение для размера самого DSP. Для достижения высокой плотности и малого потребления при ограниченных ресурсах быстродействия обычно жертвуют памятью. Так что размер кристалла примерно одинаков для стандартных DSP и переконфигурируемых микроконтроллеров. "Си" и системы на кристаллеГибкость и возможность расширения ядер типа Tangent позволяет разработчикам идти один шаг впереди стандартных DSP. Например, цифровое косинус-преобразование в MP3 плеерах ограничивается количеством циклов, которые требуются для завершения полной трансформации, однако при этом возможность создания специализированных команд позволяет уменьшить потребляемую мощность. Поскольку одна специальная команда дискретного косинус-преобразования экономит при декодировании по меньшей мере 4096 стандартных команд, экономия мощности напрямую зависит от эффективности программы. Нужно сказать, что ядро Tangent затмевает большинство стандартных DSP, поддерживающих обработку данных с фиксированной запятой в поддержке программ, написанных на языке "Cи". Поскольку фирма ARC разработала Tangent, думая о "Cи", в систему команд входят и такие, которые учитывают особенности компиляторов, правда это мало что да╦т программистам, использующим ассемблер. Tangent обладает улучшенной способностью изменять контексты, сохранять состояния процессора и адресовать фреймы стека. Хотя можно реализовать базовый дешифратор MP3 с помощью 2000√3000 команд, по мере того как характеристики пользовательского интерфейса становятся вс╦ более сложными и изощр╦нными, программирование склоняется в пользу использования для управляющего кода языка Cи, а пользовательский интерфейс потребует пяти или шести кнопок. Можно сконфигурировать ADSP-2186M для считывания информации от кнопок, управления ЖКИ и обеспечения связи со стереокодеком. Но также можно сконфигурировать Tangent-ядро со схемой управления ЖКИ на кристалле и функционально-ориентированными кнопками, а в качестве аналогового стереовыхода может быть выбран любой, подходящий по объ╦му и стоимости. ВыводыСтандартные DSP, также как ADSP-2186M, используются во многих приложениях из-за низкой стоимости. Но если рассмотреть конечный продукт с точки зрения системы, большая часть бытовых и иных изделий может быть существенно улучшена, если использовать возможности конфигурирования и расширения процессоров типа ARC. Конечно, решение, которое удовлетворит необходимым специфическим требованиям, зависит от требуемого типа I/O, размеров изделия, его производительности, потребляемой мощности и многого другого. Однако, независимо от технических требований, имеется выбор, позволяющий удовлетворить эти потребности. И в конечном итоге, вс╦ зависит от качества и количества той инженерной работы, которую Вы можете на это потратить. EDN, январь 2001 г. Набор команд ARCПроцессорное ядро Tangent фирмы ARC является уникальным среди микроконтроллеров, но многие проиводители микроконтроллеров начинают движение в его сторону. Данное ядро поддерживает 30 базовых команд, но можно сконфигурировать его таким образом, что подключится ещ╦ более 71 дополнительных команд, определяемых пользователем. Дополнительно к базовой системе команд, ARC-процессор включает встроенные расширенные команды, которые можно использовать для ускорения работы алгоритмов в различных приложениях. Библиотеки расширений включают мощный комплект команд DSP и дополнительные команды микроконтроллера общего назначении, например, сдвиговые регистры. Дополнительно к встроенным расширениям команд можно легко добавить заказные команды, используя VHDL или Verilog. Можно легко сконфигурировать сервисные программы ARC, чтобы разрешить использование этих команд в стандартном режиме разработки программ. ARC-процессор использует четыр╦хэтапный конвейер, который поддерживает как одноцикловые, так и мультицикловые команды, позволяя добавлять в конвейер очень сложные команды. ARC-процессор поддерживает режим слот-задержки, который поддерживает циклы с нулевыми потерями и ветвления. Все команды устройств арифметики условные. Имеется 32 условные команды: 16 встроеных команды, 16 команд, используюемых для определяемых пользователем расширений. Эта ситуация позволяет добавлять специфические пользовательские команды, позволяющие установить периферийные аппаратные средства, например, заказные сопроцессоры. Эти команды позволяют использовать специализированное программное обеспечение для реализации сложных алгоритмов принятия решения очень эффективными методами, прич╦м и для перефирийных устройств и для расширенного набора команд могут быть созданы условные команды для конкретных решений. РегистрыARC-ядро поддерживает 32 регистра общего назначения, 32-бит регистры ядра. Можно увеличить общее число регистров до 64, чтобы использовать любые определяемые пользователем регистры ядра. Ядро поддерживает 4-Гбайт вспомогательное регистровое пространство, доступ к которому обеспечивается через вспомогательную шину. Этот доступ позволяет определять по существу неограниченное количество вспомогательных регистров для связи других периферийных устройств. DSP расширенияARC-процессор располагает мощным комплектом DSP-расширений, которые обеспечивают реальное быстродействие DSP, включая XY память, конфигурируемый MAC и множество арифметических операций. MAC поддерживает 16╢16, 24╢24 и двойной 16╢16 режим, позволяя выбирать соответствующую точность для конкретного приложения. Переконфигурируемая память XY-типа допускает использование четыр╦х банков памяти XY. Это повышает устойчивость и быстродействие, поскольку процессор может иметь доступ к одному банку, пока происходит обращение к другому через устройство прямого доступа в память. Четыре 32-бит регистра, связанные с каждым банком памяти, обеспечивают быструю коммутацию. Для того, чтобы ускорить выполнение некоторых функций, например БПФ, устройства генерации адреса для XY-памяти поддерживают модульную и инверснобитовую адресации в режимах переменного смещения и постинкремента. В случае необходимости, эти режимы можно удалить при конфигурации процессора. Команды и кеширование данныхARC-процессоры поддерживают кеширование команд и данных, что существенно улучшает загрузку-хранение данных и эффективность команд выборки. Как кеш данных, так и кеш команд могут быть сконфигурированы. Можно выбрать размер кеша и выбрать один, два или четыре пути для реализации ассоциативности. Длина пути также конфигурируется. Можно также заблокировать некоторые пути, оставаясь при этом уверенным, что критичные к быстродействию данные или команды, например, программы обслуживания прерываний, всегда кешируются. Можно выбрать один из двух алгоритмов замены: произвольная замена или циклическая. И наконец, можно аннулировать целые или выборочные линии кеш. Кеш данных обеспечивает перезапись, блокировку и распредел╦нную запись в соответствии с определ╦нными правилами записи; построчную запись в буфер; в кеш под управлением ЦЕНТРАЛЬНОГО ПРОЦЕССОРА, поддержку LD.DI и ST.DI команд, обеспечивающих обходной режим для данных "на лету". Контроль потребленияНебольшой размер ARC-процессоров и их способность к изменению конфигурации позволяют разрабатывать изделия с низким уровнем потребления, устраняя функции, не используемые в конкретном приложении. ARC-процессоры также поддерживают "спящий" режим потребления и управление мощностью процессора с помощью специальных часов, устанавливая, каким устройствам и сколько позволено потребление определ╦нных уровней мощности. Можно резко снизить потребляемую мощность, используя специальные пользовательские команды или команды из расширенного набора, которые устанавливают для реализации алгоритмов предельное значение быстродействия, обеспечивающее выполнение заданных условий. |
Ваш комментарий к статье | ||||