BRAZO (arquitectura)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 10 de febrero de 2020; las comprobaciones requieren 77 ediciones .
BRAZO

logotipo de A.R.M.
Desarrollador BRAZO limitado
Profundidad de bits ARMv7 64/32 bits, hasta ARMv8 solo 64 bits
presentado 1985
Arquitectura RISC
Tipo de registro-registro
codificación SK ARMv8: fijo (64 bits), excepto en el modo de compatibilidad de código ARMv7
ARMv7/6: mixto (32 y 16 bits alineados)
ARMv3/2: fijo (32 bits)
Implementación de Transición por banderas de condición
Orden de bytes Conmutable (big-endian), generalmente de bajo a alto (little-endian)
Extensiones NEON, Thumb-2 (obligatorio desde ARMv7), Jazelle, VFPv4-D16, VFPv4 (todos obligatorios en ARMv8)
En microcontroladores: FPv4-SP
 Archivos multimedia en Wikimedia Commons

Arquitectura ARM (del inglés  Advanced RISC Machine  - una máquina RISC avanzada; a veces - Acorn RISC Machine ) - un sistema de comandos y una familia de descripciones y topologías listas para usar de núcleos de microprocesador / microcontrolador de 32 y 64 bits desarrollados por BRAZO limitado [1] .

Entre los licenciatarios de topologías de núcleo ARM listas para usar se encuentran AMD , Apple , Analog Devices , Atmel , Xilinx , Cirrus Logic , Intel (hasta el 27 de junio de 2006), Marvell , NXP , STMicroelectronics , Samsung , LG , MediaTek , Qualcomm , Sony , Texas Instruments , Nvidia , Freescale , Milandr , ELVIS [2] , HiSilicon , Baikal Electronics .

Familias de procesadores importantes: ARM7 , ARM9 , ARM11 y Cortex [3] [4] .

Muchos licenciatarios diseñan sus propias topologías centrales basadas en el conjunto de instrucciones ARM: DEC StrongARM , Freescale i.MX, Intel XScale , NVIDIA Tegra , ST-Ericsson Nomadik , Krait y Kryo en Qualcomm Snapdragon , Texas Instruments OMAP , Samsung Hummingbird , LG H13 , Apple A6 y HiSilicon K3 .

Popularidad

En 2006, alrededor del 98% de los más de mil millones de teléfonos móviles vendidos anualmente estaban equipados con al menos un procesador ARM [5] . A partir de 2009, los procesadores ARM representaron hasta el 90 % de todos los procesadores integrados de 32 bits [6] . Los procesadores ARM se utilizan ampliamente en productos electrónicos de consumo, incluidos teléfonos inteligentes, teléfonos móviles y reproductores, consolas de juegos portátiles, calculadoras, relojes inteligentes y periféricos informáticos, como discos duros o enrutadores.

Estos procesadores tienen un bajo consumo de energía, por lo que son muy utilizados en sistemas embebidos y dominan el mercado de dispositivos móviles, para lo cual este factor es crítico.

Historia

Después de lograr cierto éxito con la computadora BBC Micro , la compañía británica Acorn Computers pensó en pasar de los procesadores MOS Technology 6502 relativamente débiles a soluciones más potentes e ingresar al mercado de computadoras comerciales con la misma plataforma BBC Micro . Los procesadores como el Motorola 68000 y el 32016 de National Semiconductor no eran adecuados para esto, y el 6502 no era lo suficientemente potente para admitir una interfaz gráfica de usuario [7] .

La empresa necesitaba una arquitectura completamente nueva después de probar todos los procesadores disponibles y encontrarlos ineficientes. Acorn se tomó en serio el desarrollo de su propio procesador, y sus ingenieros comenzaron a estudiar la documentación del proyecto RISC , desarrollado en la Universidad de California en Berkeley . Pensaron que dado que un grupo de estudiantes logró crear un procesador completamente competitivo, entonces sus ingenieros no serían difíciles. Un viaje al Western Design Center (Arizona) demostró a los ingenieros Steve Ferber y Sophie Wilson (entonces conocido como Roger [8] ) que no necesitarían recursos increíbles para llevar a cabo este plan.

Wilson se dedicó a desarrollar el conjunto de instrucciones construyendo una simulación del nuevo procesador en una computadora BBC Micro. Su éxito en esto convenció a los ingenieros de Acorn de que estaban en el camino correcto. Pero antes de que pudieran ir más lejos, necesitaban más recursos, por lo que era hora de que Wilson fuera con el director ejecutivo de Acorn, Herman Hauser , y le explicara lo que estaba pasando. Después de que dio el visto bueno, se reunió un pequeño equipo para implementar el modelo de Wilson en hardware.

Máquina Acorn RISC: ARM2

El proyecto oficial de la máquina Acorn RISC comenzó en octubre de 1983. VLSI Technology silicio, ya que ya había suministrado a Acorn chips ROM y algunos circuitos integrados personalizados El desarrollo estuvo a cargo de Wilson y Ferber . Su objetivo principal era lograr el manejo de interrupciones de baja latencia del MOS Technology 6502. La arquitectura de acceso a la memoria tomada del 6502 permitió a los desarrolladores lograr un buen rendimiento sin la costosa implementación del módulo DMA . El primer procesador fue producido por VLSI el 26 de abril de 1985, fue entonces cuando comenzó a funcionar y se llamó ARM1. Los primeros procesadores producidos en masa, llamados ARM2, estuvieron disponibles al año siguiente.

Su primer uso fue como segundo procesador en BBC Micro , donde se utilizó en el desarrollo de software de simulación, que completaba los chips de soporte de la computadora, además de acelerar el software CAD utilizado en el desarrollo de ARM2. Wilson optimizó el conjunto de instrucciones ARM para ejecutar BBC BASIC . El objetivo original de una computadora totalmente ARM se logró en 1987 con el lanzamiento de Acorn Archimedes.

El ambiente en torno al proyecto ARM era tan reservado que cuando Olivetti estaba negociando para comprar una participación mayoritaria en Acorn en 1985, no hablaron sobre el desarrollo del proyecto hasta el final de las negociaciones. En 1992, Acorn volvió a ganar el Queen's Award for Enterprise por ARM.

ARM2 tenía un bus de datos de 32 bits, un espacio de direcciones de 26 bits y 16 registros de 32 bits. El código del programa tenía que estar en los primeros 64 megabytes de memoria y el contador del programa estaba limitado a 26 bits, ya que los 4 bits superiores y los 2 inferiores de un registro de 32 bits servían como banderas. ARM2 se ha convertido quizás en el más simple de los procesadores de 32 bits más populares del mundo, con solo 30 mil transistores (en comparación, el procesador Motorola 68000 , fabricado 6 años antes, tenía 68 mil transistores). Gran parte de esta sencillez se debe a la falta de microcódigo (que en el 68000 ocupa entre un cuarto y un tercio del área del troquel) y la falta de caché , como ocurría con muchos procesadores de la época. Esta simplicidad condujo a bajos costos de energía, mientras que ARM fue mucho más productivo que el Intel 80286 . Su sucesor, el procesador ARM3, ya contaba con una caché de 4 KB, lo que aumentaba aún más el rendimiento.

Apple, DEC, Intel: ARM6, StrongARM, XScale

A fines de la década de 1980, Apple Computer y VLSI Technology comenzaron a trabajar con Acorn Computers en nuevas versiones del núcleo ARM. El trabajo era tan importante que Acorn convirtió el equipo de desarrollo en 1990 en una nueva empresa llamada Advanced RISC Machines . Por esta razón, ARM a veces se abrevia como Advanced RISC Machines en lugar de Acorn RISC Machine . Advanced RISC Machines se convirtió en ARM cuando su empresa matriz ARM Holdings cotizó en la Bolsa de Valores de Londres y NASDAQ en 1998.

