Para maximizar el rendimiento y el paralelismo, el AVR usa una arquitectura de
Hardware con separador de memorias y buses para programa y datos. Las
instrucciones en la memoria de programa son ejecutadas con un simple nivel de
colas. Mientras una instrucción es ejecutada, la siguiente instrucción es
ejecutada desde la memoria de programa. Este concepto permite que las
instrucciones sean ejecutadas en cada ciclo de máquina. La memoria de
programa está en la memoria Flash re-programable.
El Archivo del Registro (Register File) de rápido acceso contiene 32 registros de
propósito general de 8 bits trabajando en un simple ciclo de reloj.
Esto permite una operación de ciclo simple en la Unidad Aritmética lógica. En
una operación típica de la ALU, dos operandos están fuera del Archivo de
Registro, la operación es ejecutada, y el resultado es guardado en el Archivo de
Registro en un ciclo de máquina.
Seis de los 32 registros pueden ser usados como tres registros punteros de 16
bits de dirección, para direccionar los
Datos y permitir los cálculos de
direcciones diferentes.
Uno de estos tres punteros puede ser usado como un puntero de direcciones
para tablas en la memoria de programa de la Flash. Estos registros de función
adicionales son el X, Y y Z de 16 bits, descritos después en esta sección. La ALU
soporta operaciones lógicas y aritméticas entre registros o entre constantes y
registros.
Simples operaciones de registros pueden ser ejecutadas en la ALU. Después de
una operación aritmética, el registro de estado es actualizado para reflejar
información acerca de los resultados de la operación. El flujo del programa es
provisto por un salto condicional e incondicional y llamado de interrupciones,
capaz de direccionar espacios de direcciones completamente.
La mayoría de instrucciones del AVR tienen un formato simple de una palabra
de 16 bits. Cada dirección de memoria contiene instrucciones de 16 o 32 bits. El
espacio de memoria en la flash está dividido en dos secciones, la sección Baja
del programa y la sección de aplicación de programa.
Ambas secciones están dedicadas para bloqueo de escritura y protección de
lectura/escritura.
La instrucción SMP que se escribe en la Sección de la memoria Flash debe
residir en la sección Baja del programa.
Durante los llamados de interrupción y subrutinas, la dirección de regreso del
Contador de Programa (CP) es almacenado en la pila (stack).