Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ARM Holdings
ARM es una arquitectura RISC (Reduced Instruction Set Computer=Ordenador con Conjunto
Reducido de Instrucciones) de 32 bits y, con la llegada de su versión V8-A, también de 64 Bits,
desarrollada por ARM Holdings. Se llamó Advanced RISC Machine, y anteriormente Acorn RISC
Machine. La arquitectura ARM es el conjunto de instrucciones de 32 y 64 bits más ampliamente
utilizado en unidades producidas.12 Concebida originalmente por Acorn Computers para su uso en
ordenadores personales, los primeros productos basados en ARM eran los Acorn Archimedes,
lanzados en 1987.
Un enfoque de diseño basado en RISC permite que los procesadores ARM requieran una cantidad
menor de transistores que los procesadores x86 CISC, típicos en la mayoría de ordenadores
personales. Este enfoque de diseño nos lleva, por tanto, a una reducción de los costes, calor y
energía. Estas características son deseables para dispositivos que funcionan con baterías, como los
teléfonos móviles, tabletas, etc.
La relativa simplicidad de los procesadores ARM los hace ideales para aplicaciones de baja
potencia. Como resultado, se han convertido en los dominantes dentro del mercado de la
electrónica móvil e integrada, encarnados en microprocesadores y microcontroladores pequeños,
de bajo consumo y relativamente bajo costo. En 2005, alrededor del 98% de los más de mil
millones de teléfonos móviles vendidos utilizaban al menos un procesador ARM.3 Desde 2009, los
procesadores ARM son aproximadamente el 90% de todos los procesadores RISC de 32 bits
integrados. Cabe hacer mención que no existe una tabla de equivalencias de rendimiento entre las
distintas tecnologías de procesadores4 que se utilizan generalmente en la electrónica de consumo,
incluyendo PDA, tabletas, teléfonos móviles, teléfonos inteligentes, relojes inteligentes,
videoconsolas portátiles, calculadoras, reproductores digitales multimedia (fotos, vídeos, etc.) y
periféricos de ordenador como discos duros y enrutadores.
La arquitectura ARM es licenciable. Esto significa que el negocio principal de ARM Holdings es la
venta de núcleos IP (propiedad intelectual), estas licencias se utilizan para crear
microcontroladores y CPUs basados en este núcleo. Las empresas que son titulares de licencias
ARM actuales o anteriores incluyen a Alcatel-Lucent, Apple Inc., AppliedMicro, Atmel, Broadcom,
Cirrus Logic, Digital Equipment Corporation, Ember, Energy Micro, Freescale, Intel (a través de
DEC), LG, Marvell Technology Group, Microsemi, Microsoft, NEC, Nintendo, Nokia, Nuvoton,
Nvidia, Sony, MediaTek, NXP (antes Philips Semiconductors), Oki, ON Semiconductor, Psion,
Qualcomm, Samsung, Sharp, STMicroelectronics, Symbios Logic, Texas Instruments, VLSI
Technology, Yamaha, y ZiiLABS.
Los procesadores ARM son desarrollados por ARM y los titulares de las licencias de ARM.
Prominentes familias de procesadores ARM desarrollados por ARM Holdings incluyen el ARM7,V8-
A ARM9, ARM11 y Cortex. Entre los procesadores ARM desarrollados por firmas licenciatarias se
incluyen Applied Micro Circuits Corporation X-Gene, DEC StrongARM, Freescale i.MX, Marvell
Technology Group XScale, NVIDIA Tegra, Qualcomm Snapdragon, Texas Instruments OMAP,
Samsung Exynos, Apple Ax, ST-Ericsson NovaThor, Huawei K3V2 e Intel Medfield.
Índice
1 Historia
2 Familias
3 Diseño
4 Tecnologías
4.1 Thumb
4.2 Jazelle
5 Sistemas operativos
5.3 UNIX
5.4.1 Linux
5.4.2 BSD
5.5 Windows
6 Véase también
7 Referencias
8 Enlaces externos
Historia
Microprocesador ARM en un router
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 1980, 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 los clientes, 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 ardua 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.
Familias
ARM2 ARMv2 (obsoleto) ARM2 Añadida instrucción MUL (multiplicar) Nulo 4 MIPS @ 8
MHz
ARM3 ARMv2a (obsoleto) ARM2a Primera integración de una memoria caché en un ARM. 4K
unificados 12 MIPS @ 25 MHz
ARM6 ARMv3 (obsoleto) ARM60 Soporte de dirección de memoria de 32 bits (frente a los
26 bits) Nulo 10 MIPS @ 12 MHz 3DO Interactive Multiplayer, Zarlink GPS Receiver
ARM600 Como ARM60, caché y un bus cooprocesador (para la unidad de coma flotante
FPA10). 4K unificados 28 MIPS @ 33 MHz
ARM610 Como ARM60, caché, sin bus coprocesador. 4K unificados 17 MIPS @ 20 MHz
63 DMIPS @ 70 MHz Game Boy Advance, Nintendo DS, Apple iPod, Lego NXT, Atmel AT91SAM7,
Juice Box, NXP Semiconductors LPC2000 and LH754xx, Actel's CoreMP7
1.0 DMIPS/MHz Apple Newton serie 2x00, Acorn Risc PC, Rebel/Corel Netwinder, Chalice
CATS
SA-1100 SA-110, SoC integrado 16 KB/8 KB, MMU 203 MHz Psion netBook
SA-1110 SA-110, SoC integrado 16 KB/8 KB, MMU 206 MHz LART (computer),
Intel Assabet, Ipaq H36x0, Balloon2, Zaurus SL-5x00, HP Jornada 7xx, Jornada 560 series, Palm Zire
31
ARM8 ARMv4 ARM8105 Segmentación de 5 fases, predilección de salto estático, memoria
de doble ancho de banda 8 KB unificados, MMU 84 MIPS @ 72 MHz
ARM920T ARM9TDMI, caché 16 KB/16 KB, MMU con FCSE (Fast Context Switch
Extension)6 200 MIPS @ 180 MHz Armadillo, Atmel AT91SAM9, GP32, GP2X (primer núcleo),
Tapwave Zodiac (Motorola i. MX1), Hewlett-Packard Calculadoras HP-49/50, Sun SPOT, Cirrus
Logic EP9302, EP9307, EP9312, EP9315, Samsung S3C2442 (HTC TyTN, FIC Neo FreeRunner7),
Samsung S3C2410 (Dispositivos de navegación TomTom)8
ARMv5TE ARM996HS Procesador sin reloj, como ARM966E-S sin cachés, TCMs, MPU
IOP33x
IOP34x 1–2 núcleos, Acelerador de RAID 32K/32K L1, 512K L2, MMU
PXA255 32KB/32KB, MMU 400 BogoMips @ 400 MHz; 371–533 MIPS @ 400 MHz14
Gumstix basix & connex, Palm Tungsten E2, Zaurus SL-C860, Mentor Ranger & Stryder,
iRex ILiad
PXA27x Procesador de Aplicaciones 32 KB/32 KB, MMU 800 MIPS @ 624 MHz Gumstix
verdex,"Trizeps-Modules" PXA270 COM, HTC Universal, HP hx4700, Zaurus SL-C1000, 3000, 3100,
3200, Dell Axim x30, x50, and x51 series, Motorola Q, Balloon3, Trolltech Greenphone, Palm
TX(312MHz), Motorola Ezx Platform A728, A780, A910, A1200, E680, E680i, E680g, E690, E895,
Rokr E2, Rokr E6, Fujitsu Palm Zire 72 (PXA270), Siemens LOOX N560, Toshiba Portégé G500, Trēo
650-755p, Zipit Z2, HP iPaq 614c Business Navigator.
PXA800(E)F
PXA3XX (nombre en clave "Monahans") 32KB/32KB L1, TCM, MMU 1000 MIPS
@ 1.25 GHz Samsung Omnia
IXP2400/IXP2800
IXP2850
IXP2325/IXP2350
Cortex ARMv7-A Cortex-A5 VFP, NEON, Jazelle RCT and DBX, Thumb-2, Segmentación
de 8 fases, 1–4 núcleos SMP variable (L1), MMU+TrustZone Más de 1500 (1.5 DMIPS/MHz)
"Sparrow" (nombre en clave)202122
Qualcomm Scorpion GPU Adreno 200, VFPv3, NEON, Jazelle RCT, Thumb-2, Segmentación
Superscalar de 13 etapas, variable (L1+L2), MMU+TrustZone Más de 2000 (2.0
DMIPS/MHz de reloj desde 1 GHz hasta más de 1,5 GHz dual core) Toshiba TG01, HTC Desire,
Google Nexus One, HTC EVO 4G, HTC Incredible, HTC Scorpion, HTC HD2, HTC HD7 Sony Ericsson
Xperia ARC/ARC S
Cortex-A9 Perfil de aplicaciones, (VFP), (NEON), Jazelle RCT y DBX, Thumb-2, Out-of-order
speculative issue superscalar MMU+TrustZone 2.5 DMIPS/MHz Acer Iconia A200,
Galaxy Nexus, Motorola RAZR
Cortex-A9 MPCore Cortex-A9, 1–4 núcleos SMP MMU+TrustZone 10,000 DMIPS @ 2
GHz optimizados en TSMC 40G (Doble núcleo) (2.5 DMIPS/MHz por núcleo) Texas Instruments
OMAP4430/4440, ST-Ericsson U8500, Nvidia Tegra2, Qualcomm Snapdragon 8X72 PlayStation
Vita, Samsung Galaxy S II (Exynos 4210), Samsung Galaxy S III (Exynos 4212)
34
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 estableció la ejecución de una orden en un tiempo, por lo general,
de un ciclo. La característica más interesante es el uso de los 4 bits superiores como código de
condición, haciendo que cualquier instrucción pueda ser condicional. Este corte reduce el espacio
para algunos desplazamientos en el acceso a la memoria, pero permite evitar perder ciclos de reloj
en el pipeline al ejecutar pequeños trozos de código con ejecución condicional. El ejemplo típico es
el Máximo común divisor, según el algoritmo de Euclides.
Ejemplo en C:
while (i != j) // Ingresa en el ciclo cuando i<j o i>j, no cuando i==j
i -= j;
j -= i;
En cambio con código ensamblador ARM, el ciclo puede hacerse más eficiente haciendo:
loop:
// Compara i y j
GT = i > j;
LT = i < j;
NE = i != j;
if(NE) goto loop; // Ciclo *solo* si los valores comparados no son iguales
; o "LT" si (i < j)
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
Los procesadores más recientes traen un conjunto de instrucciones adicional llamado Thumb, de
16 bits (2 bytes) de longitud por instrucción, en lugar de 32 bits (4 bytes) como el juego estándar
de ARM. Thumb es un subconjunto formado por las instrucciones que se usan con más frecuencia.
Al tener la mitad de longitud, se consigue disminuir la cantidad de código y mejorar su densidad. 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 las aplicaciones se 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.
Sistemas operativos
Captura de pantalla de Android, un popular sistema operativo basado en el kernel Linux que opera
principalmente sobre la arquitectura ARM.
Android, un popular sistema operativo basado en el kernel Linux3536 que opera principalmente
sobre la arquitectura ARM.
Acorn systems
El primer ordenador personal basado en ARM es el Acorn Archimedes que ejecutaba un sistema
operativo provisional llamado Arthur, que se convirtió en RISC OS, utilizado en posteriores
modelos de Acorn y otros vendedores.
La arquitectura ARM está soportada por un gran número de sistemas operativos integrados y de
tiempo real, incluyendo Windows CE, Windows 8 RT, .NET Micro Framework, Symbian,
ChibiOS/RT, FreeRTOS, eCos, Integrity, Nucleus PLUS, MicroC/OS-II, QNX, RTEMS, BRTOS, RTXC
Quadros, ThreadX, Unison Operating System, uTasker, VxWorks, MQX y OSE.37
UNIX
Los sistemas que acreditan la especificación estándar UNIX y que soportan la arquitectura ARM
son:
Solaris
Apple macOS
Tipo UNIX
BSD
Linux
Apple iOS
Linux
Android39
Ångström41
CRUX ARM42
BackTrack
Chrome OS43
DSlinux
Debian44
ELinOS45
Fedora46
Gentoo47
GoboLinux48
iPodLinux
Kali Linux
Maemo
MeeGo
Mer49
MontaVista50
Slackware51
T2 SDE52
TimeSys53
Ubuntu5455
Void Linux
webOS
IPFire57
PicUntu58
BSD
Los siguientes sistemas BSD soportan los procesadores ARM:
FreeBSD59
NetBSD60
OpenBSD61
Windows
Microsoft anunció el 5 de enero de 2011 que la próxima gran versión de la familia Windows NT
(hoy Windows 8)62 incluye soporte para procesadores ARM. Microsoft mostró una versión
preliminar de Windows (versión 6.2.7867) que se ejecuta en un equipo basado en ARM en el
Consumer Electronics Show 2011.63 La arquitectura ARM también es soportada por los sistemas
operativos móviles de Microsoft, Windows Phone y Windows Mobile. ARM también es compatible
con Windows Embedded CE que ahora se llama Windows Embedded Compact. Esta última versión
soporta ARM 5,6 y 7. Windows CE 5 es el sistema operativo subyacente para Windows Mobile y
Windows Embedded Compact 7 es el sistema operativo subyacente para Windows Phone 7. El
pequeño Microsoft OS.NET Microframework utiliza exclusivamente ARM.