Arquitectura ARM

De El Museo de los 8 Bits
(Redirigido desde «ARM»)
Ir a la navegación Ir a la búsqueda

Se denomina ARM a una familia de microprocesadores RISC diseñados por la empresa Acorn Computers y desarrollados por Advanced RISC Machines Ltd., una empresa derivada de la anterior.

Procesador ARM en una impresora HP

Historia

Microprocesador ARM fabricado por Conexant en un router

El diseño del ARM comenzó en 1983 como un proyecto de desarrollo en la empresa Acorn Computers Ltd. Roger Wilson y Steve Furber lideraban el equipo, cuya meta era, originalmente, el desarrollo de un procesador avanzado, pero con una arquitectura similar a la del MOS 6502. La razón era que Acorn tenía una larga línea de ordenadores personales basados en dicho micro, por lo que tenía sentido desarrollar uno con el que los desarrolladores se sintieran cómodos.

El equipo terminó el diseño preliminar y los primeros prototipos del procesador en el año 1985, al que llamaron ARM1. 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 útil 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 esto, su consumo en energía es bastante bajo, a la vez que ofrece un mejor rendimiento que un 286. Su sucesor, el ARM3, incluye una pequeña memoria caché de 4 KB, lo que mejora los accesos a memoria repetitivos.

A finales de los años 80, Apple Computer comenzó a trabajar con Acorn en nuevas versiones del núcleo ARM. En Acorn se dieron cuenta de que el hecho de que el fabricante de un procesador fuese también un fabricante de ordenadores podría echar para atrás a la competencia, por lo que se decidió crear una nueva compañía llamada Advanced RISC Machines, que sería la encargada del diseño y gestión de las nuevas generaciones de procesadores ARM. Ocurría esto en el año 1990.

Este trabajo derivó en el ARM6, presentado en 1991. Apple utilizó el ARM 610 (basado en el ARM6), como procesador básico para su innovador PDA, el Apple Newton. Por su parte, Acorn lo utilizó en 1994 como procesador principal en su RiscPC.

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.

La mayor utilización de la tecnología ARM se alcanzó con el procesador ARM7TDMI, con millones de unidades en teléfonos móviles y sistemas de videojuegos portátiles.

DEC licenció el diseño, lo cual generó algo de confusión debido a que ya producía el DEC Alpha, y creó el StrongARM. Con una velocidad de reloj de 233 MHz, este procesador consumía solo 1 W de potencia (este consumo de energía se ha reducido en versiones más recientes). Esta tecnología pasó posteriormente a manos de Intel, como fruto de un acuerdo jurídico, que la integró en su línea de procesadores Intel i960 e hizo más árdua la competencia.

Freescale (una empresa que derivó de Motorola en el año 2004), IBM, Infineon Technologies, OKI, Texas Instruments, Nintendo, Philips, VLSI, Atmel, Sharp, Samsung y STMicroelectronics también licenciaron el diseño básico del ARM.

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.

Los núcleos

Familia Núcleo Característica Cache (I/D)/MMU MIPS @ MHz Uso
ARM7TDMI ARM7TDMI(-S) segmentación de 3 etapas ninguna 15 MIPS @ 16,8 MHz GBA
ARM710T MMU
ARM720T 8KB unificados, MMU
ARM740T MPU
ARM7EJ-S Jazelle DBX sin
ARM9TDMI ARM9TDMI segmentación de 5 etapas sin
ARM920T 16KB/16KB, MMU 200 MIPS @ 180 MHz GPX2
ARM922T 8KB/8KB, MMU
ARM940T MPU
ARM9E ARM946E-S variable, memorias altamente acopladas, MPU Nintendo DS
ARM966E-S sin cache, TCMs
ARM968E-S sin cache, TCMs
ARM926EJ-S Jazelle DBX variable, TCMs, MMU
ARM10E ARM1020E (VFP) 32KB/32KB, MMU
ARM1022E (VFP) 16KB/16KB, MMU
ARM1026EJ-S Jazelle DBX variable, MMU or MPU
ARM11 ARM1136J(F)-S SIMD, Jazelle DBX, (VFP) variable, MMU
ARM1156T2(F)-S SIMD, Thumb-2, (VFP) variable, MPU
ARM1176JZ(F)-S SIMD, Jazelle DBX, (VFP) variable, MMU+TrustZone iPhone
ARM11 MPCore 1-4 núcleos SMP, SIMD, Jazelle DBX, (VFP) variable, MMU
Cortex Cortex-M3 Microcontroller profile sin cache, (MPU)
Cortex-A8 NEON, Jazelle RCT, Thumb-2 variable (L1+L2), MMU+TrustZone hasta 2000 (2.0 DMIPS/MHz velocidades desde 600MHz hasta más de 1GHz) Pandora (consola)
Cortex-A9 Núcleos múltiples o simples, hasta 4 nucleos. NEON, Thumb®-2, TrustZone, Jazelle, CoreSight L2 hasta 2MB Más de 8000 Dhrystone MIPS agregados a 1GHz Versiones futuras de Symbian
XScale 80200/IOP310/IOP315 Procesador de entrada/salida
80219
IOP321
IOP33x
PXA210/PXA250 Procesador de aplicaciones
PXA255
PXA26x
PXA27x 800 MIPS @ 624 MHz
PXA800(E)F
Monahans 1000 MIPS @ 1,25 GHz
IXC1100 Procesador de control de plano
IXP2400/IXP2800
IXP2850
IXP2325/IXP2350
IXP42x
IXP460/IXP465

Diseño

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. El ejemplo estándar es el Máximo común divisor, según el algoritmo de Euclides.

Ejemplo en C

int gcd(int i, int j) 
{
   while (i != j) 
      if (i > j) 
          i -= j;
      else 
          j -= i;
   return i;
} 

Expresado en código ensamblador ARM, el ciclo, con una pequeña rotación, permite ver algo similar a esto

       b test
loop   subgt  Ri, Ri, Rj
       suble  Rj, Rj, Ri
test   cmp    Ri, Rj
       bne    loop

el cual permite rotar en torno a la condición.

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 electricidad. Y el modo THUMB, más limitado, con instrucciones que ocupan 2 bytes y con menor consumo de corriente

Tecnologías

Thumb

Quizás en parte por el uso condicional de usar 4 bytes por cada instrucción, los procesadores más recientes traen una instrucción de 16 bits, llamada Thumb. Este 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 son menores a 32 bits. Por lo general en aplicaciones inserta un pequeño rango de direcciones de memoria con un datapath de 32 bits (por ejemplo: Game Boy Advance), y el resto son 16 bits en modo wide o narrower.

El primer procesador con la tecnología Thumb fue el ARM7TDMI. Toda la familia posterior al ARM9, incluyendo el procesador Intel XScale, tienen incorporada la tecnología en su núcleo.

Jazelle

ARM tiene implementada una tecnología que permite que ciertos tipos de arquitecturas ejecuten Java bytecode nativamente en el hardware. El primer procesador en usar Jazelle fue el ARM926EJ-S, siendo denominados con una J a todos los procesadores que soportaran esta tecnología.

Véase también

Atribución

Este artículo proviene originalmente de Wikipedia
que lo licencia simultáneamente bajo las licencias

Creative Commons Reconocimiento - CompartirIgual 3.0
y la licencia de documentación libre GNU v.1.2 y posteriores
El Museo de los 8 Bits lo integra en su wiki bajo cc-by-sa-3.0

Creative Commons License
GNU head