stringtranslate.com

Familia de arquitectura ARM

ARM (estilizado en minúsculas como arm , antiguamente un acrónimo de Advanced RISC Machines y originalmente Acorn RISC Machine ) es una familia de arquitecturas de conjuntos de instrucciones (ISA) RISC para procesadores de computadoras . Arm Ltd. desarrolla las ISA y las licencia a otras compañías, que construyen los dispositivos físicos que utilizan el conjunto de instrucciones. También diseña y licencia núcleos que implementan estas ISA.

Debido a sus bajos costos, bajo consumo de energía y baja generación de calor, los procesadores ARM son útiles para dispositivos livianos, portátiles y alimentados por batería, incluidos teléfonos inteligentes , computadoras portátiles y tabletas , así como sistemas integrados . [3] [4] [5] Sin embargo, los procesadores ARM también se utilizan para computadoras de escritorio y servidores , incluida la supercomputadora más rápida del mundo ( Fugaku ) ​​desde 2020 [6] hasta 2022. Con más de 230 mil millones de chips ARM producidos, [7] [8] a partir de 2022 , ARM es la familia de arquitecturas de conjuntos de instrucciones más utilizada. [9] [4] [10] [11] [12]

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 mantuvieron los 32 bits. Lanzada en 2011, la arquitectura ARMv8-A agregó soporte para un espacio de direcciones de 64 bits y aritmética de 64 bits con su nuevo conjunto de instrucciones de longitud fija de 32 bits. [13] 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 de código , mientras que Jazelle agregó instrucciones para manejar directamente el bytecode de Java . Los cambios más recientes incluyen la adición de subprocesamiento múltiple simultáneo (SMT) para mejorar el rendimiento o la tolerancia a fallas . [14]

Historia

BBC Micro

