stringtranslate.com

Familia de arquitectura ARM

ARM (estilizado en minúsculas como arm , anteriormente 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 computadora . Arm Ltd. desarrolla las ISA y las otorga licencia a otras empresas, que construyen los dispositivos físicos que utilizan el conjunto de instrucciones. También diseña y otorga licencias a 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 que funcionan con baterías, 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 ) ​​de 2020 [6] a 2022. Con más de 230 mil millones de chips ARM producidos, [7] [8 ] [9] a partir de 2022 , ARM es la familia de arquitecturas de conjuntos de instrucciones más utilizada. [10] [4] [11] [12] [13]

Ha habido varias generaciones del diseño ARM. El ARM1 original utilizaba 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. 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. [14] Arm Ltd. también ha publicado 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 el código de bytes de Java . 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 . [15]

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 funcionaba aproximadamente con el doble de rendimiento que diseños de la competencia como el Apple II debido al uso de tecnologías más rápidas. Memoria dinámica de acceso aleatorio (DRAM). La DRAM típica de la época funcionaba a aproximadamente 2 MHz; Acorn llegó a un acuerdo con Hitachi para el 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) por separado. Como el tiempo de visualización del vídeo es exigente, el hardware de vídeo tenía que tener acceso prioritario a esa memoria. Debido a una peculiaridad del diseño del 6502, la CPU dejó la memoria intacta durante la mitad 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 ancho de banda total de 2 MHz de la RAM. En BBC Micro, el uso de 4 MHz de RAM 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 empresarial Bellota