El nuevo trabajo de Apple-ARM finalmente se convirtió en ARM6, lanzado por primera vez en 1992. Apple usó el procesador ARM610 basado en ARM6 como base para su producto Apple Newton PDA. En 1994, Acorn comenzó a utilizar el ARM610 como procesador principal en sus computadoras PC RISC . DEC también compró una licencia para la arquitectura ARM6 (causando un poco de confusión ya que también fabricaban procesadores Alpha ) y comenzó a fabricar StrongARM. A 233 MHz, este procesador requería solo 1 vatio de potencia (las versiones posteriores requerían mucho menos). Intel obtuvo posteriormente los derechos de esta obra como resultado de una demanda. Intel aprovechó la oportunidad para complementar su línea heredada I960 con el procesador StrongARM y luego desarrolló su versión del núcleo bajo la marca XScale , que posteriormente vendió a Marvell .

El núcleo ARM mantuvo el mismo tamaño después de todos estos cambios. ARM2 tenía 30.000 transistores.

Impacto de la tecnología ARM en el mercado

Básicamente, los procesadores de la familia han conquistado el segmento de productos móviles masivos (celulares, PDA) y sistemas embebidos de mediano y alto rendimiento (desde enrutadores de red y puntos de acceso hasta televisores). Algunas empresas anuncian el desarrollo de servidores eficientes basados ​​en clusters de procesadores ARM [10] , pero hasta el momento estos son solo proyectos experimentales con una arquitectura de 32 bits [11] .

El anterior líder de la lista, la supercomputadora Summit (OLCF-4) , desarrollada conjuntamente por IBM (nodos de servidor), Mellanox (interconexión) y Nvidia (aceleradores de gráficos), e instalada en el Laboratorio Nacional de Oak Ridge  , pasó a ser la segunda, perdiendo el honorable primer lugar para el nuevo sistema superior japonés Fugaku ( rus. Fugaku ), que mostró un resultado de alto rendimiento / altamente paralelo Linpack (HPL) de 415,5 petaflops. Este indicador supera las capacidades de Summit en 2,8 veces. Fugaku funciona con el SoC A64FX de 48 núcleos de Fujitsu, lo que lo convierte en el primer sistema número 1 en la lista TOP500 que cuenta con procesadores ARM. Con precisión simple o menor, que a menudo se usa para tareas de aprendizaje automático e inteligencia artificial, Fugaku alcanza un máximo de más de 1000 petaflops (1 exaflops). El nuevo sistema está instalado en el Centro de Ciencias Computacionales RIKEN (R-CCS) en Kobe, Japón.

Procesadores ARM

Varias familias de procesadores ARM son actualmente significativas:

En 2010, el fabricante anunció los procesadores Cortex-A15 con nombre en código Eagle, ARM afirma que el núcleo Cortex A15 es un 40 por ciento más rápido a la misma frecuencia que el núcleo Cortex-A9 con la misma cantidad de núcleos por chip [12] . El producto, fabricado con una tecnología de proceso de 28 nm, tiene 4 núcleos, puede funcionar a una frecuencia de hasta 2,5 GHz y será compatible con muchos sistemas operativos modernos [13] [14] .

La popular familia de microprocesadores xScale de Marvell (hasta el 27 de junio de 2007 - Intel [15] ) es en realidad una extensión de la arquitectura ARM9 , complementada con el conjunto de instrucciones Wireless MMX , especialmente desarrollado por Intel para admitir aplicaciones multimedia.

Versiones del kernel ARM (tabla)
familia del núcleo Versión de arquitectura Núcleo Funciones Caché (I/D)/ MMU MIPS típicos a MHz Uso
ARM1 ARMv1 (obsoleto) ARM1 No Sistema de evaluación ARM BBC Microprocesador
ARM2 ARMv2 (obsoleto) ARM2 Comando MUL agregado (multiplicar) No 4 MIPS a 8 MHz
0,33 DMIPS /MHz
Bellota Arquímedes , Máquina de ajedrez
ARMv2a (obsoleto) ARM250 Comandos integrados MEMC (MMU), GPU, SWP y SWPB (swap) agregados No, MEMC1a 7 MIPS a 12 MHz Bellota Arquímedes
ARM3 ARMv2a (obsoleto) ARM2a Caché usado por primera vez 4 KB en total 12 MIPS a 25 MHz
0,50 DMIPS/MHz
Bellota Arquímedes
BRAZO6 ARMv3 (obsoleto) ARM60 Espacio de direcciones de memoria de 32 bits (en lugar de 26 bits) introducido por primera vez No 10 MIPS a 12 MHz Multijugador interactivo 3DO , receptor GPS Zarlink
ARM600 Como ARM60, coprocesador matemático de coma flotante FPA10 4 KB en total 28 MIPS a 33 MHz
ARM610 Como ARM60, caché, sin bus de coprocesador 4 KB en total 17 MIPS a 20 MHz
0,65 DMIPS/MHz
Bellota Risc PC 600 , serie Apple Newton 100
ARM7 ARMv3 (obsoleto) ARM700 8 KB en total 40 MHz Prototipo de tarjeta de CPU Acorn Risc PC
ARM710 Me gusta ARM700 8 KB en total 40 MHz Bellota Risc PC 700
ARM710a Me gusta ARM700 8 KB en total 40 MHz 0,68 DMIPS
/MHz
Bellota Risc PC 700 , Apple eMate 300
ARM7100 Como ARM710a, SoC integrado 8 KB en total 18 MHz Serie Psion 5
ARM7500 Como ARM710a, SoC integrado. 4 KB en total 40 MHz Bellota A7000
ARM7500FE Al igual que ARM7500, "FE" agregó controladores de memoria FPA y EDO 4 KB en total
56 MHz 0,73 DMIPS/ MHz
Computadora de red Acorn A7000+
ARM7TDMI ARMv4T ARM7TDMI(-S) Transportador de 3 etapas, modo de pulgar No 15 MIPS a 16,8 MHz
63 DMIPS a 70 MHz
Game Boy Advance , Nintendo DS , Apple iPod , Lego NXT , Atmel AT91SAM 7, Juice Box , NXP Semiconductors LPC2000 y LH754xx , Actel 's CoreMP7
ARM710T Como ARM7TDMI, caché 8 KB compartidos, MMU 36 MIPS a 40 MHz Serie Psion 5mx , Psion Revo /Revo Plus/Diamond Mako
ARM720T Como ARM7TDMI, caché 8 KB compartidos , MMU con extensión de cambio de contexto rápido  60 MIPS a 59,8 MHz Mensajero inalámbrico Zipit , NXP Semiconductors LH7952x
ARM740T Como ARM7TDMI, caché MPU
ARMv5TEJ ARM7EJ-S Pipeline de 5 etapas, Thumb, Jazelle DBX, comandos DSP avanzados ninguna
Brazo fuerte ARMv4 SA-110 MMU de 16 KB/16 KB 203MHz
1.0DMIPS/MHz
Serie Apple Newton 2x00, Acorn Risc PC , Rebel/Corel Netwinder, Chalice CATS
SA-1100 Como SA-110, SoC integrado MMU de 16 KB/8 KB 203 MHz NetBook de Psion
SA-1110 Como SA-110, SoC integrado MMU de 16 KB/8 KB 206 MHz LART (computadora) , Intel Assabet, Ipaq H36x0, Balloon2 , Zaurus SL-5x00, HP Jornada 7xx, serie Jornada 560 , Palm Zire 31
ARM8 ARMv4 ARM810 [16] Pipeline de 5 etapas, predicción de rama estática, memoria de doble ancho de banda 8 KB unificados, MMU 84 MIPS a 72 MHz
1,16 DMIPS/MHz
Prototipo de tarjeta de CPU Acorn Risc PC
ARM9TDMI ARMv4T ARM9TDMI Transportador de 5 etapas, Pulgar ninguna
ARM920T Como ARM9TDMI, caché 16 KB/16 KB, MMU con FCSE (extensión de cambio de contexto rápido) [17] 200 MIPS a 180 MHz Armadillo , Atmel AT91SAM 9, GP32 , GP2X (primer núcleo), Tapwave Zodiac ( Motorola i. MX1), Calculadoras Hewlett Packard HP-49/50 , Sun SPOT , Cirrus Logic EP9302, EP9307, EP9312, EP9315, Samsung S3C2442 ( HTC TyTN , FIC Neo FreeRunner [18] ), Samsung S3C2410 ( dispositivos de navegación TomTom ) [19]
ARM922T Como ARM9TDMI, caché MMU de 8 KB/8 KB Semiconductores NXP LH7A40x
ARM940T Como ARM9TDMI, caché MPU de 4 KB/4 KB GP2X (segundo núcleo), mini reproductor Meizu M6 [20] [21]
ARM9E ARMv5TE ARM946E-S Pulgar, instrucciones DSP mejoradas, cachés memorias variables estrechamente acopladas, MPU Nintendo DS , Nokia N-Gage , Canon PowerShot A470 , Canon EOS 5D Mark II [22] , chips Conexant 802.11, Samsung S5L2010
ARM966E-S Pulgar, instrucciones DSP mejoradas sin caché, TCM STM STR91xF, incluido Ethernet [23]
ARM968E-S Como ARM966E-S sin caché, TCM Semiconductores NXP LPC2900
ARMv5TEJ ARM926EJ-S Pulgar, Jazelle DBX, instrucciones DSP mejoradas variables, TCM, MMU 220 MIPS a 200 MHz Teléfonos móviles: Sony Ericsson (series K, W); Siemens y Benq (serie x65 y posteriores); LG Arena , Galleta fresca de LG ; TI OMAP1710 ... OMAP1612 , OMAP-L137 , OMAP-L138 ; Qualcomm MSM6100…MSM6800; Freescale i.MX21 , i.MX27, Atmel AT91SAM 9, NXP Semiconductors LPC3000 , GPH Wiz, NEC C10046F5-211-PN2-A SoC: núcleo no documentado en el chip gráfico ATi Hollywood utilizado en Wii, [24] Samsung S3C2412 utilizado en Controlador de Squeezebox Duet . Squeezebox Radio ; Familia NeoMagic MiMagic MM6, MM6+, MM8, MTV; Buffalo TeraStation Live ( NAS ); Telechips TCC7801, TCC7901; Sistema ZMS-05 de ZiiLABS en un chip; Western Digital MyBook I Edición mundial
ARMv5TE BRAZO996HS Procesador sin reloj como ARM966E-S sin cachés, TCM, MPU
ARM10E ARMv5TE ARM1020E Pipeline de 6 etapas, Thumb, instrucciones DSP mejoradas, (VFP) MMU de 32 KB/32 KB
ARM1022E Me gusta ARM1020E MMU de 16 KB/16 KB
ARMv5TEJ ARM1026EJ-S Pulgar, Jazelle DBX, instrucciones DSP mejoradas, (VFP) variable, MMU o MPU Western Digital MyBook II edición mundial; SoC Conexant so4610 y so4615 ADSL
Xescala ARMv5TE 80200/IOP310/IOP315 Procesador de E/S, pulgar, instrucciones DSP mejoradas
80219 400/600 MHz Thecus N2100
  • El procesador Intel 80219 incluye un núcleo XScale de 32 bits de alta velocidad a 400 o 600 MHz con una interfaz PCI-X de 64 bits
  • El bus PCI/ PCI-X permite la conexión de controladores Gigabit Ethernet
