Богдан СИДОРЕНКО
sby@rtcs.ru
Особенности архитектуры AVR32
Реализация современных встраиваемых систем управления часто связана с необходимостью программной реализации алгоритмов цифровой обработки сигналов (ЦОС) повышенной сложности. Примерами таких алгоритмов могут служить быстрое преобразование Фурье и инверсное дискретное косинусное преобразование ЦБСТ), которые в дополнении к различным арифметическим операциям требуют выполнения операций битовой обработки и действий над матрицами. Такие алгоритмы широко используются для сжатия информации, кодирования и декодирования сигналов (например, МР3 или МРЕО-4). В свою очередь, повышение сложности алгоритмов ЦОС связано с необходимостью повышения производительности микроконтроллеров. Традиционно, для этого повышают тактовую частоту или используют несколько микропроцессоров. Недостатком этих решений является повышенное энергопотребление, что неприемлемо в ряде портативных применений, таких как карманные ПК, сотовые телефоны и медиаплееры, требования к миниатюрности которых непрерывно ужесточаются. Чтобы высокое энергопотребление не отразилось на повышении размеров конечной продукции (вследствие применения аккумуляторной батареи повышенной емкости) его удельное значение ограничено на уровне 2 мВт/МГц. Выполнить данное требование можно только при реализации новой микроконтроллерной архитектуры, свободной от недостатков, которые присущи существующим процессорам и про-
AVR32 — микроконтроллеры XXI столетия
Появление в конце 1990-х первого 8-разрядного микроконтроллера AVR показало, как за счет оптимизации архитектуры процессорного ядра можно добиться улучшения производительности и снизить энергопотребление. Архитектура AVR позволяла выполнять большинство инструкций за один машинный цикл, таким образом достигая практически на порядок лучшей производительности относительно популярного на тот момент ядра 8051. В 2006 году Atmel представила свою новую разработку — 32-разрядное ядро AVR32, ориентированное на применения, в которых используются 32- и 64-разрядные микроконтроллеры. Усовершенствования в архитектуре ядра позволили AVR32 превзойти своих конкурентов (Cortex M3, ARM9, ARM11) как по производительности, так и энергопотреблению, хотя в количественном выражении это превосходство не столь впечатляюще, как ранее. В данной статье будут рассмотрены особенности ядра AVR32 и микроконтроллеров, выполненных на его основе.
являются при выполнении различных алгоритмов ЦОС и проводят к снижению производительности обработки. Примером такой архитектуры может служить ЛУИ32, разработанный компанией Л1ше1 и представленный в феврале 2006 года.
К числу недостатков традиционных ЦПУ относятся:
1)задержки при перемещении данных (инструкции чтения-записи);
2) ограниченная эффективность выполнения некоторых инструкций на конвейере;
3) потери времени на выполнение операций переходов;
4) несовершенства модели программирования;
5) недостаточно высокая плотность кода. Рассмотрим, как эти недостатки были преодолены у ядра ЛУИ32.
Снижение количества циклов на выполнение инструкций чтения-записи
Микроконтроллеры ЛУИ32 избавлены от множества циклов, необходимых прочим микроконтроллерам для записи и чтения регистровых файлов. Для этого предусмотрено продвижение данных между ступенями конвейера. Инструкции, которые закончили свое выполнение перед ступенью обратной записи, незамедлительно передают данные в начало конвейеров для выполнения инструкций, ожидающих эти данные, минуя регистры. За счет минимизации числа доступов к регистрам снижается как количество циклов чтения-записи, так и потребляемая мощность.
Повышение производительности выполнения повторяющихся операций Микроконтроллерами AVR32 (только для семейства AP7) поддерживаются так называемые SIMD-инструкции, или инструкции с одной командной и множеством данных. SIMD-инструкции могут увеличить в 4 раза производительность некоторых алгоритмов ЦОС, требующих выполнения однотипных операций над потоком данных. Например, алгоритм вычисления суммы абсолютных отклонений (SAD) 8x8 состоит из 24 операций и применяется в процессе кодирования в формате MPEG-4 к каждому пикселю изображения. Благодаря одновременности выполнения таких операций с различными данными (при использовании SIMD-инструкций) пропорционально снижается количество циклов, необходимых для обработки потока данных.
Повышение эффективности использования конвейерных ресурсов Некоторые арифметические операции могут потребовать на выполнение несколько циклов. Например, на выполнение операции деления может потребоваться до 32 циклов. Если процессор будет ожидать завершения выполнения многоцикловой операции и только после этого загружать на исполнение очередную инструкцию, то остальная часть конвейера будет простаивать. У микроконтроллеров AVR32 неиспользуемая часть конвейера задействуется для выполнения несвязанных вычислений (внеочередное выполнение). В итоге повышается эффективность использования конвейерных ресурсов и производительность за цикл синхронизации.
Тран-
сивер
ЦПУ AVR32 АР Сопроцессор VMU
Отладочная система Nexus Кэш-память программ (16 кайт) БУП Кэш-память данных (16 кайт)
Высокоскор. ивВ-устр.-во ПДП
Интерфейс приемника изображения С d с
Е№ете1 МАСО ПДП
Е^епДО МАС1 ПДП
Контроллер ЖКИ ПДП
Контроллер ПДП периф. устр. (КПП)
Интерфейс PS2
Послед.
интерфейс TWI
УСАППО
УСАПП1 с
УСАПП2 *
УСАППЗ
SPI0 с
SPI1 *
SSC0
SSC1 с
SSC2
Многоалойная
шинная
матрица
п реобраз. п реобраз.
периф. периф.
устройств устройств
ЕМАСО,
ЕМАС1
шинная
матрица
SMC
-9-
о.
ёе m Б
Конфигурационные
регистры
Шина А периферийных устройств
16 кайт стат. ОЗУ
16 кайт стат. ОЗУ
Контроллер ПДП
Внешний
шинный
интерфейс
Контроллер
SDRAM
Контроллер стат. памяти
Управление
системой
Контроллер
прерываний
ШИМ-
контроллер
Таймеры-счетчики 0 и 1
ЦАП
БУП — блок управления памятью ПДП — прямой доступ к памяти
Рис. 1. Структурная схема микроконтроллеров семейства AP7
Минимизация задержек на переходы
Большинство алгоритмов обработки аудио-и видеоданных и криптографических алгоритмов состоит из внешних и внутренних циклов. На выполнение одной инструкции перехода требуется от трех до пяти циклов, а при выполнении некоторых алгоритмов ЦОС — выполнение вложенных циклов до 10 тысяч раз в секунду. Таким образом, на выполнение инструкций перехода тратится существенная часть времени. Для высвобождения этих потерь времени у ядра AVR реализована логика предсказания вектора перехода, которая может точно предсказать результат выполнения всех инструкций изменения программного потока. Затем переход «прикрепляется» к целевой инструкции и выполняется вместе с ней, что исключает какие-либо задержки на его выполнение.
Улучшение плотности кода
В условиях доступности относительно недорогих запоминающих устройств разработчики обычно мало заботятся о снижении плотности кода. Тем не менее, у процессоров, в которых для повышения производительности код инструкции загружается в специальную кэш-память инструкций, плотность кода напрямую влияет как на производительность процессора, так и на его энергопотребление. Если код программы мал, то большая его часть может быть помещена в кэш-память. В результате повышается эффективность использования кэш-памяти и сокращается количество выборок из внешней памяти. Таким образом, помимо улучшения производительности также снижается уровень энергопотребления. Улучшить плотность кода ядра AVR32 разработчикам удалось за счет всестороннего сравнения и усовершенствования набора инструкций с использованием передовой технологии компилирования. В результате AVR32 показал плотность кода на 5-50% более высокую, чем у конкурирующих ядер, при использовании тестового программного пакета консорциума EEMBC (www.eembc.org). Кроме того, улучшению плотности кода способствуют предлагаемые Atmel библиотеки оптимизированного кода (AVR32 UC3 Software Framework).
Также необходимо отметить, что ядром AVR32 поддерживаются DSP-инструкции, позволяющие существенно улучшить эффективность выполнения алгоритмов ЦОС. К числу таких инструкций относятся арифметические операции с фиксированной запятой и однотактные операции умножения-накопления (MAC).
Микроконтроллеры на основе ядра AVR32
Первым семейством микроконтроллеров, выполненных на ядре AVR32, стало семейство AP7. Помимо реализации на основе ново-
го процессорного ядра данные микроконтроллеры примечательны степенью интеграции: в них интегрированы практически все функциональные блоки, необходимые для реализации мультимедийных систем для сотовых телефонов, цифровых камер, персональных цифровых помощников, автомобильной и домашней аудио- и видеотехники, ТВ-приставок, сетевого оборудования, промышленных принтеров и одноплатных компьютеров. Структурная схема микроконтроллеров семейства АР7 представлена на рис. 1. Микроконтроллеры полностью интегрируют тракт ввода (интерфейс фотоприемника изображения), обработки (сопроцессор векторного умножения для оптимизации масштабирования изображений и преобразования форматов УиУ/ИОВ) и вывода (графический контроллер TFT/STN ЖК-дисплея с разрешающей способностью 640x320 и 320x240) графической информации. Для вывода звуковой информации предусмотрен 16-разрядный аудио-ЦАП и цифровой интерфейс ^/АС'97. Кроме того, микроконтроллеры оснащены инструментами для организации последовательного и параллельного обмена данными, в том числе трансивером ШВ 2.0 480 Мбит/с, 2-канальным контроллером ЕШегпе! (опционально), интерфейсом ГОЕ, интерфейсом карт памяти CF/SD/MMC, а так-
же портами IrDA, 3xSPI, I2C, 3xSSC, 4хУСАПП. В состав семейства входят три микроконтроллера. Наименования и основные характеристики микроконтроллеров отражены в таблице 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,
Таблица 2. Энергопотребление микроконтроллеров на максимальной тактовой частоте
Микроконтроллер (производитель) Макси- мальная тактовая частота, МГц Потребляемый ток при максимальной тактовой частоте, мА мА/МГц
AVR32, серия UC3B (Atmel) 60 23 0,38
STM32F103 (ST Microelectronics) 72 36 0,5
AVR32, серия UC3A (Atmel) 66 37 0,56
LM3 S6965 (Luminary) 50 49 0,98
LPC236x (NXP) 72 114 1,58
Программируемый
контроллер
прерываний
I
Управление
потреблением
Встроенная
отладочная
система
JTAG
Конвейер ЦПУ AVR32UC
I
Блок микропрограммного управления
Точки прерывания, контроль данных, трассировка
Контроллер
памяти
программ
Высокоскоростная
мастер-шина
Порт
трасси-
ровки
Контроллер памяти данных
ОЗУ ЦПУ Локальная шина
Высоко- скоростная мастер-шина Высоко- скоростная подчиненная шина
>ысокоскор. локальная шин;
Ядро
AVR32 UC3
»
Рис. 2. Структурная схема ядра AVR32 UC3
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
Таблица 1. Микроконтроллеры на основе ядра AVR32
Наименование Производительность, MIPS* Память SRAM, кбайт КЭШ-память (Инструкций/ Данных) , кбайт Память Flash, кбайт Кол. линий ввода/вывода USB** Ethernet MAC 10/100 Интерфейс внешней шины УАПП Макс. тактовая частота, МГц Корпус
AT32AP7000 210 32 16/16 - 160 HS Есть 150 CTBGA 256
AT32AP7001 210 32 16/16 - 90 HS - Есть 150 LQFP 208
AT32AP7002 210 32 16/16 - 85 HS - Есть 150 CBGA 196
AT32UC3A0128 80 32 - 128 109 FS+OTG Есть 66 LQFP 144
AT32UC3A0256 80 64 - 256 109 FS+OTG Есть 66 LQFP 144
AT32UC3A0512 80 64 - 512 109 FS+OTG Есть 66 LQFP 144
AT32UC3A1128 80 32 - 128 69 FS+OTG - 66 TQFP 100
AT32UC3A1256 80 64 - 256 69 FS+OTG - 66 TQFP 100
AT32UC3A1512 80 64 - 512 69 FS+OTG - 66 TQFP 100
AT32UC3B064 72 16 - 64 44 FS+OTG - - 60 QFN 64, TQFP 64
AT32UC3B0128 72 32 - 128 44 FS+OTG - - 60 QFN 64, TQFP 64
AT32UC3B0256 72 32 - 256 44 FS+OTG - - 60 QFN 64, TQFP 64
AT32UC3B164 72 16 - 64 28 FS - - 60 TQFP 48, QFN 48
AT32UC3B1128 72 32 - 128 28 FS - - 60 TQFP 48, QFN 48
AT32UC3B1256 72 32 - 256 28 FS - - 60 TQFP 48, QFN 48
Примечание.:
* MIPS — миллион инструкций в секунду
** HS — high speed (высокоскоростной), FS — full speed (полноскоростной), OTG — On-The-Go
Таблица 3. Аппаратные средства для проектирования на основе микроконтроллеров ДУР32
Наименование
Поддерживаемые
микроконтроллеры
Фото
Краткое описание
Набор для проектирования ATSTK1000
Микроконтроллеры семейства AP7
Содержит два порта Ethernet, высококачественный QVGA ЖК-дисплей, разъем VGA и разъемы USB. Предусмотрен разъем расширения.
В состав набора входит карта памяти SDcard емкостью 256 Мбайт с предварительно установленной ОС Linux
Набор для проектирования ATSTK600
Все микроконтроллеры семейства AVR32 UC3 и 8-разрядные микроконтроллеры AVR
Завершенная система для проектирования на основе любого микроконтроллера из семейства AVR32 иС3 (подключаются через специальные панели)
Эмулятор JTAGICE mkII
8-разрядные микроконтроллеры AVR с интерфейсом debugWIRE и все 32-разрядные микроконтроллеры AVR32
Эмулятор AVR JTAGICE mkII выступает в роли адаптера между ПК с активной средой для проектирования и встроенной отладочной системой микроконтроллера. Поддерживает возможности Nano Trace микроконтроллеров AVR32
Оценочный набор ATEVK1100
Микроконтроллеры серии AVR32 UC3A
Содержит интерфейсы 10/100 Е^вгпв^ USB ОТЭ, БР1, TWI и УСАПП; датчик температуры и фотодатчик, символьный ЖКИ 20x4, карту ММС/БР и разъем расширения
Оценочный набор ATEVK1101
Микроконтроллеры серии AVR32 UC3B
Содержит интерфейсы иБВ ОТЭ, БРІ, TWI и УСАПП, 3-осевой акселерометр, датчик температуры и фотодатчик, карту памяти ММС/БР и разъем расширения
Оценочная
платформа
FlexRay
Микроконтроллеры семейства AP7
Представляет собой набор модулей, позволяющих реализовать любую конфигурацию сети FlexRay. Каждый модуль состоит из платы ЦПУ (из семейства AP7000) и дочерней платы (для управления двигателем, аналогового ввода, управления исполнительными устройствами). Может быть дополнен модулями ввода изображений и многопротокольного шлюза (FlexRay,CAN, LIN, Ethernet, USB, RS232, SPI)
Опорная разработка сетевого шлюза ATNGW100
Представляет собой плату с микроконтроллером АТ32АР7000, двумя портами Е^вгпв^ считывателем карт БР и ММС, разъемами портов иБВ и ЯАЭ. Может использоваться в качестве платы для проектирования на основе АТ32АР7000
“7 il- *1 -ЗАі'і _ І
• '
. ___________
é Fl
1Ш.Ш32 .
* *її*Ф» ■
И
3
4
5
AT32AP7000
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. ■
Литература
1. Jo U., Strom O. MCU Architectures for ComputeIntensive Embedded Applications http://www.atmel.com/dyn/resources/ prod_documents/doc4092.pdf).
2. Презентационные материалы и техническая документация, размещенные на сайте компании Atmel (www.atmel.com).
3. Информация по микроконтроллерам AVR32 (http://www.atmel.com/products/avr32/).