AVR32: 32-битный RISC микроконтроллер от Atmel. Высокая производительность, одноцикловое выполнение команд и быстрый умножитель. Разработка – Норвегия.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
AVR32 — 32-битная RISC-архитектура микроконтроллера, разработанная компанией Atmel. Архитектура микроконтроллера была создана небольшой группой специалистов, получивших образование в Норвежском университете науки и технологий, включая ведущего разработчика Øyvind Strøm и архитектора процессора Эрика Ренно в норвежском конструкторском центре Atmel. Большинство инструкций выполняются за один цикл. Устройство умножения-накопления способно выполнять арифметическую операцию 32 бит × 16 бит + 48 бит за два цикла (задержка результата), с возможностью выдачи результата один раз за цикл. Он не имеет сходства с 8-битной микроконтроллерной линейкой AVR, несмотря на то, что обе были разработаны в Atmel Norway, в Тронхейме. Некоторые инструменты отладки аналогичны. Поддержка AVR32 была прекращена в Linux начиная с ядра 4.12; Atmel в основном перешла на M-варианты архитектуры ARM.
AVR32 is a 32 bit RISC microcontroller architecture produced by Atmel. The microcontroller architecture was designed by a handful of people educated at the Norwegian University of Science and Technology, including lead designer Øyvind Strøm and CPU architect Erik Renno in Atmel's Norwegian design center. Most instructions are executed in a single cycle. The multiply–accumulate unit can perform a 32 bit × 16 bit + 48 bit arithmetic operation in two cycles (result latency), issued once per cycle. It does not resemble the 8 bit AVR microcontroller family, even though they were both designed at Atmel Norway, in Trondheim. Some of the debug tools are similar. Support for AVR32 has been dropped from Linux as of kernel 4.12; Atmel has switched mostly to M variants of the ARM architecture.
Архитектура
AVR32 имеет как минимум две микроархитектуры: AVR32A и AVR32B. Они различаются архитектурой набора команд, конфигурацией регистров и использованием кэшей для инструкций и данных. Процессорные ядра AVR32A предназначены для недорогих приложений. Они не имеют выделенных аппаратных регистров для сохранения содержимого регистрового файла, статуса и адреса возврата при прерываниях. Это позволяет уменьшить площадь кристалла за счет снижения скорости обработки прерываний. Процессорные ядра AVR32B разработаны для быстрой обработки прерываний. Они оснащены выделенными регистрами для хранения этих значений при прерываниях, исключениях и вызовах супервизора. Ядра AVR32B также поддерживают аппаратную реализацию виртуальной машины Java. Набор команд AVR32 включает 16-битные (компактные) и 32-битные (расширенные) инструкции, аналогичные, например, некоторым ARM, и содержит несколько специализированных инструкций, отсутствующих в более ранних ARMv5, ARMv6 или MIPS32. На архитектуру набора команд и платформу AVR32 подано несколько патентов в США. Как и 8-битная архитектура микроконтроллеров AVR, AVR32 была разработана для высокой плотности кода (возможности размещения большого количества функций в небольшом количестве инструкций) и быстрого выполнения инструкций с малым количеством тактов. Atmel использовал независимый оценочный консорциум EEMBC для тестирования архитектуры с различными компиляторами и последовательно демонстрировал превосходство над 16-битным кодом ARMv5 (Thumb) и 32-битным кодом ARMv5 (ARM) на 50% по размеру кода и в 3 раза по производительности. Atmel заявляет, что "picoPower" AVR32 AT32UC3L потребляет менее 0,48 мВт/МГц в активном режиме, что, по их утверждению, в то время было самым низким энергопотреблением среди 32-битных процессоров. В марте 2015 года они заявили, что их новые микроконтроллеры на базе Cortex M0+, использующие архитектуру ARM Holdings ARM, а не собственный набор команд, "превзошли все существующие показатели производительности при сверхнизком энергопотреблении".
The AVR32 has at least two micro architectures, the AVR32A and AVR32B. These differ in the instruction set architecture, register configurations and the use of caches for instructions and data. The AVR32A CPU cores are for inexpensive applications. They do not provide dedicated hardware registers for shadowing the register file, status and return address in interrupts. This saves chip area at the expense of slower interrupt handling. The AVR32B CPU cores are designed for fast interrupts. They have dedicated registers to hold these values for interrupts, exceptions and supervisor calls. The AVR32B cores also support a Java virtual machine in hardware. The AVR32 instruction set has 16 bit (compact) and 32 bit (extended) instructions, similar to e. g. some ARM, with several specialized instructions not found in older ARMv5 or ARMv6 or MIPS32. Several U. S. patents are filed for the AVR32 ISA and design platform. Just like the AVR 8 bit microcontroller architecture, the AVR32 was designed for high code density (packing much function in few instructions) and fast instructions with few clock cycles. Atmel used the independent benchmark consortium EEMBC to benchmark the architecture with various compilers and consistently outperformed both ARMv5 16 bit (Thumb) code and ARMv5 32 bit (ARM) code by as much as 50% on code size and 3× on performance. Atmel says the "picoPower" AVR32 AT32UC3L consumes less than 0.48 mW/MHz in active mode, which it claimed, at the time, used less power than any other 32 bit CPU. Then in March 2015, they claim their new Cortex M0+ based microcontrollers, using ARM Holdings' ARM architecture, not their own instruction set, "has broken all ultra low power performance barriers to date."
Реализация
Архитектура AVR32 использовалась исключительно в собственных продуктах Atmel. В 2006 году Atmel представила AVR32A: ядро AVR32 AP7 – 7-ступенчатую конвейерную платформу с использованием кэша. Ядро AVR32 UC3 реализует архитектуру AVR32A. Оно использует тот же набор инструкций (ISA), что и ядро AP7, но отличается отсутствием необязательных SIMD-инструкций и поддержки Java. Набор инструкций FPU является опциональным и не был реализован в первых семействах микроконтроллеров UC3. Он имеет более 220 общих инструкций с AVR32B. ISA включает в себя атомарные операции над битами для управления периферийными устройствами на чипе и портами ввода/вывода общего назначения, а также арифметику DSP с фиксированной точкой. Обе реализации могут быть объединены с совместимым набором периферийных контроллеров и шин, впервые представленных на платформах AT91SAM на базе ARM. Некоторые периферийные устройства, впервые появившиеся в AP7000, такие как высокоскоростной USB-контроллер и автономный DMA-контроллер, позднее были реализованы в обновленных платформах ARM9, а затем и в продуктах на базе ARM Cortex M3. Оба ядра AVR32 включают в себя отладочную структуру On-Chip Debug класса Nexus 2+, построенную на основе JTAG. Ядро UC3 C, анонсированное на выставке Electronica 2010 в Мюнхене 10 ноября 2010 года, стало первым представителем семейства UC3, реализовавшим поддержку FPU.
The AVR32 architecture was used only in Atmel's own products. In 2006, Atmel launched the AVR32A: The AVR32 AP7 core, a 7 stage pipelined, cache based design platform. The AVR32 UC3 core implements the AVR32A architecture. It shares the same instruction set architecture (ISA) as its AP7 sibling, but differs by not including the optional SIMD instructions or Java support. The FPU instruction set is optional, and was not implemented in the initial families of UC3 microcontrollers. It shares more than 220 instructions with the AVR32B. The ISA features atomic bit manipulation to control on chip peripherals and general purpose I/Os and fixed point DSP arithmetic. Both implementations can be combined with a compatible set of peripheral controllers and buses first seen in the AT91SAM ARM based platforms. Some peripherals first seen in the AP7000, such as the high speed USB peripheral controller, and standalone DMA controller, appeared later in updated ARM9 platforms and then in the ARM Cortex M3 based products. Both AVR32 cores include a Nexus class 2+ based On Chip Debug framework build with JTAG. The UC3 C core, announced at the Electronica 2010 in Munich Germany on November 10, 2010, was the first member of the UC3 family to implement FPU support.