IOP321 600 Bogo Mips a 600 MHz Ionix
PIO33x
PIO34x 1-2 núcleos, Aceleración RAID 32K/32K L1, 512K L2, MMU
PXA210/PXA250 Procesador de aplicaciones, tubería de 7 etapas PXA210: 133 y 200 MHz, PXA250: 200, 300 y 400 MHz Zaurus SL-5600, iPAQ H3900, Sony CLIÉ NX60, NX70V, NZ90
PXA255 MMU de 32 KB/32 KB 400 Bogo Mips a 400 MHz; 371-533 MIPS a 400 MHz [25] Gumstix basix & connex , Palm Tungsten E2, Zaurus SL-C860, Mentor Ranger & Stryder , iRex ILiad
PXA263 200, 300 y 400 MHz Sony CLIÉ NX73V, NX80V
PXA26x predeterminado 400 MHz, hasta 624 MHz Palma Tungsteno T3
PXA27x Procesador de aplicaciones MMU de 32 KB/32 KB 800 MIPS a 624 MHz Gumstix verdex , "Trizeps-Modules" PXA270 COM, HTC Universal, HP hx4700, Zaurus SL-C1000, 3000, 3100, 3200, Dell Axim x30, x50 y x51 series, Motorola Q, Balloon3 , Trolltech Greenphone , Palm TX , Motorola Plataforma Ezx A728, A780, A910, A1200, E680, E680i, E680g, E690, E895, Rokr E2, Rokr E6, Fujitsu Siemens LOOX N560, Toshiba Portégé G500, Toshiba Portégé G900, Treo 650-755p, Zipit Z2 6 , HP iPaq navegador de negocios
PXA800(E)F
PXA3XX (nombre en código "Monahans") PXA31x tiene un acelerador de gráficos de hardware 32 KB/32 KB L1, TCM, MMU 800 MIPS a 624 MHz alex pantalla alta
PXA900 Blackberry 8700, Blackberry Perla (8100)
IXC1100 Procesador de plano de control
IXP2400/IXP2800
IXP2850
IXP2325/IXP2350
IXP42x NSLU2 IXP460/IXP465
BRAZO11 ARMv6 BRAZO1136J(F)-S [26] Pipeline de 8 etapas, SIMD , Thumb, Jazelle DBX, (VFP), instrucciones DSP mejoradas variable, UMM 740 @ 532-665 MHz (SoC i.MX31), 400-528 MHz TI OMAP2420 ( Nokia E90 , Nokia N93 , Nokia N95 , Nokia N82 ), Zune , BUGbase [1] , Nokia N800 , Nokia N810 , Qualcomm MSM7200 (con coprocesador ARM926EJ-S integrado a 274 MHz, utilizado en Eten Glofiish , HTC TyTN II , HTC Nike ), Freescale i.MX31 (utilizado en el Zune original de 30 gb y Toshiba Gigabeat S), Freescale MXC300-30 ( Nokia E63 , Nokia E71 , Nokia E72 , Nokia 5800 , Nokia E51 , Nokia 6700 Classic , Nokia 6120 Classic , Qualcomm MSM7201A como se ve en HTC Dream , HTC Magic , Motorola ZN5 , Motorola E8 , Motorola VE66 , Nokia 6210 Navigator , Nokia 6220 Classic , Nokia 6290 , Nokia 6710 Navigator , Nokia 6720 Classic , Motorola Z6 , HTC Hero y Samsung SGH- i627 (Propel Pro) , Qualcomm MSM7227/MSM7227T, HTC Legend , HTC Wildfire S , LG P500, LG GT540, [27] [28]
ARMv6T2 ARM1156T2(F)-S Pipeline de 9 etapas, SIMD , Thumb-2, (VFP), instrucciones DSP mejoradas variable, UPM
ARMv6KZ BRAZO1176JZ(F)-S Como ARM1136EJ(F)-S variable, MMU+Zona de Confianza Apple iPhone (original y 3G) , Apple iPod touch (1ra y 2da generación) , Conexant CX2427X , Motorola RIZR Z8 , Motorola RIZR Z10 , NVIDIA GoForce 6100 [29] ; Mediatek MT6573 [30] ; Telechips TCC9101, TCC9201, TCC8900, Fujitsu MB86H60 , Samsung S3C6410 (por ejemplo , Samsung Moment ), S3C6430 [31]
ARMv6K ARM11MPCore Como ARM1136EJ(F)-S, SMP de 1-4 núcleos variable, UMM Nvidia APX 2500
familia del núcleo Versión de arquitectura Núcleo Funciones Caché (I/D)/MMU MIPS típicos a MHz Aplicaciones
Corteza ARMv7-A Corteza-A5 VFP, NEON, Jazelle RCT y DBX, Thumb-2, canalización de 8 etapas, en orden, SMP de 1 a 4 núcleos variable (L1), MMU+Zona de Confianza hasta 1500 (1,5 DMIPS/MHz) "Gorrión" (nombre en clave ARM) [32] [33] [34]
Corteza-A8 VFP, NEON, Jazelle RCT, Pulgar-2; Tubería de 13 etapas, en orden, 2 decodificadores [35] variable (L1+L2), MMU+Zona de Confianza hasta 2000 (2,0 DMIPS/MHz en velocidad de 600 MHz a más de 1 GHz) Serie TI OMAP3xxx , SBM7000, Oregon State University OSWALD , Gumstix Overo Earth , Pandora , Apple iPhone 3GS , Apple iPod touch (3.ª generación) , Apple iPad ( procesador Apple A4 ), Apple iPhone 4 ( procesador Apple A4 ), Archos 5 , Archos 101 , FreeScale i.MX51- SOC , BeagleBoard , Motorola Droid , Motorola Droid X , Palm Pre , Samsung Omnia HD , Samsung Wave S8500 , Nexus S , Sony Ericsson Satio , Touch Book , Nokia N900 , Meizu M9 , sistema ZiiLABS ZMS-08 en un chip, Boxchip A13
Corteza-A9 Perfil de aplicación, (VFP), (NEON), Jazelle RCT y DBX, Thumb-2, superescalar de emisión especulativa fuera de servicio (2 decodificadores); 9-12 [35] etapas de tubería MMU+Zona de confianza 2.5DMIPS/MHz Apple iPhone 4S , Apple iPad 2 ( Apple A5 ), MediaTek MT6575/6515M, iconBIT NetTAB SKY 3G
Cortex-A9 MPCore Como Cortex-A9, SMP de 1-4 núcleos MMU+Zona de confianza 10 000 DMIPS a 2 GHz en rendimiento optimizado TSMC 40G (¿cuatro núcleos?) (2,5 DMIPS/MHz por núcleo) PlayStation®Vita , TI OMAP4430/4440 , ST-Ericsson U8500, Nvidia Tegra2 , Samsung Exynos 4210, MediaTek MT6577/6517
Cortex-A15 MPCore SMP de 1 a 32 núcleos; Superescalar fuera de orden (3 decodificadores); más de 15 etapas de transporte [35] ; VFPv4, NEÓN [36] UMM, LPAE 3,5 DMIPS/MHz/núcleo; 1,0 GHz - 2,5 GHz (@ 28 nm [35] )
Cortex-A7 MPCore [37] FPU,NEÓN; En orden (1 decodificador); Transportador de 8 etapas. UMM, LPAE 1,9 DMIPS/MHz/CPU; 0,8-1,5 GHz (@28nm) (Broadcom, Freescale, HiSilicon, LG, Samsung, STEricsson, Texas Instruments, MediaTek)
ARMv7-R Corteza-R4(F) Perfil integrado, pulgar-2, (FPU) caché variable, MPU opcional 600 DMIPS a 475 MHz Broadcom es un usuario, TI TMS570
ARMv7-ME Cortex-M4 (nombre en código "Merlín") [38] Perfil de microcontrolador, tanto Thumb como Thumb-2, FPU. Hardware MAC, SIMD e instrucciones de división MPU opcional 1,25 DMIPS/MHz Semiconductores NXP , STM32 , TI Stellaris LM4F
ARMv7-M Corteza-M3 Perfil de microcontrolador, solo Thumb-2. instrucción de división de hardware sin caché, MPU opcional 125 DMIPS a 100 MHz TI Stellaris , STM STM32 , NXP LPC1700 , Toshiba TMPM330FDFG , Ember 's EM3xx Series, Atmel AT91SAM 3, Europe Technologies EasyBCU , Energy Micro 's EFM32 , Actel 's SmartFusion , Milandre 1986BE91T [2]
ARMv6-M Cortex-M0 (nombre en código "Swift") [39] Perfil de microcontrolador, subconjunto Thumb-2 (instrucciones Thumb de 16 bits y BL, MRS, MSR, ISB, DSB y DMB) Sin caché 0.9DMIPS/MHz NXP Semiconductors NXP LPC1100 [40] , Triad Semiconductor [41] , Melfas [42] , Chungbuk Technopark [43] , Nuvoton [44] , austriamicrosystems [45] , Milandre K1986BE2T [3]
Corteza-M1 FPGA específico, perfil de microcontrolador, subconjunto Thumb-2 (instrucciones Thumb de 16 bits y BL, MRS, MSR, ISB, DSB y DMB) Ninguno, memoria fuertemente acoplada opcional Hasta 136 DMIPS @ 170 MHz [46] (0.8 DMIPS/MHz, [47] MHz alcanzable dependiente de FPGA) Los dispositivos Actel ProASIC3, ProASIC3L, IGLOO y Fusion PSC , Altera Cyclone III , otros productos FPGA también son compatibles, por ejemplo , Synplicity

[48]

familia del núcleo Versión de arquitectura Núcleo Funciones Caché (I/D)/ MMU MIPS típicos a MHz Aplicaciones

Arquitectura

Hace tiempo que existe una guía de referencia de la arquitectura ARM que delimita todos los tipos de interfaces que admite ARM, ya que los detalles de implementación de cada tipo de procesador pueden variar. La arquitectura ha evolucionado con el tiempo y desde ARMv7 se han definido 3 perfiles:

Los perfiles pueden admitir menos comandos (comandos de cierto tipo).

Modos

El procesador puede estar en uno de los siguientes modos de funcionamiento:

El cambio del modo del procesador ocurre cuando ocurre una excepción apropiada o al modificar el registro de estado.

Conjunto de comandos

Para mantener el dispositivo limpio, simple y rápido, la fabricación ARM original se realizó sin microcódigo , como el procesador 6502 de 8 bits más simple utilizado en las microcomputadoras anteriores de Acorn Computers .

Conjunto de instrucciones ARM

El modo en el que se ejecuta el conjunto de instrucciones de 32 bits.

Conjunto de instrucciones base ARM: [49]

ADC, ADD, AND, B/BL, BIC, CMN, CMP, EOR, LDM, LDR/LDRB, MLA, MOV, MUL, MVN, ORR, RSB, RSC, SBC, STM, STR/STRB, SUB, SWI, SWP, EQT, TST

Conjunto de comandos de pulgar

Para mejorar la densidad del código, los procesadores que comienzan con ARM7TDMI están equipados con un modo de "pulgar". En este modo, el procesador ejecuta un conjunto alternativo de instrucciones de 16 bits. La mayoría de estas instrucciones de 16 bits se traducen en instrucciones ARM normales. La reducción en la longitud de las instrucciones se logra ocultando algunos operandos y limitando la direccionabilidad en comparación con el modo de conjunto de instrucciones ARM completo.

En el modo Thumb, los códigos de operación más pequeños tienen menos funcionalidad. Por ejemplo, solo las ramas pueden ser condicionales y muchos códigos de operación están limitados a acceder solo a la mitad de los registros del procesador principal. Los códigos de operación más cortos generalmente dan como resultado una mayor densidad de código, aunque algunos códigos de operación requieren instrucciones adicionales. En situaciones en las que el puerto de memoria o el ancho del bus están limitados a 16 bits, los códigos de operación del modo Thumb más cortos son mucho más rápidos que los códigos de operación ARM normales de 32 bits, ya que se debe cargar menos código en el procesador con un ancho de banda de memoria limitado.

El hardware como Game Boy Advance normalmente tiene una pequeña cantidad de RAM disponible con un canal de datos completo de 32 bits. Pero la mayoría de las operaciones se realizan a través de un canal de información de 16 bits o más estrecho. En este caso, tiene sentido usar el código Thumb y optimizar manualmente algunas secciones de código pesadas cambiando a instrucciones ARM completas de 32 bits.

El primer procesador con un decodificador de comandos Thumb fue el ARM7TDMI. Todos los procesadores de la familia ARM9 , así como XScale , tenían un decodificador de comandos Thumb incorporado.

Conjunto de instrucciones Thumb-2

Thumb-2 es una tecnología introducida en el núcleo ARM1156, que se anunció en 2003. Amplía el conjunto limitado de instrucciones Thumb de 16 bits con instrucciones adicionales de 32 bits para darle un ancho adicional al conjunto de instrucciones. El objetivo de Thumb-2 es lograr una densidad de código similar a la de Thumb y un rendimiento del conjunto de instrucciones ARM de 32 bits. Podemos decir que en ARMv7 se logró este objetivo.

Thumb-2 amplía las instrucciones ARM y Thumb con aún más instrucciones, incluida la manipulación de campos de bits, la bifurcación de tablas y la ejecución condicional. El nuevo "Lenguaje ensamblador unificado" (UAL) admite la creación de comandos para ARM y Thumb desde el mismo código fuente. Las versiones ARMv7 de Thumb parecen código ARM. Esto requiere precaución y el uso del nuevo comando if-then, que admite la ejecución de hasta 4 comandos de estado de prueba consecutivos. Se ignora durante la compilación del código ARM, pero genera comandos durante la compilación del código ARM. Por ejemplo:

; si (r0 == r1) CMP r0 , r1 ITE EQ ; BRAZO: sin código ... Pulgar: instrucción de TI ; entonces r0 = r2; MOVEQ r0 , r2 ; BRAZO: condicional; Pulgar: condición vía ITE 'T' (entonces) ; de lo contrario r0 = r3; MOVIMIENTO r0 , r3 ; BRAZO: condicional; Pulgar: condición a través de ITE 'E' (si no) ; recuerde que la instrucción Thumb MOV no tiene bits para codificar "EQ" o "NE"

Todos los troqueles ARMv7 admiten el conjunto de instrucciones Thumb-2, mientras que algunos troqueles, como el Cortex-m3, solo admiten Thumb-2. Los troqueles Cortex y ARM11 restantes admiten conjuntos de instrucciones Thumb-2 y ARM.

Conjunto de comandos de Jazelle

Jazelle  es una tecnología que permite que el bytecode de Java se ejecute directamente en la arquitectura ARM como un tercer estado de ejecución (y conjunto de instrucciones) junto con las instrucciones ARM regulares y el modo Thumb. La compatibilidad con la tecnología Jazelle se indica con la letra "J" en el nombre del procesador; por ejemplo, ARMv5TEJ. Esta tecnología ha sido compatible desde la arquitectura ARMv6, aunque los núcleos más nuevos solo contienen implementaciones limitadas que no admiten la aceleración de hardware.

ARMv8 y el conjunto de instrucciones ARM de 64 bits

A finales de 2011 se publicó una nueva versión de la arquitectura, ARMv8. Introdujo la definición de la arquitectura AArch64, en la que se ejecuta el conjunto de instrucciones A64 de 64 bits. El soporte para comandos de 32 bits se llama A32 y se ejecuta en arquitecturas AArch32. Las instrucciones de pulgar son compatibles con el modo T32, solo cuando se utilizan arquitecturas de 32 bits. Se permite ejecutar aplicaciones de 32 bits en un sistema operativo de 64 bits y ejecutar un sistema operativo virtualizado de 32 bits utilizando un hipervisor de 64 bits [50] . Applied Micro, AMD, Broadcom, Calxeda, HiSilicon, Samsung, STM y otros han anunciado planes para usar ARMv8. Los núcleos Cortex-A53 y Cortex-A57 compatibles con ARMv8 fueron presentados por ARM el 30 de octubre de 2012 [51] .

Tanto AArch32 como AArch64 admiten VFPv3, VFPv4 y SIMD avanzado (NEON). También se agregaron instrucciones criptográficas para trabajar con AES , SHA-1 y SHA-256 .

Características de AArch64:

  • Nuevo conjunto de instrucciones A64
  • 31 registros de propósito general, cada uno de 64 bits de largo
  • Registros SP y PC separados
  • Las instrucciones tienen un tamaño de 32 bits y muchas son iguales a las instrucciones A32
  • La mayoría de las instrucciones funcionan con argumentos de 32 y 64 bits.
  • Las direcciones tienen un tamaño de 64 bits
  • SIMD avanzado (NEON) mejorado
  • Aumentó la cantidad de registros de 128 bits disponibles a través de instrucciones criptográficas NEON, VFPv4, AES, SHA de 16 a 32
  • Admite cálculos con números de punto flotante de precisión doble (doble de 64 bits)
  • Cumplimiento total de IEEE 754
  • Nuevo Sistema de Exclusión
  • La traducción de direcciones virtuales del formato de 48 bits funciona con los mecanismos LPAE existentes

Funciones RISC

La arquitectura ARM tiene las siguientes características RISC:

  • Arquitectura de carga/almacenamiento
  • Sin compatibilidad con el acceso a la memoria no lineal (sin alineación de palabras) (ahora compatible con los procesadores ARMv6, con algunas excepciones, y completamente con ARMv7)
  • Archivo de registro uniforme de 16x32 bits
  • Longitud de instrucción fija (32 bits) para simplificar la decodificación al reducir la densidad del código. Más tarde, el modo Thumb aumentó la densidad del código.
  • Ejecución de ciclo único

Para compensar el diseño simple, se han utilizado algunas características de diseño en comparación con los procesadores modernos como Intel 80286 o Motorola 68020:

  • Las instrucciones aritméticas reemplazan los códigos condicionales solo cuando es necesario
  • Un cambiador cíclico de registros múltiples de 32 bits que se puede usar sin pérdida de rendimiento en la mayoría de las instrucciones aritméticas y los cálculos de direcciones.
  • Potentes modos de direcciones indexadas
  • Registro de referencia para la llamada rápida de funciones de hoja
  • Simple pero rápido, con dos niveles de prioridad del subsistema de interrupción con bancos de registros habilitados.

Ejecución condicional

Una de las diferencias significativas entre la arquitectura ARM (arquitectura original) y otras arquitecturas de CPU es la llamada predicación  : la capacidad de ejecutar instrucciones condicionalmente. Por "ejecución condicional" aquí queremos decir que la instrucción será ejecutada o ignorada dependiendo del estado actual de los indicadores de estado del procesador. En Thumb and Arm 64, la predicación no se usa; en el primer modo, no hay lugar para ella en el comando (solo 16 bits), y en el segundo, la predicación no tiene sentido y difícil de implementar en arquitecturas superescalares .

Mientras que para otras arquitecturas, por regla general, solo las instrucciones de salto condicional tienen esta propiedad, la arquitectura ARM fue diseñada para ejecutar condicionalmente casi cualquier instrucción. Esto se logró agregando un campo especial de 4 bits ( predicado ) a sus códigos de instrucción. Uno de sus valores está reservado para el hecho de que la instrucción debe ejecutarse incondicionalmente, y el resto codifican una u otra combinación de condiciones (flags). Por un lado, dada la longitud total limitada de la instrucción, esto redujo la cantidad de bits disponibles para codificar compensaciones en los comandos de acceso a la memoria, pero por otro lado, hizo posible deshacerse de las instrucciones de bifurcación al generar código para pequeños si-bloques.

Un ejemplo comúnmente considerado para ilustración es el algoritmo basado en la resta de Euclides . En lenguaje C se ve así:

mientras ( yo != j ) { si ( yo > j ) { yo -= j ; } más { j- = yo ; } }

Y en el ensamblador ARM, así:

bucle CMP Ri , Rj ; establece la condición "NE" if (i != j), ; "GT" si (i > j), ; o "LT" si (i < j) SUBGT Ri , Ri , Rj ; si "GT" (mayor que), i = ij; SUBLT Rj , Rj , Ri ; si "LT" (menor que), j = ji; Bucle BNE ; _ si "NE" (no es igual), entonces bucle

Se puede ver en el código que el uso de la predicación hizo posible evitar por completo la bifurcación en las sentencias else y then. Tenga en cuenta que si Ri y Rj son iguales, entonces no se ejecutará ninguna de las instrucciones SUB, eliminando por completo la necesidad de una bifurcación que implemente una verificación while en cada inicio del ciclo, que podría implementarse, por ejemplo, usando SUBLE ( menor o igual que) instrucción.

Una forma en que el código Thumb logra un mayor ahorro de espacio es precisamente eliminando el predicado de 4 bits de todas las instrucciones excepto las ramas.

Otras características

Otra característica del conjunto de instrucciones es la capacidad de combinar turnos y rotaciones en una instrucción de "procesamiento de información" (aritmética, lógica, movimiento registro-registro) de modo que, por ejemplo, la expresión C:

a += ( j << 2 );

se puede convertir a una instrucción de una palabra y un ciclo en ARM:

AGREGAR Ra , Ra , Rj , LSL #2

Esto hace que los programas ARM típicos sean más densos de lo habitual con menos acceso a la memoria. Por lo tanto, la tubería se utiliza de manera mucho más eficiente. Aunque ARM se ejecuta a velocidades que muchos considerarían lentas, compite con bastante facilidad con muchas arquitecturas de CPU más sofisticadas.

El procesador ARM también tiene algunas características que rara vez se encuentran en otras arquitecturas RISC, como el direccionamiento relativo al contador de programa (de hecho, el contador de programa ARM es uno de los 16 registros), así como los modos de direccionamiento previo y posterior al incremento.

Otra característica que vale la pena señalar es que algunos de los primeros procesadores ARM (antes de ARM7TDMI), por ejemplo, no tienen instrucciones para almacenar números de 2 bytes. Por lo tanto, estrictamente hablando, les es imposible generar un código eficiente que se comporte como se espera de los objetos C del tipo "volátil int16_t".

La canalización y otros aspectos de implementación

ARM7 y versiones anteriores tienen una canalización de tres etapas. Estas son las etapas de transferencia, decodificación y ejecución. Las arquitecturas de mayor rendimiento como ARM9 tienen canalizaciones más complejas. Cortex-a8 tiene una canalización de 13 etapas.

Coprocesadores

La arquitectura proporciona una forma de ampliar el conjunto de instrucciones utilizando coprocesadores que se pueden direccionar mediante MCR, MRC, MRRC, MCRR e instrucciones similares. El espacio del coprocesador se divide lógicamente en 16 coprocesadores numerados del 0 al 15, y el 15 se reserva para algunas funciones de administración típicas, como la administración de caché y la operación de la unidad de administración de memoria (en los procesadores que las tienen).

En las máquinas basadas en ARM, los periféricos generalmente se conectan al procesador asignando sus registros físicos en la memoria ARM o la memoria del coprocesador, o conectándolos a los buses, que a su vez están conectados al procesador. El acceso a los coprocesadores tiene una latencia más larga, por lo que algunos periféricos están diseñados para ser accedidos en ambas direcciones. En otros casos, los desarrolladores de chips solo usan el mecanismo de integración del coprocesador. Por ejemplo, un motor de procesamiento de imágenes debe consistir en un pequeño núcleo ARM7TDMI junto con un coprocesador que admita operaciones primitivas para procesar codificaciones elementales de HDTV.

SIMD mejorado (NEON)

Una extensión de SIMD avanzada, también conocida como tecnología NEON, es un conjunto de instrucciones combinadas de datos múltiples ( SIMD ) de instrucción única de 64 bits y 128 bits que proporciona aceleración estandarizada para aplicaciones de procesamiento de señales y medios. NEON puede decodificar el formato de audio mp3 a una frecuencia de procesador de 10 MHz y puede funcionar con el códec de voz GSM AMR (multivelocidad adaptativa) a un máximo de 13 MHz. Tiene un impresionante conjunto de instrucciones, archivos de registro separados y un sistema de ejecución independiente a nivel de hardware. NEON admite información de punto flotante, precisión simple y enteros de 8, 16, 32 y 64 bits, y funciona en operaciones SIMD para procesamiento de audio y video (gráficos y juegos). En NEON SIMD admite hasta 16 operaciones a la vez.

Una de las desventajas (o, digamos, una característica) del SIMD mejorado es que el coprocesador ejecuta las instrucciones del SIMD mejorado con un retraso bastante significativo en relación con el código del procesador principal, el retraso alcanza dos docenas de ciclos o más (dependiendo de la arquitectura y condiciones específicas). Por esta razón, cuando el procesador principal intente utilizar los resultados del cálculo del coprocesador, la ejecución se congelará durante un tiempo significativo.

VFP

La tecnología VFP (Vector Floating Point) es una extensión del coprocesador en la arquitectura ARM. Realiza cálculos de bajo costo en números de punto flotante de precisión simple/doble que cumplen totalmente con el estándar ANSI/IEEE Std 754-1985 para aritmética binaria de punto flotante . VFP realiza cálculos de coma flotante adecuados para una amplia gama de aplicaciones, como PDA, teléfonos inteligentes, compresión de audio, gráficos 3D y audio digital, así como impresoras y decodificadores. La arquitectura VFP también admite la ejecución de instrucciones vectoriales cortas. Pero, dado que el procesador realiza operaciones secuencialmente en cada elemento del vector, VFP no puede llamarse un verdadero conjunto de instrucciones SIMD. Este modo puede ser útil en aplicaciones de procesamiento de señales y gráficos, ya que reduce el tamaño del código y la generación de instrucciones.

Otros coprocesadores de punto flotante y/o SIMD que se encuentran en los procesadores ARM incluyen FPA , FPE , iwMMXt . Proporcionan la misma funcionalidad que VFP, pero no son compatibles con él a nivel de código de operación .

Extensiones de seguridad

Las extensiones de seguridad comercializadas como TrustZone Technology se encuentran en ARMv6KZ y otras arquitecturas de perfiles de aplicaciones más recientes. Proporciona una alternativa de bajo costo para agregar un motor de seguridad dedicado al proporcionar 2 vCPU compatibles con el control de acceso de hardware. Esto permite que el núcleo de la aplicación cambie entre dos estados llamados "mundos" (para evitar confusiones con posibles nombres de dominio) para evitar que la información se filtre del mundo más importante al menos importante. Este cambio mundial suele ser ortogonal a todas las demás capacidades del procesador. Por lo tanto, cada mundo puede ejecutarse independientemente de otros mundos utilizando el mismo núcleo. La memoria y los periféricos, respectivamente, están hechos para encajar en el mundo del kernel y pueden usar esto para obtener control de acceso a los secretos y códigos del kernel. Las aplicaciones típicas de TrustZone Technology deben ejecutar un sistema operativo completo en el mundo menos importante y un código compacto y específico de seguridad en el mundo más importante, lo que permite a Digital Rights Management mucho más control sobre el uso de medios en dispositivos basados ​​en ARM y evita el acceso no autorizado a el dispositivo. .

En la práctica, dado que los detalles específicos de la implementación de TrustZone siguen siendo propiedad de la empresa y no se divulgan, no está claro qué nivel de seguridad se garantiza para este modelo de amenaza.

Depuración

Todos los procesadores ARM modernos tienen hardware de depuración, porque sin ellos, los depuradores de software no podrían realizar las operaciones más básicas, como detener, sangrar, establecer puntos de interrupción después del reinicio.

La arquitectura ARMv7 define funciones básicas de depuración a nivel de arquitectura. Estos incluyen puntos de interrupción, puntos de observación y ejecución de comandos en modo de depuración. Dichas herramientas también estaban disponibles con el módulo de depuración EmbeddedICE. Se admiten ambos modos: detener y revisar. El mecanismo de transporte real que se utiliza para acceder a las herramientas de depuración no está especificado en la arquitectura, pero la implementación normalmente incluye compatibilidad con JTAG .

Hay una arquitectura de depuración de "vista de kernel" separada que no es requerida arquitectónicamente por los procesadores ARMv7.

Registros

ARM proporciona 31 registros de propósito general de 32 bits . Según el modo y el estado del procesador, el usuario tiene acceso solo a un conjunto estrictamente definido de registros. En estado ARM, 17 registros están constantemente disponibles para el desarrollador:

  • 13 registros de propósito general (r0..r12).
  • Puntero de pila (r13): contiene el puntero de pila del programa que se está ejecutando.
  • Registro de enlace (r14): contiene la dirección de retorno en las instrucciones de bifurcación.
  • Contador de programa (r15): los bits [31:1] contienen la dirección de la instrucción que se está ejecutando.
  • Registro de estado del programa actual (CPSR): contiene indicadores que describen el estado actual del procesador. Se modifica al ejecutar muchas instrucciones: lógicas, aritméticas, etc.

En todos los modos, excepto en el modo Usuario y el modo Sistema, también está disponible el registro de estado del programa guardado (SPSR). Después de que ocurre una excepción, el registro CPSR se almacena en el SPSR. Así, el estado del procesador (modo, estado; banderas de operaciones aritméticas, lógicas, habilitación de interrupción) se fija en el momento inmediatamente anterior a la interrupción [52] .

usuario sistema servicio sobre und Irq fiq
R0
R1
R2
R3
R4
R5
R6
R7
R8 R8_fiq
R9 R9_fiq
R10 R10_fiq
R11 R11_fiq
R12 R12_fiq
R13 R13_svc R13_abt R13_und R13_irq R13_fiq
R14 R14_svc R14_abt R14_und R14_irq R14_fiq
R15
CPSR
SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq

Registrar alias:

registro funkt argumentos vars CCG Comentario
R0 a1 aN - argumento de función
R1 a2
R2 a3
R3 a4
R4 v1 vN - variable de registro
R5 v2
R6 v3
R7 v4
R8 v5
R9 SB v6 SB - Registro de base estática
R10 v7 SL SL-?
R11 v8 FP FP - ¿Dirección de marco de pila  ?
R12 IP IP - Registro de llamadas intraprocedimiento
R13 SP puntero de pila
R14 LR Registro de enlaces
R15 ordenador personal Contador de programa

Trabajando con la memoria

La arquitectura ARM utiliza un único espacio de direcciones [53] . En la práctica, este esquema significa que una dirección puede apuntar a la memoria ( RAM o ROM ) o puertos de E/S, a diferencia de un esquema en el que los puertos de E/S tienen su propio espacio de direcciones.

Sistemas de E/S compatibles

La mayoría de los productos existentes que utilizan la arquitectura ARM son sistemas completos en un chip que tienen la capacidad de trabajar con memoria dinámica de acceso aleatorio ( DRAM ) externa y contienen controladores para muchos buses periféricos, en particular USB , IIC (I2C), dispositivos de sonido, controladores para trabajar con medios flash de estándares SD y MMC , controladores de pantalla y cámaras digitales (MIPI).

Todos los procesadores tienen líneas de entrada/salida de propósito general (GPIO). En los dispositivos de consumo, se les pueden conectar botones de "inicio rápido" y control de volumen, LED de señal, un teclado, etc.

Proceso de inicio del sistema operativo en máquinas ARM

Después de encender el sistema basado en el procesador ARM, el gestor de arranque y la dirección de su punto de entrada se cargan desde la memoria ROM. El cargador de arranque preinicializa el sistema, por lo que cumple la misma función que el BIOS realiza en los sistemas x86, después de lo cual puede cargar el cargador del sistema o el sistema operativo directamente.

No existe un estándar único para el gestor de arranque. Se puede usar un cargador de arranque U-Boot , y UEFI se usa a menudo para ARMv8 de 64 bits. Muchas aplicaciones utilizan sus propios cargadores.

SO compatible con ARM

La arquitectura ARM es compatible con muchos sistemas operativos. Más utilizados: Linux (incluido Android ), iOS , Windows Phone .

Varios sistemas operativos Unix y similares a Unix pueden funcionar en sistemas con un procesador ARM: Linux (muchas distribuciones), iOS , Android , BSD ( FreeBSD , NetBSD , OpenBSD ), QNX , Plan 9 , Inferno , OpenSolaris (2008—2009 [54 ] ), Firefox OS , macOS Big Sur .

La plataforma también lanza variantes separadas de la familia Windows : Windows CE , Windows Phone , Windows RT , Windows 10 .

Además, ARM es compatible con: A2 , FreeRTOS , Nucleus , Symbian OS , RISC OS , RISC iX .

Véase también

  • OpenRISC  : arquitectura 2000 con implementación GPL de or1k
  • LEON  - implementaciones libres (GPL, LGPL) de la arquitectura SPARC V8 que apareció en 1997
  • OpenSPARC  es una implementación gratuita (GPL) de la arquitectura SPARC V9 de 2005
  • OpenPOWER  - Arquitectura IBM Power , fundada en 2013 por IBM, Google, Mellanox, NVIDIA
  • RISC-V  es una arquitectura libre y abierta y un conjunto de instrucciones para microprocesadores y microcontroladores creado en 2010
  • MIPS  - Conjuntos de instrucciones y arquitectura MIPS

Notas

  1. ARM Limited se dedica exclusivamente al desarrollo de núcleos y herramientas para ellos ( compiladores , herramientas de depuración , etc.), ganando dinero con la licencia de la arquitectura a terceros fabricantes.
  2. Sistema en un chip 1892VM14Ya . multicore.ru Consultado el 28 de diciembre de 2018. Archivado desde el original el 29 de diciembre de 2018.
  3. 1 2 D. Kozlov-Kononov. Núcleos de procesador de la familia Cortex. Combinación de alto rendimiento y bajo consumo de energía. Archivado el 24 de noviembre de 2013 en Wayback Machine , Electronics Magazine, no. #8/2010
  4. Guía de introducción a los microcontroladores ARM Cortex-M3 . Consultado el 29 de septiembre de 2013. Archivado desde el original el 27 de septiembre de 2013.
  5. "ARMed for the living room" Archivado el 9 de noviembre de 2012 en Wayback Machine .
  6. "Una entrevista con Steve Furber" Archivado el 27 de julio de 2011 en Wayback Machine // Communications of the ACM, mayo de 2011, vol. 54 núm. 5, páginas 34-39, doi:10.1145/1941487.1941501
  7. Modales, David . ARM's way , Electronics Weekly  (29 de abril de 1998). Archivado desde el original el 29 de julio de 2012. Consultado el 26 de octubre de 2012.
  8. Sophie Wilson-CHM . Consultado el 4 de abril de 2019. Archivado desde el original el 4 de abril de 2019.
  9. Pruebas comparativas de Apache para el servidor web de 5 vatios de Calxeda - ¡Servidores ARM, ahora! (enlace no disponible) . Consultado el 26 de noviembre de 2012. Archivado desde el original el 30 de octubre de 2012. 
  10. Nublado con probabilidad de ARM. Qué significa el mercado de microservidores para los proveedores de semiconductores Archivado el 2 de diciembre de 2012 en Wayback Machine // Oppenheimer & Co. Inc., 30 de marzo de 2012
  11. Exclusivo: ARM Cortex-A15 "40 por ciento" más rápido que Cortex-A9 . Consultado el 5 de octubre de 2013. Archivado desde el original el 21 de julio de 2011.
  12. Procesador Cortex-A15  . BRAZO. — Presentación de procesadores de la familia ARM CortexA15 MPCore en la web del fabricante. Consultado el 20 de abril de 2012. Archivado desde el original el 30 de mayo de 2012.
  13. ARM Cortex-A15 - Procesador hasta 2,5 GHz, no solo para smartphones . Ferra.ru (10 de septiembre de 2010). Consultado el 20 de abril de 2012. Archivado desde el original el 26 de abril de 2012.
  14. Sala de prensa de Intel | Titulares principales, noticias de última hora y eventos actuales de Intel (enlace no disponible) . Consultado el 4 de octubre de 2013. Archivado desde el original el 6 de marzo de 2009. 
  15. "ARM810 - Dancing to the Beat of a Different Drum" Archivado el 10 de septiembre de 2008 en Wayback Machine . Archivado el 23 de julio de 2011. Presentación de ARM Holdings en Hot Chips 1996-08-07.
  16. Registro 13, registro FCSE PID Archivado el 7 de julio de 2011 en el Manual de referencia técnica de Wayback Machine ARM920T
  17. Neo1973: Comparación entre GTA01Bv4 y GTA02 . Consultado el 15 de noviembre de 2007. Archivado desde el original el 13 de marzo de 2012.
  18. S3C2410 . Fecha de acceso: 13 de enero de 2010. Archivado desde el original el 13 de marzo de 2012.
  19. Serie Rockbox Samsung SA58xxx . Consultado el 22 de febrero de 2008. Archivado desde el original el 13 de marzo de 2012.
  20. Puerto Rockbox Meizu M6 - Información de hardware . Consultado el 22 de febrero de 2008. Archivado desde el original el 13 de marzo de 2012.
  21. Hojas de datos - Wiki de firmware de Magic Lantern . Consultado el 6 de junio de 2010. Archivado desde el original el 18 de julio de 2011.
  22. Microcontrolador STR9 - STR912 - STR912FW44 - página de descarga de documentos y archivos (enlace no disponible) . mcu.st.com. Consultado el 18 de abril de 2009. Archivado desde el original el 10 de febrero de 2007. 
  23. Starlet Archivado el 10 de octubre de 2018 en Wayback Machine .
  24. Benchmarks - Albatross (enlace no disponible) . Albatross-uav.org (18 de junio de 2005). Consultado el 18 de abril de 2009. Archivado desde el original el 16 de octubre de 2008. 
  25. ARM1136J(F)-S - Procesador ARM . brazo.com. Consultado el 18 de abril de 2009. Archivado desde el original el 13 de marzo de 2012.
  26. Qualcomm chips kernel ARM: de teléfonos a portátiles . xi0.info. Consultado el 8 de mayo de 2010. Archivado desde el original el 13 de marzo de 2012.
  27. Conjunto de chips Qualcomm MSM7227 RISC . pdadb.net. Consultado el 8 de mayo de 2010. Archivado desde el original el 13 de marzo de 2012.
  28. GoForce 6100 . Nvidia.com. Consultado el 18 de abril de 2009. Archivado desde el original el 13 de marzo de 2012.
  29. MediaTek MT6573 . http://www.mediatek.com.+ Consultado el 18 de abril de 2009. Archivado desde el original el 6 de junio de 2012.
  30. Procesadores ARM Samsung S3C6410 y S3C6430 Series (enlace no disponible) . Samsung. Consultado el 8 de octubre de 2009. Archivado desde el original el 1 de septiembre de 2009.   , y el Qualcomm MSM7627 como se ve en Palm Pixi y Motorola Calgary/Devour
  31. Merrit, Rick "ARM se extiende con núcleo A5, gráficos, FPGA" . EE Times (21 de octubre de 2009). Consultado el 28 de octubre de 2009. Archivado desde el original el 13 de marzo de 2012.
  32. Clarke, Peter ARM sugiere planes para los núcleos de procesador Swift y Sparrow . EE Times (3 de febrero de 2009). Consultado el 18 de abril de 2009. Archivado desde el original el 13 de marzo de 2012.
  33. Segan, los chips multinúcleo de Sascha ARM apuntan a las netbooks . Revista PC (9 de abril de 2009). Consultado el 18 de abril de 2009. Archivado desde el original el 13 de marzo de 2012.
  34. 1 2 3 4 標æº- Archivado el 29 de julio de 2013 en Wayback Machine . Archivado el 29 de julio de 2013.
  35. Procesador Cortex-A15 - ARM . Consultado el 24 de octubre de 2012. Archivado desde el original el 30 de mayo de 2012.
  36. Procesador Cortex-A7 - ARM . Consultado el 24 de octubre de 2012. Archivado desde el original el 31 de mayo de 2016.
  37. Benz, Benjamin Cortex Nachwuchs bei ARM . Heise.de (2 de febrero de 2010). Consultado el 3 de mayo de 2010. Archivado desde el original el 13 de marzo de 2012.
  38. Clarke, Peter ARM prepara un núcleo diminuto para microcontroladores de bajo consumo . EE Times (23 de febrero de 2009). Consultado el 30 de noviembre de 2009. Archivado desde el original el 13 de marzo de 2012.
  39. Walko, John NXP primero en hacer una demostración del silicio ARM Cortex-M0 . EE Times (23 de marzo de 2009). Consultado el 29 de junio de 2009. Archivado desde el original el 13 de marzo de 2012.
  40. VCA con tecnología ARM "Triad Semiconductor Archivado el 16 de julio de 2011 en Wayback Machine . Archivado el 16 de julio de 2011.
  41. Cortex-M0 utilizado en un controlador táctil de bajo consumo - 10/06/2009 - Electronics Weekly . Consultado el 6 de junio de 2010. Archivado desde el original el 16 de agosto de 2011.
  42. Chungbuk Technopark elige el procesador ARM Cortex-M0 . Consultado el 6 de junio de 2010. Archivado desde el original el 7 de octubre de 2010.
  43. Traductor de Google . Consultado el 3 de mayo de 2022. Archivado desde el original el 22 de enero de 2020.
  44. Austriamicrosystems elige el procesador ARM Cortex-M0 para aplicaciones de señal mixta . Consultado el 6 de junio de 2010. Archivado desde el original el 22 de julio de 2011.
  45. "ARM extiende la familia Cortex con el primer procesador optimizado para FPGA" Archivado el 5 de mayo de 2007 en Wayback Machine , comunicado de prensa de ARM, 19 de marzo de 2007. Consultado el 11 de abril de 2007.
  46. "ARM Cortex-M1" Archivado el 1 de abril de 2007 en Wayback Machine , sitio web del producto ARM. Consultado el 11 de abril de 2007.
  47. ARM amplía la familia Cortex con el primer procesador optimizado para FPGA Archivado el 5 de mayo de 2007 en Wayback Machine .
  48. Categoría: Códigos de operación -  ARMwiki . www.heyrick.co.uk. Consultado el 6 de agosto de 2018. Archivado desde el original el 6 de agosto de 2018.
  49. ARM (enlace descendente) . Consultado el 15 de abril de 2013. Archivado desde el original el 10 de junio de 2018. 
  50. ARM lanza la serie Cortex-A50, la más... del mundo - ARM . Consultado el 17 de abril de 2013. Archivado desde el original el 20 de abril de 2013.
  51. Manual de referencia técnica de ARM7TDMI (rev. 3)  . Consultado el 22 de agosto de 2009. Archivado desde el original el 13 de marzo de 2012.
  52. http://www.peter-cockerell.net/aalp/html/ch-2.html Archivado el 8 de diciembre de 2015 en Wayback Machine "Los dispositivos de entrada y salida están asignados a la memoria. No existe el concepto de un espacio de direcciones de E/S separado. Los chips periféricos se leen y escriben como si fueran áreas de memoria. Esto significa que en los sistemas ARM prácticos, el mapa de memoria se divide en tres áreas: RAM, ROM y dispositivos de entrada/salida (probablemente en orden decreciente de tamaño)".
  53. Proyecto OpenSolaris: Puerto de plataforma ARM . Microsistemas Sun. Archivado desde el original el 13 de marzo de 2012.

Enlaces