AVR32 — микроконтроллеры XXI столетия
Появление в конце 1990-х первого 8-разрядного микроконтроллера AVR показало, как за счет оптимизации архитектуры процессорного ядра можно добиться улучшения производительности и снизить энергопотребление. Архитектура AVR позволяла выполнять большинство инструкций за один машинный цикл, таким образом достигая практически на порядок лучшей производительности относительно популярного на тот момент ядра 8051. В 2006 году Atmel представила свою новую разработку — 32-разрядное ядро AVR32, ориентированное на применения, в которых используются 32- и 64-разрядные микроконтроллеры. Усовершенствования в архитектуре ядра позволили AVR32 превзойти своих конкурентов (Cortex M3, ARM9, ARM11) как по производительности, так и энергопотреблению, хотя в количественном выражении это превосходство не столь впечатляюще, как ранее. В данной статье будут рассмотрены особенности ядра AVR32 и микроконтроллеров, выполненных на его основе.
Особенности архитектуры AVR32
Реализация современных встраиваемых систем управления часто связана с необходимостью программной реализации алгоритмов цифровой обработки сигналов (ЦОС) повышенной сложности. Примерами таких алгоритмов могут служить быстрое преобразование Фурье и инверсное дискретное косинусное преобразование (iDCT), которые в дополнении к различным арифметическим операциям требуют выполнения операций битовой обработки и действий над матрицами. Такие алгоритмы широко используются для сжатия информации, кодирования и декодирования сигналов (например, MP3 или MPEG-4). В свою очередь, повышение сложности алгоритмов ЦОС связано с необходимостью повышения производительности микроконтроллеров. Традиционно, для этого повышают тактовую частоту или используют несколько микропроцессоров. Недостатком этих решений является повышенное энергопотребление, что неприемлемо в ряде портативных применений, таких как карманные ПК, сотовые телефоны и медиаплееры, требования к миниатюрности которых непрерывно ужесточаются. Чтобы высокое энергопотребление не отразилось на повышении размеров конечной продукции (вследствие применения аккумуляторной батареи повышенной емкости) его удельное значение ограничено на уровне 2 мВт/МГц. Выполнить данное требование можно только при реализации новой микроконтроллерной архитектуры, свободной от недостатков, которые присущи существующим процессорам и проявляются при выполнении различных алгоритмов ЦОС и проводят к снижению производительности обработки. Примером такой архитектуры может служить AVR32, разработанный компанией Atmel и представленный в феврале 2006 года.
К числу недостатков традиционных ЦПУ относятся:
- задержки при перемещении данных (инструкции чтения-записи);
- ограниченная эффективность выполнения некоторых инструкций на конвейере;
- потери времени на выполнение операций переходов;
- несовершенства модели программирования;
- недостаточно высокая плотность кода.
Рассмотрим, как эти недостатки были преодолены у ядра AVR32.
Снижение количества циклов на выполнение инструкций чтения-записи
Микроконтроллеры AVR32 избавлены от множества циклов, необходимых прочим микроконтроллерам для записи и чтения регистровых файлов. Для этого предусмотрено продвижение данных между ступенями конвейера. Инструкции, которые закончили свое выполнение перед ступенью обратной записи, незамедлительно передают данные в начало конвейеров для выполнения инструкций, ожидающих эти данные, минуя регистры. За счет минимизации числа доступов к регистрам снижается как количество циклов чтения-записи, так и потребляемая мощность.
Повышение производительности выполнения повторяющихся операций
Микроконтроллерами AVR32 (только для семейства AP7) поддерживаются так называемые SIMD-инструкции, или инструкции с одной командной и множеством данных. SIMD-инструкции могут увеличить в 4 раза производительность некоторых алгоритмов ЦОС, требующих выполнения однотипных операций над потоком данных. Например, алгоритм вычисления суммы абсолютных отклонений (SAD) 8J8 состоит из 24 операций и применяется в процессе кодирования в формате MPEG-4 к каждому пикселю изображения. Благодаря одновременности выполнения таких операций с различными данными (при использовании SIMD-инструкций) пропорционально снижается количество циклов, необходимых для обработки потока данных.
Повышение эффективности использования конвейерных ресурсов
Некоторые арифметические операции могут потребовать на выполнение несколько циклов. Например, на выполнение операции деления может потребоваться до 32 циклов. Если процессор будет ожидать завершения выполнения многоцикловой операции и только после этого загружать на исполнение очередную инструкцию, то остальная часть конвейера будет простаивать. У микроконтроллеров AVR32 неиспользуемая часть конвейера задействуется для выполнения несвязанных вычислений (внеочередное выполнение). В итоге повышается эффективность использования конвейерных ресурсов и производительность за цикл синхронизации.
Минимизация задержек на переходы
Большинство алгоритмов обработки аудиои видеоданных и криптографических алгоритмов состоит из внешних и внутренних циклов. На выполнение одной инструкции перехода требуется от трех до пяти циклов, а при выполнении некоторых алгоритмов ЦОС — выполнение вложенных циклов до 10 тысяч раз в секунду. Таким образом, на выполнение инструкций перехода тратится существенная часть времени. Для высвобождения этих потерь времени у ядра AVR реализована логика предсказания вектора перехода, которая может точно предсказать результат выполнения всех инструкций изменения программного потока. Затем переход «прикрепляется» к целевой инструкции и выполняется вместе с ней, что исключает какие-либо задержки на его выполнение.
Улучшение плотности кода
В условиях доступности относительно недорогих запоминающих устройств разработчики обычно мало заботятся о снижении плотности кода. Тем не менее, у процессоров, в которых для повышения производительности код инструкции загружается в специальную кэш-память инструкций, плотность кода напрямую влияет как на производительность процессора, так и на его энергопотребление. Если код программы мал, то большая его часть может быть помещена в кэш-память. В результате повышается эффективность использования кэш-памяти и сокращается количество выборок из внешней памяти. Таким образом, помимо улучшения производительности также снижается уровень энергопотребления. Улучшить плотность кода ядра AVR32 разработчикам удалось за счет всестороннего сравнения и усовершенствования набора инструкций с использованием передовой технологии компилирования. В результате AVR32 показал плотность кода на 5–50% более высокую, чем у конкурирующих ядер, при использовании тестового программного пакета консорциума EEMBC (www.eembc.org). Кроме того, улучшению плотности кода способствуют предлагаемые Atmel библиотеки оптимизированного кода (AVR32 UC3 Software Framework).
Также необходимо отметить, что ядром AVR32 поддерживаются DSP-инструкции, позволяющие существенно улучшить эффективность выполнения алгоритмов ЦОС. К числу таких инструкций относятся арифметические операции с фиксированной запятой и однотактные операции умножениянакопления (MAC).
Микроконтроллеры на основе ядра AVR32
Первым семейством микроконтроллеров, выполненных на ядре AVR32, стало семейство AP7. Помимо реализации на основе нового процессорного ядра данные микроконтроллеры примечательны степенью интеграции: в них интегрированы практически все функциональные блоки, необходимые для реализации мультимедийных систем для сотовых телефонов, цифровых камер, персональных цифровых помощников, автомобильной и домашней аудио- и видеотехники, ТВ-приставок, сетевого оборудования, промышленных принтеров и одноплатных компьютеров. Структурная схема микроконтроллеров семейства AP7 представлена на рис. 1. Микроконтроллеры полностью интегрируют тракт ввода (интерфейс фотоприемника изображения), обработки (сопроцессор векторного умножения для оптимизации масштабирования изображений и преобразования форматов YUV/RGB) и вывода (графический контроллер TFT/STN ЖК-дисплея с разрешающей способностью 640J320 и 320J240) графической информации. Для вывода звуковой информации предусмотрен 16-разрядный аудио-ЦАП и цифровой интерфейс I2S/AC’97. Кроме того, микроконтроллеры оснащены инструментами для организации последовательного и параллельного обмена данными, в том числе трансивером USB 2.0 480 Мбит/с, 2-канальным контроллером Ethernet (опционально), интерфейсом IDE, интерфейсом карт памяти CF/SD/MMC, а также портами IrDA, 3JSPI, I2C, 3JSSC, 4JУСАПП. В состав семейства входят три микроконтроллера. Наименования и основные характеристики микроконтроллеров отражены в таблице 1.
При использовании различных методик тестирования консорциума EEMBC микроконтроллеры AP7 демонстрируют превосходство над своими ближайшими конкурентами (микроконтроллеры на ядрах ARM926 и ARM1136), в частности, не менее чем на 15% по производительности и не менее чем на 25% по плотности кода. Информация о сравнении архитектур представлена на сайте Atmel в разделе “AVR32 32-bit MCU — AP7 Application Processors” (http://www.atmel.com/products/AVR32/ap7.asp), вкладка “AVR32 AP Benchmarks”.
Вслед за семейством AP7 компания Atmel представила в 2007 году еще одно семейство 32-разрядных микроконтроллеров AVR32 UC3.
По сути, ядро UC3 представляет собой урезанную версию ядра AP7. Максимальная тактовая частота ядра понижена до 66 МГц; количество ступеней конвейера уменьшено с 7 до 3; отсутствует кэш-память инструкций и данных, набор инструкций SIMD и ускоритель выполнения JAVA-инструкций; блок управления памятью (Memory Management Unit, MMU) заменен на блок защиты памяти (Memory Protection Unit, MPU); интегрирована флэш-память программ и сохранена поддержка инструкций DSP.
Микроконтроллеры семейства AVR32 UC3 ориентированы на встраиваемые применения с высокой степенью интеграции, в том числе устройства промышленной автоматики (программируемые логические контроллеры, коммуникационное оборудование, робототехника, устройства сбора данных), средства автоматизации зданий (пульты управления, управление доступом, обработка голоса, биометрическая идентификация), медицинская техника, контрольно-измерительное оборудование и приборы, коммуникационное оборудование (шлюзы преобразования последовательных протоколов, телефоны), торговые терминалы и портативные устройства.
Благодаря использованию архитектуры AVR32 они обладают высокой производительностью (до 1,3 MIPS/МГц по тесту Dhrystone, что составляет 86 DMIPS при частоте 66 МГц для серии UC3A) и малым потреблением — 23 мА при частоте 60 МГц в активном режиме и 30 мкА в статическом режиме (3,3 В) для серии UC3B (табл. 2). Ядро AVR32 UC3 (рис. 2) является первым 32-разрядным ядром с интегрированным статическим ОЗУ с однотактным доступом чтениязаписи, напрямую связанным с конвейером. Ядро AVR32 UC3 выполнено по гарвардской архитектуре с 3-ступенчатой конвейеризацией и поддерживает арифметические операции ЦОС, однотактные инструкции умножения и накопления, а также инструкции «чтение-модификация-запись» отдельного бита или слова. Семейство AVR32 UC3 на данный момент составляют серии микроконтроллеров UC3A и UC3B.
Микроконтроллеры серии UC3A оборудованы интерфейсами Ethernet (10/100 Мбит/с) и USB 2.0 с поддержкой функции “On-The-Go” и ориентированы на применения, требующие использования различных интерфейсов передачи данных и большого количества линий ввода/вывода.
Наличие у этих микроконтроллеров внешнего шинного интерфейса позволяет подключить дополнительную память (SRAM/SDRAM) или организовать связь с такими периферийными устройствами, как контроллеры ЖК-дисплея, программируемая логика FPGA и др. Ядро AVR32 UC3, система памяти и встроенные периферийные устройства подключены к 6-слойной быстродействующей системной шине, которая работает на частоте 66 МГц и позволяет передавать конкурирующие потоки ПДП на каждой шине со скоростью до 264 Мбайт/с.
Микроконтроллеры серии AVR32 UC3B идеально подходят для применения в портативных устройствах с батарейным питанием или питанием от разъема USB, где требуется применение высокопроизводительного и экономичного микроконтроллера со встроенной флэш-памятью. На тактовой частоте 60 МГц микроконтроллеры AVR32 UC3B достигают производительности 72 MIPS (по тесту Dhrystone), при этом потребляемый ток составляет всего лишь 23 мА (3,3 В). Для подключения к существующим устройствам у данных микроконтроллеров предусмотрена поддержка интерфейса USB 2.0 с функцией “On-The-Go” (означает возможность работы порта USB и в режиме устройства, и в режиме хоста).
Средства разработки
Микроконтроллеры AVR32 поддерживаются набором программных и аппаратных средств для проектирования. Для разработки программного кода Atmel предлагает бесплатный набор инструментальных средств AVR32 GNU (gcc, gdb и др.), интегрированную среду для проектирования (IDE) AVR32 Studio, библиотеку драйверов и оптимизированного кода AVR32 UC3 Software Framework. Кроме того, бесплатно распространяются программные продукты сторонних компаний, в том числе операционная система реального времени (www.freertos.org) и стек протоколов TCP/IP (www.sics.se/~adam/lwip/). На коммерческой основе доступны Си-компилятор компании IAR (www.iar.com), операционные системы ThreadX компании Express Logic (www.rtos.com) и μC/OS-II компании Micrium (www.micrium.com).
Для ускорения освоения схемотехнического проектирования и отладки программного кода Atmel выпускает наборы для проектирования и оценочные наборы. Информация по ним представлена в таблице 3. Облегчить проектирование также помогут рекомендации по применению, которые публикуются в специальном разделе “Aplication Notes” на сайте Atmel и периодически дополняются новыми документами.
Выводы
Итак, микроконтроллеры AVR32 являются эффективной альтернативой многим 32-разрядным микроконтроллерам, превосходя их по различным показателям, в том числе по производительности ЦОС, удельной производительности (по отношению к энергопотреблению), плотности кода и степени интеграции. Поскольку семейства AVR32 AP7 и UC3 имеют различные области применения, то микроконтроллеры UC3 нужно рассматривать как альтернативу микроконтроллерам на основе таких ядер, как ARM7, Cortex M3, а более мощные микроконтроллеры AVR32 AP7 — микроконтроллерам ARM9 и ARM11.
Например, при программной реализации алгоритмов цифровой фильтрации с конечной и бесконечной импульсной характеристикой (КИХ и БИХ) ядро AVR32 на порядок превосходит ядро ARM Cortex M3 по производительности обработки. Убедиться в превосходстве по удельной производительности микроконтроллеров на основе ядер ARM Cortex M3 и ARM7 можно, анализируя следующие данные для различных семейств МК: семейства AVR32 UC3B и AVR32 UC3A — 1,08 и 0,73 DMIPS/МВт, семейства STM32F103 и LM3S6965 (ядро ARM Cortex M3) — 0,62 и 0,39 DMIPS/МВт соответственно, LPC236x (ядро ARM7) — 0,13 DMIPS/МВт.
Применение микроконтроллеров AVR32 AP7 особенно выгодно в мультимедийных применениях с функциями цифровой обработки видео и аудио. Например, для обработки видеопотока по алгоритму MPEG4 QVGA (частота кадров 30 Гц) микроконтроллеры AVR32 AP достаточно тактировать частотой 75–100 МГц, в то время как микроконтроллеры на ядрах ARM926 и ARM1136 потребуют тактирования частотой 266 и 150–175 МГц соответственно.
Перечисленные превосходства микроконтроллеров AVR32 могут быть использованы для реализации нового поколения разнообразной продукции, которая отличается улучшенными функциональными возможностями, невысокой стоимостью, сниженными массо-габаритными характеристиками и повышенной длительностью работы от батарейного источника питания без подзарядки.
Время запуска серийного производства микроконтроллеров AVR32 UC3A и UC3B — II и III кварталы 2008 года соответственно. Также необходимо отметить, что в разработке находится новое семейство микроконтроллеров на архитектуре AVR32 UC3 с расширенными возможностями ввода/вывода и поддержкой интерфейса CAN.
Литература
- Jo U., Strom O. MCU Architectures for Compute-Intensive Embedded Applications http://www.atmel.com/dyn/resources/prod_documents/doc4092.pdf).
- Презентационные материалы и техническая документация, размещенные на сайте компании Atmel (www.atmel.com).
- Информация по микроконтроллерам AVR32 (http://www.atmel.com/products/avr32/).