El diseño del ARM comenzó
en 1983 como un proyecto de desarrollo en la empresa
Acorn Computers Ltd, cuya meta era, originalmente,
el desarrollo de un procesador avanzado, pero con
una arquitectura similar a la del MOS 6502. La primera
versión utilizada comercialmente se bautizó
como “ARM2” y se lanzó en el
año 1986.
La arquitectura del ARM2 posee un bus de datos de
32 bits y ofrece un espacio de direcciones de 26
bits, junto con 16 registros de 32 bits. Uno de
estos registros se utiliza como contador de programa,
aprovechándose sus 4 bits superiores y los
2 inferiores para contener los flags de estado del
procesador.
El ARM2 es probablemente el procesador de 32 bits
más simple del mundo, ya que posee sólo
30.000 transistores. Su simplicidad se debe a que
no está basado en microcódigo (sistema
que suele ocupar en torno a la cuarta parte de la
cantidad total de transistores usados en un procesador)
y a que, como era común en aquella época,
no incluye caché. Gracias a ello, su consumo
en energía es bastante bajo, a la vez que
ofrece un mejor rendimiento que un procesador del
tipo “286”. Su sucesores, ya incluyen
memoria caché, lo que mejora los accesos
a memoria repetitivos, pero a expensas de hacer
un poco más complejo el núcleo del
procesador.
El éxito de estos primeros dispositivos
“ARMs” dio paso a creación
de la compañía Avanced
Risc Machines
que sería la encargada del diseño
y gestión de las nuevas generaciones de procesadores
ARM.
El núcleo mantuvo su simplicidad a pesar
de los cambios, en efecto, el ARM2 tiene 30.000
transistores, mientras que el ARM6 sólo cuenta
con 35.000. La idea era que el usuario final combinara
el núcleo del ARM con un número opcional
de periféricos integrados y otros elementos,
pudiendo crear un procesador completo a la medida
de sus necesidades.
De esta forma se abrió paso al otorgamiento
de licencias a otros fabricantes de microcontroladores
como Freescale, STMicroelectronics, y Atmel
entre otros tantos.
El diseño del ARM se ha convertido en uno
de los más usados del mundo, desde discos
duros hasta juguetes. Hoy en día, cerca del
75% de los procesadores de 32 bits poseen este chip
en su núcleo.
Mirando un poco más adentro...
El juego de instrucciones del ARM es similar
al del MOS 6502, pero incluye características
adicionales que le permiten conseguir un mejor rendimiento
en su ejecución. Para mantener el concepto
tradicional de RISC, se incluyó
el comando de ejecución en un tiempo bastante
bueno, siendo por lo general, en un ciclo. La característica
más interesante es el uso de los 4 bits como
código condicional en la parte superior de
cada instrucción, haciendo que cada instrucción
pueda ser una condición.
Este corte permite aumentar el espacio para algunos
desplazamientos en el acceso a la memoria, pero
también permite evitar caer en ciclos fuera
de control cuando la aplicación sea para
pequeñas instrucciones condicionadas.
Otra característica única del juego
de instrucciones es la posibilidad de añadir
shifts y rotar en el procesamiento de datos (aritmético,
lógico y movimiento de registros), por ejemplo,
la instrucción en C "a += (j <<
2);" puede ser mejorada como una instrucción
simple en el ARM, permitiendo la reubicación
del registro.
Todo esto ocasiona que se necesiten menos operaciones
de carga y almacenamiento, mejorando el rendimiento.
El procesador ARM también tiene algunas características
que son raras en otras arquitecturas también
consideradas RISC, como el direccionamiento relativo,
y el pre y post incremento en el modo de direccionamiento.
Tiene dos modos de funcionamiento: el ARMI con instrucciones
que ocupan 4 bytes, más rápidas y
potentes (hay instrucciones que sólo están
en este modo) pero con mayor consumo de memoria
y de energía, y el modo THUMB, más
limitado, con instrucciones que ocupan 2 bytes y
con menor consumo de corriente.
Con el modo Thumb, se pretende
disminuir la cantidad de código escrito,
así como mejorar la densidad del código,
el rendimiento puede ser superior a un código
de 32 bits en donde el puerto de memoria o ancho
del bus de comunicaciones sean menores a 32 bits.
Por lo general en aplicaciones inserta un pequeño
rango de direcciones de memoria con un datapath
de 32 bits, y el resto son 16 bits en modo wide
o narrower.
Veamos que dispone cada fabricante...
STMicroelectronics
La familia STR750F es
una opción muy interesante que dispone ST
Microelectronics basada en el core ARM7
de 32 bits “ARM7TDMI”
que constituye un estándar en el mundo ARM.
Combina en un solo dispositivo gran cantidad de
memoria, un set de periféricos muy completo
y muy bajo consumo.
Ofrece una muy buena perfomance de 54 MIPS
a 60 Mhz de Bus, con un consumo de solo
10 uA en el modo “StandBy” y puede operar
tanto en 3,3V como en 5V.
Características destacadas:
• Reloj de Backup en caso de falla
del reloj a cristal principal.
• Rápida capacidad de arranque desde
los modos de Reset y bajo consumo.
(tan solo 55 uS en ejecutar la primera instrucción).
• En los modos de bajo consumo, se puede activar
la función AWU (Auto Wake up)
Que permite despertar al MCU sin necesidad de señales
externas o cristal.
• Timers de 16 bits flexibles y PWM Timer
con clock rápido y capacidad de sincronización.
• 3 módulos UART con soporte para protocolos
LIN.
• Interface SMI (Serial Memory Interface)
para sencilla conexión con memorias
FLASH SPI externas para almacenamiento de datos.

Atmel
En el caso de Atmel, la familia AT91SAM7xx
constituye la mejor opción para nuestro mercado,
basada también en el popular core “ARM7TDMI”,
esta familia ofrece una gama muy amplia en capacidad
de memoria FLASH, SRAM y cantidad de pines de encapsulado.
También ofrece un muy bajo consumo en relación
a la velocidad de procesamiento y la incorporación
de un módulo interno de Emulación
en Tiempo Real denominado “EmbeddedICE™
In-circuit Emulation” , que permite contar
con herramientas muy poderosas.


Freescale
La línea “i.MX” de freescale
está basada en el core ARM9 y sus versiones
y está orientada a las aplicaciones de muy
altas prestaciones, tanto en la capacidad de procesamiento
como en el manejo de la capacidad gráfica
del producto. Se incorporan controladores de LCD
y otros módulos multimedia que hacen muy
completo el manejo de entornos gráficos.
Con encapsulados típicos BGA (Ball Grid Array)
de alta densidad de conexiones, dispone de una gran
cantidad de líneas de I/O y de conexiones
con sus distintos periféricos con el mundo
exterior.

Las sub familias que integran el mundo “i.MX”
son las siguientes:
• i.MX1
• i.MX21 / i.MX21S.
• i.MX27
• i.MX31.
• i.MXL.
• i.MXS.
|