ARM (estilizado en minúsculas como arm , anteriormente un acrónimo de Advanced RISC Machines y originalmente Acorn RISC Machine ) es una familia de arquitecturas informáticas de conjunto de instrucciones reducidas (RISC) para procesadores de computadora , configuradas para varios entornos. Arm Ltd.desarrolla la arquitectura y la licencia a otras empresas, que diseñan sus propios productos que implementan una de esas arquitecturas, incluyendo sistemas en chips (SoC) y sistemas en módulos (SoM) que incorporan diferentes componentes como la memoria , interfaces y radios . También diseña núcleosque implementan este conjunto de instrucciones y licencian estos diseños a varias empresas que incorporan esos diseños centrales en sus propios productos.
Diseñador | Steve Furber , Sophie Wilson Acorn Computers / Arm Ltd. |
---|---|
Bits | 32 bits , 64 bits |
Introducido | 1985 |
Diseño | RISC |
Tipo | Registrarse -Registrarse |
Derivación | Código de condición , comparar y bifurcar |
Abierto | Propiedad |
Introducido | 2011 |
---|---|
Versión | ARMv8-A, ARMv8.1-A, ARMv8.2-A, ARMv8.3-A, ARMv8.4-A, ARMv8.5-A, ARMv8.6-A, ARMv8-R, ARMv9 |
Codificación | AArch64 / A64 y AArch32 / A32 usan instrucciones de 32 bits, T32 (Thumb-2) usa instrucciones mixtas de 16 y 32 bits [1] |
Endianidad | Bi (pequeño por defecto) |
Extensiones | SVE , SVE2, AES, SHA, TME; Todo obligatorio: Thumb-2 , Neon , VFPv4-D16, VFPv4; obsoleto: Jazelle |
Registros | |
Propósito general | 31 registros enteros de 64 bits [1] |
Punto flotante | Registros de 32 × 128 bits [1] para FP escalar de 32 y 64 bits o FP SIMD o entero; o criptografía |
Versión | ARMv8-R, ARMv8-M, ARMv8.1-M, ARMv7-A, ARMv7-R, ARMv7E-M, ARMv7-M, ARMv6-M |
---|---|
Codificación | 32 bits, excepto las extensiones Thumb-2 que utilizan instrucciones mixtas de 16 y 32 bits. |
Endianidad | Bi (pequeño por defecto) |
Extensiones | Thumb-2 , Neon , Jazelle , DSP, Saturado, FPv4-SP, FPv5, Helio |
Registros | |
Propósito general | Registros enteros de 15 × 32 bits, incluido R14 (registro de enlace), pero no R15 (PC) |
Punto flotante | Hasta 32 registros de 64 bits, [2] SIMD / punto flotante (opcional) |
Versión | ARMv6, ARMv5, ARMv4T, ARMv3, ARMv2 |
---|---|
Codificación | 32 bits, excepto que la extensión Thumb utiliza instrucciones mixtas de 16 y 32 bits. |
Endianidad | Bi (pequeño como predeterminado) en ARMv3 y superior |
Extensiones | Pulgar , Jazelle |
Registros | |
Propósito general | Registros enteros de 15 × 32 bits, incluido R14 (registro de enlace), pero no R15 (PC, direccionamiento de 26 bits en versiones anteriores) |
Punto flotante | Ninguno |
Ha habido varias generaciones del diseño ARM. El ARM1 original usaba una estructura interna de 32 bits , pero tenía un espacio de direcciones de 26 bits que lo limitaba a 64 MB de memoria principal . Esta limitación se eliminó en la serie ARMv3, que tiene un espacio de direcciones de 32 bits, y varias generaciones adicionales hasta ARMv7 permanecieron en 32 bits. Publicado en 2011, el apoyo ARMv8-A arquitectura añadido para un 64-bit espacio de direcciones y la aritmética de 64 bits con su nuevo conjunto de instrucciones de longitud fija de 32 bits. [3] Arm Ltd. también ha lanzado una serie de conjuntos de instrucciones adicionales para diferentes reglas; la extensión "Thumb" agrega instrucciones de 32 y 16 bits para mejorar la densidad del código , mientras que Jazelle agregó instrucciones para manejar directamente los códigos de bytes de Java y, más recientemente, JavaScript . Los cambios más recientes incluyen la adición de subprocesos múltiples simultáneos (SMT) para mejorar el rendimiento o la tolerancia a fallas . [4]
Debido a sus bajos costos, consumo mínimo de energía y menor generación de calor que sus competidores, los procesadores ARM son deseables para dispositivos livianos, portátiles y que funcionan con baterías, incluidos teléfonos inteligentes , computadoras portátiles y tabletas , así como otros sistemas integrados . [5] [6] [7] Sin embargo, los procesadores ARM también se utilizan para equipos de escritorio y servidores , incluida la supercomputadora más rápida del mundo . [8] Con más de 180 mil millones de chips ARM producidos, [9] [10] [11] a partir de 2021 [actualizar], ARM es la arquitectura de conjunto de instrucciones (ISA) más utilizada y la ISA producida en mayor cantidad. [12] [6] [13] [14] [15] Actualmente, los núcleos Cortex ampliamente utilizados , los núcleos "clásicos" más antiguos y las variantes de núcleos SecurCore especializados están disponibles para cada uno de ellos para incluir o excluir capacidades opcionales.
Historia
BBC Micro
El primer diseño ampliamente exitoso de Acorn Computers fue el BBC Micro , presentado en diciembre de 1981. Se trataba de una máquina relativamente convencional basada en la CPU MOS 6502, pero tenía aproximadamente el doble de rendimiento que los diseños de la competencia como Apple II debido a su uso de DRAM más rápida. . La DRAM típica de la época funcionaba a unos 2 MHz; Acorn llegó a un acuerdo con Hitachi para un suministro de piezas más rápidas de 4 MHz. [dieciséis]
Las máquinas de la época generalmente compartían memoria entre el procesador y el framebuffer , lo que permitía al procesador actualizar rápidamente el contenido de la pantalla sin tener que realizar entradas / salidas (E / S) separadas . Sin embargo, como la sincronización de la visualización de video es exigente, el hardware de video debe tener acceso rápido a esa memoria. Debido a una peculiaridad del diseño del 6502, la CPU dejó intacta la memoria de 1 / 2 del tiempo. Por lo tanto, al ejecutar la CPU a 1 MHz, el sistema de video podría leer datos durante esos tiempos de inactividad, ocupando el total de 2 MHz de la RAM. En BBC Micro, el uso de RAM de 4 MHz permitió utilizar la misma técnica, pero funcionando al doble de velocidad. Esto le permitió superar a cualquier máquina similar en el mercado. [17]
Computadora de negocios bellota
1981 fue también el año en que se introdujo IBM PC . Utilizando el Intel 8088 presentado recientemente , una CPU de 16 bits en comparación con el diseño de 8 bits del 6502 , pudo ofrecer un mayor rendimiento general. Su introducción cambió radicalmente el mercado de las computadoras; lo que había sido en gran parte un mercado de juegos y pasatiempos emergente en los últimos cinco años comenzó a cambiar a un elemento comercial imprescindible donde los diseños anteriores de 8 bits simplemente no podían competir. También estaban llegando al mercado diseños más nuevos que se ejecutaban en 32 bits , como el Motorola 68000 [18] y National Semiconductor NS32016 . [19]
Acorn comenzó a considerar cómo competir en este mercado y produjo un nuevo diseño de papel conocido como Acorn Business Computer . Se fijaron el objetivo de producir una máquina con un rendimiento diez veces superior al de BBC Micro, pero al mismo precio. [20] Esto superaría y subestimaría el precio de la PC. Al mismo tiempo, la reciente introducción de Apple Lisa llevó el concepto de Xerox Star a una audiencia más amplia y sugirió que el futuro pertenecía a las máquinas con una interfaz gráfica de usuario . [21] El Lisa, sin embargo, costó $ 9,995, ya que estaba repleto de chips de soporte, grandes cantidades de memoria y un disco duro , todo muy caro en ese momento. [22]
Luego, los ingenieros comenzaron a estudiar todos los diseños de CPU disponibles. Su conclusión sobre los diseños de 16 bits existentes fue que eran mucho más caros y todavía eran "un poco basura", [23] ofreciendo solo un rendimiento ligeramente superior al de su diseño BBC Micro. También casi siempre exigieron una gran cantidad de chips de soporte para operar incluso a ese nivel, lo que elevó el costo de la computadora en su conjunto. Estos sistemas simplemente no alcanzarían el objetivo de diseño. [23] También consideraron los nuevos diseños de 32 bits, pero estos eran aún más caros y tenían los mismos problemas con los chips de soporte. [24] Según Sophie Wilson , todos los procesadores probados en ese momento funcionaron aproximadamente igual, con un ancho de banda de aproximadamente 4 Mbit / segundo. [25] [a]
Dos eventos clave llevaron a Acorn por el camino hacia ARM. Uno fue la publicación de una serie de informes de la Universidad de California, Berkeley , que sugerían que un diseño de chip simple podría, no obstante, tener un rendimiento extremadamente alto, mucho más alto que los últimos diseños de 32 bits del mercado. [26] La segunda fue una visita de Steve Furber y Sophie Wilson al Western Design Center , una empresa dirigida por Bill Mensch y su hermana, que se había convertido en el sucesor lógico del equipo MOS y estaba ofreciendo nuevas versiones como el WDC 65C02 . El equipo de Acorn vio a estudiantes de secundaria produciendo diseños de chips en máquinas Apple II, lo que sugirió que cualquiera podía hacerlo. [27] [28] En contraste, una visita a otra firma de diseño que trabajaba en una CPU moderna de 32 bits reveló un equipo con más de una docena de miembros que ya estaban en la revisión H de su diseño y aún así contenía errores. Esto cimentó su decisión de finales de 1983 de comenzar su propio diseño de CPU, la Acorn RISC Machine. [29]
Conceptos de diseño
Los diseños originales de Berkeley RISC eran, en cierto sentido, sistemas de enseñanza, no diseñados específicamente para un rendimiento absoluto. A su concepto básico de registro pesado, ARM agregó una serie de notas de diseño bien recibidas del 6502. La principal de ellas fue la capacidad de atender interrupciones rápidamente , lo que permitió a las máquinas ofrecer un rendimiento de entrada / salida razonable sin ningún hardware externo adicional. . Para ofrecer interrupciones de alto rendimiento similares a las del 6502, el diseño ARM limitó su espacio de direcciones físicas a 24 bits de palabras de 4 bytes, es decir, 26 bits de bytes o 64 MB. Este tamaño de 24 bits permitió que el contador de programa (PC) se almacenara junto con ocho indicadores del procesador en un solo registro de 32 bits. Eso significaba que en la recepción de una interrupción, todo el estado de la máquina podría guardarse en una sola operación, mientras que si la PC tuviera 32 bits completos, requeriría operaciones separadas para almacenarlo y los indicadores de estado. [30]
Otro cambio, y uno de los más importantes en términos de rendimiento práctico en el mundo real, fue la modificación del conjunto de instrucciones para aprovechar la DRAM en modo página . Recientemente introducido, el modo de página permitía que los accesos posteriores a la memoria se ejecutaran dos veces más rápido si estaban aproximadamente en la misma ubicación o "página". El diseño de Berkeley no consideró el modo de página y trató toda la memoria por igual. El diseño ARM agregó instrucciones especiales de acceso a la memoria similares a vectores, los "ciclos S", que podrían usarse para llenar o guardar múltiples registros en una sola página usando el modo de página. Esto duplicó el rendimiento de la memoria cuando se pudieron usar y fue especialmente importante para el rendimiento de los gráficos. [31]
Los diseños de Berkeley RISC utilizaron ventanas de registro para reducir el número de registros guardados y restauraciones realizadas en llamadas a procedimientos ; el diseño ARM no adoptó esto.
Wilson desarrolló el conjunto de instrucciones, escribiendo una simulación del procesador en BBC BASIC que se ejecutó en un BBC Micro con un segundo procesador 6502 . [32] [33] Esto convenció a los ingenieros de Acorn de que estaban en el camino correcto. Wilson se acercó al director ejecutivo de Acorn, Hermann Hauser , y solicitó más recursos. Hauser dio su aprobación y reunió a un pequeño equipo para diseñar el procesador real basado en el ISA de Wilson. [34] El proyecto oficial Acorn RISC Machine comenzó en octubre de 1983.
ARM1
Acorn eligió la tecnología VLSI como el "socio de silicio", ya que eran una fuente de ROM y chips personalizados para Acorn. Acorn proporcionó el diseño y VLSI proporcionó el diseño y la producción. Las primeras muestras de silicio ARM funcionaron correctamente cuando se recibieron y probaron por primera vez el 26 de abril de 1985. [5] Conocidas como ARM1, estas versiones funcionaban a 6 MHz. [35]
La primera aplicación ARM fue como segundo procesador para BBC Micro, donde ayudó a desarrollar software de simulación para finalizar el desarrollo de los chips de soporte (VIDC, IOC, MEMC) y aceleró el software CAD utilizado en el desarrollo ARM2. Wilson posteriormente reescribió BBC BASIC en lenguaje ensamblador ARM. El conocimiento profundo obtenido al diseñar el conjunto de instrucciones permitió que el código fuera muy denso, lo que convierte a ARM BBC BASIC en una prueba extremadamente buena para cualquier emulador de ARM.
ARM2
El resultado de las simulaciones en las placas ARM1 condujo a la introducción a fines de 1986 del diseño ARM2 que funcionaba a 8 MHz, y a la versión de principios de 1987 con aumento de velocidad de 10 a 12 MHz. [b] Un cambio significativo en la arquitectura subyacente fue la adición de un multiplicador de Booth , mientras que anteriormente la multiplicación tenía que realizarse en software. [37] Además, un nuevo modo de solicitud de interrupción rápida, FIQ para abreviar, permitió que los registros 8 a 14 fueran reemplazados como parte de la interrupción en sí. Esto significaba que las solicitudes de FIQ no tenían que guardar sus registros, lo que aceleraba aún más las interrupciones. [38]
El ARM2 tenía aproximadamente siete veces el rendimiento de un sistema típico de 7 MHz basado en 68000 como el Commodore Amiga o el Macintosh SE . Era dos veces más rápido que un Intel 80386 funcionando a 16 MHz, y aproximadamente la misma velocidad que un supermini VAX-11/784 multiprocesador . Los únicos sistemas que lo superaron fueron las estaciones de trabajo basadas en RISC Sun SPARC y MIPS R2000 . [39] Además, como la CPU fue diseñada para E / S de alta velocidad, prescindió de muchos de los chips de soporte que se ven en estas máquinas, en particular, carecía de cualquier controlador de acceso directo a memoria (DMA) dedicado que a menudo se encontraba en las estaciones de trabajo. . El sistema de gráficos también se simplificó basándose en el mismo conjunto de suposiciones subyacentes sobre la memoria y el tiempo. El resultado fue un diseño drásticamente simplificado, que ofrece un rendimiento a la par con las costosas estaciones de trabajo, pero a un precio similar al de los escritorios contemporáneos. [39]
El ARM2 presentaba un bus de datos de 32 bits , un espacio de direcciones de 26 bits y 27 registros de 32 bits . El ARM2 tenía un recuento de transistores de solo 30.000, en comparación con el modelo 68000 de seis años de Motorola, con alrededor de 40.000. [40] Gran parte de esta simplicidad provino de la falta de microcódigo (que representa alrededor de un cuarto a un tercio de los 68000) y de (como la mayoría de las CPU del día) sin incluir caché . Esta simplicidad permitió un bajo consumo de energía, pero mejor rendimiento que el Intel 80286 .
Se produjo un sucesor, ARM3, con una caché de 4 KB , que mejoró aún más el rendimiento. [41] El bus de direcciones se amplió a 32 bits en el ARM6, pero el código del programa todavía tenía que estar dentro de los primeros 64 MB de memoria en el modo de compatibilidad de 26 bits, debido a los bits reservados para las banderas de estado. [42]
Advanced RISC Machines Ltd. - ARM6
A fines de la década de 1980, Apple Computer y VLSI Technology comenzaron a trabajar con Acorn en versiones más nuevas del núcleo ARM. En 1990, Acorn escindió el equipo de diseño en una nueva empresa llamada Advanced RISC Machines Ltd., [43] [44] [45] que se convirtió en ARM Ltd. cuando su empresa matriz, Arm Holdings plc, cotizó en la Bolsa de Valores de Londres y NASDAQ en 1998. [46] El nuevo trabajo de Apple-ARM eventualmente evolucionaría hacia el ARM6, lanzado por primera vez a principios de 1992. Apple usó el ARM610 basado en ARM6 como base para su PDA Apple Newton .
Licenciatarios tempranos
En 1994, Acorn usó el ARM610 como la unidad central de procesamiento (CPU) principal en sus computadoras RiscPC . DEC obtuvo la licencia de la arquitectura ARMv4 y produjo StrongARM . [47] A 233 MHz , esta CPU consumió solo un vatio (las versiones más nuevas consumen mucho menos). Este trabajo se pasó posteriormente a Intel como parte de un acuerdo de demanda, e Intel aprovechó la oportunidad para complementar su línea i960 con StrongARM. Más tarde, Intel desarrolló su propia implementación de alto rendimiento llamada XScale, que desde entonces ha vendido a Marvell . El recuento de transistores del núcleo ARM permaneció esencialmente igual a lo largo de estos cambios; ARM2 tenía 30.000 transistores, [48] mientras que ARM6 creció sólo a 35.000. [49]
En 2005, alrededor del 98% de todos los teléfonos móviles vendidos utilizaban al menos un procesador ARM. [50] En 2010, los productores de chips basados en arquitecturas ARM informaron envíos de 6.100 millones de procesadores basados en ARM , lo que representa el 95% de los teléfonos inteligentes , el 35% de los televisores digitales y decodificadores y el 10% de las computadoras móviles . En 2011, la arquitectura ARM de 32 bits fue la arquitectura más utilizada en dispositivos móviles y la más popular de 32 bits en sistemas integrados. [51] En 2013, se produjeron 10 mil millones [52] y "los chips basados en ARM se encuentran en casi el 60 por ciento de los dispositivos móviles del mundo". [53]
Licencia
Licencia de núcleo
El negocio principal de Arm Ltd. es la venta de núcleos IP , que los licenciatarios utilizan para crear microcontroladores (MCU), CPU y sistemas en chips basados en esos núcleos. El fabricante del diseño original combina el núcleo ARM con otras partes para producir un dispositivo completo, generalmente uno que se puede construir en plantas de fabricación de semiconductores (fab) existentes a bajo costo y aún así ofrecer un rendimiento sustancial. La implementación más exitosa ha sido ARM7TDMI con cientos de millones vendidos. Atmel ha sido un centro de diseño precursor en el sistema integrado basado en ARM7TDMI.
Las arquitecturas ARM utilizadas en teléfonos inteligentes, PDA y otros dispositivos móviles van desde ARMv5 hasta ARMv8-A.
En 2009, algunos fabricantes introdujeron netbooks basados en CPU con arquitectura ARM, en competencia directa con los netbooks basados en Intel Atom . [54]
Arm Ltd. ofrece una variedad de términos de licencia, que varían en costo y entregables. Arm Ltd. proporciona a todos los licenciatarios una descripción de hardware integrable del núcleo ARM, así como un conjunto completo de herramientas de desarrollo de software ( compilador , depurador , kit de desarrollo de software ) y el derecho a vender silicio fabricado que contiene la CPU ARM.
Los paquetes de SoC que integran los diseños centrales de ARM incluyen las primeras tres generaciones de Nvidia Tegra, la familia Quatro de CSR plc, Nova y NovaThor de ST-Ericsson, Precision32 MCU de Silicon Labs, productos OMAP de Texas Instruments, productos Hummingbird y Exynos de Samsung , A4 , A5 y A5X de Apple , y NXP 's i.MX .
Los licenciatarios de Fabless , que desean integrar un núcleo ARM en su propio diseño de chip, generalmente solo están interesados en adquirir un núcleo de propiedad intelectual de semiconductores verificados listo para fabricar . Para estos clientes, Arm Ltd. ofrece una descripción de la lista de redes de puerta del núcleo ARM elegido, junto con un modelo de simulación abstraído y programas de prueba para ayudar a la integración y verificación del diseño. Los clientes más ambiciosos, incluidos los fabricantes de dispositivos integrados (IDM) y los operadores de fundición, optan por adquirir la IP del procesador en forma RTL sintetizable ( Verilog ). Con el RTL sintetizable, el cliente tiene la capacidad de realizar optimizaciones y ampliaciones a nivel arquitectónico. Esto permite al diseñador lograr objetivos de diseño exóticos que de otro modo no serían posibles con una lista de conexiones sin modificar ( alta velocidad de reloj , muy bajo consumo de energía, extensiones de conjuntos de instrucciones, etc.). Si bien Arm Ltd. no otorga al licenciatario el derecho a revender la arquitectura ARM en sí, los licenciatarios pueden vender libremente productos manufacturados como dispositivos con chip, placas de evaluación y sistemas completos. Las fundiciones comerciales pueden ser un caso especial; no solo se les permite vender silicio terminado que contiene núcleos ARM, sino que generalmente tienen el derecho de volver a fabricar núcleos ARM para otros clientes.
Arm Ltd. fija el precio de su propiedad intelectual en función del valor percibido. Los núcleos ARM de menor rendimiento suelen tener menores costos de licencia que los núcleos de mayor rendimiento. En términos de implementación, un núcleo sintetizable cuesta más que un núcleo duro de macro (caja negra). Para complicar las cuestiones de precios, una fundición comercial que posea una licencia ARM, como Samsung o Fujitsu, puede ofrecer a los clientes fabulosos costos de licencia reducidos. A cambio de adquirir el núcleo ARM a través de los servicios de diseño internos de la fundición, el cliente puede reducir o eliminar el pago de la tarifa de licencia inicial de ARM.
En comparación con las fundiciones de semiconductores dedicadas (como TSMC y UMC ) sin servicios de diseño internos, Fujitsu / Samsung cobran de dos a tres veces más por oblea fabricada . [ cita requerida ] Para aplicaciones de volumen bajo a medio, una fundición de servicios de diseño ofrece precios generales más bajos (a través de la subvención de la tarifa de licencia). Para piezas producidas en masa de gran volumen, la reducción de costos a largo plazo que se puede lograr a través de precios más bajos de obleas reduce el impacto de los costos de NRE (ingeniería no recurrente) de ARM, lo que hace que la fundición dedicada sea una mejor opción.
Las empresas que han desarrollado chips con núcleos diseñados por Arm Holdings incluyen a la subsidiaria Annapurna Labs de Amazon.com , [55] Analog Devices , Apple , AppliedMicro (ahora: MACOM Technology Solutions [56] ), Atmel , Broadcom , Cavium , Cypress Semiconductor , Freescale Semiconductor (ahora NXP Semiconductors ), Huawei , Intel , [ dudoso ] Maxim Integrated , Nvidia , NXP , Qualcomm , Renesas , Samsung Electronics , ST Microelectronics , Texas Instruments y Xilinx .
Construido sobre la licencia de la tecnología ARM Cortex
En febrero de 2016, ARM anunció la licencia de tecnología Built on ARM Cortex, a menudo abreviada a la licencia Built on Cortex (BoC). Esta licencia permite a las empresas asociarse con ARM y realizar modificaciones en los diseños de ARM Cortex. Estas modificaciones de diseño no se compartirán con otras empresas. Estos diseños de núcleo semi personalizados también tienen libertad de marca, por ejemplo, Kryo 280 .
Las empresas que actualmente son licenciatarias de la tecnología Built on ARM Cortex incluyen a Qualcomm . [57]
Licencia arquitectónica
Las empresas también pueden obtener una licencia de arquitectura ARM para diseñar sus propios núcleos de CPU utilizando los conjuntos de instrucciones ARM. Estos núcleos deben cumplir completamente con la arquitectura ARM. Las empresas que han diseñado núcleos que implementan una arquitectura ARM incluyen Apple, AppliedMicro (ahora: Ampere Computing ), Broadcom, Cavium (ahora Marvell), Digital Equipment Corporation , Intel, Nvidia, Qualcomm, Samsung Electronics, Fujitsu y NUVIA Inc .
Acceso flexible ARM
El 16 de julio de 2019, ARM anunció ARM Flexible Access. ARM Flexible Access proporciona acceso ilimitado a la propiedad intelectual (IP) de ARM incluida para el desarrollo. Se requieren tarifas por licencia de producto una vez que los clientes alcanzan la cinta de fundición o la creación de prototipos. [58] [59]
El 75% de la propiedad intelectual más reciente de ARM durante los últimos dos años está incluida en ARM Flexible Access. A octubre de 2019:
- CPU: Cortex-A5 , Cortex-A7 , Cortex-A32 , Cortex-A34 , Cortex-A35 , Cortex-A53 , Cortex-R5 , Cortex-R8 , Cortex-R52 , Cortex-M0 , Cortex-M0 + , Cortex-M3 , Corteza-M4 , Corteza-M7 , Corteza-M23 , Corteza-M33
- GPU: Mali-G52 , Mali-G31 . Incluye los kits de desarrollo de controladores de Mali (DDK).
- Interconexión: CoreLink NIC-400, CoreLink NIC-450, CoreLink CCI-400, CoreLink CCI-500, CoreLink CCI-550, ADB-400 AMBA, XHB-400 AXI-AHB
- Controladores del sistema: CoreLink GIC-400, CoreLink GIC-500, PL192 VIC, BP141 TrustZone Memory Wrapper, CoreLink TZC-400, CoreLink L2C-310, CoreLink MMU-500, Interfaz de memoria BP140
- IP de seguridad: CryptoCell-312, CryptoCell-712, TrustZone True Random Number Generator
- Controladores periféricos: PL011 UART, PL022 SPI, PL031 RTC
- Depuración y seguimiento: CoreSight SoC-400, CoreSight SDC-600, CoreSight STM-500, macrocelda de seguimiento del sistema CoreSight, controlador de memoria de seguimiento CoreSight
- Kits de diseño: Corstone-101, Corstone-201
- IP física: Artisan PIK para Cortex-M33 TSMC 22ULL, incluidos compiladores de memoria, bibliotecas lógicas, GPIO y documentación
- Herramientas y materiales: Socrates IP ToolingARM Design Studio, Virtual System Models
- Soporte: soporte técnico estándar de ARM, capacitación en línea de ARM, actualizaciones de mantenimiento, créditos para capacitación en el sitio y revisiones de diseño
Núcleos
Arquitectura | Ancho de bits del núcleo | Núcleos | Perfil | refe- rencias | |
---|---|---|---|---|---|
Arm Ltd. | Tercero | ||||
ARMv1 | 32 | ARM1 | Clásico | [a 1] | |
ARMv2 | 32 | ARM2 , ARM250, ARM3 | Ámbar , STORM Open Soft Core [60] | Clásico | [a 1] |
ARMv3 | 32 | ARM6 , ARM7 | Clásico | [a 2] | |
ARMv4 | 32 | ARM8 | Núcleo de procesador de código abierto StrongARM , FA526, ZAP | Clásico | [a 2] [61] |
ARMv4T | 32 | ARM7TDMI , ARM9TDMI , SecurCore SC100 | Clásico | [a 2] | |
ARMv5TE | 32 | ARM7EJ , ARM9E , ARM10E | XScale , FA626TE, Feroceon, PJ1 / Mohawk | Clásico | |
ARMv6 | 32 | ARM11 | Clásico | ||
ARMv6-M | 32 | ARM Cortex-M0 , ARM Cortex-M0 + , ARM Cortex-M1 , SecurCore SC000 | Microcontrolador | ||
ARMv7-M | 32 | ARM Cortex-M3 , SecurCore SC300 | Apple M7 | Microcontrolador | |
ARMv7E-M | 32 | BRAZO Cortex-M4 , BRAZO Cortex-M7 | Microcontrolador | ||
ARMv8-M | 32 | ARM Cortex-M23 , [62] ARM Cortex-M33 [63] | Microcontrolador | [64] | |
ARMv7-R | 32 | ARM Cortex-R4 , ARM Cortex-R5 , ARM Cortex-R7 , ARM Cortex-R8 | Tiempo real | ||
ARMv8-R | 32 | BRAZO Cortex-R52 | Tiempo real | [65] [66] [67] | |
64 | BRAZO Cortex-R82 | Tiempo real | |||
ARMv7-A | 32 | ARM Cortex-A5 , ARM Cortex-A7 , ARM Cortex-A8 , ARM Cortex-A9 , ARM Cortex-A12 , ARM Cortex-A15 , ARM Cortex-A17 | Qualcomm Scorpion / Krait , PJ4 / Sheeva, Apple Swift ( A6 , A6X ) | Solicitud | |
ARMv8-A | 32 | ARM Cortex-A32 [68] | Solicitud | ||
64 /32 | ARM Cortex-A35 , [69] ARM Cortex-A53 , ARM Cortex-A57 , [70] ARM Cortex-A72 , [71] ARM Cortex-A73 [72] | X-Gene , Nvidia Denver 1/2 , Cavium ThunderX , AMD K12 , Apple Cyclone ( A7 ) / Typhoon ( A8 , A8X ) / Twister ( A9 , A9X ) / Hurricane + Zephyr ( A10 , A10X ), Qualcomm Kryo , Samsung M1 / M2 ("Mangosta") / M3 ("Suricata") | Solicitud | [73] [74] [75] [76] [77] [78] | |
64 | ARM Cortex-A34 [79] | Solicitud | |||
ARMv8.1-A | 64/32 | TBA | Cavium ThunderX2 | Solicitud | [80] |
ARMv8.2-A | 64/32 | ARM Cortex-A55 , [81] ARM Cortex-A75 , [82] ARM Cortex-A76 , [83] ARM Cortex-A77 , ARM Cortex-A78 , ARM Cortex-X1 , ARM Neoverse N1 | Nvidia Carmel , Samsung M4 ("Cheetah"), Fujitsu A64FX (ARMv8 SVE de 512 bits) | Solicitud | [84] [85] [86] |
64 | ARM Cortex-A65 , ARM Neoverse E1 con subprocesos múltiples simultáneos (SMT), ARM Cortex-A65AE [87] (también tiene, por ejemplo, ARMv8.4 Dot Product; hecho para tareas críticas de seguridad como sistemas avanzados de asistencia al conductor (ADAS)) | Apple Monsoon + Mistral ( A11 ) (septiembre de 2017) | Solicitud | ||
ARMv8.3-A | 64/32 | TBA | Solicitud | ||
64 | TBA | Apple Vortex + Tempest ( A12 , A12X , A12Z ), Marvell ThunderX3 (v8.3 +) [88] | Solicitud | ||
ARMv8.4-A | 64/32 | TBA | Solicitud | ||
64 | TBA | Apple Lightning + Thunder ( A13 ) | Solicitud | ||
ARMv8.5-A | 64/32 | TBA | Solicitud | ||
64 | TBA | Tormenta de fuego de manzana + Tormenta de hielo ( A14 , M1 ) | Solicitud | ||
ARMv8.6-A | 64 | TBA | Solicitud |
- ^ a b Aunque la mayoría de las rutas de datos y los registros de CPU en los primeros procesadores ARM eran de 32 bits, la memoria direccionable estaba limitada a 26 bits ; con bits superiores, entonces, usados para banderas de estado en el registro del contador del programa.
- ^ a b c ARMv3 incluyó un modo de compatibilidad para admitir las direcciones de 26 bits de versiones anteriores de la arquitectura. Este modo de compatibilidad es opcional en ARMv4 y se eliminó por completo en ARMv5.
Arm Holdings proporciona una lista de proveedores que implementan núcleos ARM en su diseño (productos estándar para aplicaciones específicas (ASSP), microprocesadores y microcontroladores). [89]
Aplicaciones de ejemplo de núcleos ARM
Los núcleos ARM se utilizan en varios productos, especialmente en PDA y teléfonos inteligentes . Algunos de computación ejemplos son Microsoft 's primera superficie generación , Superficie 2 y Pocket PC dispositivos (siguientes 2002 ), de Apple ' s iPads y Asus 's Eee Pad Transformer los Tablet PC , y varios Chromebook ordenadores portátiles. Otros incluyen de Apple iPhone y los teléfonos inteligentes y iPod reproductores multimedia portátiles , Canon PowerShot cámaras digitales , interruptor de Nintendo híbrida y 3DS consolas portátiles , y TomTom giro a su vez los sistemas de navegación .
En 2005, Arm Holdings participó en el desarrollo de la computadora SpiNNaker de la Universidad de Manchester , que utilizaba núcleos ARM para simular el cerebro humano . [90]
Los chips ARM también se utilizan en Raspberry Pi , BeagleBoard , BeagleBone , PandaBoard y otras computadoras de placa única , porque son muy pequeños, económicos y consumen muy poca energía.
Arquitectura de 32 bits
La arquitectura ARM de 32 bits, como ARMv7-A (que implementa AArch32; consulte la sección sobre ARMv8-A para obtener más información), fue la arquitectura más utilizada en dispositivos móviles a partir de 2011.[actualizar]. [51]
Desde 1995, el ARM Architecture Reference Manual [91] ha sido la principal fuente de documentación sobre la arquitectura del procesador ARM y el conjunto de instrucciones, distinguiendo las interfaces que todos los procesadores ARM deben soportar (como la semántica de instrucciones) de los detalles de implementación que pueden variar. La arquitectura ha evolucionado con el tiempo, y la versión siete de la arquitectura, ARMv7, define tres "perfiles" de arquitectura:
- Perfil A, el perfil de "Aplicación", implementado por núcleos de 32 bits en la serie Cortex-A y por algunos núcleos que no son ARM
- Perfil R, el perfil "en tiempo real", implementado por núcleos en la serie Cortex-R
- Perfil M, el perfil "Microcontrolador", implementado por la mayoría de los núcleos de la serie Cortex-M
Aunque los perfiles de arquitectura se definieron por primera vez para ARMv7, ARM definió posteriormente la arquitectura ARMv6-M (utilizada por Cortex M0 / M0 + / M1 ) como un subconjunto del perfil ARMv7-M con menos instrucciones.
Modos de CPU
Excepto en el perfil M, la arquitectura ARM de 32 bits especifica varios modos de CPU, según las características de la arquitectura implementada. En cualquier momento, la CPU puede estar en un solo modo, pero puede cambiar de modo debido a eventos externos (interrupciones) o mediante programación. [92]
- Modo de usuario: el único modo sin privilegios.
- Modo FIQ: un modo privilegiado que se ingresa siempre que el procesador acepta una solicitud de interrupción rápida .
- Modo IRQ: un modo privilegiado que se ingresa siempre que el procesador acepta una interrupción.
- Modo supervisor (svc): un modo privilegiado que se ingresa siempre que se reinicia la CPU o cuando se ejecuta una instrucción SVC.
- Modo de cancelación: un modo privilegiado que se ingresa siempre que ocurre una excepción de aborto de captación previa o de cancelación de datos.
- Modo indefinido: un modo privilegiado que se ingresa siempre que ocurre una excepción de instrucción indefinida.
- Modo de sistema (ARMv4 y superior): el único modo privilegiado al que no se accede mediante una excepción. Solo se puede ingresar ejecutando una instrucción que escribe explícitamente en los bits de modo del Registro de estado del programa actual (CPSR) desde otro modo privilegiado (no desde el modo de usuario).
- Modo de monitor (ARMv6 y ARMv7 Security Extensions, ARMv8 EL3): se introduce un modo de monitor para admitir la extensión TrustZone en núcleos ARM.
- Modo Hyp (ARMv7 Virtualization Extensions, ARMv8 EL2): un modo de hipervisor que admite los requisitos de virtualización de Popek y Goldberg para el funcionamiento no seguro de la CPU. [93] [94]
- Modo de subproceso (ARMv6-M, ARMv7-M, ARMv8-M): un modo que se puede especificar como privilegiado o no privilegiado. Si se utiliza Main Stack Pointer (MSP) o Process Stack Pointer (PSP) también se puede especificar en el registro CONTROL con acceso privilegiado. Este modo está diseñado para tareas de usuario en un entorno RTOS, pero normalmente se usa en bare-metal para super-loop.
- Modo de controlador (ARMv6-M, ARMv7-M, ARMv8-M): un modo dedicado para el manejo de excepciones (excepto el RESET que se maneja en modo Thread). El modo de controlador siempre usa MSP y funciona en un nivel privilegiado.
Conjunto de instrucciones
La implementación ARM original (y subsiguiente) fue cableada sin microcódigo , como el procesador 6502 de 8 bits mucho más simple usado en microcomputadoras Acorn anteriores.
La arquitectura ARM de 32 bits (y la arquitectura de 64 bits en su mayor parte) incluye las siguientes características RISC:
- Arquitectura de carga / almacenamiento .
- No hay soporte para accesos a memoria no alineados en la versión original de la arquitectura. ARMv6 y posteriores, excepto algunas versiones de microcontroladores, admiten accesos no alineados para instrucciones de carga / almacenamiento de media palabra y de una sola palabra con algunas limitaciones, como la atomicidad no garantizada . [95] [96]
- Archivo de registro uniforme de 16 × 32 bits (incluido el contador de programa, el puntero de pila y el registro de enlace).
- Ancho de instrucción fijo de 32 bits para facilitar la decodificación y la canalización , a costa de una menor densidad de código . Más tarde, el conjunto de instrucciones Thumb agregó instrucciones de 16 bits y aumentó la densidad del código.
- Ejecución mayoritariamente de ciclo de reloj único.
Para compensar el diseño más simple, en comparación con procesadores como Intel 80286 y Motorola 68020 , se utilizaron algunas características de diseño adicionales:
- La ejecución condicional de la mayoría de las instrucciones reduce la sobrecarga de las ramas y compensa la falta de un predictor de ramas en los primeros chips.
- Las instrucciones aritméticas modifican los códigos de condición solo cuando se desea.
- El cambiador de barril de 32 bits se puede utilizar sin penalización de rendimiento con la mayoría de las instrucciones aritméticas y cálculos de direcciones.
- Tiene potentes modos de direccionamiento indexados .
- Un registro de enlace admite llamadas a funciones de hoja rápidas.
- Un subsistema de interrupción de 2 niveles de prioridad simple pero rápido tiene bancos de registros conmutados.
Instrucciones aritméticas
ARM incluye operaciones aritméticas de números enteros para sumar, restar y multiplicar; algunas versiones de la arquitectura también admiten operaciones de división.
ARM admite multiplicaciones de 32 bits × 32 bits con un resultado de 32 bits o un resultado de 64 bits, aunque los núcleos Cortex-M0 / M0 + / M1 no admiten resultados de 64 bits. [97] Algunos núcleos ARM también admiten multiplicaciones de 16 bits × 16 bits y de 32 bits × 16 bits.
Las instrucciones de división solo se incluyen en las siguientes arquitecturas ARM:
- Las arquitecturas ARMv7-M y ARMv7E-M siempre incluyen instrucciones de división. [98]
- La arquitectura ARMv7-R siempre incluye instrucciones de división en el conjunto de instrucciones Thumb, pero opcionalmente en su conjunto de instrucciones de 32 bits. [99]
- La arquitectura ARMv7-A incluye opcionalmente las instrucciones de división. Las instrucciones pueden no implementarse, o implementarse solo en el conjunto de instrucciones Thumb, o implementarse en los conjuntos de instrucciones Thumb y ARM, o implementarse si se incluyen las Extensiones de virtualización. [99]
Registros
usr | sys | svc | abt | 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 |
Los registros R0 a R7 son iguales en todos los modos de CPU; nunca están bancarizados.
Los registros R8 a R12 son iguales en todos los modos de CPU excepto en el modo FIQ. El modo FIQ tiene sus propios registros distintivos de R8 a R12.
R13 y R14 se almacenan en todos los modos de CPU con privilegios, excepto en el modo de sistema. Es decir, cada modo al que se puede ingresar debido a una excepción tiene su propio R13 y R14. Estos registros generalmente contienen el puntero de pila y la dirección de retorno de las llamadas a funciones, respectivamente.
Alias:
- R13 también se conoce como SP, el puntero de pila .
- R14 también se conoce como LR, el registro de enlace .
- R15 también se conoce como PC, el contador de programas .
El Registro de estado del programa actual (CPSR) tiene los siguientes 32 bits. [100]
- M (bits 0–4) son los bits del modo de procesador.
- T (bit 5) es el bit de estado Thumb.
- F (bit 6) es el bit de deshabilitación de FIQ.
- I (bit 7) es el bit de deshabilitación de IRQ.
- A (bit 8) es el bit de desactivación de aborto de datos imprecisos.
- E (bit 9) es el bit de endianidad de datos.
- IT (bits 10-15 y 25-26) son los bits de estado si-entonces.
- GE (bits 16-19) son los bits mayores o iguales a.
- DNM (bits 20-23) es el bit de no modificar.
- J (bit 24) es el bit de estado de Java.
- Q (bit 27) es el bit de desbordamiento pegajoso.
- V (bit 28) es el bit de desbordamiento.
- C (bit 29) es el bit de llevar / pedir prestado / extender.
- Z (bit 30) es el bit cero.
- N (bit 31) es el bit negativo / menor que.
Ejecución condicional
Casi todas las instrucciones ARM tienen una característica de ejecución condicional llamada predicación , que se implementa con un selector de código de condición de 4 bits (el predicado). Para permitir la ejecución incondicional, uno de los códigos de cuatro bits hace que la instrucción se ejecute siempre. La mayoría de las demás arquitecturas de CPU solo tienen códigos de condición en las instrucciones de rama. [101]
Aunque el predicado ocupa cuatro de los 32 bits en un código de instrucción y, por lo tanto, reduce significativamente los bits de codificación disponibles para los desplazamientos en las instrucciones de acceso a la memoria, evita las instrucciones de bifurcación al generar código para ifdeclaraciones pequeñas . Además de eliminar las propias instrucciones de bifurcación, esto preserva la canalización de búsqueda / decodificación / ejecución al costo de solo un ciclo por instrucción omitida.
Un algoritmo que proporciona un buen ejemplo de ejecución condicional es el algoritmo euclidiano basado en restas para calcular el máximo común divisor . En el lenguaje de programación C , el algoritmo se puede escribir como:
int gcd ( int a , int b ) { while ( a ! = b ) // Entramos en el ciclo cuando a b, pero no cuando a == b if ( a > b ) // Cuando a> b hacemos esto a - = b ; else // Cuando a b - = a ; return a ; }
El mismo algoritmo se puede reescribir de una manera más cercana a las instrucciones ARM de destino como:
loop : // Compara a y b GT = a > b ; LT = a < b ; NE = a ! = B ; // Realizar operaciones basadas en los resultados de las banderas if ( GT ) a - = b ; // Restar * solo * si es mayor que si ( LT ) b - = a ; // Restar * solo * si es menor que si ( NE ) goto loop ; // Bucle * solo * si los valores comparados no son iguales return a ;
y codificado en lenguaje ensamblador como:
; asignar a al registro r0, b al bucle r1 : CMP r0 , r1 ; establecer la condición "NE" si (a! = b) ,; "GT" si (a> b) ,; o "LT" si (a )> SUBGT r0 , r0 , r1 ; si "GT" (mayor que), a = ab; SUBLT r1 , r1 , r0 ; si "LT" (menor que), b = ba; Bucle BNE ; si "NE" (no igual), entonces bucle B lr ; si no se ingresa al bucle, podemos regresar con seguridad
que evita las ramas alrededor de las cláusulas then
y else
. Si r0
y r1
son iguales, entonces ninguna de las SUB
instrucciones se ejecutará, eliminando la necesidad de una rama condicional para implementar la while
verificación en la parte superior del ciclo, por ejemplo, si se SUBLE
ha usado (menor o igual que).
Una de las formas en que el código Thumb proporciona una codificación más densa es eliminar el selector de cuatro bits de las instrucciones que no son de rama.
Otras características
Otra característica del conjunto de instrucciones es la capacidad de plegar cambios y rotaciones en las instrucciones de "procesamiento de datos" (aritmética, lógica y movimiento de registro-registro), de modo que, por ejemplo, la instrucción C
a + = ( j << 2 );
podría traducirse como una instrucción de ciclo único de una sola palabra: [102]
AÑADIR Ra , Ra , Rj , LSL # 2
Esto da como resultado que el programa ARM típico sea más denso de lo esperado con menos accesos a la memoria; por lo tanto, la tubería se utiliza de manera más eficiente.
El procesador ARM también tiene características que rara vez se ven en otras arquitecturas RISC, como el direccionamiento relativo a la PC (de hecho, en el ARM de 32 bits [1] la PC es uno de sus 16 registros) y los modos de direccionamiento previo y posterior al incremento.
El conjunto de instrucciones ARM ha aumentado con el tiempo. Algunos procesadores ARM tempranos (antes de ARM7TDMI), por ejemplo, no tienen instrucciones para almacenar una cantidad de dos bytes.
Pipelines y otros problemas de implementación
El ARM7 y las implementaciones anteriores tienen una canalización de tres etapas ; las etapas son buscar, decodificar y ejecutar. Los diseños de mayor rendimiento, como el ARM9, tienen tuberías más profundas: Cortex-A8 tiene trece etapas. Los cambios de implementación adicionales para un mayor rendimiento incluyen un sumador más rápido y una lógica de predicción de rama más extensa . La diferencia entre los núcleos ARM7DI y ARM7DMI, por ejemplo, fue un multiplicador mejorado; de ahí la "M" añadida.
Coprocesadores
La arquitectura ARM (pre-ARMv8) proporciona una forma no intrusiva de extender el conjunto de instrucciones usando "coprocesadores" que pueden direccionarse usando MCR, MRC, MRRC, MCRR e instrucciones similares. El espacio del coprocesador está dividido lógicamente en 16 coprocesadores con números del 0 al 15, el coprocesador 15 (cp15) está reservado para algunas funciones de control típicas como la gestión de cachés y la operación de MMU en procesadores que tienen uno.
En las máquinas basadas en ARM, los dispositivos periféricos generalmente se conectan al procesador mapeando sus registros físicos en el espacio de memoria ARM, en el espacio del coprocesador o conectándose a otro dispositivo (un bus) que a su vez se conecta al procesador. Los accesos a los coprocesadores tienen una latencia más baja, por lo que algunos periféricos, por ejemplo, un controlador de interrupciones XScale, son accesibles de ambas formas: a través de la memoria y a través de los coprocesadores.
En otros casos, los diseñadores de chips solo integran hardware mediante el mecanismo del coprocesador. Por ejemplo, un motor de procesamiento de imágenes podría ser un pequeño núcleo ARM7TDMI combinado con un coprocesador que tiene operaciones especializadas para soportar un conjunto específico de primitivas de transcodificación de HDTV.
Depuración
Todos los procesadores ARM modernos incluyen funciones de depuración de hardware, lo que permite a los depuradores de software realizar operaciones como detener, avanzar y señalar el código a partir del reinicio. Estas instalaciones se construyen utilizando el soporte JTAG , aunque algunos núcleos más nuevos admiten opcionalmente el propio protocolo "SWD" de dos cables de ARM. En los núcleos ARM7TDMI, la "D" representaba el soporte de depuración de JTAG y la "I" representaba la presencia de un módulo de depuración "EmbeddedICE". Para las generaciones principales de ARM7 y ARM9, EmbeddedICE sobre JTAG era un estándar de depuración de facto, aunque no estaba garantizado arquitectónicamente.
La arquitectura ARMv7 define las instalaciones de depuración básicas a nivel arquitectónico. Estos incluyen puntos de interrupción, puntos de observación y ejecución de instrucciones en un "modo de depuración"; instalaciones similares también estaban disponibles con EmbeddedICE. Se admiten tanto la depuración en modo "detener" como en "monitor". El mecanismo de transporte real utilizado para acceder a las instalaciones de depuración no se especifica arquitectónicamente, pero las implementaciones generalmente incluyen soporte JTAG.
Existe una arquitectura de depuración ARM "CoreSight" separada, que no es requerida arquitectónicamente por los procesadores ARMv7.
Puerto de acceso de depuración
El puerto de acceso de depuración (DAP) es una implementación de una interfaz de depuración ARM. [103] Hay dos implementaciones admitidas diferentes, el puerto de depuración JTAG de cable serie (SWJ-DP) y el puerto de depuración de cable serie (SW-DP). [104] CMSIS-DAP es una interfaz estándar que describe cómo varios software de depuración en una PC host pueden comunicarse a través de USB con el firmware que se ejecuta en un depurador de hardware, que a su vez habla por SWD o JTAG con una CPU ARM Cortex habilitada para CoreSight. [105] [106] [107] [108]
Instrucciones de mejora de DSP
Para mejorar la arquitectura ARM para el procesamiento de señales digitales y aplicaciones multimedia, se agregaron instrucciones DSP al conjunto. [109] Estos se indican con una "E" en el nombre de las arquitecturas ARMv5TE y ARMv5TEJ. Las variantes E también implican T, D, M e I.
Las nuevas instrucciones son comunes en arquitecturas de procesadores de señales digitales (DSP). Incluyen variaciones de multiplicar-acumular con signo , sumar y restar saturados y contar ceros iniciales.
Extensiones SIMD para multimedia
Introducido en la arquitectura ARMv6, fue un precursor de Advanced SIMD, también conocido como Neon . [110]
Jazelle
Jazelle DBX (Direct Bytecode eXecution) es una técnica que permite que el código de bytes de Java se ejecute directamente en la arquitectura ARM como un tercer estado de ejecución (y conjunto de instrucciones) junto con el modo ARM y Thumb existente. El soporte para este estado está representado por la "J" en la arquitectura ARMv5TEJ y en los nombres de núcleo ARM9EJ-S y ARM7EJ-S. Se requiere soporte para este estado a partir de ARMv6 (excepto para el perfil ARMv7-M), aunque los núcleos más nuevos solo incluyen una implementación trivial que no proporciona aceleración de hardware.
Pulgar
Para mejorar la densidad del código compilado, los procesadores desde ARM7TDMI (lanzado en 1994 [111] ) han presentado el conjunto de instrucciones Thumb , que tienen su propio estado. (La "T" en "TDMI" indica la función Thumb.) Cuando está en este estado, el procesador ejecuta el conjunto de instrucciones Thumb, una codificación compacta de 16 bits para un subconjunto del conjunto de instrucciones ARM. [112] La mayoría de las instrucciones de Thumb se asignan directamente a las instrucciones ARM normales. El ahorro de espacio proviene de hacer implícitos algunos de los operandos de la instrucción y limitar el número de posibilidades en comparación con las instrucciones ARM ejecutadas en el estado de conjunto de instrucciones ARM.
En Thumb, los códigos de operación de 16 bits tienen menos funcionalidad. Por ejemplo, solo las ramas pueden ser condicionales y muchos códigos de operación están restringidos para acceder solo a la mitad de todos los registros de propósito general de la CPU. Los códigos de operación más cortos brindan una densidad de código mejorada en general, aunque algunas operaciones requieren instrucciones adicionales. En situaciones en las que el puerto de memoria o el ancho del bus está restringido a menos de 32 bits, los códigos de operación Thumb más cortos permiten un mayor rendimiento en comparación con el código ARM de 32 bits, ya que es posible que sea necesario cargar menos código de programa en el procesador sobre el ancho de banda de memoria restringido.
A diferencia de las arquitecturas de procesador con instrucciones de longitud variable (16 o 32 bits), como Cray-1 y Hitachi SuperH , los conjuntos de instrucciones ARM y Thumb existen de forma independiente entre sí. El hardware integrado, como Game Boy Advance , suele tener una pequeña cantidad de RAM accesible con una ruta de datos completa de 32 bits; a la mayoría se accede a través de una ruta de datos secundaria de 16 bits o más estrecha. En esta situación, generalmente tiene sentido compilar el código Thumb y optimizar manualmente algunas de las secciones más intensivas de la CPU utilizando instrucciones ARM completas de 32 bits, colocando estas instrucciones más amplias en la memoria accesible del bus de 32 bits.
El primer procesador con un decodificador de instrucciones Thumb fue el ARM7TDMI. Todas las familias ARM9 y posteriores, incluida XScale, han incluido un decodificador de instrucciones Thumb. Incluye instrucciones adoptadas de Hitachi SuperH (1992), que obtuvo la licencia de ARM. [113] Las familias de procesadores más pequeñas de ARM (Cortex M0 y M1) implementan solo el conjunto de instrucciones Thumb de 16 bits para un rendimiento máximo en aplicaciones de menor costo.
Pulgar-2
La tecnología Thumb-2 se introdujo en 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, produciendo así un conjunto de instrucciones de longitud variable . Un objetivo declarado para Thumb-2 era lograr una densidad de código similar a Thumb con un rendimiento similar al conjunto de instrucciones ARM en la memoria de 32 bits.
Thumb-2 amplía el conjunto de instrucciones Thumb con manipulación de campo de bits, ramas de tabla y ejecución condicional. Al mismo tiempo, el conjunto de instrucciones ARM se amplió para mantener una funcionalidad equivalente en ambos conjuntos de instrucciones. Un nuevo "Lenguaje ensamblador unificado" (UAL) admite la generación de instrucciones Thumb o ARM desde el mismo código fuente; Las versiones de Thumb que se ven en los procesadores ARMv7 son esencialmente tan capaces como el código ARM (incluida la capacidad de escribir controladores de interrupciones). Esto requiere un poco de cuidado y el uso de una nueva instrucción "IT" (si-entonces), que permite ejecutar hasta cuatro instrucciones sucesivas basándose en una condición probada, o en su inversa. Al compilar en código ARM, esto se ignora, pero al compilar en Thumb genera una instrucción real. 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 a través de ITE 'T' (entonces) ; si no r0 = r3; MOVNE r0 , r3 ; BRAZO: condicional; Pulgar: condición a través de ITE 'E' (más) ; recuerde que la instrucción Thumb MOV no tiene bits para codificar "EQ" o "NE".
Todos los chips ARMv7 admiten el conjunto de instrucciones Thumb. Todos los chips de la serie Cortex-A, la serie Cortex-R y la serie ARM11 admiten tanto el "estado del conjunto de instrucciones ARM" como el "estado del conjunto de instrucciones del pulgar", mientras que los chips de la serie Cortex-M sólo admiten el conjunto de instrucciones del pulgar. [114] [115] [116]
Entorno de ejecución de Thumb (ThumbEE)
ThumbEE (llamado erróneamente Thumb-2EE en alguna documentación de ARM), que se comercializó como Jazelle RCT (Runtime Compilation Target), se anunció en 2005, apareciendo por primera vez en el procesador Cortex-A8 . ThumbEE es un cuarto estado de conjunto de instrucciones, que realiza pequeños cambios en el conjunto de instrucciones extendido Thumb-2. Estos cambios hacen que el conjunto de instrucciones sea especialmente adecuado para el código generado en tiempo de ejecución (por ejemplo, mediante la compilación JIT ) en entornos de ejecución gestionados . ThumbEE es un objetivo para lenguajes como Java , C # , Perl y Python , y permite a los compiladores JIT generar código compilado más pequeño sin afectar el rendimiento. [ cita requerida ]
Las nuevas características proporcionadas por ThumbEE incluyen verificaciones automáticas de puntero nulo en cada instrucción de carga y almacenamiento, una instrucción para realizar una verificación de límites de matriz e instrucciones especiales que llaman a un controlador. Además, debido a que utiliza la tecnología Thumb-2, ThumbEE proporciona acceso a los registros r8-r15 (donde se mantiene el estado de Java VM Jazelle / DBX). [117] Los controladores son pequeñas secciones de código frecuentemente llamado, comúnmente utilizado para implementar lenguajes de alto nivel, como la asignación de memoria para un nuevo objeto. Estos cambios provienen de la reutilización de un puñado de códigos de operación y de saber que el núcleo está en el nuevo estado ThumbEE.
El 23 de noviembre de 2011, Arm Holdings desaprobó el uso del conjunto de instrucciones ThumbEE, [118] y ARMv8 elimina el soporte para ThumbEE.
Punto flotante (VFP)
La tecnología VFP (Vector Floating Point) es una extensión de coprocesador de unidad de punto flotante (FPU) para la arquitectura ARM [119] (implementada de manera diferente en ARMv8 - coprocesadores no definidos allí). Proporciona cálculo de punto flotante de precisión simple y doble precisión de bajo costo totalmente compatible con el estándar ANSI / IEEE Std 754-1985 para aritmética de punto flotante binario . VFP proporciona computación de punto flotante adecuado para un amplio espectro de aplicaciones como PDA, teléfonos inteligentes, compresión y descompresión de voz, gráficos tridimensionales y audio digital, impresoras, decodificadores y aplicaciones automotrices. La arquitectura VFP estaba destinada a admitir la ejecución de instrucciones breves de "modo vectorial", pero estas operaban en cada elemento vectorial de forma secuencial y, por lo tanto, no ofrecían el rendimiento de un verdadero paralelismo vectorial de instrucción única y datos múltiples (SIMD). Por lo tanto, este modo vectorial se eliminó poco después de su introducción, [120] para ser reemplazado por el SIMD avanzado mucho más poderoso, también conocido como Neon .
Algunos dispositivos como el ARM Cortex-A8 tienen un módulo VFPLite reducido en lugar de un módulo VFP completo, y requieren aproximadamente diez veces más ciclos de reloj por operación de flotación. [121] La arquitectura anterior a ARMv8 implementó punto flotante / SIMD con la interfaz del coprocesador. Otras unidades de punto flotante y / o SIMD que se encuentran en los procesadores basados en ARM que utilizan la interfaz del coprocesador incluyen FPA , FPE, iwMMXt , algunas de las cuales se implementaron en software mediante trapping pero podrían haberse implementado en hardware. Proporcionan algunas de las mismas funciones que VFP, pero no son compatibles con el código de operación . FPA10 también proporciona precisión extendida , pero implementa el redondeo correcto (requerido por IEEE 754) solo en precisión simple. [122]
- VFPv1
- Obsoleto
- VFPv2
- An optional extension to the ARM instruction set in the ARMv5TE, ARMv5TEJ and ARMv6 architectures. VFPv2 has 16 64-bit FPU registers.
- VFPv3 or VFPv3-D32
- Implemented on most Cortex-A8 and A9 ARMv7 processors. It is backwards compatible with VFPv2, except that it cannot trap floating-point exceptions. VFPv3 has 32 64-bit FPU registers as standard, adds VCVT instructions to convert between scalar, float and double, adds immediate mode to VMOV such that constants can be loaded into FPU registers.
- VFPv3-D16
- As above, but with only 16 64-bit FPU registers. Implemented on Cortex-R4 and R5 processors and the Tegra 2 (Cortex-A9).
- VFPv3-F16
- Uncommon; it supports IEEE754-2008 half-precision (16-bit) floating point as a storage format.
- VFPv4 or VFPv4-D32
- Implemented on Cortex-A12 and A15 ARMv7 processors, Cortex-A7 optionally has VFPv4-D32 in the case of an FPU with Neon. [123] VFPv4 has 32 64-bit FPU registers as standard, adds both half-precision support as a storage format and fused multiply-accumulate instructions to the features of VFPv3.
- VFPv4-D16
- As above, but it has only 16 64-bit FPU registers. Implemented on Cortex-A5 and A7 processors in the case of an FPU without Neon. [123]
- VFPv5-D16-M
- Implemented on Cortex-M7 when single and double-precision floating-point core option exists.
In Debian GNU/Linux, and derivatives such as Ubuntu and Linux Mint, armhf (ARM hard float) refers to the ARMv7 architecture including the additional VFP3-D16 floating-point hardware extension (and Thumb-2) above. Software packages and cross-compiler tools use the armhf vs. arm/armel suffixes to differentiate.[124]
Advanced SIMD (Neon)
The Advanced SIMD extension (aka Neon or "MPE" Media Processing Engine) is a combined 64- and 128-bit SIMD instruction set that provides standardised acceleration for media and signal processing applications. Neon is included in all Cortex-A8 devices, but is optional in Cortex-A9 devices.[125] Neon can execute MP3 audio decoding on CPUs running at 10 MHz, and can run the GSM adaptive multi-rate (AMR) speech codec at 13 MHz. It features a comprehensive instruction set, separate register files, and independent execution hardware.[126] Neon supports 8-, 16-, 32-, and 64-bit integer and single-precision (32-bit) floating-point data and SIMD operations for handling audio and video processing as well as graphics and gaming processing. In Neon, the SIMD supports up to 16 operations at the same time. The Neon hardware shares the same floating-point registers as used in VFP. Devices such as the ARM Cortex-A8 and Cortex-A9 support 128-bit vectors, but will execute with 64 bits at a time,[121] whereas newer Cortex-A15 devices can execute 128 bits at a time.[127][128]
A quirk of Neon in ARMv7 devices is that it flushes all subnormal numbers to zero, and as a result the GCC compiler will not use it unless -funsafe-math-optimizations
, which allows losing denormals, is turned on. "Enhanced" Neon defined since ARMv8 does not have this quirk, but as of GCC 8.2 the same flag is still required to enable Neon instructions.[129] On the other hand, GCC does consider Neon safe on AArch64 for ARMv8.
ProjectNe10 is ARM's first open-source project (from its inception; while they acquired an older project, now known as Mbed TLS). The Ne10 library is a set of common, useful functions written in both Neon and C (for compatibility). The library was created to allow developers to use Neon optimisations without learning Neon, but it also serves as a set of highly optimised Neon intrinsic and assembly code examples for common DSP, arithmetic, and image processing routines. The source code is available on GitHub.[130]
ARM Helium technology
Helium is the M-Profile Vector Extension (MVE). It adds more than 150 scalar and vector instructions.[131]
Security extensions
TrustZone (for Cortex-A profile)
The Security Extensions, marketed as TrustZone Technology, is in ARMv6KZ and later application profile architectures. It provides a low-cost alternative to adding another dedicated security core to an SoC, by providing two virtual processors backed by hardware based access control. This lets the application core switch between two states, referred to as worlds (to reduce confusion with other names for capability domains), in order to prevent information from leaking from the more trusted world to the less trusted world. This world switch is generally orthogonal to all other capabilities of the processor, thus each world can operate independently of the other while using the same core. Memory and peripherals are then made aware of the operating world of the core and may use this to provide access control to secrets and code on the device.[132]
Typically, a rich operating system is run in the less trusted world, with smaller security-specialised code in the more trusted world, aiming to reduce the attack surface. Typical applications include DRM functionality for controlling the use of media on ARM-based devices,[133] and preventing any unapproved use of the device.
In practice, since the specific implementation details of proprietary TrustZone implementations have not been publicly disclosed for review, it is unclear what level of assurance is provided for a given threat model, but they are not immune from attack.[134][135]
Open Virtualization[136] is an open source implementation of the trusted world architecture for TrustZone.
AMD has licensed and incorporated TrustZone technology into its Secure Processor Technology.[137] Enabled in some but not all products, AMD's APUs include a Cortex-A5 processor for handling secure processing.[138][139][140] In fact, the Cortex-A5 TrustZone core had been included in earlier AMD products, but was not enabled due to time constraints.[139]
Samsung Knox uses TrustZone for purposes such as detecting modifications to the kernel.[141]
TrustZone for ARMv8-M (for Cortex-M profile)
The Security Extension, marketed as TrustZone for ARMv8-M Technology, was introduced in the ARMv8-M architecture. While containing similar concepts to TrustZone for ARMv8-A, it has a different architectural design, as world switching is performed using branch instructions instead of using exceptions. It also supports safe interleaved interrupt handling from either world regardless of the current security state. Together these features provide low latency calls to the secure world and responsive interrupt handling. ARM provides a reference stack of secure world code in the form of Trusted Firmware for M and PSA Certified.
No-execute page protection
As of ARMv6, the ARM architecture supports no-execute page protection, which is referred to as XN, for eXecute Never.[142]
Large Physical Address Extension (LPAE)
The Large Physical Address Extension (LPAE), which extends the physical address size from 32 bits to 40 bits, was added to the ARMv7-A architecture in 2011.[143] Physical address size is larger, 44 bits, in Cortex-A75 and Cortex-A65AE.[144]
ARMv8-R and ARMv8-M
The ARMv8-R and ARMv8-M architectures, announced after the ARMv8-A architecture, share some features with ARMv8-A, but don't include any 64-bit AArch64 instructions.
ARMv8.1-M
The ARMv8.1-M architecture, announced in February 2019, is an enhancement of the ARMv8-M architecture. It brings new features including:
- A new vector instruction set extension. The M-Profile Vector Extension (MVE), or Helium, is for signal processing and machine learning applications.
- Additional instruction set enhancements for loops and branches (Low Overhead Branch Extension).
- Instructions for half-precision floating-point support.
- Instruction set enhancement for TrustZone management for Floating Point Unit (FPU).
- New memory attribute in the Memory Protection Unit (MPU).
- Enhancements in debug including Performance Monitoring Unit (PMU), Unprivileged Debug Extension, and additional debug support focus on signal processing application developments.
- Reliability, Availability and Serviceability (RAS) extension.
Arquitectura de 64/32 bits
ARMv8
ARMv8-A
Announced in October 2011,[3] ARMv8-A (often called ARMv8 while the ARMv8-R is also available) represents a fundamental change to the ARM architecture. It adds an optional 64-bit architecture (e.g. Cortex-A32 is a 32-bit ARMv8-A CPU[145] while most ARMv8-A CPUs support 64-bit), named "AArch64", and the associated new "A64" instruction set. AArch64 provides user-space compatibility with ARMv7-A, the 32-bit architecture, therein referred to as "AArch32" and the old 32-bit instruction set, now named "A32". The Thumb instruction set is referred to as "T32" and has no 64-bit counterpart. ARMv8-A allows 32-bit applications to be executed in a 64-bit OS, and a 32-bit OS to be under the control of a 64-bit hypervisor.[1] ARM announced their Cortex-A53 and Cortex-A57 cores on 30 October 2012.[70] Apple was the first to release an ARMv8-A compatible core in a consumer product (Apple A7 in iPhone 5S). AppliedMicro, using an FPGA, was the first to demo ARMv8-A.[146] The first ARMv8-A SoC from Samsung is the Exynos 5433 used in the Galaxy Note 4, which features two clusters of four Cortex-A57 and Cortex-A53 cores in a big.LITTLE configuration; but it will run only in AArch32 mode.[147]
To both AArch32 and AArch64, ARMv8-A makes VFPv3/v4 and advanced SIMD (Neon) standard. It also adds cryptography instructions supporting AES, SHA-1/SHA-256 and finite field arithmetic.[148] AArch64 was introduced in ARMv8-A and its subsequent revision. AArch64 is not included in the 32-bit ARMv8-R and ARMv8-M architectures.
ARMv8-R
Optional AArch64 support was added to the ARMv8-R profile, with the first ARM core implementing it being the Cortex-R82.[149] It adds the A64 instruction set.
ARMv9
ARMv9-A
Announced in March 2021, the updated architecture places a focus on secure execution and compartmentalisation.[150][151]
Sistema de brazo Listo
Arm SystemReady, previously known as Arm ServerReady, is a certification program that helps land the generic off-the-shelf operating systems and hypervisors on to the Arm-based systems from datacenter servers to industrial edge and IoT devices. The key building blocks of the program are the specifications for minimum hardware and firmware requirements that the operating systems and hypervisors can rely upon. These specifications are:
- Base System Architecture (BSA) and the market segment specific supplements (e.g., Server BSA supplement)
- Base Boot Requirements (BBR) and Base Boot Security Requirements (BBR)
These specifications are co-developed by Arm Holdings and its partners in the System Architecture Advisory Committee (SystemArchAC).
Architecture Compliance Suite (ACS) is the test tools that help to check the compliance of these specifications. The Arm SystemReady Requirements Specification documents the requirements of the certifications.
This program was introduced by Arm Holdings in 2020 at the first DevSummit event. Its predecessor Arm ServerReady was introduced in 2018 at the Arm TechCon event. This program currently includes four bands:
- SystemReady SR: this band is for servers that support operating systems and hypervisors that expect UEFI, ACPI and SMBIOS interfaces. Windows Server, Red Hat Enterprise Linux and VMware ESXi-Arm require these interfaces while other Linux and BSD distros can also support.[clarification needed]
- SystemReady LS: this band is for servers that hyperscalers use to support Linux operating systems that expect LinuxBoot firmware along with the ACPI and SMBIOS interfaces.
- SystemReady ES: this band is for the industrial edge and IoT devices that support operating systems and hypervisors that expect UEFI, ACPI and SMBIOS interfaces. Windows IoT Enterprise, Red Hat Enterprise Linux and VMware ESXi-Arm require these interfaces while other Linux and BSD distros can also support.[clarification needed]
- SystemReady IR: this band is for the industrial edge and IoT devices that support operating systems that expect UEFI and devicetree interfaces. Embedded Linux (e.g., Yocto) and some Linux/BSD distros (e.g., Fedora, Ubuntu, Debian and OpenSUSE) can also support.[clarification needed]
Certificado PSA
PSA Certified, previously known as Platform Security Architecture, is an architecture-agnostic security framework and evaluation scheme. It is intended to help secure Internet of Things (IoT) devices built on system-on-a-chip (SoC) processors.[152] It was introduced to increase security where a full trusted execution environment is too large or complex.[153]
The architecture was introduced by Arm Holdings in 2017 at the annual TechCon event.[154][155] Although the scheme is architecture agnostic, it was first implemented on Arm Cortex-M processor cores intended for microcontroller use. PSA Certified includes freely available threat models and security analyses that demonstrate the process for deciding on security features in common IoT products.[156] It also provides freely downloadable application programming interface (API) packages, architectural specifications, open-source firmware implementations, and related test suites.[157]
Following the development of the architecture security framework in 2017, the PSA Certified assurance scheme launched two years later at Embedded World in 2019.[158] PSA Certified offers a multi-level security evaluation scheme for chip vendors, OS providers and IoT device makers.[159] The Embedded World presentation introduced chip vendors to Level 1 Certification. A draft of Level 2 protection was presented at the same time.[160] Level 2 certification became a useable standard in February 2020.[161]
The certification was created by PSA Joint Stakeholders to enable a security-by-design approach for a diverse set of IoT products. PSA Certified specifications are implementation and architecture agnostic, as a result they can be applied to any chip, software or device.[162][160] The certification also removes industry fragmentation for IoT product manufacturers and developers.[163]
Soporte del sistema operativo
32-bit operating systems
Historical operating systems
The first 32-bit ARM-based personal computer, the Acorn Archimedes, was originally intended to run an ambitious operating system called ARX. The machines shipped with RISC OS which was also used on later ARM-based systems from Acorn and other vendors. Some early Acorn machines were also able to run a Unix port called RISC iX. (Neither is to be confused with RISC/os, a contemporary Unix variant for the MIPS architecture.)
Embedded operating systems
The 32-bit ARM architecture is supported by a large number of embedded and real-time operating systems, including:
- A2
- Android
- ChibiOS/RT
- Deos
- DRYOS
- eCos
- embOS
- FreeRTOS
- Integrity
- Linux
- Micro-Controller Operating Systems
- Mbed
- MINIX 3
- MQX
- Nucleus PLUS
- NuttX
- Operating System Embedded (OSE)
- OS-9[164]
- Pharos[165]
- Plan 9
- PikeOS[166]
- QNX
- RIOT
- RTEMS
- RTXC Quadros
- SCIOPTA[167]
- ThreadX
- TizenRT
- T-Kernel
- VxWorks
- Windows Embedded Compact
- Windows 10 IoT Core
- Zephyr
Mobile device operating systems
The 32-bit ARM architecture is the primary hardware environment for most mobile device operating systems such as:
- Android
- Bada
- BlackBerry OS/BlackBerry 10
- Chrome OS
- Firefox OS
- MeeGo
- Sailfish
- Symbian
- Tizen
- Ubuntu Touch
- webOS
- Windows RT
- Windows Mobile
- Windows Phone
- Windows 10 Mobile
Previously, but now discontinued:
- iOS 10 and earlier
Desktop/server operating systems
The 32-bit ARM architecture is supported by RISC OS and by multiple Unix-like operating systems including:
- FreeBSD
- NetBSD
- OpenBSD
- OpenSolaris[168]
- several Linux distributions, such as:
- Debian
- Armbian
- Gentoo
- Ubuntu
- Raspberry Pi OS (formerly Raspbian)
- Slackware
64-bit operating systems
Embedded operating systems
- Integrity[169]
- OSE[170]
- SCIOPTA[167]
- seL4[171]
- Pharos[165]
- FreeRTOS
- QNX[172]
- Zephyr
Mobile device operating systems
- iOS supports ARMv8-A in iOS 7 and later on 64-bit Apple SoCs. iOS 11 and later only supports 64-bit ARM processors and applications.
- Android supports ARMv8-A in Android Lollipop (5.0) and later.
Desktop/server operating systems
- Support for ARMv8-A was merged into the Linux kernel version 3.7 in late 2012.[173] ARMv8-A is supported by a number of Linux distributions, such as:
- Debian[174][175]
- Armbian
- Alpine Linux
- Ubuntu[176]
- Fedora[177]
- openSUSE[178]
- SUSE Linux Enterprise[179]
- RHEL[180]
- Support for ARMv8-A was merged into FreeBSD in late 2014.[181]
- OpenBSD has experimental ARMv8 support as of 2017.[182]
- NetBSD has ARMv8 support as of early 2018.[183]
- Windows 10 – runs 32-bit "x86 and 32-bit ARM applications",[184] as well as native ARM64 desktop apps.[185][186] Support for 64-bit ARM apps in the Microsoft Store has been available since November 2018.[187]
- macOS has ARM support starting with macOS Big Sur as of late 2020.[188] Rosetta 2 adds support for x86-64 applications but not virtualization of x86-64 computer platforms.[189]
Porting to 32- or 64-bit ARM operating systems
Windows applications recompiled for ARM and linked with Winelib – from the Wine project – can run on 32-bit or 64-bit ARM in Linux, FreeBSD or other compatible operating systems.[190][191] x86 binaries, e.g. when not specially compiled for ARM, have been demonstrated on ARM using QEMU with Wine (on Linux and more),[citation needed] but do not work at full speed or same capability as with Winelib.
Notas
- ^ Using 32-bit words, 4 Mbit/second corresponds to 1 MIPS.
- ^ Matt Evans notes that it appears the faster versions were simply binned higher, and appear to have no underlying changes.[36]
Ver también
- RISC
- RISC-V
- Apple-designed processors
- ARM big.LITTLE – ARM's heterogeneous computing architecture
- DynamIQ
- ARM Accredited Engineer – certification program
- ARMulator – an instruction set simulator
- Amber (processor core) – an open-source ARM-compatible processor core
- AMULET microprocessor – an asynchronous implementation of the ARM architecture
- Comparison of ARMv7-A cores
- Comparison of ARMv8-A cores
- Unicore – a 32-register architecture based heavily on a 32-bit ARM
- Meltdown (security vulnerability)[192]
- Spectre (security vulnerability)
Referencias
Citations
- ^ a b c d e Grisenthwaite, Richard (2011). "ARMv8-A Technology Preview" (PDF). Archived from the original (PDF) on 11 November 2011. Retrieved 31 October 2011.
- ^ "Procedure Call Standard for the ARM Architecture" (PDF). Arm Holdings. 30 November 2013. Retrieved 27 May 2013.
- ^ a b "ARM Discloses Technical Details of the Next Version of the ARM Architecture" (Press release). Arm Holdings. 27 October 2011. Archived from the original on 1 January 2019. Retrieved 20 September 2013.
- ^ "Announcing the ARM Neoverse N1 Platform". community.arm.com. Retrieved 8 April 2020.
- ^ a b "Some facts about the Acorn RISC Machine" Roger Wilson posting to comp.arch, 2 November 1988. Retrieved 25 May 2007.
- ^ a b Hachman, Mark (14 October 2002). "ARM Cores Climb into 3G Territory". ExtremeTech. Retrieved 24 May 2018.
- ^ Turley, Jim (18 December 2002). "The Two Percent Solution". Embedded. Retrieved 24 May 2018.
- ^ Cutress, Dr Ian (22 June 2020). "New #1 Supercomputer: Fujitsu's Fugaku and A64FX take Arm to the Top with 415 PetaFLOPs". www.anandtech.com. Retrieved 25 January 2021.
- ^ "The Arm ecosystem ships a record 6.7 billion Arm-based chips in a single quarter". Arm | The Architecture for the Digital World (Press release). Retrieved 28 February 2021.
- ^ "Architecting a smart world and powering Artificial Intelligence: ARM". The Silicon Review. 2019. Retrieved 8 April 2020.
- ^ "Enabling Mass IoT connectivity as ARM partners ship 100 billion chips". community.arm.com. Retrieved 8 April 2020.
the cumulative deployment of 100 billion chips, half of which shipped in the last four years. [..] why not a trillion or more? That is our target, seeing a trillion connected devices deployed over the next two decades.
- ^ "MCU Market on Migration Path to 32-bit and ARM-based Devices: 32-bit tops in sales; 16-bit leads in unit shipments". IC Insights. 25 April 2013. Retrieved 1 July 2014.
- ^ Turley, Jim (2002). "The Two Percent Solution". embedded.com.
- ^ "Arm Holdings eager for PC and server expansion". 1 February 2011.
- ^ Kerry McGuire Balanza (11 May 2010). "ARM from zero to billions in 25 short years". Arm Holdings. Retrieved 8 November 2012.
- ^ Fairbairn, Douglas (31 January 2012). "Oral History of Sophie Wilson" (PDF). Archived from the original (PDF) on 3 March 2016. Retrieved 2 February 2016.
- ^ Smith, Tony (30 November 2011). "The BBC Micro turns 30". The Register Hardware. Archived from the original on 12 December 2011. Retrieved 12 December 2011.
- ^ Ken Polsson. "Chronology of Microprocessors". Processortimeline.info. Retrieved 27 September 2013.
- ^ Leedy, Glenn (April 1983). "The National Semiconductor NS16000 Microprocessor Family". BYTE. pp. 53–66. Retrieved 22 August 2020.
- ^ Evans 2019, 6:00.
- ^ Manners, David (29 April 1998). "ARM's way". Electronics Weekly. Archived from the original on 29 July 2012. Retrieved 26 October 2012.
- ^ Evans 2019, 5:30.
- ^ a b Evans 2019, 7:45.
- ^ Evans 2019, 8:30.
- ^ Sophie Wilson at Alt Party 2009 (Part 3/8).
- ^ Chisnall, David (23 August 2010). Understanding ARM Architectures. Retrieved 26 May 2013.
- ^ Evans 2019, 9:00.
- ^ Furber, Stephen B. (2000). ARM system-on-chip architecture. Boston: Addison-Wesley. ISBN 0-201-67519-6.
- ^ Evans 2019, 9:50.
- ^ Evans 2019, 23:30.
- ^ Evans 2019, 26:00.
- ^ "ARM Instruction Set design history with Sophie Wilson (Part 3)". 10 May 2015. Retrieved 25 May 2020 – via YouTube.
- ^ "Oral History of Sophie Wilson – 2012 Computer History Museum Fellow" (PDF). Computer History Museum. 31 January 2012. Retrieved 25 May 2020.
- ^ Harker, T. (Summer 2009). "ARM gets serious about IP (Second in a two-part series [Associated Editors' View]". IEEE Solid-State Circuits Magazine. 1 (3): 8–69. doi:10.1109/MSSC.2009.933674. ISSN 1943-0590. S2CID 36567166.
- ^ Evans 2019, 20:30.
- ^ Evans 2019, 22:00.
- ^ Evans 2019, 21:30.
- ^ Evans 2019, 22:0030.
- ^ a b Evans 2019, 14:00.
- ^ Levy, Markus. "The History of The ARM Architecture: From Inception to IPO" (PDF). Retrieved 14 March 2013.
- ^ Santanu Chattopadhyay (2010). Embedded System Design. PHI Learning Pvt. Ltd. p. 9. ISBN 978-81-203-4024-4.
- ^ Richard Murray. "32 bit operation".
- ^ ARM milestones, ARM company website. Retrieved 8 April 2015
- ^ Andrews, Jason (2005). "3 SoC Verification Topics for the ARM Architecture". Co-verification of hardware and software for ARM SoC design. Oxford, UK: Elsevier. pp. 69. ISBN 0-7506-7730-9.
ARM started as a branch of Acorn Computer in Cambridge, England, with the formation of a joint venture between Acorn, Apple and VLSI Technology. A team of twelve employees produced the design of the first ARM microprocessor between 1983 and 1985.
- ^ Weber, Jonathan (28 November 1990). "Apple to Join Acorn, VLSI in Chip-Making Venture". Los Angeles Times. Los Angeles. Retrieved 6 February 2012.
Apple has invested about $3 million (roughly 1.5 million pounds) for a 30% interest in the company, dubbed Advanced Risc Machines Ltd. (ARM) [...]
- ^ "ARM Corporate Backgrounder" Archived 4 October 2006 at the Wayback Machine, ARM Technology.
- ^ Montanaro, James et al. (1997). "A 160-MHz, 32-b, 0.5-W CMOS RISC Microprocessor". Digital Technical Journal, vol. 9, no. 1. pp. 49–62.
- ^ DeMone, Paul (9 November 2000). "ARM's Race to Embedded World Domination". Real World Technologies. Retrieved 6 October 2015.
- ^ "March of the Machines". technologyreview.com. MIT Technology Review. 20 April 2010. Retrieved 6 October 2015.
- ^ Krazit, Tom (3 April 2006). "ARMed for the living room". CNET.
- ^ a b Fitzpatrick, J. (2011). "An Interview with Steve Furber". Communications of the ACM. 54 (5): 34–39. doi:10.1145/1941487.1941501.
- ^ Tracy Robinson (12 February 2014). "Celebrating 50 Billion shipped ARM-powered Chips".
- ^ Sarah Murry (3 March 2014). "ARM's Reach: 50 Billion Chip Milestone".
- ^ Brown, Eric (2009). "ARM netbook ships with detachable tablet". Archived from the original on 3 January 2013. Retrieved 19 August 2009.
- ^ Peter Clarke (7 January 2016). "Amazon Now Sells Own ARM chips".
- ^ "MACOM Successfully Completes Acquisition of AppliedMicro" (Press release). 26 January 2017.
- ^ Frumusanu, Andrei. "ARM Details Built on ARM Cortex Technology License". AnandTech. Retrieved 26 May 2019.
- ^ Cutress, Dr Ian. "ARM Flexible Access: Design the SoC Before Spending Money". AnandTech. Retrieved 9 October 2019.
- ^ "ARM Flexible Access Frequently Asked Questions". ARM | The Architecture for the Digital World. Retrieved 9 October 2019.
- ^ Nolting, Stephan. "STORM CORE Processor System" (PDF). OpenCores. Retrieved 1 April 2014.
- ^ "krevanth/ZAP". GitHub. Retrieved 13 October 2016.
- ^ "Cortex-M23 Processor". ARM. Retrieved 27 October 2016.
- ^ "Cortex-M33 Processor". ARM. Retrieved 27 October 2016.
- ^ "ARMv8-M Architecture Simplifies Security for Smart Embedded". ARM. Retrieved 10 November 2015.
- ^ "ARMv8-R Architecture". Retrieved 10 July 2015.
- ^ "ARM Cortex-R Architecture" (PDF). Arm Holdings. October 2013. Retrieved 1 February 2014.
- ^ Smith, Ryan (20 September 2016). "ARM Announces Cortex-R52 CPU: Deterministic & Safe, for ADAS & More". AnandTech. Retrieved 20 September 2016.
- ^ "Cortex-A32 Processor". ARM. Retrieved 10 October 2019.
- ^ "Cortex-A35 Processor". ARM. Retrieved 10 November 2015.
- ^ a b "ARM Launches Cortex-A50 Series, the World's Most Energy-Efficient 64-bit Processors" (Press release). Arm Holdings. Retrieved 31 October 2012.
- ^ "Cortex-A72 Processor". ARM. Retrieved 10 July 2015.
- ^ "Cortex-A73 Processor". ARM. Retrieved 2 June 2016.
- ^ "ARMv8-A Architecture". Retrieved 10 July 2015.
- ^ ARMv8 Architecture Technology Preview (Slides); Arm Holdings.
- ^ "Cavium Thunder X ups the ARM core count to 48 on a single chip". SemiAccurate. 3 June 2014.
- ^ "Cavium at Supercomputing 2014". Yahoo Finance. 17 November 2014. Archived from the original on 16 October 2015. Retrieved 15 January 2017.
- ^ "Cray to Evaluate ARM Chips in Its Supercomputers". eWeek. 17 November 2014.
- ^ "Samsung Announces Exynos 8890 with Cat.12/13 Modem and Custom CPU". AnandTech.
- ^ "Cortex-A34 Processor". ARM. Retrieved 10 October 2019.
- ^ "D21500 [AARCH64] Add support for Broadcom Vulcan". reviews.llvm.org.
- ^ "Cortex-A55 Processor". ARM. Retrieved 29 May 2017.
- ^ "Cortex-A75 Processor". ARM. Retrieved 29 May 2017.
- ^ "Cortex-A76 Processor". ARM. Retrieved 11 October 2018.
- ^ Berenice Mann (April 2017). "ARM Architecture – ARMv8.2-A evolution and delivery". community.ARM.com.
- ^ Frumusanu, Andrei. "Samsung Announces the Exynos 9825 SoC: First 7nm EUV Silicon Chip". AnandTech. Retrieved 11 October 2019.
- ^ "Fujitsu began to produce Japan's billions of super-calculations with the strongest ARM processor A64FX". China IT News. Retrieved 17 August 2019.
ARMv8 SVE (Scalable Vector Extension) chip, which uses 512bit floating point.
- ^ "Cortex-A65AE – ARM". ARM | The Architecture for the Digital World. Retrieved 8 April 2020.
can execute two-threads in parallel on each cycle. Each thread can be at different exception levels and run different operating systems.
- ^ Frumusanu, Andrei. "Marvell Announces ThunderX3: 96 Cores & 384 Thread 3rd Gen ARM Server Processor". AnandTech. Retrieved 26 May 2020.
- ^ "Line Card" (PDF). 2003. Retrieved 1 October 2012.
- ^ Parrish, Kevin (14 July 2011). "One Million ARM Cores Linked to Simulate Brain". EE Times. Retrieved 2 August 2011.
- ^ http://infocenter.arm.com/help/index.jsp
- ^ "Processor mode". Arm Holdings. Retrieved 26 March 2013.
- ^ "KVM/ARM" (PDF). Retrieved 3 April 2013.
- ^ Brash, David (August 2010). "Extensions to the ARMv7-A Architecture" (PDF). ARM Ltd. Retrieved 6 June 2014.
- ^ "How does the ARM Compiler support unaligned accesses?". 2011. Retrieved 5 October 2013.
- ^ "Unaligned data access". Retrieved 5 October 2013.
- ^ Cortex-M0 r0p0 Technical Reference Manual; Arm Holdings.
- ^ "ARMv7-M Architecture Reference Manual; Arm Holdings". arm.com. Retrieved 19 January 2013.
- ^ a b "ARMv7-A and ARMv7-R Architecture Reference Manual; Arm Holdings". arm.com. Retrieved 19 January 2013.
- ^ "ARM Information Center". Retrieved 10 July 2015.
- ^ "Condition Codes 1: Condition flags and codes". ARM Community. Retrieved 26 September 2019.
- ^ "9.1.2. Instruction cycle counts".
- ^ "CoreSight Components: About the Debug Access Port".
- ^ "The Cortex-M3: Debug Access Port (DAP)".
- ^ Mike Anderson. "Understanding ARM HW Debug Options".
- ^ "CMSIS-DAP Debugger User's Guide".
- ^ "CMSIS-DAP".
- ^ "SWDAP vs CMSIS-DAP vs DAPLink".
- ^ "ARM DSP Instruction Set Extensions". arm.com. Archived from the original on 14 April 2009. Retrieved 18 April 2009.
- ^ "DSP & SIMD". Retrieved 10 July 2015.
- ^ ARM7TDMI Technical Reference Manual page ii
- ^ Jaggar, Dave (1996). ARM Architecture Reference Manual. Prentice Hall. pp. 6–1. ISBN 978-0-13-736299-8.
- ^ Nathan Willis (10 June 2015). "Resurrecting the SuperH architecture". LWN.net.
- ^ "ARM Processor Instruction Set Architecture". ARM.com. Archived from the original on 15 April 2009. Retrieved 18 April 2009.
- ^ "ARM aims son of Thumb at uCs, ASSPs, SoCs". Linuxdevices.com. Archived from the original on 9 December 2012. Retrieved 18 April 2009.
- ^ "ARM Information Center". Infocenter.arm.com. Retrieved 18 April 2009.
- ^ Tom R. Halfhill (2005). "ARM strengthens Java compilers: New 16-Bit Thumb-2EE Instructions Conserve System Memory" (PDF). Archived from the original (PDF) on 5 October 2007.
- ^ ARM Architecture Reference Manual, ARMv7-A and ARMv7-R edition, issue C.b, Section A2.10, 25 July 2012.
- ^ "ARM Compiler toolchain Using the Assembler – VFP coprocessor". ARM.com. Retrieved 20 August 2014.
- ^ "VFP directives and vector notation". ARM.com. Retrieved 21 November 2011.
- ^ a b "Differences between ARM Cortex-A8 and Cortex-A9". Shervin Emami. Retrieved 21 November 2011.
- ^ "FPA10 Data Sheet" (PDF). chrisacorns.computinghistory.org.uk. GEC Plessey Semiconductors. 11 June 1993. Retrieved 26 November 2020.
In relation to IEEE 754-1985, the FPA achieves conformance in single-precision arithmetic [...] Occasionally, double- and extended-precision multiplications may be produced with an error of 1 or 2 units in the least significant place of the mantissa.
- ^ a b "Cortex-A7 MPCore Technical Reference Manual – 1.3 Features". ARM. Retrieved 11 July 2014.
- ^ "ArmHardFloatPort – Debian Wiki". Wiki.debian.org. 20 August 2012. Retrieved 8 January 2014.
- ^ "Cortex-A9 Processor". arm.com. Retrieved 21 November 2011.
- ^ "About the Cortex-A9 NEON MPE". arm.com. Retrieved 21 November 2011.
- ^ "US20050125476A1".
- ^ "US20080141004A1".
- ^ "ARM Options". GNU Compiler Collection Manual. Retrieved 20 September 2019.
- ^ "Ne10: An open optimized software library project for the ARM Architecture". GitHub. Retrieved 20 September 2019.
- ^ Joseph Yiu. "Introduction to ARMv8.1-M architecture" (PDF). Retrieved 5 March 2020.
- ^ "Genode – An Exploration of ARM TrustZone Technology". Retrieved 10 July 2015.
- ^ "ARM Announces Availability of Mobile Consumer DRM Software Solutions Based on ARM TrustZone Technology" (Press release). News.thomasnet.com. Retrieved 18 April 2009.
- ^ Laginimaineb (8 October 2015). "Bits, Please!: Full TrustZone exploit for MSM8974". Bits, Please!. Retrieved 3 May 2016.
- ^ Di Shen. "Attacking your 'Trusted Core' Exploiting TrustZone on Android" (PDF). Black Hat Briefings. Retrieved 3 May 2016.
- ^ "ARM TrustZone and ARM Hypervisor Open Source Software". Open Virtualization. Archived from the original on 14 June 2013. Retrieved 14 June 2013.
- ^ "AMD Secure Technology". AMD. AMD. Retrieved 6 July 2016.
- ^ Smith, Ryan (13 June 2012). "AMD 2013 APUs to include ARM Cortex A5 Processor for Trustzone Capabilities". AnandTech. Retrieved 6 July 2016.
- ^ a b Shimpi, Anand Lal (29 April 2014). "AMD Beema Mullins Architecture A10 micro 6700T Performance Preview". AnandTech. Retrieved 6 July 2016.
- ^ Walton, Jarred (4 June 2014). "AMD Launches Mobile Kaveri APUs". AnandTech. Retrieved 6 July 2016.
- ^ "The Samsung KNOX Platform" (PDF). Samsung Electronics. April 2016.
- ^ "ARM Architecture Reference Manual" (PDF). p. B4-8. Archived from the original (PDF) on 6 February 2009.
APX and XN (execute never) bits have been added in VMSAv6 [Virtual Memory System Architecture]
- ^ ARM Architecture Reference Manual, ARMv7-A and ARMv7-R edition. ARM Limited.
- ^ "Cortex-A65AE". ARM Developer. Retrieved 26 April 2019.
- ^ "Cortex-A32 Processor – ARM". Retrieved 18 December 2016.
- ^ "AppliedMicro Showcases World's First 64-bit ARM v8 Core" (Press release). AppliedMicro. 28 October 2011. Retrieved 11 February 2014.
- ^ "Samsung's Exynos 5433 is an A57/A53 ARM SoC". AnandTech. Retrieved 17 September 2014.
- ^ "ARM Cortex-A53 MPCore Processor Technical Reference Manual: Cryptography Extension". ARM. Retrieved 11 September 2016.
- ^ Frumusanu, Andrei (3 September 2020). "ARM Announced Cortex-R82: First 64-bit Real Time Processor". AnandTech.
- ^ Frumusanu, Andrei (30 March 2021). "Arm Announces Armv9 Architecture: SVE2, Security, and the Next Decade". AnandTech.
- ^ "Arm launches v9 architecture" (Press release). Arm Ltd. 30 March 2021.
- ^ Osborne, Charlie. "ARM announces PSA security architecture for IoT devices". ZDNet.
- ^ Wong, William G. (25 October 2017). "Arm's Platform Security Architecture Targets Cortex-M". Electronic Design.
- ^ Wong, William. "ARM's Platform Security Architecture Targets Cortex-M". Electronic Design.
- ^ Hoffenberg, Steve. "ARM: Security Isn't Just a Technological Imperative, It's a Social Responsibility". VDC Research.
- ^ ARMasu, Lucian. "ARM Reveals More Details About Its IoT Platform Security Architecture". Tom's Hardware.
- ^ Williams, Chris. "ARM PSA IoT API? BRB... Toolbox of tech to secure net-connected kit opens up some more". The Register.
- ^ Hayes, Caroline (25 February 2019). "Embedded World: Arm introduces fourth security element to PSA". Electronics Weekly.
- ^ "PSA Certified: building trust in IoT". PSA Certified.
- ^ a b "PSA Certified–building trust, building value". EE Times. 4 March 2019.
- ^ "The $6trn importance of security standards and regulation in the IoT era". IoT Now. 16 March 2020.
- ^ McGregor, Jim (4 March 2019). "Arm Introduces Security Certification Testing For IoT". Forbes.
- ^ Speed, Richard (26 February 2019). "Azure IoT heads spacewards to maintain connectivity at the edge, courtesy of Inmarsat". TheRegister.
- ^ "OS-9 Specifications". Microware.
- ^ a b "Pharos". SourceForge. Retrieved 24 May 2018.
- ^ "PikeOS Safe and Secure Virtualization". Retrieved 10 July 2013.
- ^ a b "Safety Certified Real-Time Operating Systems – Supported CPUs".
- ^ "ARM Platform Port". opensolaris.org. Archived from the original on 2 December 2012. Retrieved 29 December 2012.
- ^ "Green Hills Software's INTEGRITY-based Multivisor Delivers Embedded Industry's First 64-bit Secure Virtualization Solution". ghs.com. Retrieved 14 March 2018.
- ^ "Enea OSE real-time operating system for 5G and LTE-A | Enea". www.enea.com. Retrieved 17 April 2018.
- ^ "Supported Platforms". docs.sel4.systems. Retrieved 23 November 2018.
- ^ "QNX Software Development Platform (SDP 7.0) | BlackBerry QNX". www.blackberry.qnx.com. Retrieved 27 July 2020.
- ^ Linus Torvalds (1 October 2012). "Re: [GIT PULL] arm64: Linux kernel port". Linux kernel mailing list (Mailing list). Retrieved 2 May 2019.
- ^ Larabel, Michael (27 February 2013). "64-bit ARM Version of Ubuntu/Debian Is Booting". Phoronix. Retrieved 17 August 2014.
- ^ "Debian Project News – August 14th, 2014". Debian. 14 August 2014. Retrieved 17 August 2014.
- ^ "Ubuntu Server for ARM". ubuntu.com.
- ^ "Architectures/AArch64". Retrieved 16 January 2015.
- ^ "Portal:ARM/AArch64". Retrieved 16 January 2015.
- ^ "SUSE Linux Enterprise 12 SP2 Release Notes". Retrieved 11 November 2016.
- ^ "Red Hat introduces ARM server support for Red Hat Enterprise Linux". redhat.com. Retrieved 18 January 2019.
- ^ "64-bit ARM architecture project update". The FreeBSD Foundation. 24 November 2014.
- ^ "OpenBSD/arm64". Retrieved 7 August 2017.
- ^ "NetBSD/arm64". Retrieved 5 August 2018.
- ^ "HP, Asus announce first Windows 10 ARM PCs: 20-hour battery life, gigabit LTE". Ars Technica. Retrieved 22 January 2018.
This new version of Windows 10 is Microsoft's first 64-bit ARM operating system. It'll run x86 and 32-bit ARM applications from the Store, and in due course, 64-bit ARM applications. However, Microsoft hasn't yet finalised its 64-bit ARM SDK. Many pieces are in place (there's a 64-bit ARM compiler, for example), but the company isn't yet taking 64-bit ARM applications submitted to the Store, and there aren't any 64-bit ARM desktop applications either.
- ^ Hassan, Mehedi (10 December 2016). "Windows 10 on ARM64 gets its first compiled apps". MSPoweruser.
- ^ Filippidis, Katrina (1 June 2018). "VLC becomes one of first ARM64 Windows apps". Engadget.
- ^ Sweetgall, Marc (15 November 2018). "Official support for Windows 10 on ARM development". Windows Developer. Windows Blogs. Microsoft. Retrieved 17 December 2019.
- ^ Gartenberg, Chaim (12 November 2020). "macOS Big Sur is now available to download". The Verge. Retrieved 13 November 2020.
- ^ Clover, Juli (23 June 2020). "Rosetta Won't Support x86 Virtualization Apps Running Windows". MacRumors. Retrieved 13 November 2020.
- ^ "ARM – The Official Wine Wiki". Retrieved 10 July 2015.
- ^ "ARM64 – The Official Wine Wiki". Retrieved 10 July 2015.
- ^ "ARM Security Updates – ARM Developer". ARM Developer. Retrieved 24 May 2018.
Bibliography
- Evans, Matt (27 December 2019). The Ultimate Acorn Archimedes talk.
Otras lecturas
enlaces externos
- Official website , ARM Ltd.
- ARM Virtualization Extensions
- Quick Reference Cards
- Instructions: Thumb, ARM and Thumb-2, Vector Floating Point
- Opcodes: Thumb, Thumb, ARM, ARM, GNU Assembler Directives