1981 fue también el año en que se introdujo la computadora personal IBM . Utilizando el Intel 8088 recientemente presentado , una CPU de 16 bits en comparación con el diseño de 8 bits del 6502 , ofrecía un rendimiento general más alto. 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 surgía durante los cinco años anteriores comenzó a convertirse en una herramienta comercial imprescindible donde los diseños anteriores de 8 bits simplemente no podían competir. También estaban llegando al mercado diseños incluso más nuevos de 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 llamado Acorn Business Computer . Se fijaron el objetivo de producir una máquina con un rendimiento diez veces mayor que el 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 del Apple Lisa llevó el concepto de interfaz gráfica de usuario (GUI) a un público más amplio y sugirió que el futuro pertenecía a las máquinas con GUI. [21] El Lisa, sin embargo, costó $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. [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 seguían siendo "un poco malos", [23] ofreciendo sólo un rendimiento ligeramente superior que su diseño BBC Micro. Además, casi siempre exigían una gran cantidad de chips de soporte para funcionar incluso a ese nivel, lo que elevaba el coste 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 costaban aún más 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 aproximadamente un ancho de banda de 4 Mbit/segundo. [25] [un]

Dos eventos clave llevaron a Acorn por el camino hacia ARM. Uno de ellos 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 el de 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 ofrecía nuevas versiones como el WDC 65C02 . El equipo de Acorn vio a estudiantes de secundaria producir diseños de chips en máquinas Apple II, lo que sugirió que cualquiera podría hacerlo. [27] [28] Por el contrario, 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 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 los conceptos básicos de registro pesado y carga/almacenamiento del RISC, 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 hardware externo añadido. Para ofrecer interrupciones con un rendimiento similar al 6502, el diseño ARM limitó su espacio de direcciones físicas a 64 MB de espacio direccionable total, requiriendo 26 bits de dirección. Como las instrucciones tenían 4 bytes (32 bits) de largo y debían alinearse en límites de 4 bytes, los 2 bits inferiores de la dirección de una instrucción siempre eran cero. Esto significaba que el contador del programa (PC) sólo necesitaba ser de 24 bits, lo que permitía almacenarlo junto con las banderas del procesador de ocho bits en un único registro de 32 bits. Eso significaba que al recibir una interrupción, todo el estado de la máquina podría guardarse en una sola operación, mientras que si la PC tuviera un valor completo de 32 bits, se requerirían operaciones separadas para almacenar la PC y los indicadores de estado. Esta decisión redujo a la mitad los gastos generales de interrupción. [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 . Introducido recientemente, el modo de página permitió 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", en el chip DRAM. El diseño de Berkeley no consideró el modo página y trató toda la memoria por igual. El diseño de 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 podía utilizar 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 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 . [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ó 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

ARM1 2do procesador para BBC Micro

Acorn eligió VLSI Technology como "socio de silicio", ya que era 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. [3] 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 de ARM2. Wilson posteriormente reescribió BBC BASIC en lenguaje ensamblador ARM . El conocimiento profundo 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 finales de 1986 del diseño ARM2 funcionando a 8 MHz, y a principios de 1987 la versión con velocidad aumentada 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. [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 misma. Esto significaba que las solicitudes FIQ no tenían que guardar sus registros, lo que aceleraba aún más las interrupciones. [38]

Según el punto de referencia de Dhrystone , el ARM2 tenía aproximadamente siete veces el rendimiento de un sistema típico basado en 68000 de 7 MHz como Amiga o Macintosh SE . Era dos veces más rápido que un Intel 80386 funcionando a 16 MHz y aproximadamente la misma velocidad que una superminicomputadora multiprocesador VAX-11/784 . Los únicos sistemas que lo superaron fueron las estaciones de trabajo basadas en Sun SPARC y MIPS R2000 RISC . [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 un 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 la sincronización. El resultado fue un diseño dramáticamente simplificado, que ofrece un rendimiento a la par de costosas estaciones de trabajo pero a un precio similar al de las computadoras de escritorio contemporáneas. [39]

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 ). [40] El ARM2 tenía un recuento de transistores de sólo 30.000, [41] en comparación con el modelo 68000 de seis años de antigüedad de Motorola con alrededor de 68.000. Gran parte de esta simplicidad se debe a la falta de microcódigo , que representa entre un cuarto y un tercio de los transistores del 68000, y a la falta (como la mayoría de las CPU de la época) de una memoria caché . Esta simplicidad permitió que el ARM2 tuviera un bajo consumo de energía y un empaque térmico más simple, al tener menos transistores alimentados, pero ofreciendo un mejor rendimiento que el IBM PS/2 Modelo 50 contemporáneo de 1987 , que inicialmente utilizaba un Intel 80286 , ofreciendo 1.8 MIPS @ 10 MHz, y posteriormente en 1987, los 2 MIPS del PS/2 70, con su Intel 386 DX @ 16 MHz. [42] [43]

Se produjo un sucesor, ARM3, con una caché de 4 KB, lo que mejoró aún más el rendimiento. [44] El bus de direcciones se amplió a 32 bits en el ARM6, pero el código del programa aún 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 los indicadores de estado. [45]

Máquinas RISC avanzadas Ltd. - ARM6

Sistema basado en microprocesador en un chip.
Muere de un microprocesador ARM610

A finales 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., [46] [47] [48] 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. [49] El nuevo trabajo 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 utilizó el ARM610 como unidad central de procesamiento (CPU) principal en sus computadoras RiscPC . DEC obtuvo la licencia de la arquitectura ARMv4 y produjo StrongARM . [50] A 233  MHz , esta CPU consumía sólo un vatio (las versiones más nuevas consumen mucho menos). Posteriormente, este trabajo se pasó a Intel como parte de un acuerdo judicial, e Intel aprovechó la oportunidad para complementar su línea i960 con StrongARM. Posteriormente, Intel desarrolló su propia implementación de alto rendimiento llamada XScale, que desde entonces vendió a Marvell . El número de transistores del núcleo ARM se mantuvo esencialmente igual a lo largo de estos cambios; ARM2 tenía 30.000 transistores, [51] mientras que ARM6 creció sólo a 35.000. [52]

Cuota de mercado

En 2005, alrededor del 98% de todos los teléfonos móviles vendidos utilizaban al menos un procesador ARM. [53] En 2010, los productores de chips basados ​​en arquitecturas ARM informaron envíos de 6,1 mil millones de procesadores basados ​​en ARM , lo que representa el 95% de los teléfonos inteligentes , el 35% de los televisores y decodificadores digitales 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. [54] En 2013, se produjeron 10 mil millones [55] y "los chips basados ​​en ARM se encuentran en casi el 60 por ciento de los dispositivos móviles del mundo". [56]

Licencia

Matriz de un microcontrolador STM32F103VGT6 ARM Cortex-M3 con 1  MB de memoria flash de STMicroelectronics

licencia principal

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 puede construirse en plantas de fabricación de semiconductores (fabs) existentes a bajo costo y aun así ofrecer un rendimiento sustancial. La implementación más exitosa ha sido la ARM7TDMI con cientos de millones vendidos. Atmel ha sido un centro de diseño precursor del 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 de arquitectura ARM, en competencia directa con los netbooks basados ​​en Intel Atom . [57]

Arm Ltd. ofrece una variedad de términos de licencia, que varían en costos 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 contenga la CPU ARM.

Los paquetes de SoC que integran los diseños centrales de ARM incluyen las tres primeras 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, A4 , A5 y A5X de Apple , y i.MX de NXP .

Los licenciatarios sin fábrica , 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 semiconductor verificado listo para fabricar . Para estos clientes, Arm Ltd. ofrece una descripción de la lista de puertas de acceso del núcleo ARM elegido, junto con un modelo de simulación resumido y programas de prueba para ayudar en 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 el procesador IP en forma 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 no modificada ( 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 manufacturados, 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 silicio terminado que contenga núcleos ARM, 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 costos 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 macro duro (caja negra). Para complicar las cuestiones de precios, una fundición comercial que posee 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 inicial de licencia 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 necesaria ] Para aplicaciones de volumen bajo a medio, una fundición de servicios de diseño ofrece precios generales más bajos (mediante 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 mediante precios más bajos de las obleas reduce el impacto de los costos NRE ( ingeniería no recurrente ) de ARM, lo que convierte a la fundición dedicada en una mejor opción.

Las empresas que han desarrollado chips con núcleos diseñados por Arm incluyen la filial Annapurna Labs de Amazon.com , [58] Analog Devices , Apple , AppliedMicro (ahora: MACOM Technology Solutions [59] ), 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 con licencia de tecnología ARM Cortex

En febrero de 2016, ARM anunció la licencia de tecnología Build on ARM Cortex, a menudo abreviada como licencia Build 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úcleos semipersonalizados también tienen libertad de marca, por ejemplo Kryo 280 .

Las empresas que actualmente son licenciatarias de la tecnología ARM Cortex incluyen Qualcomm . [60]

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 plenamente 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. ( adquirido por Qualcomm en 2021).

Acceso flexible a 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 de licencia por producto una vez que el cliente llega al final de la cinta de fundición o a la creación de prototipos. [61] [62]

El 75 % de las IP más recientes de ARM de 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 registros de CPU en los primeros procesadores ARM eran de 32 bits, la memoria direccionable estaba limitada a 26 bits ; con los bits superiores, entonces, utilizados para indicadores de estado en el registro del contador del programa.
  2. ^ abc ARMv3 incluyó un modo de compatibilidad para admitir direcciones de 26 bits de versiones anteriores de la arquitectura. Este modo de compatibilidad es opcional en ARMv4 y se elimina por completo en ARMv5.

Arm proporciona una lista de proveedores que implementan núcleos ARM en su diseño (productos estándar de aplicaciones específicas (ASSP), microprocesadores y microcontroladores). [98]

Aplicaciones de ejemplo de núcleos ARM

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

Los núcleos ARM se utilizan en varios productos, particularmente 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 (después de 2002 ), los iPads de Apple y las tabletas Eee Pad Transformer de Asus , y varios portátiles Chromebook . Otros incluyen los teléfonos inteligentes iPhone de Apple y los reproductores multimedia portátiles iPod , 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 otras computadoras 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 CuBox de computadoras de placa única.

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

Desde 1995, varias versiones del Manual de referencia de arquitectura ARM (ver § Enlaces externos) han 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 admitir (como la semántica de instrucciones) de las 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 mediante programación. [100]

Conjunto de instrucciones

La implementación ARM original (y posterior) 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 32 bits × 16 bits.

Las instrucciones de división solo se incluyen 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 distintos del R8 al R12.

R13 y R14 están almacenados en todos los modos privilegiados de CPU, excepto en el modo 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 la pila y la dirección de retorno de las llamadas a funciones, 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 siempre se ejecute. La mayoría de las otras arquitecturas de CPU solo tienen códigos de condición en instrucciones de rama. [109]

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 desplazamientos en las instrucciones de acceso a la memoria, evita instrucciones de bifurcación al generar código para ifdeclaraciones pequeñas . Además de eliminar las instrucciones de bifurcación en sí, esto preserva la canalización de búsqueda/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 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 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 eso (no se necesita "if (a < b)" ya que a != b está marcado en la condición while) b -= a ; devolver un ; }                         

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

bucle : // Compara a y b GT = a > b ; LT = a < b ; NE = a != b ;                 // Realizar operaciones basadas en los resultados del indicador if ( GT ) a -= b ; // Resta *solo* si es mayor que if ( LT ) b -= a ; // Resta *solo* si es menor que if ( NE ) goto loop ; // Bucle *solo* si los valores comparados no son iguales return a ;                   

y codificado en lenguaje ensamblador como:

; asigne 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 < b) SUBGT r0 , r0 , r1 ; si "GT" (mayor que), entonces a = a − b SUBLT r1 , r1 , r0 ; si "LT" (Menos que), entonces b = b − un bucle BNE ; si "NE" (no es igual), entonces haga un bucle B lr ; devolver                      

lo que evita las ramas alrededor de las cláusulas theny else. Si r0y r1son iguales, entonces ninguna de las SUBinstrucciones se ejecutará, lo que elimina la necesidad de una rama condicional para implementar la whileverificación en la parte superior del bucle, por ejemplo, se ha SUBLEutilizado (menor o igual).

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 incorporar cambios y rotaciones en instrucciones de procesamiento de datos (aritmética, lógica y movimiento de 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]

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 modos de direccionamiento previo y posterior al incremento.

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

Tuberías y otros problemas de implementación

ARM7 y las implementaciones anteriores tienen un proceso de tres etapas ; las etapas son buscar, decodificar y ejecutar. Los diseños de mayor rendimiento, como el ARM9, tienen canales 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 ramas 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 ampliar el conjunto de instrucciones utilizando "coprocesadores" que pueden abordarse mediante MCR, MRC, MRRC, MCRR e instrucciones similares. El espacio del coprocesador se divide lógicamente en 16 coprocesadores con números del 0 al 15, estando reservado el coprocesador 15 (cp15) para algunas funciones de control típicas como la gestión de las cachés y el funcionamiento de la MMU en los procesadores que tienen uno.

En las máquinas basadas en ARM, los dispositivos periféricos generalmente se conectan al procesador asignando sus registros físicos al espacio de memoria ARM, al espacio del coprocesador o conectándose a otro dispositivo (un bus) que a su vez se conecta al procesador. Los accesos al coprocesador tienen una latencia más baja, por lo que algunos periféricos (por ejemplo, un controlador de interrupciones XScale) son accesibles de ambas maneras: a través de la memoria y a través de los coprocesadores.

En otros casos, los diseñadores de chips sólo integran hardware utilizando 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 tenga operaciones especializadas para soportar un conjunto específico de primitivas de transcodificación 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 establecer puntos de interrupción del código a partir del reinicio. Estas instalaciones se construyen con 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 la compatibilidad con la depuración JTAG y la "I" representaba la presencia de un módulo de depuración "EmbeddedICE". Para las generaciones centrales 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 básicas de depuración a nivel arquitectónico. Estos incluyen puntos de interrupción, puntos de vigilancia y ejecución de instrucciones en un "modo de depuración"; Instalaciones similares también estaban disponibles con EmbeddedICE. Se admiten la depuración del modo "detención" y del modo "monitor". El mecanismo de transporte real utilizado para acceder a las funciones de depuración no está especificado arquitectónicamente, pero las implementaciones generalmente incluyen soporte JTAG.

Existe una arquitectura de depuración ARM "CoreSight" separada, 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 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 se comunica a través de SWD o JTAG con una CPU ARM Cortex habilitada para CoreSight. [113] [114] [115]

Instrucciones de mejora de DSP

Para mejorar la arquitectura ARM para el procesamiento de señales digitales y aplicaciones multimedia, se agregaron al conjunto instrucciones DSP. [116] 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 las arquitecturas de procesadores de señales digitales (DSP). Incluyen variaciones de multiplicar-acumular con signo , sumar y restar saturados y contar ceros a la izquierda .

Extensiones SIMD para multimedia

Introducido en la arquitectura ARMv6, fue un precursor de Advanced SIMD, también llamado Neon. [117]

jazelle

Jazelle DBX (Direct Bytecode eXecution) es una técnica que permite ejecutar el código de bytes 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 existente. La compatibilidad con este estado está indicada por la "J" en la arquitectura ARMv5TEJ y en los nombres principales 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 [118] ) han presentado el conjunto de instrucciones Thumb , que tiene 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. [119] La mayoría de las instrucciones Thumb se asignan directamente a instrucciones ARM normales. El ahorro de espacio proviene de hacer implícitos algunos de los operandos de las instrucciones 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, sólo las ramas pueden ser condicionales y muchos códigos de operación están restringidos a acceder sólo 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 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 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; se accede a la mayoría 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 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. Todos los procesadores que admiten conjuntos de instrucciones de 32 bits, comenzando con ARM9 e incluido XScale, han incluido un decodificador de instrucciones Thumb. Incluye instrucciones adoptadas del Hitachi SuperH (1992), que obtuvo la licencia de ARM. [120] 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 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 limitado de instrucciones de 16 bits 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 memoria de 32 bits.

Thumb-2 amplía el conjunto de instrucciones Thumb con manipulación de campos de bits, ramas de tablas y ejecución condicional. Al mismo tiempo, se amplió el conjunto de instrucciones ARM 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 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 en función de 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 ; ARM: sin código... Pulgar: instrucción de TI ; entonces r0 = r2; MOVEQ r0 , r2 ; ARM: condicional; Pulgar: condición vía ITE 'T' (luego) ; de lo contrario r0 = r3; MOVNE r0 , r3 ; ARM: condicional; Pulgar: condición vía 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, todas las series Cortex-R y todas las series 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 solo admiten el Thumb conjunto de instrucciones. [121] [122] [123]

Entorno de ejecución de pulgar (ThumbEE)

ThumbEE (erróneamente llamado Thumb-2EE en alguna documentación de ARM), que se comercializó como Jazelle RCT [124] (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 especialmente adecuado para el código generado en tiempo de ejecución (por ejemplo, mediante compilación JIT ) en entornos de ejecución administrados . 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 reducir el rendimiento. [ cita necesaria ]

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 Jazelle/DBX Java VM). [125] Los controladores son pequeñas secciones de código llamado con frecuencia, comúnmente utilizados 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 desaprobó cualquier uso del conjunto de instrucciones ThumbEE, [126] y Armv8 elimina la compatibilidad con 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 [127] (implementada de manera diferente en Armv8; los coprocesadores no están definidos allí). Proporciona cálculo de punto flotante de precisión simple y doble de bajo costo que cumple totalmente 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 estaba destinada a admitir la ejecución de instrucciones cortas en "modo vectorial", pero éstas 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, [128] para ser reemplazado por el SIMD avanzado, mucho más potente, 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 flotación. [129] 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 procesadores basados ​​en ARM que utilizan la interfaz de coprocesador incluyen FPA, FPE, iwMMXt , algunas de las cuales se implementaron en software mediante captura, 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. [130]

VFPv1
Obsoleto
VFPv2
Una extensión opcional del conjunto de instrucciones ARM en las arquitecturas ARMv5TE, ARMv5TEJ y ARMv6. VFPv2 tiene 16 registros FPU de 64 bits.
VFPv3 o VFPv3-D32
Implementado en la mayoría de los procesadores Cortex-A8 y A9 ARMv7. Es compatible con versiones anteriores de VFPv2, excepto que no puede detectar excepciones de punto flotante. VFPv3 tiene 32 registros FPU de 64 bits como estándar, agrega instrucciones VCVT para convertir entre escalar, flotante y doble, agrega modo inmediato a VMOV de modo que las constantes se puedan cargar en registros FPU.
VFPv3-D16
Como el anterior, pero con sólo 16 registros FPU de 64 bits. Implementado en procesadores Cortex-R4 y R5 y Tegra 2 (Cortex-A9).
VFPv3-F16
Poco común; admite coma flotante de media precisión (16 bits) IEEE754-2008 como formato de almacenamiento.
VFPv4 o VFPv4-D32
Implementado en procesadores Cortex-A12 y A15 ARMv7, Cortex-A7 cuenta opcionalmente con VFPv4-D32 en el caso de una FPU con Neon. [131] VFPv4 tiene 32 registros FPU de 64 bits como estándar, agrega soporte de media precisión como formato de almacenamiento e instrucciones fusionadas de acumulación múltiple a las características de VFPv3.
VFPv4-D16
Como el anterior, pero solo tiene 16 registros FPU de 64 bits. Implementado en procesadores Cortex-A5 y A7 en el caso de una FPU sin Neon. [131]
VFPv5-D16-M
Implementado en Cortex-M7 cuando existe la opción de núcleo de punto flotante de precisión simple y doble.

En Debian Linux y derivados como Ubuntu y Linux Mint , armhf ( ARM hard float ) se refiere a la arquitectura ARMv7 que incluye la extensión de hardware de punto flotante VFP3-D16 adicional (y Thumb-2) anterior. Los paquetes de software y las herramientas de compilación cruzada utilizan los sufijos armhf frente a arm/armel para diferenciar. [132]

SIMD avanzado (neón)

La extensión Advanced SIMD (también conocida como Neon o "MPE" Media Processing Engine) es un conjunto de instrucciones SIMD combinado de 64 y 128 bits que proporciona aceleración estandarizada para aplicaciones de procesamiento de señales y medios. Neon está incluido en todos los dispositivos Cortex-A8, pero es opcional en los dispositivos Cortex-A9. [133] Neon puede ejecutar decodificación de audio MP3 en CPU que funcionan a 10 MHz y puede ejecutar el códec de voz GSM adaptativo de velocidad múltiple (AMR) a 13 MHz. Cuenta con un completo conjunto de instrucciones, archivos de registro separados y hardware de ejecución independiente. [134] Neon admite operaciones SIMD y datos de punto flotante enteros y de precisión simple (32 bits) de 8, 16, 32 y 64 bits para manejar el procesamiento de audio y video, así como el procesamiento de gráficos y juegos. En Neon, el SIMD admite hasta 16 operaciones al mismo tiempo. El hardware Neon comparte los mismos registros de punto flotante que se utilizan en VFP. Dispositivos como ARM Cortex-A8 y Cortex-A9 admiten vectores de 128 bits, pero se ejecutarán con 64 bits a la vez, [129] mientras que los dispositivos Cortex-A15 más nuevos pueden ejecutar 128 bits a la vez. [135] [136]

Una peculiaridad de Neon en los dispositivos Armv7 es que vacía todos los números anormales a cero y, como resultado, el compilador GCC no lo usará a menos -funsafe-math-optimizationsque esté activado, que permite perder anormales. Neon "mejorado" definido desde Armv8 no tiene esta peculiaridad, pero a partir de GCC 8.2 todavía se requiere el mismo indicador para habilitar las instrucciones de Neon. [137] Por otro lado, GCC considera que Neon es seguro en AArch64 para Armv8.

ProjectNe10 es el primer proyecto de código abierto de ARM (desde sus inicios; mientras adquirieron un proyecto más antiguo, ahora llamado Mbed TLS ). La biblioteca Ne10 es un conjunto de funciones útiles y comunes escritas tanto en Neon como en C (por compatibilidad). La biblioteca se creó para permitir a los desarrolladores utilizar optimizaciones de Neon sin aprender Neon, pero también sirve como un conjunto de ejemplos de código ensamblador e intrínseco de Neon altamente optimizados para rutinas comunes de procesamiento de imágenes, aritmética y DSP. El código fuente está disponible en GitHub. [138]

Tecnología ARM de helio

El helio es la extensión vectorial de perfil M (MVE). Agrega más de 150 instrucciones escalares y vectoriales. [139]

Extensiones de seguridad

TrustZone (para perfil Cortex-A)

Las extensiones de seguridad, comercializadas como tecnología TrustZone, se encuentran en arquitecturas de perfil de aplicación ARMv6KZ y posteriores. Proporciona una alternativa de bajo costo a la adición de otro núcleo de seguridad dedicado a un SoC, al proporcionar dos procesadores virtuales respaldados por control de acceso basado en hardware. Esto permite que el núcleo de la aplicación cambie entre dos estados, denominados mundos (para reducir la confusión con otros nombres de dominios de capacidad), para evitar que la información se filtre del mundo más confiable al mundo menos confiable. Este cambio de mundo es generalmente ortogonal a todas las demás capacidades del procesador, por lo que cada mundo puede funcionar independientemente del otro mientras usa el mismo núcleo. Luego, la memoria y los periféricos conocen el mundo operativo del núcleo y pueden usarlo para proporcionar control de acceso a secretos y códigos en el dispositivo. [140]

Normalmente, un sistema operativo rico se ejecuta en el mundo menos confiable, con un código más pequeño especializado en seguridad en el mundo más confiable, con el objetivo de reducir la superficie de ataque . Las aplicaciones típicas incluyen la funcionalidad DRM para controlar el uso de medios en dispositivos basados ​​en ARM [141] y evitar cualquier uso no aprobado del dispositivo.

En la práctica, dado que los detalles específicos de implementación de las implementaciones patentadas de TrustZone no se han divulgado públicamente para su revisión, no está claro qué nivel de seguridad se proporciona para un modelo de amenaza determinado , pero no son inmunes a los ataques. [142] [143]

Open Virtualization [144] es una implementación de código abierto de la arquitectura mundial confiable para TrustZone.

AMD ha licenciado e incorporado la tecnología TrustZone en su tecnología de procesador seguro . [145] Habilitadas en algunos productos, pero no en todos, las APU de AMD incluyen un procesador Cortex-A5 para manejar el procesamiento seguro. [146] [147] [148] De hecho, el núcleo Cortex-A5 TrustZone se había incluido en productos AMD anteriores, pero no se habilitó debido a limitaciones de tiempo. [147]

Samsung Knox utiliza TrustZone para fines tales como detectar modificaciones en el kernel, almacenar certificados y certificar claves. [149]

TrustZone para Armv8-M (para perfil Cortex-M)

La extensión de seguridad, comercializada como TrustZone para la tecnología Armv8-M, se introdujo en la arquitectura Armv8-M. Si bien contiene conceptos similares a TrustZone para Armv8-A, tiene un diseño arquitectónico diferente, ya que el cambio de mundo se realiza mediante instrucciones de rama en lugar de utilizar excepciones. También admite el manejo seguro de interrupciones entrelazadas de cualquier mundo, independientemente del estado de seguridad actual. Juntas, estas características proporcionan llamadas de baja latencia al mundo seguro y un manejo receptivo de interrupciones. ARM proporciona una pila de referencia de código mundial seguro en forma de firmware confiable para M y certificado PSA .

Protección de página sin ejecución

A partir de ARMv6, la arquitectura ARM admite la protección de páginas sin ejecución , que se conoce como XN , para eXecute Never . [150]

Extensión de dirección física grande (LPAE)

La extensión de dirección física grande (LPAE), que extiende el tamaño de la dirección física de 32 bits a 40 bits, se agregó a la arquitectura Armv7-A en 2011. [151]

El tamaño de la dirección física puede ser incluso mayor en procesadores basados ​​en la arquitectura de 64 bits (Armv8-A). Por ejemplo, es de 44 bits en Cortex-A75 y Cortex-A65AE. [152]

Armv8-R y Armv8-M

Las arquitecturas Armv8-R y Armv8-M , anunciadas después de la arquitectura Armv8-A, comparten algunas características con Armv8-A. Sin embargo, Armv8-M no incluye ninguna instrucción AArch64 de 64 bits, y Armv8-R originalmente no incluía ninguna instrucción AArch64; esas instrucciones se agregaron a Armv8-R más tarde.

Armv8.1-M

La arquitectura Armv8.1-M, ​​anunciada en febrero de 2019, es una mejora de la arquitectura Armv8-M. Trae nuevas características que incluyen:

Arquitectura de 64/32 bits

Plataforma Armv8-A con chip de CPU Cortex A57/A53 MPCore big.LITTLE

Armv8

Armv8-A

Anunciado en octubre de 2011, [14] Armv8-A (a menudo llamado ARMv8, aunque Armv8-R también está disponible) representa un cambio fundamental en la arquitectura ARM. Agrega una arquitectura opcional de 64 bits llamada "AArch64" y el nuevo conjunto de instrucciones asociado "A64". AArch64 proporciona compatibilidad en el espacio de usuario con Armv7-A, la arquitectura de 32 bits, denominada "AArch32" y el antiguo conjunto de instrucciones de 32 bits, ahora denominado "A32". El conjunto de instrucciones Thumb se denomina "T32" y no tiene contraparte de 64 bits. Armv8-A permite ejecutar aplicaciones de 32 bits en un sistema operativo de 64 bits y que un sistema operativo de 32 bits esté bajo el control de un hipervisor de 64 bits . [1] ARM anunció sus núcleos Cortex-A53 y Cortex-A57 el 30 de octubre de 2012. [74] Apple fue el primero en lanzar un núcleo compatible con Armv8-A en un producto de consumo ( Apple A7 en iPhone 5S ). AppliedMicro , utilizando una FPGA , fue el primero en hacer una demostración de Armv8-A. [153] El primer SoC Armv8-A de Samsung es el Exynos 5433 utilizado en el Galaxy Note 4 , que presenta dos grupos de cuatro núcleos Cortex-A57 y Cortex-A53 en una configuración big.LITTLE ; pero se ejecutará sólo en modo AArch32. [154]

Tanto para AArch32 como para AArch64, Armv8-A crea VFPv3/v4 y el estándar SIMD (Neon) avanzado. También agrega instrucciones de criptografía que admiten AES , SHA-1 / SHA-256 y aritmética de campos finitos . [155] AArch64 se introdujo en Armv8-A y su revisión posterior. AArch64 no está incluido en las arquitecturas Armv8-R y Armv8-M de 32 bits.

Armv8-R

Se agregó compatibilidad opcional con AArch64 al perfil Armv8-R, y el primer núcleo ARM que lo implementó fue el Cortex-R82. [156] Agrega el conjunto de instrucciones A64.

Armv9

Armv9-A

Anunciada en marzo de 2021, la arquitectura actualizada se centra en la ejecución segura y la compartimentación. [157] [158]

Sistema de brazo listo

Arm SystemReady, anteriormente llamado Arm ServerReady, es un programa de certificación que ayuda a integrar los sistemas operativos e hipervisores genéricos disponibles en el mercado en los sistemas basados ​​en Arm, desde servidores de centros de datos hasta dispositivos industriales y de IoT. Los componentes clave del programa son las especificaciones de los requisitos mínimos de hardware y firmware en los que pueden confiar los sistemas operativos y los hipervisores. Estas especificaciones son:

Estas especificaciones son desarrolladas conjuntamente por Arm y sus socios en el Comité Asesor de Arquitectura del Sistema (SystemArchAC).

Architecture Compliance Suite (ACS) son las herramientas de prueba que ayudan a verificar el cumplimiento de estas especificaciones. La Especificación de requisitos de Arm SystemReady documenta los requisitos de las certificaciones.

Arm presentó este programa en 2020 en el primer evento DevSummit . Su predecesor Arm ServerReady se presentó en 2018 en el evento Arm TechCon. Este programa incluye actualmente cuatro bandas:

Certificado PSA

PSA Certified , anteriormente denominado Platform Security Architecture, es un marco de seguridad y un esquema de evaluación independientes de la arquitectura. Su objetivo es ayudar a proteger los dispositivos de Internet de las cosas (IoT) integrados en procesadores de sistema en un chip (SoC). [159] Se introdujo para aumentar la seguridad cuando un entorno de ejecución totalmente confiable es demasiado grande o complejo. [160]

Arm presentó la arquitectura en 2017 en el evento anual TechCon . [160] [161] Aunque el esquema es independiente de la arquitectura, se implementó por primera vez en núcleos de procesador Arm Cortex-M destinados al uso de microcontroladores. PSA Certified incluye modelos de amenazas y análisis de seguridad disponibles gratuitamente que demuestran el proceso para decidir sobre las características de seguridad en productos de IoT comunes. [162] También proporciona paquetes de interfaz de programación de aplicaciones (API), especificaciones arquitectónicas, implementaciones de firmware de código abierto y conjuntos de pruebas relacionados que se pueden descargar gratuitamente. [163]

Tras el desarrollo del marco de seguridad de la arquitectura en 2017, el esquema de garantía PSA Certified se lanzó dos años después en Embedded World en 2019. [164] PSA Certified ofrece un esquema de evaluación de seguridad de múltiples niveles para proveedores de chips, proveedores de sistemas operativos y fabricantes de dispositivos IoT. [165] La presentación de Embedded World presentó a los proveedores de chips la certificación de Nivel 1. Al mismo tiempo se presentó un proyecto de protección de nivel 2. [166] La certificación de nivel 2 se convirtió en un estándar utilizable en febrero de 2020. [167]

La certificación fue creada por PSA Joint Stakeholders para permitir un enfoque de seguridad por diseño para un conjunto diverso de productos de IoT. Las especificaciones de PSA Certified son independientes de la implementación y la arquitectura, como resultado, se pueden aplicar a cualquier chip, software o dispositivo. [168] [166] La certificación también elimina la fragmentación de la industria para los fabricantes y desarrolladores de productos de IoT . [169]

Soporte del sistema operativo

Sistemas operativos de 32 bits

Sistemas operativos históricos

La primera computadora personal basada en ARM de 32 bits, la Acorn Archimedes , originalmente estaba destinada a ejecutar un ambicioso sistema operativo llamado ARX . Las máquinas se enviaron con el sistema operativo RISC , que también se utilizó en sistemas posteriores basados ​​en ARM de Acorn y otros proveedores. Algunas de las primeras máquinas Acorn también podían ejecutar un puerto Unix llamado RISC iX . (Ninguno de los dos debe confundirse con RISC/os , una variante contemporánea de Unix para la arquitectura MIPS).

Sistemas operativos integrados

La arquitectura ARM de 32 bits es compatible con una gran cantidad de sistemas operativos integrados y en tiempo real , incluidos:

Sistemas operativos de dispositivos móviles

La arquitectura ARM de 32 bits es el entorno de hardware principal para la mayoría de los sistemas operativos de dispositivos móviles, como:

Anteriormente, pero ahora descontinuado:

Sistemas operativos de escritorio y servidor.

La arquitectura ARM de 32 bits es compatible con el sistema operativo RISC y con múltiples sistemas operativos tipo Unix, incluidos:

Sistemas operativos de 64 bits

Sistemas operativos integrados

Sistemas operativos de dispositivos móviles

Sistemas operativos de escritorio y servidor.

Portabilidad a sistemas operativos ARM de 32 o 64 bits

Las aplicaciones de Windows recompiladas para ARM y vinculadas con Winelib, del proyecto Wine , pueden ejecutarse en ARM de 32 o 64 bits en Linux, FreeBSD u otros sistemas operativos compatibles. [198] [199] Los binarios x86, por ejemplo, cuando no están especialmente compilados para ARM, se han demostrado en ARM usando QEMU con Wine (en Linux y más), [ cita necesaria ] pero no funcionan a máxima velocidad ni tienen la misma capacidad que con Winelib .

Notas

  1. ^ Usando palabras de 32 bits, 4 Mbit/segundo corresponden a 1 MIPS.
  2. ^ Las referencias disponibles no mencionan qué equipo de diseño era, pero dado el momento y la historia conocida de los diseños de la época, es probable que fuera el equipo de National Semiconductor cuyo NS32016 sufrió una gran cantidad de errores.
  3. ^ Matt Evans señala que parece que las versiones más rápidas simplemente se agruparon más arriba y no parecen tener cambios subyacentes. [36]

Ver también

Referencias

Citas

  1. ^ abcdef Grisenthwaite, Richard (2011). "Vista previa de la tecnología ARMv8-A" (PDF) . Archivado desde el original (PDF) el 11 de noviembre de 2011 . Consultado el 31 de octubre de 2011 .
  2. ^ "Estándar de llamada de procedimiento para la arquitectura ARM" (PDF) . Portabrazos . 30 de noviembre de 2013 . Consultado el 27 de mayo de 2013 .
  3. ^ ab Wilson, Roger (2 de noviembre de 1988). "Algunos datos sobre la máquina Acorn RISC". Grupo de noticias : comp.arch . Consultado el 25 de mayo de 2007 .
  4. ^ ab Hachman, Mark (14 de octubre de 2002). "Los núcleos ARM ascienden al territorio 3G". Tecnología extrema . Consultado el 24 de mayo de 2018 .
  5. ^ Turley, Jim (18 de diciembre de 2002). "La solución del dos por ciento". Incorporado . Consultado el 14 de febrero de 2023 .
  6. ^ Cutress, Ian (22 de junio de 2020). "Nueva supercomputadora n. ° 1: Fugaku y A64FX de Fujitsu llevan Arm a la cima con 415 PetaFLOP". anandtech.com . Consultado el 25 de enero de 2021 .
  7. ^ "Arm Partners ha enviado 200 mil millones de chips". Brazo (Presione soltar) . Consultado el 3 de noviembre de 2021 .
  8. ^ "Arquitectando un mundo inteligente e impulsando la inteligencia artificial: ARM". La revisión del silicio . 2019 . Consultado el 8 de abril de 2020 .
  9. ^ "Permitir la conectividad masiva de IoT a medida que los socios de ARM envían 100 mil millones de chips". comunidad.arm.com . Consultado el 8 de abril de 2020 . el despliegue acumulado de 100 mil millones de chips, la mitad de los cuales se enviaron en los últimos cuatro años. [..] ¿por qué no un billón o más? Ese es nuestro objetivo: ver un billón de dispositivos conectados implementados en las próximas dos décadas.
  10. ^ "Mercado de MCU en la ruta de migración a dispositivos basados ​​en ARM y de 32 bits: máximos de ventas de 32 bits; líderes de 16 bits en envíos de unidades". Perspectivas de IC. 25 de abril de 2013 . Consultado el 1 de julio de 2014 .
  11. ^ Turley, Jim (2002). "La solución del dos por ciento". integrado.com.
  12. ^ "Arm Holdings ansioso por la expansión de servidores y PC". El registro . 1 de febrero de 2011.
  13. ^ McGuire-Balanza, Kerry (11 de mayo de 2010). "ARM de cero a miles de millones en 25 cortos años". Portabrazos . Consultado el 8 de noviembre de 2012 .
  14. ^ ab "ARM divulga detalles técnicos de la próxima versión de la arquitectura ARM" (Presione soltar). Portabrazos . 27 de octubre de 2011. Archivado desde el original el 1 de enero de 2019 . Consultado el 20 de septiembre de 2013 .
  15. ^ "Anuncio de la plataforma ARM Neoverse N1". comunidad.arm.com . Consultado el 8 de abril de 2020 .
  16. ^ Fairbairn, Douglas (31 de enero de 2012). "Historia oral de Sophie Wilson" (PDF) . Archivado (PDF) desde el original el 3 de marzo de 2016 . Consultado el 2 de febrero de 2016 .
  17. ^ Smith, Tony (30 de noviembre de 2011). "La BBC Micro cumple 30 años". El hardware de registro . Archivado desde el original el 12 de diciembre de 2011 . Consultado el 12 de diciembre de 2011 .
  18. ^ Polsson, Ken. "Cronología de Microprocesadores". Processortimeline.info . Archivado desde el original el 9 de agosto de 2018 . Consultado el 27 de septiembre de 2013 .
  19. ^ Leedy, Glenn (abril de 1983). "La familia de microprocesadores NS16000 de National Semiconductor". Byte . págs. 53–66 . Consultado el 22 de agosto de 2020 .
  20. ^ Evans 2019, 6:00.
  21. ^ Modales, David (29 de abril de 1998). "A la manera de ARM". Semanario de Electrónica . Archivado desde el original el 29 de julio de 2012 . Consultado el 26 de octubre de 2012 .
  22. ^ Evans 2019, 5:30.
  23. ^ ab Evans 2019, 7:45.
  24. ^ Evans 2019, 8:30.
  25. ^ Sophie Wilson en Alt Party 2009 (Parte 3/8). Archivado desde el original el 11 de diciembre de 2021.
  26. ^ Chisnall, David (23 de agosto de 2010). Comprensión de las arquitecturas ARM . Consultado el 26 de mayo de 2013 .
  27. ^ Evans 2019, 9:00.
  28. ^ Furber, Stephen B. (2000). Arquitectura de sistema en chip ARM . Boston: Addison-Wesley. ISBN 0-201-67519-6.
  29. ^ Evans 2019, 9:50.
  30. ^ Evans 2019, 23:30.
  31. ^ Evans 2019, 26:00.
  32. ^ "Historia del diseño del conjunto de instrucciones ARM con Sophie Wilson (Parte 3)". 10 de mayo de 2015. Archivado desde el original el 11 de diciembre de 2021 . Consultado el 25 de mayo de 2020 a través de YouTube.
  33. ^ "Historia oral de Sophie Wilson - Becaria del Museo de Historia de la Computación 2012" (PDF) . Museo de Historia de la Computación . 31 de enero de 2012 . Consultado el 25 de mayo de 2020 .
  34. ^ Harker, T. (verano de 2009). "ARM se toma en serio la propiedad intelectual (segunda de una serie de dos partes [Vista de editores asociados]". Revista IEEE Solid-State Circuits . 1 (3): 8–69. doi :10.1109/MSSC.2009.933674. ISSN  1943-0590 S2CID  36567166 .
  35. ^ Evans 2019, 20:30.
  36. ^ Evans 2019, 22:00.
  37. ^ Evans 2019, 21:30.
  38. ^ Evans 2019, 22:00:30.
  39. ^ ab Evans 2019, 14:00.
  40. ^ "¡De un brazo al siguiente! Procesadores y arquitecturas ARM" . Consultado el 31 de mayo de 2022 .
  41. ^ Levy, Markus. "La historia de la arquitectura ARM: desde el inicio hasta la oferta pública inicial" (PDF) . Consultado el 18 de julio de 2022 .
  42. ^ Presentamos el Commodore Amiga 3000 (PDF) . Comodoro-Amiga, Inc. 1991.
  43. ^ "Reclamaciones de velocidad de MIPS y MFLOPS de computadora de 1980 a 1996". www.roylongbottom.org.uk . Consultado el 17 de junio de 2023 .
  44. ^ Santanu Chattopadhyay (2010). Diseño de sistemas integrados. PHI Aprendizaje Pvt. Limitado. Ltd. pág. 9.ISBN _ 978-81-203-4024-4.
  45. ^ Richard Murray. "Operación de 32 bits".
  46. ^ "Hitos de la empresa ARM". BRAZO . Archivado desde el original el 20 de abril de 2015 . Consultado el 8 de abril de 2015 .
  47. ^ Andrews, Jason (2005). "Tres temas de verificación de SoC para la arquitectura ARM". Co-verificación de hardware y software para diseño de SoC ARM . Oxford, Reino Unido: Elsevier . págs.69. ISBN 0-7506-7730-9. ARM comenzó como una sucursal de Acorn Computer en Cambridge, Inglaterra, con la formación de una empresa conjunta entre Acorn, Apple y VLSI Technology. Un equipo de doce empleados diseñó el primer microprocesador ARM entre 1983 y 1985.
  48. ^ Weber, Jonathan (28 de noviembre de 1990). "Apple se unirá a Acorn y VLSI en una empresa de fabricación de chips". Los Ángeles Times . Los Angeles . Consultado el 6 de febrero de 2012 . Apple ha invertido unos 3 millones de dólares (aproximadamente 1,5 millones de libras) por una participación del 30% en la empresa, denominada Advanced Risc Machines Ltd. (ARM) [...]
  49. ^ "Antecedentes corporativos de ARM" (PDF) . BRAZO . Archivado desde el original (PDF) el 4 de octubre de 2006.
  50. ^ Montanaro, James; et al. (1997). "Un microprocesador CMOS RISC de 160 MHz, 32 b y 0,5 W" (PDF) . Revista Técnica Digital . 9 (1): 49–62.
  51. ^ DeMone, Paul (9 de noviembre de 2000). "La carrera de ARM hacia la dominación mundial integrada". Tecnologías del mundo real . Consultado el 6 de octubre de 2015 .
  52. ^ "Marcha de las Máquinas". technologyreview.com . Revisión de tecnología del MIT . 20 de abril de 2010. Archivado desde el original el 16 de octubre de 2015 . Consultado el 6 de octubre de 2015 .
  53. ^ Krazit, Tom (3 de abril de 2006). "ARMado para la sala". CNET.
  54. ^ Tracy Robinson (12 de febrero de 2014). "Celebrando el envío de 50 mil millones de chips con tecnología ARM".
  55. ^ Sarah Murry (3 de marzo de 2014). "Alcance de ARM: hito de 50 mil millones de chips". Archivado desde el original el 16 de septiembre de 2015.
  56. ^ Marrón, Eric (2009). "La netbook ARM se envía con tableta desmontable". Archivado desde el original el 3 de enero de 2013 . Consultado el 19 de agosto de 2009 .
  57. ^ Peter Clarke (7 de enero de 2016). "Amazon ahora vende sus propios chips ARM".
  58. ^ "MACOM completa con éxito la adquisición de AppliedMicro" (Presione soltar). 26 de enero de 2017.
  59. ^ Frumusanu, Andrei. "Detalles de ARM basados ​​en la licencia de tecnología ARM Cortex". AnandTech . Consultado el 26 de mayo de 2019 .
  60. ^ Cortadora, Ian. "Acceso flexible ARM: diseñe el SoC antes de gastar dinero". AnandTech . Consultado el 9 de octubre de 2019 .
  61. ^ "Preguntas frecuentes sobre acceso flexible a ARM". BRAZO . Consultado el 9 de octubre de 2019 .
  62. ^ Nolting, Stephan. "Sistema de procesador STORM CORE" (PDF) . OpenCores . Consultado el 1 de abril de 2014 .
  63. ^ ZAP en GitHub
  64. ^ "Procesador Cortex-M23". BRAZO . Consultado el 27 de octubre de 2016 .
  65. ^ "Procesador Cortex-M33". BRAZO . Consultado el 27 de octubre de 2016 .
  66. ^ "La arquitectura ARMv8-M simplifica la seguridad para dispositivos integrados inteligentes". BRAZO . Consultado el 10 de noviembre de 2015 .
  67. ^ Ltd, brazo. "Arquitecturas de perfil M". Brazo | La Arquitectura para el Mundo Digital . Consultado el 29 de agosto de 2023 .
  68. ^ "Arquitectura ARMv8-R" . Consultado el 10 de julio de 2015 .
  69. ^ Craske, Simon (octubre de 2013). "Arquitectura ARM Cortex-R" (PDF) . Sostenciones de brazos. Archivado desde el original (PDF) el 6 de abril de 2014 . Consultado el 1 de febrero de 2014 .
  70. ^ Smith, Ryan (20 de septiembre de 2016). "ARM anuncia CPU Cortex-R52: determinista y segura, para ADAS y más". AnandTech . Consultado el 20 de septiembre de 2016 .
  71. ^ "Procesador Cortex-A32". BRAZO . Consultado el 10 de octubre de 2019 .
  72. ^ "Procesador Cortex-A35". BRAZO . Consultado el 10 de noviembre de 2015 .
  73. ^ ab "ARM lanza la serie Cortex-A50, los procesadores de 64 bits con mayor eficiencia energética del mundo" (Presione soltar). Portabrazos . Consultado el 31 de octubre de 2012 .
  74. ^ "Procesador Cortex-A72". BRAZO . Consultado el 10 de julio de 2015 .
  75. ^ "Procesador Cortex-A73". BRAZO . Consultado el 2 de junio de 2016 .
  76. ^ "Arquitectura ARMv8-A" . Consultado el 10 de julio de 2015 .
  77. ^ "Cavium Thunder X aumenta el número de núcleos ARM a 48 en un solo chip". Semipreciso . 3 de junio de 2014.
  78. ^ "Cavium en la supercomputación 2014". Yahoo Finanzas . 17 de noviembre de 2014. Archivado desde el original el 16 de octubre de 2015 . Consultado el 15 de enero de 2017 .
  79. ^ Burt, Jeff (17 de noviembre de 2014). "Cray para evaluar chips ARM en sus supercomputadoras". Semana electrónica .
  80. ^ "Samsung anuncia Exynos 8890 con módem Cat.12/13 y CPU personalizada". AnandTech .
  81. ^ "Procesador Cortex-A34". BRAZO . Consultado el 10 de octubre de 2019 .
  82. ^ "D21500 [AARCH64] Agregar compatibilidad con Broadcom Vulcan". reseñas.llvm.org .
  83. ^ "Procesador Cortex-A55". BRAZO . Consultado el 29 de mayo de 2017 .
  84. ^ "Procesador Cortex-A75". BRAZO . Consultado el 29 de mayo de 2017 .
  85. ^ "Procesador Cortex-A76". BRAZO . Consultado el 11 de octubre de 2018 .
  86. ^ Berenice Mann (abril de 2017). "Arquitectura ARM: evolución y entrega de ARMv8.2-A". comunidad.ARM.com .
  87. ^ Frumusanu, Andrei. "Samsung anuncia el SoC Exynos 9825: primer chip de silicio EUV de 7 nm". AnandTech . Consultado el 11 de octubre de 2019 .
  88. ^ "Fujitsu comenzó a producir miles de millones de supercálculos de Japón con el procesador ARM A64FX más potente". Noticias de TI de China . Archivado desde el original el 20 de junio de 2019 . Consultado el 17 de agosto de 2019 . Chip ARMv8 SVE (Scalable Vector Extension), que utiliza punto flotante de 512 bits.
  89. ^ "Cortex-A65AE - BRAZO". BRAZO . Consultado el 8 de abril de 2020 . Puede ejecutar dos subprocesos en paralelo en cada ciclo. Cada subproceso puede tener diferentes niveles de excepción y ejecutar diferentes sistemas operativos.
  90. ^ Frumusanu, Andrei. "Marvell anuncia ThunderX3: procesador de servidor ARM de tercera generación de 96 núcleos y 384 subprocesos". AnandTech . Consultado el 26 de mayo de 2020 .
  91. ^ "AArch64: agregue soporte para CPU Apple más nuevas · apple/llvm-project@677da09". GitHub . Consultado el 23 de septiembre de 2022 .
  92. ^ "Nuevas funciones para la arquitectura Armv8-A - Blog de arquitecturas y procesadores - Blogs de Arm Community - Arm Community". comunidad.arm.com . 21 de septiembre de 2020 . Consultado el 28 de diciembre de 2021 .
  93. ^ "La solución de Arm para las necesidades futuras de inteligencia artificial, seguridad e informática especializada es la v9". Brazo . Consultado el 16 de agosto de 2021 .
  94. ^ "Primeras CPU Armv9 Cortex para informática de consumo". comunidad.arm.com . 25 de mayo de 2021 . Consultado el 16 de agosto de 2021 .
  95. ^ "Desarrollos de arquitectura Arm A-Profile 2021 - Blog de arquitecturas y procesadores - Blogs de Arm Community - Arm Community". comunidad.arm.com . 8 de septiembre de 2021 . Consultado el 25 de septiembre de 2023 .
  96. ^ "Desarrollos de arquitectura Arm A-Profile 2022 - Blog de arquitecturas y procesadores - Blogs de Arm Community - Arm Community". comunidad.arm.com . 29 de septiembre de 2022 . Consultado el 25 de septiembre de 2023 .
  97. ^ "Tarjeta de línea" (PDF) . 2003 . Consultado el 1 de octubre de 2012 .
  98. ^ Parrish, Kevin (14 de julio de 2011). "Un millón de núcleos ARM vinculados para simular un cerebro". Tiempos EE.UU. Consultado el 2 de agosto de 2011 .
  99. ^ "Modo procesador". Portabrazos . Consultado el 26 de marzo de 2013 .
  100. ^ "KVM/ARM" (PDF) . Consultado el 14 de febrero de 2023 .
  101. ^ Brash, David (agosto de 2010). Extensiones a la arquitectura ARMv7-A . 2010 Simposio IEEE Hot Chips 22 (HCS). págs. 1–21. doi :10.1109/HOTCIPS.2010.7480070. ISBN 978-1-4673-8875-7. S2CID  46339775.
  102. ^ "¿Cómo admite el compilador ARM accesos no alineados?". 2011 . Consultado el 5 de octubre de 2013 .
  103. ^ "Acceso a datos no alineados" . Consultado el 5 de octubre de 2013 .
  104. ^ "Manual de referencia técnica de Cortex-M0 r0p0" (PDF) . Brazo .
  105. ^ "Manual de referencia de arquitectura ARMv7-M". Brazo . Consultado el 18 de julio de 2022 .
  106. ^ ab "Manual de referencia de arquitectura ARMv7-A y ARMv7-R; Arm Holdings". arm.com . Consultado el 19 de enero de 2013 .
  107. ^ "Centro de información ARM" . Consultado el 10 de julio de 2015 .
  108. ^ "Códigos de condición 1: indicadores y códigos de condición". Comunidad ARM . 11 de septiembre de 2013 . Consultado el 26 de septiembre de 2019 .
  109. ^ "9.1.2. Recuentos de ciclos de instrucción".
  110. ^ "Componentes CoreSight: acerca del puerto de acceso de depuración".
  111. ^ "Cortex-M3: puerto de acceso de depuración (DAP)".
  112. ^ Anderson, Mike. "Comprensión de las opciones de depuración de ARM HW" (PDF) .
  113. ^ "Guía del usuario del depurador CMSIS-DAP".
  114. ^ "CMSIS-DAP".
  115. ^ "Extensiones del conjunto de instrucciones ARM DSP". arm.com . Archivado desde el original el 14 de abril de 2009 . Consultado el 18 de abril de 2009 .
  116. ^ "DSP y SIMD" . Consultado el 10 de julio de 2015 .
  117. ^ "Manual de referencia técnica ARM7TDMI" (PDF) . pag. ii.
  118. ^ Jaggar, Dave (1996). Manual de referencia de arquitectura ARM . Prentice Hall. págs. 6–1. ISBN 978-0-13-736299-8.
  119. ^ Nathan Willis (10 de junio de 2015). "Resucitando la arquitectura SuperH". LWN.net .
  120. ^ "Arquitectura del conjunto de instrucciones del procesador ARM". ARM.com. Archivado desde el original el 15 de abril de 2009 . Consultado el 18 de abril de 2009 .
  121. ^ "ARM apunta al hijo de Thumb a uC, ASSP y SoC". Linuxdevices.com. Archivado desde el original el 9 de diciembre de 2012 . Consultado el 18 de abril de 2009 .
  122. ^ "Centro de información ARM". Infocenter.arm.com . Consultado el 18 de abril de 2009 .
  123. ^ "Jazelle". ARM Ltd. Archivado desde el original el 2 de junio de 2017.
  124. ^ Tom R. Halfhill (2005). "ARM fortalece los compiladores de Java: las nuevas instrucciones Thumb-2EE de 16 bits conservan la memoria del sistema" (PDF) . Archivado desde el original (PDF) el 5 de octubre de 2007.
  125. ^ Manual de referencia de arquitectura ARM, edición Armv7-A y Armv7-R, número Cb, sección A2.10, 25 de julio de 2012.
  126. ^ "Cadena de herramientas del compilador ARM utilizando el ensamblador - coprocesador VFP". ARM.com . Consultado el 20 de agosto de 2014 .
  127. ^ "Directivas VFP y notación vectorial". ARM.com . Consultado el 21 de noviembre de 2011 .
  128. ^ ab "Diferencias entre ARM Cortex-A8 y Cortex-A9". Shervin Emami . Consultado el 21 de noviembre de 2011 .
  129. ^ "Hoja de datos de FPA10" (PDF) . chrisacorns.computinghistory.org.uk . Semiconductores GEC Plessey. 11 de junio de 1993 . Consultado el 26 de noviembre de 2020 . En relación con IEEE 754-1985, la FPA logra conformidad en aritmética de precisión simple [...] Ocasionalmente, se pueden producir multiplicaciones de precisión doble y extendida con un error de 1 o 2 unidades en el lugar menos significativo de la mantisa. .
  130. ^ ab "Manual de referencia técnica de Cortex-A7 MPCore - Funciones 1.3". BRAZO . Consultado el 11 de julio de 2014 .
  131. ^ "ArmHardFloatPort - Wiki Debian". Wiki.debian.org. 20 de agosto de 2012 . Consultado el 8 de enero de 2014 .
  132. ^ "Procesador Cortex-A9". arm.com . Consultado el 21 de noviembre de 2011 .
  133. ^ "Acerca del Cortex-A9 NEON MPE". arm.com . Consultado el 21 de noviembre de 2011 .
  134. ^ "US20050125476A1".
  135. ^ "US20080141004A1".
  136. ^ "Opciones ARM". Manual de colección del compilador GNU . Consultado el 20 de septiembre de 2019 .
  137. ^ Ne10: un proyecto de biblioteca de software abierto optimizado para la arquitectura ARM en GitHub
  138. ^ José Yiu. "Introducción a la arquitectura ARMv8.1-M" (PDF) . Consultado el 18 de julio de 2022 .
  139. ^ "Genode: una exploración de la tecnología ARM TrustZone" . Consultado el 10 de julio de 2015 .
  140. ^ "ARM anuncia la disponibilidad de soluciones de software DRM para consumidores móviles basadas en la tecnología ARM TrustZone" (Comunicado de prensa). Noticias.thomasnet.com . Consultado el 18 de abril de 2009 .
  141. ^ Laginimaineb (8 de octubre de 2015). "¡Bits, por favor!: Explotación completa de TrustZone para MSM8974". ¡Pedacitos, por favor! . Consultado el 3 de mayo de 2016 .
  142. ^ Di Shen. "Atacar su 'núcleo de confianza' explotando TrustZone en Android" (PDF) . Sesiones informativas de sombrero negro . Consultado el 3 de mayo de 2016 .
  143. ^ "Software de código abierto ARM TrustZone y ARM Hypervisor". Virtualización abierta. Archivado desde el original el 14 de junio de 2013 . Consultado el 14 de junio de 2013 .
  144. ^ "Tecnología segura AMD". AMD . Archivado desde el original el 23 de julio de 2016 . Consultado el 6 de julio de 2016 .
  145. ^ Smith, Ryan (13 de junio de 2012). "Las APU AMD 2013 incluirán el procesador ARM Cortex A5 para capacidades Trustzone". AnandTech . Consultado el 6 de julio de 2016 .
  146. ^ ab Shimpi, Anand Lal (29 de abril de 2014). "Vista previa del rendimiento de AMD Beema Mullins Architecture A10 micro 6700T". AnandTech . Consultado el 6 de julio de 2016 .
  147. ^ Walton, Jarred (4 de junio de 2014). "AMD lanza APU móviles Kaveri". AnandTech . Consultado el 6 de julio de 2016 .
  148. ^ "Raíz de confianza" (documento técnico). Samsung Electronics . Abril de 2016.
  149. ^ "Manual de referencia de arquitectura ARM" (PDF) . pag. B4-8. Archivado desde el original (PDF) el 6 de febrero de 2009. Se agregaron bits APX y XN (nunca se ejecuta) en VMSAv6 [Arquitectura del sistema de memoria virtual]
  150. ^ Manual de referencia de arquitectura ARM, edición ARMv7-A y ARMv7-R . BRAZO limitado.
  151. ^ "Cortex-A65AE". Desarrollador ARM . Consultado el 26 de abril de 2019 .
  152. ^ "AppliedMicro presenta el primer núcleo ARM v8 de 64 bits del mundo" (Presione soltar). Microaplicado. 28 de octubre de 2011 . Consultado el 11 de febrero de 2014 .
  153. ^ "El Exynos 5433 de Samsung es un SoC ARM A57/A53". AnandTech . Consultado el 17 de septiembre de 2014 .
  154. ^ "Manual de referencia técnica del procesador ARM Cortex-A53 MPCore: extensión de criptografía". BRAZO . Consultado el 11 de septiembre de 2016 .
  155. ^ Frumusanu, Andrei (3 de septiembre de 2020). "ARM anunció Cortex-R82: primer procesador en tiempo real de 64 bits". AnandTech .
  156. ^ Frumusanu, Andrei (30 de marzo de 2021). "Arm anuncia la arquitectura Armv9: SVE2, seguridad y la próxima década". AnandTech .
  157. ^ Harrod, Alex (30 de marzo de 2021). "Arm lanza la arquitectura v9" (Presione soltar). brazo ltd.
  158. ^ Osborne, Charlie. "ARM anuncia la arquitectura de seguridad PSA para dispositivos IoT". ZDNet.
  159. ^ ab Wong, William (25 de octubre de 2017). "La arquitectura de seguridad de la plataforma ARM apunta a Cortex-M". Diseño Electrónico . Archivado desde el original el 8 de mayo de 2019.
  160. ^ Hoffenberg, Steve (31 de octubre de 2017). "ARM: La seguridad no es sólo un imperativo tecnológico, es una responsabilidad social". Investigación VDC . Archivado desde el original el 28 de septiembre de 2023.
  161. ^ Armasu, Lucian (22 de febrero de 2018). "ARM revela más detalles sobre la arquitectura de seguridad de su plataforma IoT". Hardware de Tom .
  162. ^ Williams, Chris. "¿ARM PSA IoT API? BRB... La caja de herramientas de tecnología para proteger el kit conectado a la red se abre un poco más". El registro .
  163. ^ Hayes, Caroline (25 de febrero de 2019). "Embedded World: Arm introduce el cuarto elemento de seguridad en PSA". Semanario de Electrónica .
  164. ^ "Certificado PSA: generando confianza en IoT". Certificado PSA .
  165. ^ ab "Certificado PSA: generar confianza, generar valor". Tiempos EE.UU. 4 de marzo de 2019.
  166. ^ "La importancia de 6 billones de dólares de las normas y regulaciones de seguridad en la era de IoT". IoT ahora. 16 de marzo de 2020.
  167. ^ McGregor, Jim (4 de marzo de 2019). "Arm presenta pruebas de certificación de seguridad para IoT". Forbes .
  168. ^ Velocidad, Richard (26 de febrero de 2019). "Azure IoT avanza hacia el espacio para mantener la conectividad en el borde, cortesía de Inmarsat". El registro .
  169. ^ "Especificaciones de OS-9". Microware .
  170. ^ ab "Faros". FuenteForge . Consultado el 24 de mayo de 2018 .
  171. ^ "Virtualización segura de PikeOS" . Consultado el 10 de julio de 2013 .
  172. ^ ab "Sistemas operativos en tiempo real con certificación de seguridad: CPU compatibles".
  173. ^ "Puerto de plataforma ARM". opensolaris.org. Archivado desde el original el 2 de diciembre de 2012 . Consultado el 29 de diciembre de 2012 .
  174. ^ "El multivisor basado en INTEGRITY de Green Hills Software ofrece la primera solución de virtualización segura de 64 bits integrada de la industria". ghs.com . Consultado el 14 de marzo de 2018 .
  175. ^ "Sistema operativo en tiempo real Enea OSE para 5G y LTE-A | Enea". enea.com . Archivado desde el original el 1 de enero de 2019 . Consultado el 17 de abril de 2018 .
  176. ^ "Plataformas compatibles". docs.sel4.systems . Consultado el 23 de noviembre de 2018 .
  177. ^ "Plataforma de desarrollo de software QNX (SDP 7.0) | BlackBerry QNX". blackberry.qnx.com . Consultado el 27 de julio de 2020 .
  178. ^ "Wind River lanza VxWorks RTOS de 64 bits" (Presione soltar). Sistemas de ríos eólicos . 28 de febrero de 2011 . Consultado el 24 de octubre de 2023 .
  179. ^ "Manjaro-ARM". Wiki de Manjaro . 20 de junio de 2022.
  180. ^ Linus Torvalds (1 de octubre de 2012). "Re: [GIT PULL] arm64: puerto del kernel de Linux". Lista de correo del kernel de Linux (Lista de correo) . Consultado el 2 de mayo de 2019 .
  181. ^ Larabel, Michael (27 de febrero de 2013). "Se está iniciando la versión ARM de 64 bits de Ubuntu/Debian". Forónix . Consultado el 17 de agosto de 2014 .
  182. ^ "Noticias del proyecto Debian - 14 de agosto de 2014". Debian . 14 de agosto de 2014 . Consultado el 17 de agosto de 2014 .
  183. ^ "Servidor Ubuntu para ARM". ubuntu.com .
  184. ^ "Arquitecturas/AArch64" . Consultado el 16 de enero de 2015 .
  185. ^ "Portal: ARM/AArch64" . Consultado el 16 de enero de 2015 .
  186. ^ "Notas de la versión de SUSE Linux Enterprise 12 SP2" . Consultado el 11 de noviembre de 2016 .
  187. ^ "Red Hat presenta compatibilidad con servidores ARM para Red Hat Enterprise Linux". redhat.com . Consultado el 18 de enero de 2019 .
  188. ^ "Actualización del proyecto de arquitectura ARM de 64 bits". La Fundación FreeBSD. 24 de noviembre de 2014.
  189. ^ "OpenBSD/arm64" . Consultado el 25 de septiembre de 2023 .
  190. ^ "NetBSD/arm64" . Consultado el 5 de agosto de 2018 .
  191. ^ "HP y Asus anuncian las primeras PC ARM con Windows 10: duración de la batería de 20 horas, gigabit LTE". Ars Técnica . Consultado el 22 de enero de 2018 . Esta nueva versión de Windows 10 es el primer sistema operativo ARM de 64 bits de Microsoft. Ejecutará aplicaciones ARM x86 y de 32 bits de la Tienda y, a su debido tiempo, aplicaciones ARM de 64 bits. Sin embargo, Microsoft aún no ha finalizado su SDK ARM de 64 bits. Hay muchas piezas en su lugar (hay un compilador ARM de 64 bits, por ejemplo), pero la compañía aún no acepta aplicaciones ARM de 64 bits enviadas a la Tienda, y tampoco hay aplicaciones de escritorio ARM de 64 bits.
  192. ^ Hassan, Mehedi (10 de diciembre de 2016). "Windows 10 en ARM64 obtiene sus primeras aplicaciones compiladas". MSPoweruser .
  193. ^ Filippidis, Katrina (1 de junio de 2018). "VLC se convierte en una de las primeras aplicaciones ARM64 de Windows". Engadget .
  194. ^ Sweetgall, Marc (15 de noviembre de 2018). "Soporte oficial para Windows 10 en desarrollo ARM". Desarrollador de Windows. Blogs de Windows . Microsoft . Consultado el 17 de diciembre de 2019 .
  195. ^ Gartenberg, Chaim (12 de noviembre de 2020). "macOS Big Sur ya está disponible para descargar". El borde . Consultado el 13 de noviembre de 2020 .
  196. ^ Clover, Juli (23 de junio de 2020). "Rosetta no admitirá aplicaciones de virtualización x86 que ejecuten Windows". MacRumors . Consultado el 13 de noviembre de 2020 .
  197. ^ "ARM - La Wiki oficial del vino" . Consultado el 10 de julio de 2015 .
  198. ^ "ARM64 - La Wiki oficial del vino" . Consultado el 10 de julio de 2015 .
  199. ^ "Actualizaciones de seguridad de ARM". Desarrollador ARM . Consultado el 24 de mayo de 2018 .

Bibliografía

Otras lecturas

enlaces externos

manuales de arquitectura

Tarjetas de referencia rápida

Instrucciones

Códigos de operación