# AVR32

AVR32 és una arquitectura de microcontroladors RISC de 32 bits produïda per Atmel. L'arquitectura del microcontrolador va ser dissenyada per un grapat de persones educades a la Universitat Noruega de Ciència i Tecnologia, incloent el dissenyador principal Øyvind Strøm i l'arquitecte de CPU Erik Renno al centre de disseny noruec d'Atmel.
La majoria de les instruccions s'executen en un sol cicle. La unitat de multiplicació-acumulació pot realitzar una operació aritmètica de 32 bits × 16 bits + 48 bits en dos cicles (latència de resultat), emesa una vegada per cicle.
No s'assembla a la família de microcontroladors AVR de 8 bits, tot i que tots dos van ser dissenyats a Atmel Norway, a Trondheim. Algunes de les eines de depuració són similars.
El suport per a AVR32 s'ha eliminat de Linux a partir del nucli 4.12; Atmel ha canviat principalment a variants M de l'arquitectura ARM.

## Arquitectura

L'AVR32 té almenys dues microarquitectures, l'AVR32A i l'AVR32B. Aquests es diferencien en l'arquitectura del conjunt d'instruccions, les configuracions del registre i l'ús de memòria cau per a instruccions i dades.
Els nuclis de la CPU AVR32A són per a aplicacions econòmiques. No proporcionen registres de maquinari dedicats per ocultar el fitxer de registre, l'estat i l'adreça de retorn a les interrupcions. Això estalvia l'àrea d'encenall a costa d'una manipulació més lenta d'interrupcions.
Els nuclis de la CPU AVR32B estan dissenyats per a interrupcions ràpides. Tenen registres dedicats per mantenir aquests valors per a interrupcions, excepcions i trucades de supervisors. Els nuclis AVR32B també admeten una màquina virtual Java al maquinari.
El conjunt d'instruccions de l'AVR32 té instruccions de 16 bits (compacte) i de 32 bits (ampliades), similars, per exemple, a alguns ARM, amb diverses instruccions especialitzades que no es troben a ARMv5 o ARMv6 o MIPS32 anteriors. S'han presentat diverses patents dels EUA per a la plataforma de disseny i ISA AVR32.
Igual que l'arquitectura de microcontroladors AVR de 8 bits, l'AVR32 va ser dissenyat per a una alta densitat de codi (embalatge de moltes funcions en poques instruccions) i instruccions ràpides amb pocs cicles de rellotge. Atmel va utilitzar el consorci de referència independent EEMBC per comparar l'arquitectura amb diversos compiladors i va superar constantment tant el codi ARMv5 de 16 bits (Thumb) com el codi ARMv5 de 32 bits ARM) fins a un 50% en la mida del codi i 3x en el rendiment.
Atmel diu que el "picoPower" AVR32 AT32UC3L consumeix menys de 0,48 mW/MHz en mode actiu, que va afirmar, en aquell moment, utilitzava menys potència que qualsevol altra CPU de 32 bits. Aleshores, el març de 2015, van afirmar que els seus nous microcontroladors basats en Cortex-M0+, utilitzant l'arquitectura ARM d'ARM Holdings, no el seu propi conjunt d'instruccions, "ha trencat totes les barreres de rendiment de potència ultra baixa fins ara".

## Implementacions

L'arquitectura AVR32 només es va utilitzar en els productes propis d'Atmel. El 2006, Atmel va llançar l'AVR32A: el nucli AVR32 AP7, una plataforma de disseny basat en memòria cau i canalitzada en 7 etapes. Aquest "AP7000" implementa l'arquitectura AVR32B i admet instruccions de maquinari FPU, SIMD (instrucció única de dades múltiples) DSP (processament de senyal digital) al conjunt d'instruccions RISC, a més de l'acceleració de maquinari Java. Inclou una unitat de gestió de memòria (MMU) i admet sistemes operatius com Linux. A principis de 2009, el rumorejat processador de seguiment AP7200 es va frenar i els recursos van passar a altres xips.
El 2007, Atmel va llançar el segon AVR32: el nucli AVR32 UC3. Està dissenyat per a microcontroladors, que utilitzen memòria flash en xip per a l'emmagatzematge de programes i s'executa sense una MMU (unitat de gestió de memòria). El nucli de l'AVR32 UC3 utilitza una arquitectura de Harvard canalitzada en tres etapes especialment dissenyada per optimitzar l'obtenció d'instruccions des de la memòria flash del xip. El nucli AVR32 UC3 implementa l'arquitectura AVR32A. Comparteix la mateixa arquitectura de conjunt d'instruccions (ISA) que el seu germà AP7, però difereix perquè no inclou les instruccions SIMD opcionals ni el suport Java. El conjunt d'instruccions FPU és opcional i no es va implementar a les famílies inicials de microcontroladors UC3. Comparteix més de 220 instruccions amb l'AVR32B. L'ISA inclou manipulació de bits atòmics per controlar perifèrics en xip i E/S de propòsit general i aritmètica DSP de punt fix.
Ambdues implementacions es poden combinar amb un conjunt compatible de controladors perifèrics i busos vist per primera vegada a les plataformes basades en ARM AT91SAM. Alguns perifèrics vists per primera vegada a l'AP7000, com ara el controlador de perifèrics USB d'alta velocitat i el controlador DMA autònom, van aparèixer més tard a les plataformes ARM9 actualitzades i després als productes basats en ARM Cortex-M3.
Els dos nuclis AVR32 inclouen un marc de depuració en xip basat en la classe Nexus 2+ construït amb JTAG.
El nucli UC3 C, anunciat a Electronica 2010 a Munic Alemanya el 10 de novembre de 2010, va ser el primer membre de la família UC3 a implementar el suport FPU.

## Referències

* ↑ «avr32: remove support for AVR32 architecture» (en anglès). GitHub. [Consulta: 21 setembre 2017].
* ↑ «AVR32 Architecture Document» (en anglès). Atmel. Arxivat de l'original el 2012-03-24. [Consulta: 15 juny 2008].
* ↑ «AVR32 AP Technical Reference Manual» (en anglès). Atmel. Arxivat de l'original el 3 desembre 2008. [Consulta: 12 desembre 2008].
* ↑ «SAM L family now the world's lowest power ARM Cortex-M based solution» (en anglès), 30-03-2015. Arxivat de l'original el 27 abril 2015. [Consulta: 27 abril 2015].
* ↑ «AVR32 AP Technical Reference Manual» (en anglès). Atmel. Arxivat de l'original el 3 desembre 2008. [Consulta: 12 desembre 2008].
* ↑ «AVR32UC Technical Reference Manual» (en anglès). Atmel. Arxivat de l'original el 2009-02-05. [Consulta: 15 juny 2008].
* ↑ «Atmel Introduces First 32-bit AVR Microcontroller Featuring Floating Point Unit» (en anglès). Atmel. Arxivat de l'original el 2010-11-22. [Consulta: 26 març 2011].