El primer diseño de gran éxito 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 Technology 6502 , pero que funcionaba aproximadamente al doble del rendimiento de diseños de la competencia, como el Apple II, debido a su uso de memoria dinámica de acceso aleatorio (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 el suministro de piezas más rápidas de 4 MHz. [15]

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 y salidas (E/S) por separado. Como la sincronización de la visualización de video es exigente, el hardware de video tenía que tener acceso prioritario a esa memoria. Debido a una peculiaridad del diseño del 6502, la CPU dejaba la memoria intacta durante la mitad del tiempo. Por lo tanto, al ejecutar la CPU a 1 MHz, el sistema de video podía leer datos durante esos tiempos de inactividad, ocupando el ancho de banda total de 2 MHz de la RAM. En el 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. [16]

Computadora de negocios Acorn

1981 fue también el año en que se presentó la IBM Personal Computer . Utilizando el recientemente presentado Intel 8088 , una CPU de 16 bits en comparación con el diseño de 8 bits del 6502 , ofrecía un mayor rendimiento general. Su introducción cambió radicalmente el mercado de las computadoras de escritorio: lo que había sido en gran medida un mercado de pasatiempos y juegos que surgió durante los cinco años anteriores comenzó a cambiar a una herramienta empresarial imprescindible donde los diseños anteriores de 8 bits simplemente no podían competir. Incluso los diseños más nuevos de 32 bits también estaban llegando al mercado, como el Motorola 68000 [17] y el National Semiconductor NS32016 [18] .

Acorn comenzó a considerar cómo competir en este mercado y produjo un nuevo diseño en papel llamado Acorn Business Computer . Se fijaron el objetivo de producir una máquina con diez veces el rendimiento del BBC Micro, pero al mismo precio. [19] Esto superaría y costaría menos que el PC. Al mismo tiempo, la reciente introducción del Apple Lisa llevó el concepto de interfaz gráfica de usuario (GUI) a una audiencia más amplia y sugirió que el futuro pertenecía a las máquinas con una GUI. [20] Sin embargo, el Lisa costaba $ 9,995, ya que estaba equipado con chips de soporte, grandes cantidades de memoria y una unidad de disco duro , todo muy caro en ese entonces. [21]

Los ingenieros comenzaron entonces 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", [22] ofreciendo solo un rendimiento ligeramente superior al de su diseño BBC Micro. También casi siempre exigían una gran cantidad de chips de soporte para operar incluso a ese nivel, lo que aumentaba el costo de la computadora en su conjunto. Estos sistemas simplemente no alcanzarían el objetivo de diseño. [22] También consideraron los nuevos diseños de 32 bits, pero costaban aún más y tenían los mismos problemas con los chips de soporte. [23] Según Sophie Wilson , todos los procesadores probados en ese momento tenían un rendimiento similar, con un ancho de banda de aproximadamente 4 Mbit/s. [24] [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 mayor que los últimos diseños de 32 bits en el mercado. [25] El segundo 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 la WDC 65C02 . El equipo de Acorn vio a estudiantes de secundaria produciendo diseños de chips en máquinas Apple II, lo que sugería que cualquiera podía hacerlo. [26] [27] En contraste, una visita a otra empresa de diseño que trabajaba en CPU modernas 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, sin embargo, todavía contenía errores. [b] Esto consolidó su decisión a fines de 1983 de comenzar su propio diseño de CPU, la Acorn RISC Machine. [28]

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 los conceptos básicos de RISC, basados ​​en registros y carga/almacenamiento, ARM agregó una serie de notas de diseño bien recibidas del 6502. La principal de ellas era la capacidad de servir interrupciones rápidamente , lo que permitía a las máquinas ofrecer un rendimiento de entrada/salida razonable sin hardware externo agregado. Para ofrecer interrupciones con un rendimiento similar al del 6502, el diseño de ARM limitó su espacio de dirección física a 64 MB de espacio direccionable total, lo que requería 26 bits de dirección. Como las instrucciones tenían una longitud de 4 bytes (32 bits) y debían estar alineadas en límites de 4 bytes, los 2 bits inferiores de una dirección de instrucción siempre eran cero. Esto significaba que el contador de programa (PC) solo necesitaba tener 24 bits, lo que permitía almacenarlo junto con los indicadores de procesador de ocho bits en un solo registro de 32 bits. Esto significaba que al recibir una interrupción, todo el estado de la máquina podía ser guardado en una sola operación, mientras que si el PC hubiera sido un valor completo de 32 bits, se requerirían operaciones separadas para almacenar el PC y los indicadores de estado. Esta decisión redujo a la mitad la sobrecarga de interrupciones. [29]

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 el modo de página de la DRAM . Introducido recientemente, el modo de página permitía que los accesos posteriores a la memoria se ejecutaran el doble de rápido si se encontraban aproximadamente en la misma ubicación, o "página", en el chip DRAM. El diseño de Berkeley no consideró el modo de página y trató a toda la memoria por igual. El diseño ARM agregó instrucciones especiales de acceso a la memoria de tipo vectorial, los "ciclos S", que podí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 podían usar, y fue especialmente importante para el rendimiento gráfico. [30]

Los diseños RISC de Berkeley utilizaban ventanas de registro para reducir la cantidad de guardados y restauraciones de registros realizados 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 ejecutaba en un BBC Micro con un segundo procesador 6502. [31] [32] 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. [33] El proyecto oficial de la máquina RISC de Acorn comenzó en octubre de 1983.

BRAZO1

Segundo procesador ARM1 para BBC Micro

Acorn eligió a VLSI Technology como "socio de silicio", ya que eran una fuente de ROM y chips personalizados para Acorn. Acorn proporcionó el diseño y VLSI proporcionó la disposición 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. [3] Conocidas como ARM1, estas versiones funcionaban a 6 MHz. [34]

La primera aplicación de 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 de ARM2. Posteriormente, Wilson reescribió BBC BASIC en lenguaje ensamblador ARM . El profundo conocimiento adquirido al diseñar el conjunto de instrucciones permitió que el código fuera muy denso, lo que convirtió a ARM BBC BASIC en una prueba extremadamente buena para cualquier emulador 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 principios de 1987 a la versión con aumento de velocidad de 10 a 12 MHz. [c] 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. [36] Además, un nuevo modo Fast Interrupt reQuest, FIQ para abreviar, permitió que los registros 8 a 14 se reemplazaran como parte de la interrupción en sí. Esto significaba que las solicitudes FIQ no tenían que guardar sus registros, lo que aceleraba aún más las interrupciones. [37]

El primer uso del ARM2 fueron los modelos de computadoras personales Acorn Archimedes A305, A310 y A440, lanzados en 1987.

Según el benchmark Dhrystone , el ARM2 ofrecía aproximadamente siete veces el rendimiento de un sistema típico basado en 68000 de 7 MHz como el Amiga o el Macintosh SE . Era el doble de rápido que un Intel 80386 funcionando a 16 MHz, y aproximadamente la misma velocidad que un superminiordenador multiprocesador VAX-11/784 . Los únicos sistemas que lo superaban eran las estaciones de trabajo basadas en RISC Sun SPARC y MIPS R2000 . [38] Además, como la CPU estaba diseñada para E/S de alta velocidad, prescindía 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 gráfico también se simplificó basándose en el mismo conjunto de suposiciones subyacentes sobre la memoria y la sincronización. El resultado fue un diseño drásticamente simplificado, que ofrecía un rendimiento a la par con las estaciones de trabajo costosas pero a un precio similar al de los ordenadores de sobremesa contemporáneos. [38]

El ARM2 presentaba un bus de datos de 32 bits , un espacio de direcciones de 26 bits y 27 registros de 32 bits , de los cuales 16 son accesibles en cualquier momento (incluido el PC ). [39] El ARM2 tenía un recuento de transistores de solo 30 000, [40] en comparación con el modelo 68000 de Motorola, seis años más antiguo, con alrededor de 68 000. Gran parte de esta simplicidad provenía de la falta de microcódigo , que representa aproximadamente entre un cuarto y un tercio de los transistores del 68000, y la falta de (como la mayoría de las CPU de la época) una caché . Esta simplicidad permitió que el ARM2 tuviera un bajo consumo de energía y un empaquetado térmico más simple al tener menos transistores alimentados. Sin embargo, ARM2 ofrecía un mejor rendimiento que el IBM PS/2 Modelo 50 de 1987 , que inicialmente utilizaba un Intel 80286 , ofreciendo 1,8 MIPS a 10 MHz, y más tarde, en 1987, los 2 MIPS del PS/2 70, con su Intel 386 DX a 16 MHz. [41] [42]

Se produjo un sucesor, ARM3, con una caché de 4 KB, que mejoró aún más el rendimiento. [43] 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 modo de compatibilidad de 26 bits, debido a los bits reservados para los indicadores de estado. [44]

Advanced RISC Machines Ltd. – ARM6

Sistema basado en microprocesador en un chip
Matriz de un microprocesador ARM610

A finales de los años 1980, Apple Computer y VLSI Technology empezaron a trabajar con Acorn en nuevas versiones del núcleo ARM. En 1990, Acorn escindió el equipo de diseño y lo convirtió en una nueva empresa llamada Advanced RISC Machines Ltd., [45] [46] [47] que se convirtió en ARM Ltd. cuando su empresa matriz, Arm Holdings plc, salió a bolsa en la Bolsa de Londres y en el Nasdaq en 1998. [48] El nuevo trabajo de Apple con ARM acabaría evolucionando hasta convertirse en el ARM6, que se lanzó por primera vez a principios de 1992. Apple utilizó el ARM610 basado en ARM6 como base para su PDA Apple Newton .

Licenciatarios tempranos

En 1994, Acorn utilizó el ARM610 como la unidad central de procesamiento (CPU) principal en sus computadoras RiscPC . DEC licenció la arquitectura ARMv4 y produjo el StrongARM . [49] A 233  MHz , esta CPU consumía solo un vatio (las versiones más nuevas consumen mucho menos). Este trabajo fue luego transferido a Intel como parte de un acuerdo judicial, e Intel aprovechó la oportunidad para complementar su línea i960 con el StrongARM. Intel desarrolló más tarde su propia implementación de alto rendimiento llamada XScale , que desde entonces ha vendido a Marvell . El recuento de transistores del núcleo ARM se mantuvo esencialmente igual a lo largo de estos cambios; ARM2 tenía 30.000 transistores, [50] mientras que ARM6 creció solo a 35.000. [51]

Cuota de mercado

En 2005, aproximadamente el 98% de todos los teléfonos móviles vendidos utilizaban al menos un procesador ARM. [52] 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 de 32 bits más popular en sistemas integrados. [53] En 2013, se produjeron 10 mil millones [54] y "los chips basados ​​en ARM se encuentran en casi el 60 por ciento de los dispositivos móviles del mundo". [55]

Licencias

Matriz de un microcontrolador ARM Cortex-M3 STM32 F103VGT6 con  memoria flash de STMicroelectronics

Licencia básica

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, normalmente uno que se puede construir en plantas de fabricación de semiconductores (fabs) existentes a bajo costo y aún así ofrecer un rendimiento sustancial. La implementación más exitosa ha sido el 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 varían desde ARMv5 hasta ARMv8-A .

En 2009, algunos fabricantes introdujeron netbooks basados ​​en CPU de arquitectura ARM, en competencia directa con los netbooks basados ​​en Intel Atom . [56]

Arm Ltd. ofrece una variedad de condiciones de licencia, que varían en costo y resultados. Arm Ltd. proporciona a todos los licenciatarios una descripción integrable del hardware 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 contenga la CPU ARM.

Los paquetes 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, el MCU Precision32 de Silicon Labs, los productos OMAP de Texas Instruments , los productos Hummingbird y Exynos de Samsung , los A4 , A5 y A5X de Apple , y el i.MX de NXP .

Los licenciatarios fabless , que desean integrar un núcleo ARM en su propio diseño de chip, normalmente solo están interesados ​​en adquirir un núcleo de propiedad intelectual de semiconductores verificado y listo para fabricar . Para estos clientes, Arm Ltd. ofrece una descripción de la lista de conexiones de puertas del núcleo ARM elegido, junto con un modelo de simulación abstracto 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 fundiciones, optan por adquirir la propiedad intelectual del procesador en forma de RTL sintetizable ( Verilog ). Con el RTL sintetizable, el cliente tiene la capacidad de realizar optimizaciones y extensiones 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 del conjunto 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 fabricados, como dispositivos de chip, placas de evaluación y sistemas completos. Las fundiciones comerciales pueden ser un caso especial; No sólo se les permite vender núcleos ARM que contienen silicio terminado, sino que generalmente tienen el derecho de refabricar 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 costes de licencia más bajos que los núcleos de mayor rendimiento. En términos de implementación, un núcleo sintetizable cuesta más que un núcleo macrohard (blackbox). Para complicar aún más las cosas, una fundición comercial que posea una licencia ARM, como Samsung o Fujitsu, puede ofrecer a los clientes de la fábrica costes 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 entre dos y 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 en gran volumen, la reducción de costos a largo plazo que se puede lograr a través de precios más bajos de las obleas reduce el impacto de los costos de ingeniería no recurrente (NRE ) 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 incluyen la subsidiaria Annapurna Labs de Amazon.com , [57] Analog Devices , Apple , AppliedMicro (ahora: MACOM Technology Solutions [58] ), Atmel , Broadcom , Cavium , Cypress Semiconductor , Freescale Semiconductor (ahora NXP Semiconductors ), Huawei , Intel , [ dudosodiscutir ] Maxim Integrated , Nvidia , NXP , Qualcomm , Renesas , Samsung Electronics , ST Microelectronics , Texas Instruments y Xilinx .

Construido sobre licencia de tecnología ARM Cortex

En febrero de 2016, ARM anunció la licencia Built on ARM Cortex Technology, a menudo abreviada como licencia Built on Cortex (BoC). Esta licencia permite a las empresas asociarse con ARM y realizar modificaciones a los diseños ARM Cortex. Estas modificaciones de diseño no se compartirán con otras empresas. Estos diseños de núcleo semipersonalizados 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 . [59]

Licencia de arquitectura

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 plenamente con la arquitectura ARM. Entre las empresas que han diseñado núcleos que implementan una arquitectura ARM se encuentran Apple, AppliedMicro (ahora: Ampere Computing ), Broadcom, Cavium (ahora: Marvell), Digital Equipment Corporation , Intel, Nvidia, Qualcomm, Samsung Electronics, Fujitsu y NUVIA Inc. (adquirida por Qualcomm en 2021).

Acceso flexible ARM

El 16 de julio de 2019, ARM anunció ARM Flexible Access, que brinda acceso ilimitado a la propiedad intelectual (PI) de ARM incluida para el desarrollo. Se requieren tarifas de licencia por producto una vez que el cliente llega a la etapa de producción o de creación de prototipos. [60] [61]

El 75 % de las IP más recientes de ARM durante los últimos dos años están incluidas en ARM Flexible Access. A octubre de 2019:

Núcleos

  1. ^ ab 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 ; los bits superiores, entonces, se usaban para indicadores de estado en el registro del contador del programa.
  2. ^ abc ARMv3 incluía un modo de compatibilidad para admitir las direcciones de 26 bits de versiones anteriores de la arquitectura. Este modo de compatibilidad era opcional en ARMv4 y se eliminó por completo en ARMv5.

Arm proporciona una lista de proveedores que implementan núcleos ARM en sus diseños (productos estándar específicos de la aplicación (ASSP), microprocesadores y microcontroladores). [98]

Ejemplos de aplicaciones de núcleos ARM

Tronsmart MK908, una "mini PC" Android de cuatro núcleos basada en Rockchip , con una tarjeta microSD al lado para comparar el tamaño

Los núcleos ARM se utilizan en varios productos, en particular en PDA y teléfonos inteligentes . Algunos ejemplos informáticos son los dispositivos Surface , Surface 2 y Pocket PC de primera generación de Microsoft (posteriores a 2002 ), los iPads de Apple , las tabletas Eee Pad Transformer de Asus y varios portátiles Chromebook . Otros ejemplos incluyen los teléfonos inteligentes iPhone y los reproductores multimedia portátiles iPod de Apple , las cámaras digitales Canon PowerShot , el híbrido Nintendo Switch , el procesador de seguridad Wii y las consolas de juegos portátiles 3DS , y los sistemas de navegación paso a paso TomTom .

En 2005, Arm participó en el desarrollo de la computadora SpiNNaker de la Universidad de Manchester , que utilizaba núcleos ARM para simular el cerebro humano . [99]

Los chips ARM también se utilizan en Raspberry Pi , BeagleBoard , BeagleBone , PandaBoard y otros ordenadores de placa única , porque son muy pequeños, económicos y consumen muy poca energía.

Arquitectura de 32 bits

Se utilizó un ARMv7 para alimentar versiones anteriores de las populares computadoras de placa única Raspberry Pi, como esta Raspberry Pi 2 de 2015.
También se utiliza un ARMv7 para alimentar la familia de computadoras de placa única CuBox .

La arquitectura ARM de 32 bits ( ARM32 ), 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 en 2011. [ 53]

Desde 1995, varias versiones del Manual de referencia de arquitectura ARM (consulte § Enlaces externos) han sido la principal fuente de documentación sobre la arquitectura y el conjunto de instrucciones de los procesadores ARM, y distinguen las interfaces que todos los procesadores ARM deben admitir (como la semántica de las 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:

Aunque los perfiles de arquitectura se definieron primero para ARMv7, ARM posteriormente definió 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 programáticamente. [100]

Conjunto de instrucciones

La implementación original (y posterior) de ARM estaba cableada sin microcódigo , como el procesador 6502 de 8 bits mucho más simple utilizado en las 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:

Para compensar el diseño más simple, en comparación con procesadores como el Intel 80286 y el Motorola 68020 , se utilizaron algunas características de diseño adicionales:

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 de 64 bits, aunque los núcleos Cortex-M0 / M0+ / M1 no admiten resultados de 64 bits. [105] 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 están incluidas en las siguientes arquitecturas ARM:

Registros

Los registros R0 a R7 son los mismos en todos los modos de CPU; nunca están bancarizados.

Los registros R8 a R12 son los mismos en todos los modos de CPU, excepto en el modo FIQ. El modo FIQ tiene sus propios registros R8 a R12.

R13 y R14 se almacenan en todos los modos de CPU privilegiados, 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 de función, respectivamente.

Alias:

El registro de estado del programa actual (CPSR) tiene los siguientes 32 bits. [108]

Ejecución condicional

Casi todas las instrucciones ARM tienen una función 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 bifurcación. [109]

Aunque el predicado ocupa cuatro de los 32 bits de un código de instrucción y, por lo tanto, reduce significativamente los bits de codificación disponibles para desplazamientos en instrucciones de acceso a memoria, evita las instrucciones de bifurcación al generar código para ifinstrucciones pequeñas . Además de eliminar las instrucciones de bifurcación en sí, esto preserva el proceso de obtención/decodificación/ejecución a costa 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 la resta para calcular el máximo común divisor . En el lenguaje de programación C , el algoritmo se puede escribir de la siguiente manera:

int gcd ( int a , int b ) { while ( a != b ) // Entramos al bucle cuando a < b o a > b, pero no cuando a == b if ( a > b ) // Cuando a > b hacemos esto a -= b ; else // Cuando a < b hacemos aquello (no se necesita "if (a < b)" ya que a != b está marcado en la condición while) b -= a ; return a ; }                         

El mismo algoritmo se puede reescribir de una manera más cercana a las instrucciones ARM objetivo como:

bucle : // Comparar a y b GT = a > b ; LT = a < b ; NE = a != b ;                 // Realizar operaciones basadas en los resultados de las banderas si ( GT ) a -= b ; // Restar *solo* si es mayor que si ( LT ) b -= a ; // Restar *solo* si es menor que si ( NE ) goto loop ; // Repetir *solo* si los valores comparados no fueron iguales devolver a ;                   

y codificado en lenguaje ensamblador como:

; asignar a al registro r0, b al r1 bucle: CMP r0 , r1 ; establecer condición "NE" si (a ≠ b), ; "GT" si (a > b), ; o "LT" si (a < b) SUBGT r0 , r0 , r1 ; si "GT" (Mayor que), entonces a = a − b SUBLT r1 , r1 , r0 ; si "LT" (Menor que), entonces b = b − a BNE bucle ; si "NE" (No igual), entonces bucle B lr ; retorna                      

que evita las ramificaciones alrededor de las cláusulas thenand else. Si r0y r1son iguales, entonces ninguna de las SUBinstrucciones se ejecutará, eliminando la necesidad de una ramificación condicional para implementar la whilecomprobación en la parte superior del bucle, por ejemplo, si se SUBLEhubiera utilizado (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 bifurcación.

Otras características

Otra característica del conjunto de instrucciones es la capacidad de incorporar cambios y rotaciones en las instrucciones de procesamiento de datos (aritméticas, lógicas y de movimiento registro-registro), de modo que, por ejemplo, la declaración en lenguaje C :

a += ( j << 2 );    

Podría representarse como una instrucción de una palabra y un ciclo: [110]

AGREGAR 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 canalización 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 PC (de hecho, en el ARM de 32 bits [1] el PC es uno de sus 16 registros) y modos de direccionamiento pre y post incremento.

El conjunto de instrucciones ARM ha aumentado con el tiempo. Algunos de los primeros procesadores ARM (anteriores a ARM7TDMI), por ejemplo, no tienen instrucción para almacenar una cantidad de dos bytes.

Tuberías y otros problemas de implementación

El ARM7 y las implementaciones anteriores tienen un pipeline de tres etapas ; las etapas son la búsqueda, la decodificación y la ejecución. Los diseños de mayor rendimiento, como el ARM9, tienen pipelines más profundos: 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 bifurcaciones más extensa . La diferencia entre los núcleos ARM7DI y ARM7DMI, por ejemplo, fue un multiplicador mejorado; de ahí la "M" agregada.

Coprocesadores

La arquitectura ARM (pre-Armv8) proporciona una forma no intrusiva de ampliar el conjunto de instrucciones mediante "coprocesadores" que pueden ser direccionados mediante MCR, MRC, MRRC, MCRR y otras instrucciones similares. El espacio de coprocesadores está dividido lógicamente en 16 coprocesadores con números del 0 al 15, y el coprocesador 15 (cp15) está reservado para algunas funciones de control típicas, como la gestión de las memorias caché y la operación de la MMU en los procesadores que tienen uno.

En las máquinas basadas en ARM, los dispositivos periféricos suelen conectarse al procesador mediante la asignación de sus registros físicos al espacio de memoria ARM, al espacio del coprocesador o mediante la conexión a otro dispositivo (un bus) que, a su vez, se conecta al procesador. Los accesos al coprocesador tienen una latencia menor, 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 de 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 admitir 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 crear puntos de interrupción del código a partir de un reinicio. Estas funciones se crean utilizando soporte JTAG , aunque algunos núcleos más nuevos admiten opcionalmente el protocolo "SWD" de dos cables propio de ARM. En los núcleos ARM7TDMI, la "D" representaba el soporte de depuración JTAG y la "I" representaba la presencia de un módulo de depuración "EmbeddedICE". Para las generaciones de núcleos 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 funciones de depuración básicas a nivel arquitectónico. Estas incluyen puntos de interrupción, puntos de vigilancia y ejecución de instrucciones en un "modo de depuración"; funciones similares también estaban disponibles con EmbeddedICE. Se admiten tanto la depuración en "modo de detención" como en modo de "monitorización". El mecanismo de transporte real utilizado para acceder a las funciones de depuración no está especificado arquitectónicamente, pero las implementaciones generalmente incluyen compatibilidad con JTAG.

Existe una arquitectura de depuración ARM "CoreSight" independiente, que los procesadores ARMv7 no requieren arquitectónicamente.

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. [111] Hay dos implementaciones compatibles diferentes, el puerto de depuración JTAG de cable serie (SWJ-DP) y el puerto de depuración de cable serie (SW-DP). [112] CMSIS-DAP es una interfaz estándar que describe cómo varios programas 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 se comunica a través de SWD o JTAG con una CPU ARM Cortex habilitada para CoreSight. [113] [114] [115]

Instrucciones de mejora del DSP

Para mejorar la arquitectura ARM para el procesamiento de señales digitales y aplicaciones multimedia, se agregaron instrucciones DSP al conjunto de instrucciones. [116] Estas 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 las arquitecturas de procesadores de señales digitales (DSP). Incluyen variaciones de multiplicación-acumulación con signo , suma y resta saturadas y recuento de ceros iniciales .

Introducida por primera vez en 1999, esta extensión del conjunto de instrucciones del núcleo contrastaba con el coprocesador DSP anterior de ARM conocido como Piccolo, que empleaba un conjunto de instrucciones distinto e incompatible cuya ejecución implicaba un contador de programa separado. [117] Las instrucciones de Piccolo empleaban un archivo de registro distinto de dieciséis registros de 32 bits, con algunas instrucciones que combinaban registros para su uso como acumuladores de 48 bits y otras instrucciones que abordaban medios registros de 16 bits. Algunas instrucciones podían operar en dos de esos valores de 16 bits en paralelo. La comunicación con el archivo de registro de Piccolo implicaba la carga en Piccolo y el almacenamiento desde las instrucciones del coprocesador Piccolo a través de dos búferes de ocho entradas de 32 bits. Descrito como reminiscente de otros enfoques, en particular el SH-DSP de Hitachi y el 68356 de Motorola, Piccolo no empleaba memoria local dedicada y dependía del ancho de banda del núcleo ARM para la recuperación de operandos del DSP, lo que afectaba al rendimiento concurrente. [118] El conjunto de instrucciones diferenciadas de Piccolo también resultó no ser un "buen objetivo para el compilador". [117]

Extensiones SIMD para multimedia

Introducido en la arquitectura ARMv6, este fue un precursor de SIMD avanzado, también llamado Neon. [119]

Jazmín

Jazelle DBX (Direct Bytecode eXecution) es una técnica que permite ejecutar el bytecode de Java directamente en la arquitectura ARM como un tercer estado de ejecución (y conjunto de instrucciones) junto con el modo ARM y Thumb existentes. La compatibilidad con este estado se indica mediante la "J" en la arquitectura ARMv5TEJ y en los nombres de los núcleos ARM9EJ-S y ARM7EJ-S. La compatibilidad con este estado es necesaria 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 el ARM7TDMI (lanzado en 1994 [120] ) han incorporado el conjunto de instrucciones comprimidas Thumb , que tienen su propio estado. (La "T" en "TDMI" indica la característica 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. [121] La mayoría de las instrucciones Thumb se asignan directamente a instrucciones ARM normales. El ahorro de espacio se produce al hacer implícitos algunos de los operandos de instrucción y limitar el número de posibilidades en comparación con las instrucciones ARM ejecutadas en el estado del conjunto de instrucciones ARM.

En Thumb, los códigos de operación de 16 bits tienen menos funcionalidad. Por ejemplo, solo las bifurcaciones pueden ser condicionales y muchos códigos de operación están restringidos a 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án restringidos a menos de 32 bits, los códigos de operación más cortos de Thumb permiten un mayor rendimiento en comparación con el código ARM de 32 bits, ya que es posible que se deba 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 independientemente uno del otro. El hardware integrado, como Game Boy Advance , normalmente tiene 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, normalmente tiene sentido compilar el código Thumb y optimizar manualmente algunas de las secciones que consumen más CPU utilizando instrucciones ARM de 32 bits completas, colocando estas instrucciones más amplias en la memoria accesible al bus de 32 bits.

El primer procesador con un decodificador de instrucciones Thumb fue el ARM7TDMI. Todos los procesadores que admiten conjuntos de instrucciones de 32 bits, a partir de ARM9 e incluyendo XScale, han incluido un decodificador de instrucciones Thumb. Incluye instrucciones adoptadas de Hitachi SuperH (1992), que fue licenciado por ARM. [122] 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 obtener el máximo rendimiento en aplicaciones de menor costo. Los procesadores ARM que no admiten el direccionamiento de 32 bits también omiten Thumb.

Pulgar-2

La tecnología Thumb-2 se introdujo en el núcleo ARM1156 , anunciado en 2003. Thumb-2 amplía el conjunto de instrucciones de 16 bits limitado de Thumb con instrucciones adicionales de 32 bits para darle 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 una memoria de 32 bits.

Thumb-2 amplía el conjunto de instrucciones Thumb con manipulación de campos de bits, ramificaciones de tablas 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 a partir del mismo código fuente; las versiones de Thumb que se ven en 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 en función de una condición probada o de 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 ; ARM: sin código... Thumb: instrucción IT ; entonces r0 = r2; MOVEQ r0 , r2 ; ARM: condicional; Thumb: condición a través de ITE 'T' (entonces) ; de lo contrario r0 = r3; MOVNE r0 , r3 ; ARM: condicional; Thumb: condición a través de ITE 'E' (de lo contrario) ; 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 que admiten ARMv7, todos los de la serie Cortex-R y todos los de la serie ARM11 admiten tanto el "estado del conjunto de instrucciones ARM" como el "estado del conjunto de instrucciones Thumb", mientras que los chips de la serie Cortex-M admiten únicamente el conjunto de instrucciones Thumb. [123] [124] [125]

Entorno de ejecución Thumb (ThumbEE)

ThumbEE (erróneamente llamado Thumb-2EE en alguna documentación ARM), que se comercializó como Jazelle RCT [126] (Runtime Compilation Target), se anunció en 2005 y quedó obsoleto en 2011. Apareció por primera vez en el procesador Cortex-A8 . ThumbEE es un cuarto estado del 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 particularmente adecuado para el código generado en tiempo de ejecución (por ejemplo, mediante la compilación JIT ) en entornos de ejecución administrados . ThumbEE es un objetivo para lenguajes como Java , C# , Perl y Python , y permite que los compiladores JIT generen código compilado más pequeño sin reducir el rendimiento. [ cita requerida ]

Las nuevas características que ofrece ThumbEE incluyen comprobaciones automáticas de puntero nulo en cada instrucción de carga y almacenamiento, una instrucción para realizar una comprobació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 guarda el estado de la máquina virtual Java Jazelle/DBX). [127] Los controladores son pequeñas secciones de código a las que se llama con frecuencia, que se utilizan habitualmente para implementar lenguajes de alto nivel, como la asignación de memoria para un nuevo objeto. Estos cambios se deben a la reutilización de un puñado de códigos de operación y a saber que el núcleo está en el nuevo estado de ThumbEE.

El 23 de noviembre de 2011, Arm dejó de usar el conjunto de instrucciones ThumbEE, [128] y Armv8 eliminó el soporte para ThumbEE.

Punto flotante (VFP)

La tecnología VFP (Vector Floating Point) es una extensión del coprocesador de unidad de punto flotante (FPU) de la arquitectura ARM [129] (implementada de manera diferente en Armv8; los coprocesadores no están definidos allí). Proporciona computación de punto flotante de precisión simple y doble de bajo costo totalmente compatible con el estándar ANSI/IEEE Std 754-1985 para aritmética binaria de punto flotante . VFP proporciona computación de punto flotante adecuada 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 fue pensada para soportar la ejecución de instrucciones cortas de "modo vectorial", pero estas operaban en cada elemento vectorial de manera secuencial y, por lo tanto, no ofrecían el rendimiento del verdadero paralelismo vectorial de instrucción única y múltiples datos (SIMD). Por lo tanto, este modo vectorial se eliminó poco después de su introducción, [130] para ser reemplazado por el mucho más poderoso Advanced SIMD, también llamado 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 coma flotante. [131] La arquitectura anterior a Armv8 implementaba coma flotante/SIMD con la interfaz de coprocesador. Otras unidades de coma flotante y/o SIMD que se encuentran en procesadores basados ​​en ARM que utilizan la interfaz de coprocesador incluyen FPA, FPE, iwMMXt , algunas de las cuales se implementaron en software mediante trampas, 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 redondeo correcto (requerido por IEEE 754) solo en precisión simple. [132]

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 backward-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.[133] 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.[133]
VFPv5-D16-M
Implemented on Cortex-M7 when single and double-precision floating-point core option exists.

In Debian 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.[134]

Advanced SIMD (Neon)

The Advanced SIMD extension (also known as 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.[135] 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.[136] 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,[131] whereas newer Cortex-A15 devices can execute 128 bits at a time.[137][138]

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.[139] 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 named 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.[140]

ARM Helium technology

Helium is the M-Profile Vector Extension (MVE). It adds more than 150 scalar and vector instructions.[141]

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), to prevent information 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.[142]

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,[143] 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.[144][145]

Open Virtualization[146] is an open source implementation of the trusted world architecture for TrustZone.

AMD has licensed and incorporated TrustZone technology into its Secure Processor Technology.[147] Enabled in some but not all products, AMD's APUs include a Cortex-A5 processor for handling secure processing.[148][149][150] In fact, the Cortex-A5 TrustZone core had been included in earlier AMD products, but was not enabled due to time constraints.[149]

Samsung Knox uses TrustZone for purposes such as detecting modifications to the kernel, storing certificates and attestating keys.[151]

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.[152]

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.[153]

The physical address size may be even larger in processors based on the 64-bit (Armv8-A) architecture. For example, it is 44 bits in Cortex-A75 and Cortex-A65AE.[154]

Armv8-R and Armv8-M

The Armv8-R and Armv8-M architectures, announced after the Armv8-A architecture, share some features with Armv8-A. However, Armv8-M does not include any 64-bit AArch64 instructions, and Armv8-R originally did not include any AArch64 instructions; those instructions were added to Armv8-R later.

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:

64/32-bit architecture

Armv8-A Platform with Cortex A57/A53 MPCore big.LITTLE CPU chip

Armv8

Armv8-A

Announced in October 2011,[13] Armv8-A (often called ARMv8 while the Armv8-R is also available) represents a fundamental change to the ARM architecture. It supports two Execution states: a 64-bit state named AArch64 and a 32-bit state named AArch32. In the AArch64 state, a new 64-bit A64 instruction set is supported; in the AArch32 state, two instruction sets are supported: the original 32-bit instruction set, named A32, and the 32-bit Thumb-2 instruction set, named T32. AArch32 provides user-space compatibility with Armv7-A. The processor state can change on an Exception level change; this allows 32-bit applications to be executed in AArch32 state under a 64-bit OS whose kernel executes in AArch64 state, and allows a 32-bit OS to run in AArch32 state under the control of a 64-bit hypervisor running in AArch64 state.[1] ARM announced their Cortex-A53 and Cortex-A57 cores on 30 October 2012.[73] 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.[155] 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.[156]

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.[157] AArch64 was introduced in Armv8-A and its subsequent revision. AArch64 is not included in the 32-bit Armv8-R and Armv8-M architectures.

An ARMv8-A processor can support one or both of AArch32 and AArch64; it may support AArch32 and AArch64 at lower Exception levels and only AArch64 at higher Exception levels.[158] For example, the ARM Cortex-A32 supports only AArch32,[159] the ARM Cortex-A34 supports only AArch64,[160] and the ARM Cortex-A72 supports both AArch64 and AArch32.[161] An ARMv9-A processor must support AArch64 at all Exception levels, and may support AArch32 at EL0.[158]

Armv8-R

Optional AArch64 support was added to the Armv8-R profile, with the first ARM core implementing it being the Cortex-R82.[162] It adds the A64 instruction set.

Armv9

Armv9-A

Announced in March 2021, the updated architecture places a focus on secure execution and compartmentalisation.[163][164]

Arm SystemReady

Arm SystemReady, formerly named 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:[165]

These specifications are co-developed by Arm 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.[170]

This program was introduced by Arm 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:

PSA Certified

PSA Certified, formerly named 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.[171] It was introduced to increase security where a full trusted execution environment is too large or complex.[172]

The architecture was introduced by Arm in 2017 at the annual TechCon event.[172][173] 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.[174] It also provides freely downloadable application programming interface (API) packages, architectural specifications, open-source firmware implementations, and related test suites.[175]

Following the development of the architecture security framework in 2017, the PSA Certified assurance scheme launched two years later at Embedded World in 2019.[176] PSA Certified offers a multi-level security evaluation scheme for chip vendors, OS providers and IoT device makers.[177] The Embedded World presentation introduced chip vendors to Level 1 Certification. A draft of Level 2 protection was presented at the same time.[178] Level 2 certification became a usable standard in February 2020.[179]

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.[180][178] The certification also removes industry fragmentation for IoT product manufacturers and developers.[181]

Operating system support

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:

Mobile device operating systems

As of March 2024, the 32-bit ARM architecture used to be the primary hardware environment for most mobile device operating systems such as the following but many of these platforms such as Android and Apple iOS have evolved to the 64-bit ARM architecture:

Formerly, but now discontinued:

Desktop and server operating systems

The 32-bit ARM architecture is supported by RISC OS and by multiple Unix-like operating systems including:

64-bit operating systems

Embedded operating systems

Mobile device operating systems

Desktop and server operating systems

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.[210][211] 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.

Notes

  1. ^ Using 32-bit words, 4 Mbit/s corresponds to 1 MIPS.
  2. ^ Available references do not mention which design team this was, but given the timing and known history of designs of the era, it is likely this was the National Semiconductor team whose NS32016 suffered from a large number of bugs.
  3. ^ Matt Evans notes that it appears the faster versions were simply binned higher, and appear to have no underlying changes.[35]

See also

References

Citations

  1. ^ a b c d e f Grisenthwaite, Richard (2011). "ARMv8-A Technology Preview" (PDF). Archived from the original (PDF) on 11 November 2011. Retrieved 31 October 2011.
  2. ^ "6.1.2.1 VFP register usage conventions". Procedure Call Standard for the ARM Architecture. Arm Holdings. 6 October 2023. Retrieved 22 August 2024.
  3. ^ a b Wilson, Roger (2 November 1988). "Some facts about the Acorn RISC Machine". Newsgroup: comp.arch. Retrieved 25 May 2007.
  4. ^ a b Hachman, Mark (14 October 2002). "ARM Cores Climb into 3G Territory". ExtremeTech. Retrieved 24 May 2018.
  5. ^ Turley, Jim (18 December 2002). "The Two Percent Solution". Embedded. Retrieved 14 February 2023.
  6. ^ Cutress, Ian (22 June 2020). "New #1 Supercomputer: Fujitsu's Fugaku and A64FX take Arm to the Top with 415 PetaFLOPs". anandtech.com. Retrieved 25 January 2021.
  7. ^ "Arm Partners Have Shipped 200 Billion Chips". Arm (Press release). Retrieved 3 November 2021.
  8. ^ "Enabling Mass IoT connectivity as ARM partners ship 100 billion chips". community.arm.com. 27 February 2017. 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.
  9. ^ "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.
  10. ^ Turley, Jim (2002). "The Two Percent Solution". embedded.com.
  11. ^ "Arm Holdings eager for PC and server expansion". The Register. 1 February 2011.
  12. ^ McGuire-Balanza, Kerry (11 May 2010). "ARM from zero to billions in 25 short years". Arm Holdings. Retrieved 8 November 2012.
  13. ^ 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.
  14. ^ "Announcing the ARM Neoverse N1 Platform". community.arm.com. 20 February 2019. Retrieved 8 April 2020.
  15. ^ Fairbairn, Douglas (31 January 2012). "Oral History of Sophie Wilson" (PDF). Archived (PDF) from the original on 3 March 2016. Retrieved 2 February 2016.
  16. ^ 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.
  17. ^ Polsson, Ken. "Chronology of Microprocessors". Processortimeline.info. Archived from the original on 9 August 2018. Retrieved 27 September 2013.
  18. ^ Leedy, Glenn (April 1983). "The National Semiconductor NS16000 Microprocessor Family". Byte. pp. 53–66. Retrieved 22 August 2020.
  19. ^ Evans 2019, 6:00.
  20. ^ Manners, David (29 April 1998). "ARM's way". Electronics Weekly. Archived from the original on 29 July 2012. Retrieved 26 October 2012.
  21. ^ Evans 2019, 5:30.
  22. ^ a b Evans 2019, 7:45.
  23. ^ Evans 2019, 8:30.
  24. ^ Sophie Wilson at Alt Party 2009 (Part 3/8). Archived from the original on 11 December 2021.
  25. ^ Chisnall, David (23 August 2010). Understanding ARM Architectures. Retrieved 26 May 2013.
  26. ^ Evans 2019, 9:00.
  27. ^ Furber, Stephen B. (2000). ARM system-on-chip architecture. Boston: Addison-Wesley. ISBN 0-201-67519-6.
  28. ^ Evans 2019, 9:50.
  29. ^ Evans 2019, 23:30.
  30. ^ Evans 2019, 26:00.
  31. ^ "ARM Instruction Set design history with Sophie Wilson (Part 3)". 10 May 2015. Archived from the original on 11 December 2021. Retrieved 25 May 2020 – via YouTube.
  32. ^ "Oral History of Sophie Wilson – 2012 Computer History Museum Fellow" (PDF). Computer History Museum. 31 January 2012. Retrieved 25 May 2020.
  33. ^ 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.
  34. ^ Evans 2019, 20:30.
  35. ^ Evans 2019, 22:00.
  36. ^ Evans 2019, 21:30.
  37. ^ Evans 2019, 22:0030.
  38. ^ a b Evans 2019, 14:00.
  39. ^ "From one Arm to the next! ARM Processors and Architectures". Retrieved 31 May 2022.
  40. ^ Levy, Markus. "The History of The ARM Architecture: From Inception to IPO" (PDF). Retrieved 18 July 2022.
  41. ^ Introducing the Commodore Amiga 3000 (PDF). Commodore-Amiga, Inc. 1991.
  42. ^ "Computer MIPS and MFLOPS Speed Claims 1980 to 1996". www.roylongbottom.org.uk. Retrieved 17 June 2023.
  43. ^ Santanu Chattopadhyay (2010). Embedded System Design. PHI Learning Pvt. Ltd. p. 9. ISBN 978-81-203-4024-4.
  44. ^ Richard Murray. "32 bit operation".
  45. ^ "ARM Company Milestones". ARM. Archived from the original on 20 April 2015. Retrieved 8 April 2015.
  46. ^ 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.
  47. ^ 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) [...]
  48. ^ "ARM Corporate Backgrounder" (PDF). ARM. Archived from the original (PDF) on 4 October 2006.
  49. ^ Montanaro, James; et al. (1997). "A 160-MHz, 32-b, 0.5-W CMOS RISC Microprocessor" (PDF). Digital Technical Journal. 9 (1): 49–62.
  50. ^ DeMone, Paul (9 November 2000). "ARM's Race to Embedded World Domination". Real World Technologies. Retrieved 6 October 2015.
  51. ^ "March of the Machines". technologyreview.com. MIT Technology Review. 20 April 2010. Archived from the original on 16 October 2015. Retrieved 6 October 2015.
  52. ^ Krazit, Tom (3 April 2006). "ARMed for the living room". CNET.
  53. ^ Tracy Robinson (12 February 2014). "Celebrating 50 Billion shipped ARM-powered Chips".
  54. ^ Sarah Murry (3 March 2014). "ARM's Reach: 50 Billion Chip Milestone". Archived from the original on 16 September 2015.
  55. ^ Brown, Eric (2009). "ARM netbook ships with detachable tablet". Archived from the original on 3 January 2013. Retrieved 19 August 2009.
  56. ^ Peter Clarke (7 January 2016). "Amazon Now Sells Own ARM chips".
  57. ^ "MACOM Successfully Completes Acquisition of AppliedMicro" (Press release). 26 January 2017.
  58. ^ Frumusanu, Andrei. "ARM Details Built on ARM Cortex Technology License". AnandTech. Retrieved 26 May 2019.
  59. ^ Cutress, Ian. "ARM Flexible Access: Design the SoC Before Spending Money". AnandTech. Retrieved 9 October 2019.
  60. ^ "ARM Flexible Access Frequently Asked Questions". ARM. Retrieved 9 October 2019.
  61. ^ Nolting, Stephan. "STORM CORE Processor System" (PDF). OpenCores. Retrieved 1 April 2014.
  62. ^ ZAP on GitHub
  63. ^ "Cortex-M23 Processor". ARM. Retrieved 27 October 2016.
  64. ^ "Cortex-M33 Processor". ARM. Retrieved 27 October 2016.
  65. ^ "ARMv8-M Architecture Simplifies Security for Smart Embedded". ARM. Retrieved 10 November 2015.
  66. ^ Ltd, Arm. "M-Profile Architectures". Arm | The Architecture for the Digital World. Retrieved 29 August 2023.
  67. ^ "ARMv8-R Architecture". Retrieved 10 July 2015.
  68. ^ Craske, Simon (October 2013). "ARM Cortex-R Architecture" (PDF). Arm Holdings. Archived from the original (PDF) on 6 April 2014. Retrieved 1 February 2014.
  69. ^ Smith, Ryan (20 September 2016). "ARM Announces Cortex-R52 CPU: Deterministic & Safe, for ADAS & More". AnandTech. Retrieved 20 September 2016.
  70. ^ "Cortex-A32 Processor". ARM. Retrieved 10 October 2019.
  71. ^ "Cortex-A35 Processor". ARM. Retrieved 10 November 2015.
  72. ^ a b "ARM Launches Cortex-A50 Series, the World's Most Energy-Efficient 64-bit Processors" (Press release). Arm Holdings. Retrieved 31 October 2012.
  73. ^ "Cortex-A72 Processor". ARM. Retrieved 10 July 2015.
  74. ^ "Cortex-A73 Processor". ARM. Retrieved 2 June 2016.
  75. ^ "ARMv8-A Architecture". Retrieved 10 July 2015.
  76. ^ "Cavium Thunder X ups the ARM core count to 48 on a single chip". SemiAccurate. 3 June 2014.
  77. ^ "Cavium at Supercomputing 2014". Yahoo Finance. 17 November 2014. Archived from the original on 16 October 2015. Retrieved 15 January 2017.
  78. ^ Burt, Jeff (17 November 2014). "Cray to Evaluate ARM Chips in Its Supercomputers". eWeek.
  79. ^ "Samsung Announces Exynos 8890 with Cat.12/13 Modem and Custom CPU". AnandTech.
  80. ^ "Cortex-A34 Processor". ARM. Retrieved 10 October 2019.
  81. ^ "D21500 [AARCH64] Add support for Broadcom Vulcan". reviews.llvm.org.
  82. ^ "Cortex-A55 Processor". ARM. Retrieved 29 May 2017.
  83. ^ "Cortex-A75 Processor". ARM. Retrieved 29 May 2017.
  84. ^ "Cortex-A76 Processor". ARM. Retrieved 11 October 2018.
  85. ^ Berenice Mann (April 2017). "ARM Architecture – ARMv8.2-A evolution and delivery". community.ARM.com.
  86. ^ Frumusanu, Andrei. "Samsung Announces the Exynos 9825 SoC: First 7nm EUV Silicon Chip". AnandTech. Retrieved 11 October 2019.
  87. ^ "Fujitsu began to produce Japan's billions of super-calculations with the strongest ARM processor A64FX". China IT News. Archived from the original on 20 June 2019. Retrieved 17 August 2019. ARMv8 SVE (Scalable Vector Extension) chip, which uses 512bit floating point.
  88. ^ "Cortex-A65AE – ARM". ARM. 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.
  89. ^ Frumusanu, Andrei. "Marvell Announces ThunderX3: 96 Cores & 384 Thread 3rd Gen ARM Server Processor". AnandTech. Retrieved 26 May 2020.
  90. ^ "AArch64: add support for newer Apple CPUs · apple/llvm-project@677da09". GitHub. Retrieved 23 September 2022.
  91. ^ "New features for the Armv8-A architecture - Architectures and Processors blog - Arm Community blogs - Arm Community". community.arm.com. 21 September 2020. Retrieved 28 December 2021.
  92. ^ "Arm's solution to the future needs of AI, security and specialized computing is v9". Arm. Retrieved 16 August 2021.
  93. ^ "First Armv9 Cortex CPUs for Consumer Compute". community.arm.com. 25 May 2021. Retrieved 16 August 2021.
  94. ^ "Apple M4 Support Added To The LLVM Compiler, Confirming Its ISA Capabilities". www.phoronix.com. Retrieved 15 June 2024.
  95. ^ "Arm A-Profile Architecture Developments 2021 - Architectures and Processors blog - Arm Community blogs - Arm Community". community.arm.com. 8 September 2021. Retrieved 25 September 2023.
  96. ^ "Arm A-Profile Architecture Developments 2022 - Architectures and Processors blog - Arm Community blogs - Arm Community". community.arm.com. 29 September 2022. Retrieved 25 September 2023.
  97. ^ "Line Card" (PDF). 2003. Retrieved 1 October 2012.
  98. ^ Parrish, Kevin (14 July 2011). "One Million ARM Cores Linked to Simulate Brain". EE Times. Retrieved 2 August 2011.
  99. ^ "Processor mode". Arm Holdings. Retrieved 26 March 2013.
  100. ^ "KVM/ARM" (PDF). Retrieved 14 February 2023.
  101. ^ Brash, David (August 2010). Extensions to the ARMv7-A Architecture. 2010 IEEE Hot Chips 22 Symposium (HCS). pp. 1–21. doi:10.1109/HOTCHIPS.2010.7480070. ISBN 978-1-4673-8875-7. S2CID 46339775.
  102. ^ "How does the ARM Compiler support unaligned accesses?". 2011. Retrieved 5 October 2013.
  103. ^ "Unaligned data access". Retrieved 5 October 2013.
  104. ^ "Cortex-M0 r0p0 Technical Reference Manual" (PDF). Arm.
  105. ^ "ARMv7-M Architecture Reference Manual". Arm. Retrieved 18 July 2022.
  106. ^ a b "ARMv7-A and ARMv7-R Architecture Reference Manual; Arm Holdings". arm.com. Retrieved 19 January 2013.
  107. ^ "ARM Information Center". Retrieved 10 July 2015.
  108. ^ "Condition Codes 1: Condition flags and codes". ARM Community. 11 September 2013. Retrieved 26 September 2019.
  109. ^ "9.1.2. Instruction cycle counts".
  110. ^ "CoreSight Components: About the Debug Access Port".
  111. ^ "The Cortex-M3: Debug Access Port (DAP)".
  112. ^ Anderson, Mike. "Understanding ARM HW Debug Options" (PDF).
  113. ^ "CMSIS-DAP Debugger User's Guide".
  114. ^ "CMSIS-DAP".
  115. ^ "ARM DSP Instruction Set Extensions". arm.com. Archived from the original on 14 April 2009. Retrieved 18 April 2009.
  116. ^ a b Clarke, Peter (3 May 1999). "EPF: ARC, ARM add DSP extensions to their RISC cores". EE Times. Retrieved 15 March 2024.
  117. ^ Turley, Jim (18 November 1996). "ARM Tunes Piccolo for DSP Performance" (PDF). Microprocessor Report. Retrieved 15 March 2024.
  118. ^ "DSP & SIMD". Retrieved 10 July 2015.
  119. ^ "ARM7TDMI Technical Reference Manual" (PDF). p. ii.
  120. ^ Jaggar, Dave (1996). ARM Architecture Reference Manual. Prentice Hall. pp. 6–1. ISBN 978-0-13-736299-8.
  121. ^ Nathan Willis (10 June 2015). "Resurrecting the SuperH architecture". LWN.net.
  122. ^ "ARM Processor Instruction Set Architecture". ARM.com. Archived from the original on 15 April 2009. Retrieved 18 April 2009.
  123. ^ "ARM aims son of Thumb at uCs, ASSPs, SoCs". Linuxdevices.com. Archived from the original on 9 December 2012. Retrieved 18 April 2009.
  124. ^ "ARM Information Center". Infocenter.arm.com. Retrieved 18 April 2009.
  125. ^ "Jazelle". ARM Ltd. Archived from the original on 2 June 2017.
  126. ^ 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.
  127. ^ ARM Architecture Reference Manual, Armv7-A and Armv7-R edition, issue C.b, Section A2.10, 25 July 2012.
  128. ^ "ARM Compiler toolchain Using the Assembler – VFP coprocessor". ARM.com. Retrieved 20 August 2014.
  129. ^ "VFP directives and vector notation". ARM.com. Retrieved 21 November 2011.
  130. ^ a b "Differences between ARM Cortex-A8 and Cortex-A9". Shervin Emami. Retrieved 21 November 2011.
  131. ^ "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.
  132. ^ a b "Cortex-A7 MPCore Technical Reference Manual – 1.3 Features". ARM. Retrieved 11 July 2014.
  133. ^ "ArmHardFloatPort – Debian Wiki". Wiki.debian.org. 20 August 2012. Retrieved 8 January 2014.
  134. ^ "Cortex-A9 Processor". arm.com. Retrieved 21 November 2011.
  135. ^ "About the Cortex-A9 NEON MPE". arm.com. Retrieved 21 November 2011.
  136. ^ "US20050125476A1".
  137. ^ "US20080141004A1".
  138. ^ "ARM Options". GNU Compiler Collection Manual. Retrieved 20 September 2019.
  139. ^ Ne10: An open optimized software library project for the ARM Architecture on GitHub
  140. ^ Joseph Yiu. "Introduction to ARMv8.1-M architecture" (PDF). Retrieved 18 July 2022.
  141. ^ "Genode – An Exploration of ARM TrustZone Technology". Retrieved 10 July 2015.
  142. ^ "ARM Announces Availability of Mobile Consumer DRM Software Solutions Based on ARM TrustZone Technology" (Press release). News.thomasnet.com. Retrieved 18 April 2009.
  143. ^ Laginimaineb (8 October 2015). "Bits, Please!: Full TrustZone exploit for MSM8974". Bits, Please!. Retrieved 3 May 2016.
  144. ^ Di Shen. "Attacking your 'Trusted Core' Exploiting TrustZone on Android" (PDF). Black Hat Briefings. Retrieved 3 May 2016.
  145. ^ "ARM TrustZone and ARM Hypervisor Open Source Software". Open Virtualization. Archived from the original on 14 June 2013. Retrieved 14 June 2013.
  146. ^ "AMD Secure Technology". AMD. Archived from the original on 23 July 2016. Retrieved 6 July 2016.
  147. ^ Smith, Ryan (13 June 2012). "AMD 2013 APUs to include ARM Cortex A5 Processor for Trustzone Capabilities". AnandTech. Retrieved 6 July 2016.
  148. ^ a b Shimpi, Anand Lal (29 April 2014). "AMD Beema Mullins Architecture A10 micro 6700T Performance Preview". AnandTech. Retrieved 6 July 2016.
  149. ^ Walton, Jarred (4 June 2014). "AMD Launches Mobile Kaveri APUs". AnandTech. Retrieved 6 July 2016.
  150. ^ "Root of Trust" (white paper). Samsung Electronics. April 2016.
  151. ^ "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]
  152. ^ ARM Architecture Reference Manual, ARMv7-A and ARMv7-R edition. ARM Limited.
  153. ^ "Cortex-A65AE". ARM Developer. Retrieved 26 April 2019.
  154. ^ "AppliedMicro Showcases World's First 64-bit ARM v8 Core" (Press release). AppliedMicro. 28 October 2011. Retrieved 11 February 2014.
  155. ^ "Samsung's Exynos 5433 is an A57/A53 ARM SoC". AnandTech. Retrieved 17 September 2014.
  156. ^ "ARM Cortex-A53 MPCore Processor Technical Reference Manual: Cryptography Extension". ARM. Retrieved 11 September 2016.
  157. ^ a b "Impact of implemented Exception levels". Learn the architecture - AArch64 Exception Model. Arm.
  158. ^ "Cortex-A32". Arm Developer.
  159. ^ "Cortex-A34". Arm Developer.
  160. ^ "Cortex-A72". Arm Developer.
  161. ^ Frumusanu, Andrei (3 September 2020). "ARM Announced Cortex-R82: First 64-bit Real Time Processor". AnandTech.
  162. ^ Frumusanu, Andrei (30 March 2021). "Arm Announces Armv9 Architecture: SVE2, Security, and the Next Decade". AnandTech.
  163. ^ Harrod, Alex (30 March 2021). "Arm's Solution to the Future Needs of AI, Security and Specialized Computing is v9" (Press release). Arm Ltd.
  164. ^ "SystemReady Compliance Program". Arm.
  165. ^ "Arm Base System Architecture". Arm.
  166. ^ "Arm Server Base System Architecture". Arm.
  167. ^ "Arm Base Boot Requirements". Arm.
  168. ^ "Base Boot Security Requirements". Arm.
  169. ^ "Arm SystemReady Requirements Specification". Arm.
  170. ^ Osborne, Charlie. "ARM announces PSA security architecture for IoT devices". ZDNet.
  171. ^ a b Wong, William (25 October 2017). "ARM's Platform Security Architecture Targets Cortex-M". Electronic Design. Archived from the original on 8 May 2019.
  172. ^ Hoffenberg, Steve (31 October 2017). "ARM: Security Isn't Just a Technological Imperative, It's a Social Responsibility". VDC Research. Archived from the original on 28 September 2023.
  173. ^ Armasu, Lucian (22 February 2018). "ARM Reveals More Details About Its IoT Platform Security Architecture". Tom's Hardware.
  174. ^ Williams, Chris. "ARM PSA IoT API? BRB... Toolbox of tech to secure net-connected kit opens up some more". The Register.
  175. ^ Hayes, Caroline (25 February 2019). "Embedded World: Arm introduces fourth security element to PSA". Electronics Weekly.
  176. ^ "PSA Certified: building trust in IoT". PSA Certified.
  177. ^ a b "PSA Certified–building trust, building value". EE Times. 4 March 2019.
  178. ^ "The $6trn importance of security standards and regulation in the IoT era". IoT Now. 16 March 2020.
  179. ^ McGregor, Jim (4 March 2019). "Arm Introduces Security Certification Testing For IoT". Forbes.
  180. ^ Speed, Richard (26 February 2019). "Azure IoT heads spaceward to maintain connectivity at the edge, courtesy of Inmarsat". TheRegister.
  181. ^ "OS-9 Specifications". Microware.
  182. ^ a b "Pharos". SourceForge. Retrieved 24 May 2018.
  183. ^ "PikeOS Safe and Secure Virtualization". Retrieved 10 July 2013.
  184. ^ a b "Safety Certified Real-Time Operating Systems – Supported CPUs".
  185. ^ "ARM Platform Port". opensolaris.org. Archived from the original on 2 December 2012. Retrieved 29 December 2012.
  186. ^ "Green Hills Software's INTEGRITY-based Multivisor Delivers Embedded Industry's First 64-bit Secure Virtualization Solution". ghs.com. Retrieved 14 March 2018.
  187. ^ "Enea OSE real-time operating system for 5G and LTE-A | Enea". enea.com. Archived from the original on 1 January 2019. Retrieved 17 April 2018.
  188. ^ "Supported Platforms". docs.sel4.systems. Retrieved 23 November 2018.
  189. ^ "QNX Software Development Platform (SDP 7.0) | BlackBerry QNX". blackberry.qnx.com. Retrieved 27 July 2020.
  190. ^ "Wind River Releases 64-Bit VxWorks RTOS" (Press release). Wind River Systems. 28 February 2011. Retrieved 24 October 2023.
  191. ^ "Manjaro-ARM". Manjaro wiki. 20 June 2022.
  192. ^ Linus Torvalds (1 October 2012). "Re: [GIT PULL] arm64: Linux kernel port". Linux kernel mailing list (Mailing list). Retrieved 2 May 2019.
  193. ^ Larabel, Michael (27 February 2013). "64-bit ARM Version of Ubuntu/Debian Is Booting". Phoronix. Retrieved 17 August 2014.
  194. ^ "Debian Project News – August 14th, 2014". Debian. 14 August 2014. Retrieved 17 August 2014.
  195. ^ "Ubuntu Server for ARM". ubuntu.com.
  196. ^ "Architectures/AArch64". Retrieved 16 January 2015.
  197. ^ "Portal:ARM/AArch64". Retrieved 16 January 2015.
  198. ^ "SUSE Linux Enterprise 12 SP2 Release Notes". Retrieved 11 November 2016.
  199. ^ "Red Hat introduces ARM server support for Red Hat Enterprise Linux". redhat.com. Retrieved 18 January 2019.
  200. ^ "64-bit ARM architecture project update". The FreeBSD Foundation. 24 November 2014.
  201. ^ "OpenBSD/arm64". Retrieved 25 September 2023.
  202. ^ "NetBSD/arm64". Retrieved 5 August 2018.
  203. ^ "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.
  204. ^ Hassan, Mehedi (10 December 2016). "Windows 10 on ARM64 gets its first compiled apps". MSPoweruser.
  205. ^ Filippidis, Katrina (1 June 2018). "VLC becomes one of first ARM64 Windows apps". Engadget.
  206. ^ Sweetgall, Marc (15 November 2018). "Official support for Windows 10 on ARM development". Windows Developer. Windows Blogs. Microsoft. Retrieved 17 December 2019.
  207. ^ Gartenberg, Chaim (12 November 2020). "macOS Big Sur is now available to download". The Verge. Retrieved 13 November 2020.
  208. ^ Clover, Juli (23 June 2020). "Rosetta Won't Support x86 Virtualization Apps Running Windows". MacRumors. Retrieved 13 November 2020.
  209. ^ "ARM – The Official Wine Wiki". Retrieved 10 July 2015.
  210. ^ "ARM64 – The Official Wine Wiki". Retrieved 10 July 2015.
  211. ^ "ARM Security Updates". ARM Developer. Retrieved 24 May 2018.

Bibliography

Further reading

External links

Architecture manuals

Quick-reference cards

Instructions

Opcodes