Dueño | BRAZO |
---|---|
Sitio web | www.arm.com |
Las arquitecturas ARM son arquitecturas externas tipo RISC de 32 bits (ARMv1 a ARMv7) y 64 bits ( ARMv8 ) desarrolladas por ARM Ltd. desde 1983 e introducidas desde 1990 por Acorn Computers . La arquitectura ARM es el resultado del trabajo de Sophie Wilson .
Con una arquitectura relativamente más simple que otras familias de procesadores y consumidores de baja energía, los procesadores ARM dominan hoy en día en el campo de la computación integrada , en particular la telefonía móvil y las tabletas .
Estos procesadores son fabricados bajo licencia por un gran número de fabricantes.
Hoy en día, ARM es mejor conocido por sus sistemas en un chip (SoC) , que se integran en un solo chip: microprocesador , procesador de gráficos (GPU), DSP , FPU , SIMD y controlador periférico . Estos están presentes en la mayoría de teléfonos inteligentes y tabletas. ARM ofrece arquitecturas que se venden bajo licencias de propiedad intelectual a los diseñadores. Ofrecen diferentes opciones en las que los constructores pueden tomar lo que les interese para complementar con las opciones de diseñadores propios o de terceros. Por lo tanto, ARM ofrece microprocesadores Cortex para los SoC más recientes ( Cortex-A para dispositivos portátiles como teléfonos inteligentes y tabletas, Cortex-M para acoplarse a un microcontrolador , Cortex-R para microprocesadores en tiempo real ), procesadores gráficos ( Mali ), buses AMBA bajo licencia libre, así como los otros componentes necesarios para la composición del SoC completo. Algunos fabricantes, como Nvidia , prefieren producir su propio procesador gráfico, otros, como Samsung, prefieren llevar en algunos casos un procesador gráfico de un tercero o ARM según el modelo, y otros, como Apple, modifican algún microprocesador. componentes mediante la mezcla de varias arquitecturas de procesador ARM (el Apple A6, por ejemplo, mezcla las tecnologías de microprocesador Cortex-A9 y Cortex-A15).
La arquitectura ARM fue desarrollada inicialmente internamente por la empresa británica Acorn Computers , que la utilizó desde 1987 en su línea de computadoras Archimedes de 32 bits .
ARM entonces significaba 'Acorn Risc Machine'. Posteriormente, la división de “creación de microprocesadores” de Acorn se separó de la empresa matriz y pasó a ser “Advanced Risc Machine limited”, posicionándose con una oferta independiente para el mercado de la electrónica de a bordo.
Una particularidad de los procesadores ARM es su modo de venta. De hecho, ARM Ltd. no fabrica ni vende sus procesadores como circuitos integrados . La empresa vende las licencias de sus procesadores para que sean grabadas en silicio por otros fabricantes. Hoy en día, la mayoría de los principales fundadores de chips ofrecen arquitectura ARM.
El primer núcleo producido es el ARM2, vendido en el Archimedes A310 y luego en la gama A4xx. Presentaba una tubería de 3 etapas.
El núcleo más famoso es el ARM7TDMI que tiene una tubería de 3 etapas. Además, el ARM7TDMI dispone de un segundo conjunto de instrucciones denominado THUMB que permite la codificación de instrucciones en 16 bits para, de esta forma, lograr un importante ahorro de memoria, en particular para aplicaciones integradas.
ARM Ltd. luego desarrolló el núcleo ARM9 que presenta una tubería de 5 etapas. Esto permite así un aumento en el número de operaciones lógicas en cada ciclo de reloj y por lo tanto una mejora en el rendimiento de la velocidad.
La arquitectura ARM se utiliza en una gran cantidad de campos y equipa, por ejemplo, las calculadoras TI-Nspire y HP-50G . Esta arquitectura también está muy extendida en telefonía móvil.
Muchos sistemas operativos son compatibles con esta arquitectura:
También es posible aglomerar núcleos de diferentes potencias, los más bajos en consumo y potencia trabajando la mayor parte del tiempo, lo que permite minimizar el consumo de energía de los núcleos más potentes, que se activan solo en caso de alta demanda de cómputo. para acelerar el procesamiento. Esta tecnología se llama big.LITTLE , es utilizada por Samsung , con su Exynos 5 octo (4 cortex de baja potencia-A7 y 4 cortex de alta potencia-A15), MediaTek y otras. El Tegra 3 de Nvidia, utiliza una técnica similar con un corazón y varios de baja potencia de alta potencia.
La arquitectura ARM está fuertemente inspirada en los principios de diseño de RISC . Tiene 16 registros generales de 32 bits. Las instrucciones, codificadas en 32 bits hasta ARMv7, pueden tener ejecución condicional; en la arquitectura de 64 bits ( ARMv8 ), solo unas pocas instrucciones pueden tener ejecución condicional.
El conjunto de instrucciones ha recibido extensiones a lo largo del tiempo, como Thumb , para mejorar la densidad del código, NEON , para proporcionar instrucciones SIMD , o Jazelle , para mejorar la ejecución del código Java .
Los siguientes procesadores utilizan las tecnologías que se indican a continuación:
Jazelle DBX (Direct Bytecode eXecution) es una técnica para ejecutar directamente el código de bytes de Java en arquitecturas ARM como un tercer estado de ejecución (y conjunto de ejecución), en paralelo con el ARM existente y en modo Thumb. El soporte para este estado está indicado por la " J " de la arquitectura ARMv5TEJ y los nombres principales ARM9EJ-S y ARM7EJ-S. Se requiere soporte para este estado de ARMv6 (excepto para el perfil ARMv7-M). Sin embargo, los núcleos más nuevos solo incluyen una implementación trivial que no proporciona aceleración de hardware.
Thumb es un conjunto de instrucciones de 16 bits que proporciona un subconjunto de las instrucciones ARM clásicas de 32 bits y ahorra mucha memoria. Para obtener una codificación más compacta de estas instrucciones, ciertos operandos están implícitos y las posibilidades ofrecidas son más limitadas.
En el modo Thumb, las instrucciones de 16 bits ofrecen menos posibilidades. Solo las conexiones pueden, por ejemplo, ser condicionales y varias instrucciones están limitadas al acceso de una pequeña parte de los registros generales del procesador. Estas posibilidades reducidas mejoran la densidad general de un programa, aunque algunas operaciones requieren más instrucciones. Esto puede reducir el tiempo que lleva cargar el código en la memoria (liberando ancho de banda) y aumentar la probabilidad de permanecer en la caché de instrucciones, lo que aumenta significativamente el rendimiento.
El hardware integrado, como Game Boy Advance, generalmente tiene una pequeña cantidad de RAM accesible a través de un bus de datos de 32 bits, pero se accede a la mayoría a través de un segundo bus de 16 bits o menos. En esta situación, es muy interesante compilar su programa en modo Thumb y optimizar manualmente las pocas secciones que más consumen utilizando el conjunto completo de instrucciones ARM de 32 bits, lo que permite colocar estas instrucciones más grandes en el bus. Acceso a memoria de 32 bits .
El primer procesador que contiene un decodificador de instrucciones Thumb es el ARM7TDMI . Todos los ARM9 y superiores (incluido XScale ) incluyen un decodificador Thumb.
La tecnología Thumb-2 comienza con el núcleo ARM1156 anunciado en 2003. Thumb-2 amplía el conjunto limitado de instrucciones de 16 bits de Thumb con instrucciones adicionales de 32 bits para dar más amplitud al conjunto de instrucciones. Esto da como resultado un conjunto de instrucciones de ancho variable. Thumb-2 tiene como objetivo lograr una densidad de código cercana a Thumb mientras mantiene un rendimiento similar al conjunto de instrucciones ARM en la memoria de 32 bits.
Thumb-2 amplía tanto el conjunto de instrucciones Thumb como el conjunto de instrucciones ARM, incluida la manipulación de campos de bits, las ramas de la tabla y las ejecuciones condicionales. Un nuevo lenguaje ensamblador unificado (UAL) admite la generación simultánea de código de instrucción ARM y Thumb-2 desde el mismo código fuente; Las versiones de Thumb en los procesadores ARMv7 también son capaces de código ARM, incluida la capacidad de escribir funciones de manejo de interrupciones. Se necesita un poco de cuidado y el uso de la nueva instrucción " IT " (si-entonces), que permite ejecutar cuatro instrucciones sucesivas dependiendo de una condición de prueba. Al compilar en código ARM, este caso se ignora, pero al compilar en Thumb-2, se genera una instrucción real. Por ejemplo :
; if (r0 == r1) CMP r0, r1 ITE EQ ; ARM : pas de code ... Thumb : instruction IT ; then r0 = r2; MOVEQ r0, r2 ; ARM : conditionnel ; Thumb : condition via ITE 'T' (then) ; else r0 = r3; MOVNE r0, r3 ; ARM : conditionnel ; Thumb: condition via ITE 'E' (else) ; Se rappeler que l'instruction MOV de Thumb n'a pas de bits pour encoder "EQ" ou "NE"Todos los chips ARMv7 admiten el conjunto de instrucciones Thumb-2. Los otros chips de las series Cortex y ARM11 admiten todos los estados de instrucción ARM o instrucción Thumb-2.
ThumbEE , también llamado Thumb-2EE , o comercialmente Jazelle RCT para (Runtime Compilation Target, que significa en inglés "objetivo de compilación sobre la marcha"), se anuncia en 2005 y aparece por primera vez en el procesador Cortex-A8 . ThumbEE es el cuarto estado del procesador, agregando pequeños cambios al conjunto extendido de instrucciones Thumb-2. Estos cambios hacen que el conjunto de instrucciones sea particularmente adecuado para generar código en tiempo de ejecución, compilando sobre la marcha, en entornos de tiempo de ejecución controlados. ThumbEE está orientado a lenguajes de programación como Limbo , Java, C # , Perl , Python o Ruby y permite a los compiladores sobre la marcha generar menos código de salida sin afectar el rendimiento.
Las nuevas características de ThumbEE incluyen la verificación automática de puntero nulo en cada instrucción de carga y guardado, una instrucción que verifica los límites de una matriz, acceso a los registros r8-r15 (donde se mantiene la máquina virtual Jazelle / Java DBX) e instrucciones especiales que llamar a una función de devolución de llamada . Los controladores se denominan con frecuencia pequeñas secciones de código, y se utilizan normalmente para implementar una funcionalidad de lenguaje de programación de alto nivel, como la asignación de memoria para un nuevo objeto. Estos cambios se realizaron para reorientar algunos códigos de operación y saber que el corazón está en modo ThumbEE.
La tecnología VFP ( punto flotante vectorial ) es una extensión de coprocesador de tipo FPU en arquitecturas ARM. Proporciona el cálculo de formatos de punto flotante de precisión simple y punto flotante de doble precisión de bajo costo que cumplen con el estándar ANSI / IEEE Std 754-1985 para aritmética de punto flotante binario . VFP proporciona cálculos de punto flotante para lograr un amplio espectro de aplicaciones y necesidades tales como PDA , teléfonos inteligentes , compresión y descompresión de voz, gráficos tridimensionales o audio digital, impresoras, cajas multimedia y aplicaciones automotrices. La arquitectura VFP estaba destinada a admitir la ejecución de modo de instrucciones vectoriales cortas, pero operan secuencialmente en cada elemento vectorial y, por lo tanto, no ofrecen el rendimiento de un verdadero paralelismo vectorial como lo hace un SIMD . Estos modos vectoriales se retiraron rápidamente después de su introducción para ser reemplazados por la unidad NEON Advanced SIMD mucho más poderosa.
Algunos procesadores, como el ARM Cortex-A8, se han amputado con un módulo VFPLite en lugar de un módulo VFP completo, y requieren aproximadamente diez veces más ciclos de reloj por operación de punto flotante. Otros coprocesadores de punto flotante o SIMD que se pueden encontrar en procesadores basados en la arquitectura ARM incluyen NEON , FPA , FPE, iwMMXt . Proporcionan algunas funciones similares a los VFP, pero no son compatibles con él a nivel de código de operación .
La extensión Advanced SIMD (también llamada NEON o MPE para Media Processing Engine ) es una SIMD ( instrucción única, datos múltiples ), que combina conjuntos de instrucciones de 64 y 128 bits, que proporcionan aceleración computacional estandarizada para aplicaciones de procesamiento de señales, 2D / 3D y medios. NEON está incluido en todos los núcleos Cortex-A8, pero es opcional en los núcleos Cortex-A9. NEON puede realizar decodificación MP3 en un procesador que opera a 10 MHz y puede codificar / decodificar códec de audio GSM AMR a 13 MHz y puede acelerar la decodificación de formatos de video como h264 o Real . Contiene un conjunto de instrucciones, un archivo de registro separado y una ejecución de hardware independiente. Tiene 32 registros flotantes de 64 bits, que comparte con la FPU, que se pueden acoplar para formar 16 registros de 128 bits flotantes, y también acepta que estos registros sean tratados como enteros con o sin signo de 8, 16, 32 y 64 bits. Este SIMD admite hasta 16 operaciones simultáneas. Núcleos como ARM Cortex-A8 y Cortex-A9 admiten vectores de 128 bits pero solo procesan 64 bits a la vez, mientras que a partir del nuevo Cortex-A15 puede procesar 128 bits a la vez.
La tecnología LPAE ( Gran Extensión de dirección física ) se ha aplicado por primera vez en la corteza A 3 ª generación (Cortex-A7, Cortex-A15 y Cortex-A17). Esta extensión se utiliza en procesadores ARM de 32 bits, lo que permite direccionar desde 32 bits (4 gigabytes como máximo) a 40 bits (1 terabyte como máximo). Requiere una MMU con la extensión VMSAv7 . Con esta extensión, la granularidad de control de la MMU es 4KiB .
Esta extensión funciona en varios pasos:
El registro ID_MMFR3proporciona el tamaño de la dirección física admitida (32 bits, 36 bits o 40 bits).
TrustZone es una tecnología para el cifrado y la seguridad de los intercambios con plataformas de terceros, de acuerdo con los estándares de Trusted Execution Environment (TEE). El objetivo es evitar que el usuario o las aplicaciones de terceros instaladas en el terminal accedan a los datos intercambiados en este denominado entorno de confianza. Se utiliza, por ejemplo, en entornos de archivos protegidos por la gestión de derechos digitales (GND), también llamado DRM en inglés.
ARM también ofrece procesadores gráficos (GPU) llamados Mali que se pueden integrar en arquitecturas ARM SoC . La primera serie, Mali 200, se utiliza en procesadores como el SoC Telechips TCC890x.
La segunda serie, Mali 300, no parece haber sido utilizada por los fabricantes.
La tercera serie, Mali 400 MP, se ofrece en procesadores más de gama alta, generalmente Cortex A9, como el ST-Ericsson U8500, el Samsung Exynos 4 o el Amlogic 8726-M, pero también en el Cortex A8 AllWinner A1X .
La serie Mali 600 está destinada al Cortex A15. En particular, equipa la serie Samsung Exynos 5. El primer modelo fue el Mali T604.
La API genérica para acceder a la GPU MALI compatible con EXA / DRI2 de código abierto y gratuito (licencias Apache y MIT) está disponible para Mali 200, 300, 400 y 600 en la plataforma Linux, pero la parte de acceso más baja al procesador, según en el fabricante permanece cerrado.
El proyecto del controlador de Lima se creó para desarrollar un controlador gratuito que permitiera el uso completo de estos procesadores. EnSeptiembre 2013, ya supera el rendimiento de los pilotos patentados de la serie Mali 400.
Sin embargo, muchos SoC ARM incluyen una GPU PowerVR o, más raramente, otros procesadores gráficos ( Qualcomm Adreno , Vivante , Nvidia ), que tienen controladores para Linux, pero la parte 3d es propietaria y de código cerrado. El proyecto Freedreno tiene los mismos objetivos para el Adreno que el proyecto piloto de Lima para la serie Mali.
Arquitectura | Familia (s) |
---|---|
ARMv1 | ARM1 |
ARMv2 | ARM2 , ARM3 |
ARMv3 | ARM6, ARM7 |
ARMv4 | StrongARM , ARM7TDMI , ARM8 , ARM9 TDMI |
ARMv5 | ARM7EJ , ARM9E , ARM10E , XScale , FA626TE, Feroceon, PJ1 / Mohawk |
ARMv6 | ARM11 (en) |
ARMv6-M | ARM Cortex-M ( ARM Cortex-M0 , ARM Cortex-M0 + , ARM Cortex-M1 ) |
ARMv7-A | ARM Cortex-A (Gen1: ARM Cortex-A8 , Gen2: ARM Cortex-A9 MPCore , ARM Cortex-A5 MPCore , Gen3: ARM Cortex-A7 MPCore , ARM Cortex-A12 MPCore , ARM Cortex-A15 MPCore , Adaptación de terceros : Escorpión, Krait, PJ4 / Sheeva , Swift |
ARMv7-M | ARM Cortex-M ( ARM Cortex-M3 , ARM Cortex-M4 , ARM Cortex-M7 ) |
ARMv7-R | ARM Cortex-R ( ARM Cortex-R4 , ARM Cortex-R5 , ARM Cortex-R7 ) |
ARMv8-A | ARM Cortex-A35 , ARM Cortex-A50 ( ARM Cortex-A53 , ARM Cortex-A57 ), ARM Cortex-A72 , ARM Cortex-A73 , X-Gene , Denver, Cyclone , Exynos M1 / M2 |
ARMv8.2-A | ARM Cortex-A55 , ARM Cortex-A65 , ARM Cortex-A75 , ARM Cortex-A76 |
ARMv8.3-A | ARM Cortex-A65AE (solo LDAPR, el resto en 8.2), ARM Cortex-A76AE (igual que A65AE) |
ARMv8-M | BRAZO Cortex-M23 , BRAZO Cortex-M33 |
ARMv8-R | BRAZO Cortex-R53 |
La propiedad intelectual es propiedad de una empresa del Reino Unido, pero los procesadores con licencia tienen licencia de varias empresas en todo el mundo. Entre las empresas que fabrican los modelos de la serie Cortex (las más avanzadas), la mayoría se encuentran en Asia (20), seguida de Estados Unidos (13) y finalmente de Europa (6).