De Wikipedia, la enciclopedia libre
  (Redirigido desde ARM Cortex-A32 )
Saltar a navegación Saltar a búsqueda

ARM (estilizado en minúsculas como arm , anteriormente un acrónimo de Advanced RISC Machines y originalmente Acorn RISC Machine ) es una familia de arquitecturas informáticas de conjunto de instrucciones reducidas (RISC) para procesadores de computadora , configuradas para varios entornos. Arm Ltd.desarrolla la arquitectura y la licencia a otras empresas, que diseñan sus propios productos que implementan una de esas arquitecturas‍, incluyendo sistemas en chips (SoC) y sistemas en módulos (SoM) que incorporan diferentes componentes como la memoria , interfaces y radios . También diseña núcleosque implementan este conjunto de instrucciones y licencian estos diseños a varias empresas que incorporan esos diseños centrales en sus propios productos.

Ha habido varias generaciones del diseño ARM. El ARM1 original usaba una estructura interna de 32 bits , pero tenía un espacio de direcciones de 26 bits que lo limitaba a 64 MB de memoria principal . Esta limitación se eliminó en la serie ARMv3, que tiene un espacio de direcciones de 32 bits, y varias generaciones adicionales hasta ARMv7 permanecieron en 32 bits. Publicado en 2011, el apoyo ARMv8-A arquitectura añadido para un 64-bit espacio de direcciones y la aritmética de 64 bits con su nuevo conjunto de instrucciones de longitud fija de 32 bits. [3] Arm Ltd. también ha lanzado una serie de conjuntos de instrucciones adicionales para diferentes reglas; la extensión "Thumb" agrega instrucciones de 32 y 16 bits para mejorar la densidad del código , mientras que JazelleSe agregaron instrucciones para manejar directamente los códigos de bytes de Java y, más recientemente, JavaScript . Los cambios más recientes incluyen la adición de subprocesos múltiples simultáneos (SMT) para mejorar el rendimiento o la tolerancia a fallas . [4]

Debido a sus bajos costos, consumo mínimo de energía y menor generación de calor que sus competidores, los procesadores ARM son deseables para dispositivos livianos, portátiles y que funcionan con baterías‍, incluidos teléfonos inteligentes , computadoras portátiles y tabletas , así como otros sistemas integrados . [5] [6] [7] Sin embargo, los procesadores ARM también se utilizan para equipos de escritorio y servidores , incluida la supercomputadora más rápida del mundo . [8] Con más de 180 mil millones de chips ARM producidos, [9] [10] [11] a partir de 2021 , ARM es la arquitectura de conjunto de instrucciones más utilizada(ISA) y la ISA producida en mayor cantidad. [12] [6] [13] [14] [15] Actualmente, los núcleos Cortex ampliamente utilizados , los núcleos "clásicos" más antiguos y las variantes de núcleos SecurCore especializados están disponibles para cada uno de ellos para incluir o excluir capacidades opcionales.

Historia [ editar ]

BBC Micro [ editar ]

El primer diseño ampliamente exitoso de Acorn Computers fue el BBC Micro , presentado en diciembre de 1981. Se trataba de una máquina relativamente convencional basada en la CPU MOS 6502, pero tenía aproximadamente el doble de rendimiento que los diseños de la competencia como Apple II debido a su uso de DRAM más rápida . La DRAM típica de la época funcionaba a unos 2 MHz; Acorn llegó a un acuerdo con Hitachi para un suministro de piezas más rápidas de 4 MHz. [dieciséis]

Las máquinas de la época generalmente compartían memoria entre el procesador y el framebuffer , lo que permitía al procesador actualizar rápidamente el contenido de la pantalla sin tener que realizar entradas / salidas (E / S) separadas . Sin embargo, como la sincronización de la visualización de video es exigente, el hardware de video debe tener acceso rápido a esa memoria. Debido a una peculiaridad del diseño del 6502, la CPU dejó intacta la memoria de 1 / 2 del tiempo. Por lo tanto, al ejecutar la CPU a 1 MHz, el sistema de video podría leer datos durante esos tiempos de inactividad, ocupando el total de 2 MHz de la RAM. En BBC Micro, el uso de RAM de 4 MHz permitió utilizar la misma técnica, pero funcionando al doble de velocidad. Esto le permitió superar a cualquier máquina similar en el mercado.[17]

Computadora de negocios Acorn [ editar ]

1981 fue también el año en que se introdujo la IBM PC . Utilizando el Intel 8088 presentado recientemente , una CPU de 16 bits en comparación con el diseño de 8 bits del 6502 , pudo ofrecer un mayor rendimiento general. Su introducción cambió radicalmente el mercado de las computadoras; lo que había sido en gran parte un mercado de juegos y pasatiempos emergente en los últimos cinco años comenzó a cambiar a un elemento comercial imprescindible donde los diseños anteriores de 8 bits simplemente no podían competir. También estaban llegando al mercado diseños más nuevos que se ejecutaban en 32 bits , como el Motorola 68000 [18] y National Semiconductor NS32016 . [19]

Acorn comenzó a considerar cómo competir en este mercado y produjo un nuevo diseño de papel conocido como Acorn Business Computer . Se fijaron el objetivo de producir una máquina con un rendimiento diez veces superior al de BBC Micro, pero al mismo precio. [20] Esto superaría y subestimaría el precio de la PC. Al mismo tiempo, la reciente introducción de Apple Lisa llevó el concepto de Xerox Star a una audiencia más amplia y sugirió que el futuro pertenecía a las máquinas con una interfaz gráfica de usuario . [21] El Lisa, sin embargo, costó $ 9,995, ya que estaba repleto de chips de soporte, grandes cantidades de memoria y un disco duro , todo muy caro en ese momento. [22]

Luego, los ingenieros comenzaron a estudiar todos los diseños de CPU disponibles. Su conclusión sobre los diseños de 16 bits existentes fue que eran mucho más caros y todavía eran "un poco basura", [23] ofreciendo solo un rendimiento ligeramente superior al de su diseño BBC Micro. También casi siempre exigieron una gran cantidad de chips de soporte para operar incluso a ese nivel, lo que elevó el costo de la computadora en su conjunto. Estos sistemas simplemente no alcanzarían el objetivo de diseño. [23] También consideraron los nuevos diseños de 32 bits, pero estos eran aún más caros y tenían los mismos problemas con los chips de soporte. [24] Según Sophie Wilson , todos los procesadores probados en ese momento funcionaron aproximadamente igual, con un ancho de banda de aproximadamente 4 Mbit / segundo. [25][a]

Dos eventos clave llevaron a Acorn por el camino hacia ARM. Uno fue la publicación de una serie de informes de la Universidad de California, Berkeley , que sugerían que un diseño de chip simple podría, no obstante, tener un rendimiento extremadamente alto, mucho más alto que los últimos diseños de 32 bits del mercado. [26] La segunda fue una visita de Steve Furber y Sophie Wilson al Western Design Center , una empresa dirigida por Bill Mensch y su hermana, que se había convertido en el sucesor lógico del equipo MOS y estaba ofreciendo nuevas versiones como el WDC 65C02 . El equipo de Acorn vio a estudiantes de secundaria produciendo diseños de chips en máquinas Apple II, lo que sugirió que cualquiera podía hacerlo. [27] [28]Por el contrario, una visita a otra empresa de diseño que trabajaba en una CPU moderna de 32 bits reveló un equipo con más de una docena de miembros que ya estaban en la revisión H de su diseño y, sin embargo, aún contenía errores. Esto cimentó su decisión de finales de 1983 de comenzar su propio diseño de CPU, la Acorn RISC Machine. [29]

Conceptos de diseño [ editar ]

Los diseños originales de Berkeley RISC eran, en cierto sentido, sistemas de enseñanza, no diseñados específicamente para un rendimiento absoluto. A su concepto básico de registro pesado, ARM agregó una serie de notas de diseño bien recibidas del 6502. La principal de ellas fue la capacidad de atender interrupciones rápidamente , lo que permitió a las máquinas ofrecer un rendimiento de entrada / salida razonable sin ningún hardware externo adicional. . Para ofrecer interrupciones de alto rendimiento similares a las del 6502, el diseño ARM limitó su espacio de direcciones físicas a 24 bits de palabras de 4 bytes, es decir, 26 bits de bytes o 64 MB. Este tamaño de 24 bits permitió almacenar el contador de programa (PC) junto con ocho indicadores del procesadoren un solo registro de 32 bits. Eso significaba que en la recepción de una interrupción, todo el estado de la máquina podría guardarse en una sola operación, mientras que si la PC tuviera 32 bits completos, requeriría operaciones separadas para almacenarlo y los indicadores de estado. [30]

Otro cambio, y uno de los más importantes en términos de rendimiento práctico en el mundo real, fue la modificación del conjunto de instrucciones para aprovechar la DRAM en modo página . Recientemente introducido, el modo de página permitía que los accesos posteriores a la memoria se ejecutaran dos veces más rápido si estaban aproximadamente en la misma ubicación o "página". El diseño de Berkeley no consideró el modo de página y trató toda la memoria por igual. El diseño ARM agregó instrucciones especiales de acceso a la memoria similares a vectores, los "ciclos S", que podrían usarse para llenar o guardar múltiples registros en una sola página usando el modo de página. Esto duplicó el rendimiento de la memoria cuando se pudieron usar y fue especialmente importante para el rendimiento de los gráficos. [31]

Los diseños de Berkeley RISC utilizaron ventanas de registro para reducir el número de registros guardados y restauraciones realizadas en llamadas a procedimientos ; el diseño ARM no adoptó esto.

Wilson desarrolló el conjunto de instrucciones, escribiendo una simulación del procesador en BBC BASIC que se ejecutó en un BBC Micro con un segundo procesador 6502 . [32] [33] Esto convenció a los ingenieros de Acorn de que estaban en el camino correcto. Wilson se acercó al director ejecutivo de Acorn, Hermann Hauser , y solicitó más recursos. Hauser dio su aprobación y reunió a un pequeño equipo para diseñar el procesador real basado en el ISA de Wilson. [ cita requerida ] El proyecto oficial Acorn RISC Machine comenzó en octubre de 1983.

ARM1 [ editar ]

Segundo procesador ARM1 para BBC Micro

Acorn eligió la tecnología VLSI como el "socio de silicio", ya que eran una fuente de ROM y chips personalizados para Acorn. Acorn proporcionó el diseño y VLSI proporcionó el diseño y la producción. Las primeras muestras de silicio ARM funcionaron correctamente cuando se recibieron y probaron por primera vez el 26 de abril de 1985. [5] Conocidas como ARM1, estas versiones funcionaban a 6 MHz. [34]

La primera aplicación ARM fue como segundo procesador para BBC Micro, donde ayudó a desarrollar software de simulación para finalizar el desarrollo de los chips de soporte (VIDC, IOC, MEMC) y aceleró el software CAD utilizado en el desarrollo ARM2. Wilson posteriormente reescribió BBC BASIC en lenguaje ensamblador ARM. El conocimiento profundo obtenido al diseñar el conjunto de instrucciones permitió que el código fuera muy denso, lo que convierte a ARM BBC BASIC en una prueba extremadamente buena para cualquier emulador de ARM.

ARM2 [ editar ]

El resultado de las simulaciones en las placas ARM1 condujo a la introducción a fines de 1986 del diseño ARM2 que funcionaba a 8 MHz, y a la versión de principios de 1987 con aumento de velocidad de 10 a 12 MHz. [b] Un cambio significativo en la arquitectura subyacente fue la adición de un multiplicador de Booth , mientras que anteriormente la multiplicación tenía que realizarse en software. [36] Además, un nuevo modo de solicitud de interrupción rápida, FIQ para abreviar, permitió que los registros 8 a 14 fueran reemplazados como parte de la interrupción en sí. Esto significaba que las solicitudes de FIQ no tenían que guardar sus registros, lo que aceleraba aún más las interrupciones. [37]

El ARM2 tenía aproximadamente siete veces el rendimiento de un sistema típico de 7 MHz basado en 68000 como el Commodore Amiga o el Macintosh SE . Era dos veces más rápido que un Intel 80386 funcionando a 16 MHz, y aproximadamente la misma velocidad que un supermini VAX-11/784 multiprocesador . Los únicos sistemas que lo superaron fueron las estaciones de trabajo basadas en RISC Sun SPARC y MIPS R2000 . [38] 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 acceso directo a memoria dedicado.(DMA) que se encuentra a menudo en las estaciones de trabajo. El sistema de gráficos también se simplificó basándose en el mismo conjunto de suposiciones subyacentes sobre la memoria y el tiempo. El resultado fue un diseño drásticamente simplificado, que ofrece un rendimiento a la par con las costosas estaciones de trabajo, pero a un precio similar al de las computadoras de escritorio contemporáneas. [38]

El ARM2 presentaba un bus de datos de 32 bits , un espacio de direcciones de 26 bits y 27 registros de 32 bits . El ARM2 tenía un recuento de transistores de solo 30.000, en comparación con el modelo 68000 de seis años de Motorola, con alrededor de 40.000. [39] Gran parte de esta simplicidad provino de la falta de microcódigo (que representa alrededor de un cuarto a un tercio de los 68000) y de (como la mayoría de las CPU del día) sin incluir caché . Esta simplicidad permitió un bajo consumo de energía, pero mejor rendimiento que el Intel 80286 .

Se produjo un sucesor, ARM3, con una caché de 4  KB , que mejoró aún más el rendimiento. [40] El bus de direcciones se amplió a 32 bits en el ARM6, pero el código del programa todavía tenía que estar dentro de los primeros 64  MB de memoria en el modo de compatibilidad de 26 bits, debido a los bits reservados para las banderas de estado. [41]

Advanced RISC Machines Ltd. - ARM6 [ editar ]

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

A fines de la década de 1980, Apple Computer y VLSI Technology comenzaron a trabajar con Acorn en versiones más nuevas del núcleo ARM. En 1990, Acorn escindió el equipo de diseño en una nueva empresa llamada Advanced RISC Machines Ltd., [42] [43] [44] 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. [45] El nuevo trabajo de Apple-ARM eventualmente evolucionaría hacia el ARM6, lanzado por primera vez a principios de 1992. Apple usó el ARM610 basado en ARM6 como base para su PDA Apple Newton .

Licenciatarios tempranos [ editar ]

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

Cuota de mercado [ editar ]

En 2005, alrededor del 98% de todos los teléfonos móviles vendidos utilizaban al menos un procesador ARM. [49] En 2010, los productores de chips basados ​​en arquitecturas ARM informaron envíos de 6.100 millones de procesadores basados ​​en ARM , lo que representa el 95% de los teléfonos inteligentes , el 35% de los televisores digitales y decodificadores y el 10% de las computadoras móviles . En 2011, la arquitectura ARM de 32 bits fue la arquitectura más utilizada en dispositivos móviles y la más popular de 32 bits en sistemas integrados. [50] En 2013, se produjeron 10 mil millones [51] y "los chips basados ​​en ARM se encuentran en casi el 60 por ciento de los dispositivos móviles del mundo". [52]

Licencias [ editar ]

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

Licencia principal [ editar ]

El negocio principal de Arm Ltd. es la venta de núcleos IP , que los licenciatarios utilizan para crear microcontroladores (MCU), CPU y sistemas en chips basados ​​en esos núcleos. El fabricante del diseño original combina el núcleo ARM con otras partes para producir un dispositivo completo, generalmente uno que se puede construir en plantas de fabricación de semiconductores (fab) existentes a bajo costo y aún así ofrecer un rendimiento sustancial. La implementación más exitosa ha sido ARM7TDMI con cientos de millones vendidos. Atmel ha sido un centro de diseño precursor en el sistema integrado basado en ARM7TDMI.

Las arquitecturas ARM utilizadas en teléfonos inteligentes, PDA y otros dispositivos móviles van desde ARMv5 hasta ARMv8-A.

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

Arm Ltd. ofrece una variedad de términos de licencia, que varían en costo y entregables. Arm Ltd. proporciona a todos los licenciatarios una descripción de hardware integrable del núcleo ARM, así como un conjunto completo de herramientas de desarrollo de software ( compilador , depurador , kit de desarrollo de software ) y el derecho a vender silicio fabricado que contiene la CPU ARM.

Los paquetes de SoC que integran los diseños centrales de ARM incluyen las primeras tres generaciones de Nvidia Tegra, la familia Quatro de CSR plc, Nova y NovaThor de ST-Ericsson, Precision32 MCU de Silicon Labs, productos OMAP de Texas Instruments, productos Hummingbird y Exynos de Samsung , A4 , A5 y A5X de Apple , y NXP 's i.MX .

Los licenciatarios de Fabless , que desean integrar un núcleo ARM en su propio diseño de chip, generalmente solo están interesados ​​en adquirir un núcleo de propiedad intelectual de semiconductores verificados listo para fabricar . Para estos clientes, Arm Ltd. ofrece una descripción de la lista de redes de puerta del núcleo ARM elegido, junto con un modelo de simulación abstraído y programas de prueba para ayudar a la integración y verificación del diseño. Los clientes más ambiciosos, incluidos los fabricantes de dispositivos integrados (IDM) y los operadores de fundición, eligen adquirir la IP del procesador en RTL sintetizable ( Verilog) formulario. Con el RTL sintetizable, el cliente tiene la capacidad de realizar optimizaciones y ampliaciones a nivel arquitectónico. Esto permite al diseñador lograr objetivos de diseño exóticos que de otro modo no serían posibles con una lista de conexiones sin modificar ( alta velocidad de reloj , muy bajo consumo de energía, extensiones de conjuntos de instrucciones, etc.). Si bien Arm Ltd. no otorga al licenciatario el derecho a revender la arquitectura ARM en sí, los licenciatarios pueden vender libremente productos manufacturados como dispositivos con chip, placas de evaluación y sistemas completos. Las fundiciones comerciales pueden ser un caso especial; no solo se les permite vender silicio terminado que contiene núcleos ARM, sino que generalmente tienen el derecho de volver a fabricar núcleos ARM para otros clientes.

Arm Ltd. fija el precio de su propiedad intelectual en función del valor percibido. Los núcleos ARM de menor rendimiento suelen tener menores costos de licencia que los núcleos de mayor rendimiento. En términos de implementación, un núcleo sintetizable cuesta más que un núcleo duro de macro (caja negra). Para complicar las cuestiones de precios, una fundición comercial que posea una licencia ARM, como Samsung o Fujitsu, puede ofrecer a los clientes fabulosos costos de licencia reducidos. A cambio de adquirir el núcleo ARM a través de los servicios de diseño internos de la fundición, el cliente puede reducir o eliminar el pago de la tarifa de licencia inicial de ARM.

En comparación con las fundiciones de semiconductores dedicadas (como TSMC y UMC ) sin servicios de diseño internos, Fujitsu / Samsung cobran de dos a tres veces más por oblea fabricada . [ cita requerida ] Para aplicaciones de volumen bajo a medio, una fundición de servicios de diseño ofrece precios generales más bajos (a través de la subvención de la tarifa de licencia). Para piezas producidas en masa de gran volumen, la reducción de costos a largo plazo que se puede lograr a través de precios más bajos de obleas reduce el impacto de los costos de NRE (ingeniería no recurrente) de ARM, lo que hace que la fundición dedicada sea una mejor opción.

Entre las empresas que han desarrollado chips con núcleos diseñados por Arm Holdings se incluyen la filial Annapurna Labs de Amazon.com , [54] Analog Devices , Apple , AppliedMicro (ahora: MACOM Technology Solutions [55] ), Atmel , Broadcom , Cavium , Cypress Semiconductor , Freescale Semiconductor (ahora NXP Semiconductors ), Huawei , Intel , [ dudoso ] Maxim Integrated , Nvidia , NXP , Qualcomm , Renesas , Samsung Electronics , ST Microelectronics , Texas Instruments y Xilinx .

Construido sobre la licencia de la tecnología ARM Cortex [ editar ]

En febrero de 2016, ARM anunció la licencia de tecnología Built on ARM Cortex, a menudo abreviada a la licencia Built on Cortex (BoC). Esta licencia permite a las empresas asociarse con ARM y realizar modificaciones en los diseños de ARM Cortex. Estas modificaciones de diseño no se compartirán con otras empresas. Estos diseños de núcleo semi personalizados también tienen libertad de marca, por ejemplo, Kryo 280 .

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

Licencia de arquitectura [ editar ]

Las empresas también pueden obtener una licencia de arquitectura ARM para diseñar sus propios núcleos de CPU utilizando los conjuntos de instrucciones ARM. Estos núcleos deben cumplir completamente con la arquitectura ARM. Las empresas que han diseñado núcleos que implementan una arquitectura ARM incluyen Apple, AppliedMicro (ahora: Ampere Computing ), Broadcom, Cavium (ahora Marvell), Digital Equipment Corporation , Intel, Nvidia, Qualcomm, Samsung Electronics, Fujitsu y NUVIA Inc .

Acceso flexible ARM [ editar ]

El 16 de julio de 2019, ARM anunció ARM Flexible Access. ARM Flexible Access proporciona acceso ilimitado a la propiedad intelectual (IP) de ARM incluida para el desarrollo. Se requieren tarifas por licencia de producto una vez que los clientes llegan a la fabricación de prototipos o cintas de fundición. [57] [58]

El 75% de la propiedad intelectual más reciente de ARM durante los últimos dos años está incluida en ARM Flexible Access. A octubre de 2019:

  • CPU: Cortex-A5 , Cortex-A7 , Cortex-A32 , Cortex-A34 , Cortex-A35 , Cortex-A53 , Cortex-R5 , Cortex-R8 , Cortex-R52 , Cortex-M0 , Cortex-M0 + , Cortex-M3 , Corteza-M4 , Corteza-M7 , Corteza-M23 , Corteza-M33
  • GPU: Mali-G52 , Mali-G31 . Incluye los kits de desarrollo de controladores de Mali (DDK).
  • Interconexión: CoreLink NIC-400, CoreLink NIC-450, CoreLink CCI-400, CoreLink CCI-500, CoreLink CCI-550, ADB-400 AMBA, XHB-400 AXI-AHB
  • Controladores del sistema: CoreLink GIC-400, CoreLink GIC-500, PL192 VIC, BP141 TrustZone Memory Wrapper, CoreLink TZC-400, CoreLink L2C-310, CoreLink MMU-500, Interfaz de memoria BP140
  • IP de seguridad: CryptoCell-312, CryptoCell-712, TrustZone True Random Number Generator
  • Controladores periféricos: PL011 UART, PL022 SPI, PL031 RTC
  • Depuración y seguimiento: CoreSight SoC-400, CoreSight SDC-600, CoreSight STM-500, macrocelda de seguimiento del sistema CoreSight, controlador de memoria de seguimiento CoreSight
  • Kits de diseño: Corstone-101, Corstone-201
  • IP física: Artisan PIK para Cortex-M33 TSMC 22ULL, incluidos compiladores de memoria, bibliotecas lógicas, GPIO y documentación
  • Herramientas y materiales: Socrates IP ToolingARM Design Studio, Virtual System Models
  • Soporte: soporte técnico estándar de ARM, capacitación en línea de ARM, actualizaciones de mantenimiento, créditos para capacitación en el sitio y revisiones de diseño

Núcleos [ editar ]

  1. ^ a b Aunque la mayoría de las rutas de datos y los registros de CPU en los primeros procesadores ARM eran de 32 bits, la memoria direccionable estaba limitada a 26 bits ; con bits superiores, entonces, usados ​​para banderas de estado en el registro del contador del programa.
  2. ^ a b c ARMv3 incluyó un modo de compatibilidad para admitir las direcciones de 26 bits de versiones anteriores de la arquitectura. Este modo de compatibilidad es opcional en ARMv4 y se eliminó por completo en ARMv5.

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

Aplicaciones de ejemplo de núcleos ARM [ editar ]

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

Los núcleos ARM se utilizan en varios productos, especialmente en PDA y teléfonos inteligentes . Algunos de computación ejemplos son Microsoft 's primera superficie generación , Superficie 2 y Pocket PC dispositivos (siguientes 2002 ), de Apple ' s iPads y Asus 's Eee Pad Transformer los Tablet PC , y varios Chromebook ordenadores portátiles. Otros incluyen los teléfonos inteligentes iPhone de Apple y los reproductores multimedia portátiles iPod , las cámaras digitales Canon PowerShot , Consolas de juegos portátiles híbridas Nintendo Switch y 3DS , y sistemas de navegación paso a paso de TomTom .

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

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 [ editar ]

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

La arquitectura ARM de 32 bits, como ARMv7-A (que implementa AArch32; consulte la sección sobre ARMv8-A para obtener más información), fue la arquitectura más utilizada en dispositivos móviles en 2011 . [50]

Desde 1995, el ARM Architecture Reference Manual [90] ha sido la principal fuente de documentación sobre la arquitectura del procesador ARM y el conjunto de instrucciones, distinguiendo las interfaces que todos los procesadores ARM deben soportar (como la semántica de instrucciones) de los detalles de implementación que pueden variar. La arquitectura ha evolucionado con el tiempo, y la versión siete de la arquitectura, ARMv7, define tres "perfiles" de arquitectura:

  • Perfil A, el perfil de "Aplicación", implementado por núcleos de 32 bits en la serie Cortex-A y por algunos núcleos que no son ARM
  • Perfil R, el perfil "en tiempo real", implementado por núcleos en la serie Cortex-R
  • Perfil M, el perfil "Microcontrolador", implementado por la mayoría de los núcleos de la serie Cortex-M

Aunque los perfiles de arquitectura se definieron por primera vez para ARMv7, ARM definió posteriormente la arquitectura ARMv6-M (utilizada por Cortex M0 / M0 + / M1 ) como un subconjunto del perfil ARMv7-M con menos instrucciones.

Modos de CPU [ editar ]

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

  • Modo de usuario: el único modo sin privilegios.
  • Modo FIQ: un modo privilegiado que se ingresa siempre que el procesador acepta una solicitud de interrupción rápida .
  • Modo IRQ: un modo privilegiado que se ingresa siempre que el procesador acepta una interrupción.
  • Modo supervisor (svc): un modo privilegiado que se ingresa siempre que se reinicia la CPU o cuando se ejecuta una instrucción SVC.
  • Modo de cancelación: un modo privilegiado al que se ingresa cada vez que se produce una excepción de aborto de captación previa o de cancelación de datos.
  • Modo indefinido: un modo privilegiado que se ingresa siempre que ocurre una excepción de instrucción indefinida.
  • Modo de sistema (ARMv4 y superior): el único modo privilegiado al que no se accede mediante una excepción. Solo se puede ingresar ejecutando una instrucción que escribe explícitamente en los bits de modo del Registro de estado del programa actual (CPSR) desde otro modo privilegiado (no desde el modo de usuario).
  • Modo de monitor (ARMv6 y ARMv7 Security Extensions, ARMv8 EL3): se introduce un modo de monitor para admitir la extensión TrustZone en núcleos ARM.
  • Modo Hyp (ARMv7 Virtualization Extensions, ARMv8 EL2): un modo de hipervisor que admite los requisitos de virtualización de Popek y Goldberg para el funcionamiento no seguro de la CPU. [92] [93]
  • Modo de subproceso (ARMv6-M, ARMv7-M, ARMv8-M): un modo que se puede especificar como privilegiado o no privilegiado. Si se utiliza Main Stack Pointer (MSP) o Process Stack Pointer (PSP) también se puede especificar en el registro CONTROL con acceso privilegiado. Este modo está diseñado para tareas de usuario en un entorno RTOS, pero normalmente se usa en bare-metal para super-loop.
  • Modo de controlador (ARMv6-M, ARMv7-M, ARMv8-M): un modo dedicado para el manejo de excepciones (excepto el RESET que se maneja en modo Thread). El modo de controlador siempre usa MSP y funciona en un nivel privilegiado.

Conjunto de instrucciones [ editar ]

La implementación ARM original (y subsiguiente) fue cableada sin microcódigo , como el procesador 6502 de 8 bits mucho más simple usado en microcomputadoras Acorn anteriores.

La arquitectura ARM de 32 bits (y la arquitectura de 64 bits en su mayor parte) incluye las siguientes características RISC:

  • Arquitectura de carga / almacenamiento .
  • No hay soporte para accesos a memoria no alineados en la versión original de la arquitectura. ARMv6 y posteriores, excepto algunas versiones de microcontroladores, admiten accesos no alineados para instrucciones de carga / almacenamiento de media palabra y de una sola palabra con algunas limitaciones, como la atomicidad no garantizada . [94] [95]
  • Archivo de registro uniforme de 16 × 32 bits (incluido el contador de programa, el puntero de pila y el registro de enlace).
  • Ancho de instrucción fijo de 32 bits para facilitar la decodificación y la canalización , a costa de una menor densidad de código . Más tarde, el conjunto de instrucciones Thumb agregó instrucciones de 16 bits y aumentó la densidad del código.
  • Ejecución mayoritariamente de ciclo de reloj único.

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

  • La ejecución condicional de la mayoría de las instrucciones reduce la sobrecarga de las ramas y compensa la falta de un predictor de ramas en los primeros chips.
  • Las instrucciones aritméticas modifican los códigos de condición solo cuando se desea.
  • El cambiador de barril de 32 bits se puede utilizar sin penalización de rendimiento con la mayoría de las instrucciones aritméticas y cálculos de direcciones.
  • Tiene potentes modos de direccionamiento indexados .
  • Un registro de enlace admite llamadas a funciones de hoja rápidas.
  • Un subsistema de interrupción de 2 niveles de prioridad simple pero rápido tiene bancos de registros conmutados.

Instrucciones aritméticas [ editar ]

ARM incluye operaciones aritméticas de números enteros para sumar, restar y multiplicar; algunas versiones de la arquitectura también admiten operaciones de división.

ARM admite multiplicaciones de 32 bits × 32 bits con un resultado de 32 bits o un resultado de 64 bits, aunque los núcleos Cortex-M0 / M0 + / M1 no admiten resultados de 64 bits. [96] Algunos núcleos ARM también admiten multiplicaciones de 16 bits × 16 bits y de 32 bits × 16 bits.

Las instrucciones de división solo se incluyen en las siguientes arquitecturas ARM:

  • Las arquitecturas ARMv7-M y ARMv7E-M siempre incluyen instrucciones de división. [97]
  • La arquitectura ARMv7-R siempre incluye instrucciones de división en el conjunto de instrucciones Thumb, pero opcionalmente en su conjunto de instrucciones de 32 bits. [98]
  • La arquitectura ARMv7-A incluye opcionalmente las instrucciones de división. Las instrucciones pueden no implementarse, o implementarse solo en el conjunto de instrucciones Thumb, o implementarse en los conjuntos de instrucciones Thumb y ARM, o implementarse si se incluyen las Extensiones de virtualización. [98]

Registros [ editar ]

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

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

R13 y R14 se almacenan en todos los modos de CPU con privilegios, excepto en el modo de sistema. Es decir, cada modo al que se puede ingresar debido a una excepción tiene su propio R13 y R14. Estos registros generalmente contienen el puntero de pila y la dirección de retorno de las llamadas a funciones, respectivamente.

Alias:

  • R13 también se conoce como SP, el puntero de pila .
  • R14 también se conoce como LR, el registro de enlace .
  • R15 también se conoce como PC, el contador de programas .

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

  • M (bits 0–4) son los bits del modo de procesador.
  • T (bit 5) es el bit de estado Thumb.
  • F (bit 6) es el bit de deshabilitación de FIQ.
  • I (bit 7) es el bit de deshabilitación de IRQ.
  • A (bit 8) es el bit de desactivación de aborto de datos imprecisos.
  • E (bit 9) es el bit de endianidad de datos.
  • IT (bits 10-15 y 25-26) son los bits de estado si-entonces.
  • GE (bits 16-19) son los bits mayores o iguales a.
  • DNM (bits 20-23) es el bit de no modificar.
  • J (bit 24) es el bit de estado de Java.
  • Q (bit 27) es el bit de desbordamiento pegajoso.
  • V (bit 28) es el bit de desbordamiento.
  • C (bit 29) es el bit de llevar / pedir prestado / extender.
  • Z (bit 30) es el bit cero.
  • N (bit 31) es el bit negativo / menor que.

Ejecución condicional [ editar ]

Casi todas las instrucciones ARM tienen una característica de ejecución condicional llamada predicación , que se implementa con un selector de código de condición de 4 bits (el predicado). Para permitir la ejecución incondicional, uno de los códigos de cuatro bits hace que la instrucción se ejecute siempre. La mayoría de las demás arquitecturas de CPU solo tienen códigos de condición en las instrucciones de bifurcación. [100]

Aunque el predicado ocupa cuatro de los 32 bits en un código de instrucción y, por lo tanto, reduce significativamente los bits de codificación disponibles para los desplazamientos en las instrucciones de acceso a la memoria, evita las instrucciones de bifurcación al generar código para ifdeclaraciones pequeñas . Además de eliminar las propias instrucciones de bifurcación, esto preserva la canalización de búsqueda / decodificación / ejecución al costo de solo un ciclo por instrucción omitida.

Un algoritmo que proporciona un buen ejemplo de ejecución condicional es el algoritmo euclidiano basado en restas para calcular el máximo común divisor . En el lenguaje de programación C , el algoritmo se puede escribir como:

int  gcd ( int  a ,  int  b )  {  while  ( a  ! =  b )  // Entramos en el ciclo cuando a <b 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 si (a <b) es necesario ya que a! = b está registrado mientras condición)  b  - =  a ;  return  a ; }

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

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

y codificado en lenguaje ensamblador como:

; asignar a al registro r0, b al bucle  r1 : CMP  r0 ,  r1  ; establecer la condición "NE" si (a! = b)  ,; "GT" si (a> b)  ; o "LT" si (a <b)  SUBGT  r0 ,  r0 ,  r1  ; si "GT" (mayor que), a = ab;  SUBLT  r1 ,  r1 ,  r0  ; si "LT" (menor que), b = ba;  Bucle BNE  ; si "NE" (no igual), entonces bucle B lr ; si no se ingresa al bucle, podemos regresar con seguridad    

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

Una de las formas en que el código Thumb proporciona una codificación más densa es eliminar el selector de cuatro bits de las instrucciones que no son de rama.

Otras características [ editar ]

Otra característica del conjunto de instrucciones es la capacidad de plegar cambios y rotaciones en las instrucciones de "procesamiento de datos" (aritmética, lógica y movimiento de registro-registro), de modo que, por ejemplo, la instrucción C

a  + =  ( j  <<  2 );

podría traducirse como una instrucción de ciclo único de una sola palabra: [101]

AÑADIR  Ra ,  Ra ,  Rj ,  LSL  # 2

Esto da como resultado que el programa ARM típico sea más denso de lo esperado con menos accesos a la memoria; por lo tanto, la tubería se utiliza de manera más eficiente.

El procesador ARM también tiene características que rara vez se ven en otras arquitecturas RISC, como el direccionamiento relativo a la PC (de hecho, en el ARM de 32 bits [1] la PC es uno de sus 16 registros) y los modos de direccionamiento previo y posterior al incremento.

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

Canalizaciones y otros problemas de implementación [ editar ]

El ARM7 y las implementaciones anteriores tienen una canalización de tres etapas ; las etapas son buscar, decodificar y ejecutar. Los diseños de mayor rendimiento, como el ARM9, tienen tuberías más profundas: Cortex-A8 tiene trece etapas. Los cambios de implementación adicionales para un mayor rendimiento incluyen un sumador más rápido y una lógica de predicción de rama más extensa . La diferencia entre los núcleos ARM7DI y ARM7DMI, por ejemplo, fue un multiplicador mejorado; de ahí la "M" añadida.

Coprocesadores [ editar ]

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

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

En otros casos, los diseñadores de chips solo integran hardware mediante el mecanismo del coprocesador. Por ejemplo, un motor de procesamiento de imágenes podría ser un pequeño núcleo ARM7TDMI combinado con un coprocesador que tiene operaciones especializadas para soportar un conjunto específico de primitivas de transcodificación de HDTV.

Depurando [ editar ]

Todos los procesadores ARM modernos incluyen funciones de depuración de hardware, lo que permite a los depuradores de software realizar operaciones como detener, avanzar y señalar el código a partir del reinicio. Estas instalaciones se construyen utilizando el soporte JTAG , aunque algunos núcleos más nuevos admiten opcionalmente el propio protocolo "SWD" de dos cables de ARM. En los núcleos ARM7TDMI, la "D" representaba el soporte de depuración de JTAG y la "I" representaba la presencia de un módulo de depuración "EmbeddedICE". Para las generaciones principales de ARM7 y ARM9, EmbeddedICE sobre JTAG era un estándar de depuración de facto, aunque no estaba garantizado desde el punto de vista arquitectónico.

La arquitectura ARMv7 define las instalaciones de depuración básicas a nivel arquitectónico. Estos incluyen puntos de interrupción, puntos de observación y ejecución de instrucciones en un "modo de depuración"; instalaciones similares también estaban disponibles con EmbeddedICE. Se admiten tanto la depuración en modo "detener" como en "monitor". El mecanismo de transporte real utilizado para acceder a las instalaciones de depuración no se especifica arquitectónicamente, pero las implementaciones generalmente incluyen soporte JTAG.

Existe una arquitectura de depuración ARM "CoreSight" separada, que no es requerida arquitectónicamente por los procesadores ARMv7.

Puerto de acceso de depuración [ editar ]

El puerto de acceso de depuración (DAP) es una implementación de una interfaz de depuración ARM. [102] Hay dos implementaciones admitidas diferentes, el puerto de depuración JTAG de cable en serie (SWJ-DP) y el puerto de depuración de cable en serie (SW-DP). [103] CMSIS-DAP es una interfaz estándar que describe cómo varios software de depuración en una PC host pueden comunicarse a través de USB con el firmware que se ejecuta en un depurador de hardware, que a su vez habla por SWD o JTAG con una CPU ARM Cortex habilitada para CoreSight. [104] [105] [106] [107]

Instrucciones de mejora de DSP [ editar ]

Para mejorar la arquitectura ARM para el procesamiento de señales digitales y aplicaciones multimedia, se agregaron instrucciones DSP al conjunto. [108] Estos se indican con una "E" en el nombre de las arquitecturas ARMv5TE y ARMv5TEJ. Las variantes E también implican T, D, M e I.

Las nuevas instrucciones son comunes en arquitecturas de procesadores de señales digitales (DSP). Incluyen variaciones de multiplicar-acumular con signo , sumar y restar saturados y contar ceros iniciales.

Extensiones SIMD para multimedia [ editar ]

Introducido en la arquitectura ARMv6, fue un precursor de Advanced SIMD, también conocido como Neon . [109]

Jazelle [ editar ]

Jazelle DBX (Direct Bytecode eXecution) es una técnica que permite que el código de bytes de Java se ejecute directamente en la arquitectura ARM como un tercer estado de ejecución (y conjunto de instrucciones) junto con el modo ARM y Thumb existente. El soporte para este estado está representado por la "J" en la arquitectura ARMv5TEJ y en los nombres de núcleo ARM9EJ-S y ARM7EJ-S. Se requiere soporte para este estado a partir de ARMv6 (excepto para el perfil ARMv7-M), aunque los núcleos más nuevos solo incluyen una implementación trivial que no proporciona aceleración de hardware.

Pulgar [ editar ]

Para mejorar la densidad del código compilado, los procesadores desde ARM7TDMI (lanzado en 1994 [110] ) han presentado el conjunto de instrucciones Thumb , que tienen su propio estado. (La "T" en "TDMI" indica la función Thumb.) Cuando está en este estado, el procesador ejecuta el conjunto de instrucciones Thumb, una codificación compacta de 16 bits para un subconjunto del conjunto de instrucciones ARM. [111] La mayoría de las instrucciones de Thumb se asignan directamente a las instrucciones ARM normales. El ahorro de espacio proviene de hacer implícitos algunos de los operandos de la instrucción y limitar el número de posibilidades en comparación con las instrucciones ARM ejecutadas en el estado de conjunto de instrucciones ARM.

En Thumb, los códigos de operación de 16 bits tienen menos funcionalidad. Por ejemplo, solo las ramas pueden ser condicionales y muchos códigos de operación están restringidos para acceder solo a la mitad de todos los registros de propósito general de la CPU. Los códigos de operación más cortos brindan una densidad de código mejorada en general, aunque algunas operaciones requieren instrucciones adicionales. En situaciones en las que el puerto de memoria o el ancho del bus está restringido a menos de 32 bits, los códigos de operación Thumb más cortos permiten un mayor rendimiento en comparación con el código ARM de 32 bits, ya que es posible que sea necesario cargar menos código de programa en el procesador sobre el ancho de banda de memoria restringido.

A diferencia de las arquitecturas de procesador con instrucciones de longitud variable (16 o 32 bits), como Cray-1 y Hitachi SuperH , los conjuntos de instrucciones ARM y Thumb existen de forma independiente entre sí. El hardware integrado, como Game Boy Advance , suele tener una pequeña cantidad de RAM accesible con una ruta de datos completa de 32 bits; a la mayoría se accede a través de una ruta de datos secundaria de 16 bits o más estrecha. En esta situación, generalmente tiene sentido compilar el código Thumb y optimizar manualmente algunas de las secciones más intensivas de la CPU utilizando instrucciones ARM completas de 32 bits, colocando estas instrucciones más amplias en la memoria accesible del bus de 32 bits.

El primer procesador con un decodificador de instrucciones Thumb fue el ARM7TDMI. Todas las familias ARM9 y posteriores, incluida XScale, han incluido un decodificador de instrucciones Thumb. Incluye instrucciones adoptadas de Hitachi SuperH (1992), que obtuvo la licencia de ARM. [112] Las familias de procesadores más pequeñas de ARM (Cortex M0 y M1) implementan solo el conjunto de instrucciones Thumb de 16 bits para un rendimiento máximo en aplicaciones de menor costo.

Thumb-2 [ editar ]

La tecnología Thumb-2 se introdujo en el núcleo ARM1156 , anunciado en 2003. Thumb-2 amplía el conjunto limitado de instrucciones de 16 bits de Thumb con instrucciones adicionales de 32 bits para dar más amplitud al conjunto de instrucciones, produciendo así un conjunto de instrucciones de longitud variable . Un objetivo declarado para Thumb-2 era lograr una densidad de código similar a Thumb con un rendimiento similar al conjunto de instrucciones ARM en la memoria de 32 bits.

Thumb-2 amplía el conjunto de instrucciones Thumb con manipulación de campo de bits, ramas de tabla y ejecución condicional. Al mismo tiempo, el conjunto de instrucciones ARM se amplió para mantener una funcionalidad equivalente en ambos conjuntos de instrucciones. Un nuevo "Lenguaje ensamblador unificado" (UAL) admite la generación de instrucciones Thumb o ARM desde el mismo código fuente; Las versiones de Thumb que se ven en los procesadores ARMv7 son esencialmente tan capaces como el código ARM (incluida la capacidad de escribir controladores de interrupciones). Esto requiere un poco de cuidado y el uso de una nueva instrucción "IT" (si-entonces), que permite ejecutar hasta cuatro instrucciones sucesivas basándose en una condición probada, o en su inversa. Al compilar en código ARM, esto se ignora, pero al compilar en Thumb genera una instrucción real. Por ejemplo:

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

Todos los chips ARMv7 admiten el conjunto de instrucciones Thumb. Todos los chips de la serie Cortex-A, la serie Cortex-R y la serie ARM11 admiten tanto el "estado del conjunto de instrucciones ARM" como el "estado del conjunto de instrucciones del pulgar", mientras que los chips de la serie Cortex-M sólo admiten el conjunto de instrucciones del pulgar. [113] [114] [115]

Entorno de ejecución de Thumb (ThumbEE) [ editar ]

ThumbEE (llamado erróneamente Thumb-2EE en alguna documentación de ARM), que se comercializó como Jazelle RCT (Runtime Compilation Target), se anunció en 2005, apareciendo por primera vez en el procesador Cortex-A8 . ThumbEE es un cuarto estado de conjunto de instrucciones, que realiza pequeños cambios en el conjunto de instrucciones extendido Thumb-2. Estos cambios hacen que el conjunto de instrucciones sea especialmente adecuado para el código generado en tiempo de ejecución (por ejemplo, mediante la compilación JIT ) en entornos de ejecución gestionados . ThumbEE es un objetivo para lenguajes como Java , C # , Perl y Python , y permite compiladores JITpara generar código compilado más pequeño sin afectar el rendimiento. [ cita requerida ]

Las nuevas características proporcionadas por ThumbEE incluyen verificaciones automáticas de puntero nulo en cada instrucción de carga y almacenamiento, una instrucción para realizar una verificación de límites de matriz e instrucciones especiales que llaman a un controlador. Además, debido a que utiliza la tecnología Thumb-2, ThumbEE proporciona acceso a los registros r8-r15 (donde se mantiene el estado de Java VM Jazelle / DBX). [116] Los controladores son pequeñas secciones de código frecuentemente llamado, comúnmente utilizado para implementar lenguajes de alto nivel, como la asignación de memoria para un nuevo objeto. Estos cambios provienen de la reutilización de un puñado de códigos de operación y de saber que el núcleo está en el nuevo estado ThumbEE.

El 23 de noviembre de 2011, Arm Holdings desaprobó el uso del conjunto de instrucciones ThumbEE, [117] y ARMv8 elimina el soporte para ThumbEE.

Punto flotante (VFP) [ editar ]

La tecnología VFP (Vector Floating Point) es una extensión de coprocesador de unidad de punto flotante (FPU) para la arquitectura ARM [118] (implementada de manera diferente en ARMv8 - coprocesadores no definidos allí). Proporciona cálculo de punto flotante de precisión simple y doble precisión de bajo costo totalmente compatible con el estándar ANSI / IEEE Std 754-1985 para aritmética de punto flotante binario.. VFP proporciona computación de punto flotante adecuado para un amplio espectro de aplicaciones como PDA, teléfonos inteligentes, compresión y descompresión de voz, gráficos tridimensionales y audio digital, impresoras, decodificadores y aplicaciones automotrices. La arquitectura VFP estaba destinada a admitir la ejecución de instrucciones breves de "modo vectorial", pero estas operaban en cada elemento vectorial de forma secuencial y, por lo tanto, no ofrecían el rendimiento de un verdadero paralelismo vectorial de instrucción única y datos múltiples (SIMD). Por lo tanto, este modo vectorial se eliminó poco después de su introducción, [119] para ser reemplazado por el SIMD avanzado mucho más poderoso, también conocido como Neon .

Algunos dispositivos como el ARM Cortex-A8 tienen un módulo VFPLite reducido en lugar de un módulo VFP completo, y requieren aproximadamente diez veces más ciclos de reloj por operación de flotación. [120] Arquitectura pre-ARMv8 implementada punto flotante / SIMD con la interfaz del coprocesador. Otras unidades de punto flotante y / o SIMD que se encuentran en los procesadores basados ​​en ARM que utilizan la interfaz del coprocesador incluyen FPA , FPE, iwMMXt , algunas de las cuales se implementaron en software mediante trapping pero podrían haberse implementado en hardware. Proporcionan algunas de las mismas funciones que VFP, pero no son compatibles con el código de operación . FPA10 también proporciona precisión ampliada, pero implementa el redondeo correcto (requerido por IEEE 754) solo en precisión simple. [121]

VFPv1
Obsoleto
VFPv2
Una extensión opcional para el 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 ARMv7 Cortex-A8 y A9. Es compatible con versiones anteriores de VFPv2, excepto que no puede capturar 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 pueden cargar en registros FPU.
VFPv3-D16
Como arriba, pero con solo 16 registros FPU de 64 bits. Implementado en procesadores Cortex-R4 y R5 y Tegra 2 (Cortex-A9).
VFPv3-F16
Poco común; admite el punto 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 tiene opcionalmente VFPv4-D32 en el caso de una FPU con Neon. [122] VFPv4 tiene 32 registros FPU de 64 bits como estándar, agrega soporte de precisión media como formato de almacenamiento e instrucciones fusionadas de acumulación múltiple a las características de VFPv3.
VFPv4-D16
Como arriba, pero solo tiene 16 registros FPU de 64 bits. Implementado en procesadores Cortex-A5 y A7 en el caso de una FPU sin Neon. [122]
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 GNU / Linux y derivados como Ubuntu y Linux Mint , armhf ( ARM hard float ) se refiere a la arquitectura ARMv7, incluida la extensión adicional de hardware de punto flotante VFP3-D16 (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. [123]

SIMD avanzado (neón) [ editar ]

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. El neón está incluido en todos los dispositivos Cortex-A8, pero es opcional en los dispositivos Cortex-A9. [124] Neon puede ejecutar la decodificación de audio MP3 en CPU que funcionan a 10 MHz y puede ejecutar el códec de voz GSM adaptable de múltiples velocidades (AMR) a 13 MHz. Cuenta con un conjunto completo de instrucciones, archivos de registro separados y hardware de ejecución independiente. [125]Neon admite operaciones SIMD y datos enteros de 8, 16, 32 y 64 bits y de punto flotante de precisión simple (32 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. Los dispositivos como ARM Cortex-A8 y Cortex-A9 admiten vectores de 128 bits, pero se ejecutarán con 64 bits a la vez, [120] mientras que los dispositivos Cortex-A15 más nuevos pueden ejecutar 128 bits a la vez. [126] [127]

Una peculiaridad de Neon en los dispositivos ARMv7 es que descarga todos los números subnormales a cero y, como resultado, el compilador GCC no lo usará a menos -funsafe-math-optimizationsque, lo que permite perder desnormales, esté activado. Neon "mejorado" definido ya que 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. [128] 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 que adquirieron un proyecto más antiguo, ahora conocido como Mbed TLS ). La biblioteca Ne10 es un conjunto de funciones útiles y comunes escritas tanto en Neon como en C (para compatibilidad). La biblioteca se creó para permitir a los desarrolladores usar optimizaciones de Neon sin aprender a usar Neon, pero también sirve como un conjunto de ejemplos de código intrínseco y ensamblador de Neon altamente optimizados para rutinas comunes de procesamiento de imágenes, aritmética y DSP. El código fuente está disponible en GitHub. [129]

Tecnología ARM Helium [ editar ]

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

Extensiones de seguridad [ editar ]

TrustZone (para el perfil Cortex-A) [ editar ]

Las extensiones de seguridad, comercializadas como TrustZone Technology, están en ARMv6KZ y arquitecturas de perfiles de aplicaciones posteriores. Proporciona una alternativa de bajo costo para agregar 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), a fin de evitar que la información se filtre del mundo más confiable al mundo menos confiable. Este conmutador de mundo es generalmente ortogonal a todas las demás capacidades del procesador, por lo que cada mundo puede funcionar independientemente del otro utilizando el mismo núcleo. Luego, la memoria y los periféricos son conscientes del mundo operativo del núcleo y pueden usarlo para proporcionar control de acceso a secretos y códigos en el dispositivo. [131]

Por lo general, un sistema operativo rico se ejecuta en el mundo menos confiable, con un código especializado en seguridad más pequeño 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, [132] y prevenir cualquier uso no aprobado del dispositivo.

En la práctica, dado que los detalles de implementación específicos 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. [133] [134]

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

AMD ha licenciado e incorporado la tecnología TrustZone en su tecnología de procesador seguro. [136] Habilitadas en algunos productos, pero no en todos, las APU de AMD incluyen un procesador Cortex-A5 para manejar un procesamiento seguro. [137] [138] [139] 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. [138]

Samsung Knox utiliza TrustZone para fines tales como detectar modificaciones en el kernel. [140]

TrustZone para ARMv8-M (para perfil Cortex-M) [ editar ]

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 usando instrucciones de rama en lugar de usar excepciones. También admite el manejo seguro de interrupciones intercaladas de cualquier mundo independientemente del estado de seguridad actual. Juntas, estas características brindan llamadas de baja latencia al mundo seguro y manejo receptivo de interrupciones. ARM proporciona una pila de referencia de código mundial seguro en forma de Trusted Firmware for M y PSA Certified .

Protección de página sin ejecución [ editar ]

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

Ampliación de dirección física grande (LPAE) [ editar ]

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. [142] El tamaño de la dirección física es mayor, 44 bits, en Cortex-A75 y Cortex-A65AE. [143]

ARMv8-R y ARMv8-M [ editar ]

Las arquitecturas ARMv8-R y ARMv8-M , anunciadas después de la arquitectura ARMv8-A, comparten algunas características con ARMv8-A, pero no incluyen instrucciones AArch64 de 64 bits.

ARMv8.1-M [ editar ]

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

  • Una nueva extensión de conjunto de instrucciones vectoriales. La extensión vectorial de perfil M (MVE), o helio, es para aplicaciones de procesamiento de señales y aprendizaje automático.
  • Mejoras adicionales en el conjunto de instrucciones para bucles y bifurcaciones (extensión de bifurcación de baja sobrecarga)
  • Instrucciones para soporte de coma flotante de precisión media .
  • Mejora del conjunto de instrucciones para la gestión TrustZone para Floating Point Unit (FPU).
  • Nuevo atributo de memoria en la Unidad de Protección de Memoria (MPU).
  • Las mejoras en la depuración, incluida la unidad de supervisión del rendimiento (PMU), la extensión de depuración sin privilegios y el soporte de depuración adicional, se centran en el desarrollo de aplicaciones de procesamiento de señales.
  • Extensión de confiabilidad, disponibilidad y capacidad de servicio (RAS).

Arquitectura de 64/32 bits [ editar ]

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

ARMv8-A [ editar ]

Anunciado en octubre de 2011, [3] ARMv8-A (a menudo llamado ARMv8 mientras que ARMv8-R también está disponible) representa un cambio fundamental en la arquitectura ARM. Agrega una arquitectura opcional de 64 bits (por ejemplo, Cortex-A32 es una CPU ARMv8-A de 32 bits [144] mientras que la mayoría de las CPU ARMv8-A admiten 64 bits), llamada "AArch64", y la nueva instrucción asociada "A64" colocar. AArch64 proporciona compatibilidad de espacio de usuario con ARMv7-A, la arquitectura de 32 bits, en ella 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 contrapartida de 64 bits. ARMv8-A permite ejecutar aplicaciones de 32 bits en un sistema operativo de 64 bits,y un sistema operativo de 32 bits para estar 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. [69] Apple fue la primera en lanzar un núcleo compatible con ARMv8-A ( Apple A7 ) en un producto de consumo ( iPhone 5S ). AppliedMicro , usando un FPGA , fue el primero en hacer una demostración de ARMv8-A. [145] El primer SoC ARMv8-Ade Samsung es el Exynos 5433 utilizado en el Galaxy Note 4 , que cuenta con dos grupos de cuatro núcleos Cortex-A57 y Cortex-A53 en una configuración big.LITTLE; pero se ejecutará solo en modo AArch32. [146]

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

ARMv8-R [ editar ]

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

Arquitectura de seguridad de la plataforma [ editar ]

Platform Security Architecture (PSA) [149] es un esquema de evaluación y marco de seguridad independiente de la arquitectura, destinado a ayudar a proteger los dispositivos de Internet de las cosas (IoT) construidos en procesadores de sistema en un chip (SoC). Fue presentado por ARM en 2017 [150] en el evento anual TechCon [151] y se utilizará por primera vez en núcleos de procesador ARM Cortex-M destinados al uso de microcontroladores. El PSA incluye modelos de amenazas y análisis de seguridad disponibles de forma gratuita que demuestran el proceso de decisión sobre las características de seguridad [152] en productos comunes de IoT. El PSA también proporciona paquetes de interfaz de programación de aplicaciones (API) de descarga gratuita, [153]especificaciones arquitectónicas, implementaciones de firmware de código abierto y conjuntos de pruebas relacionados. PSA Certified [154] ofrece un esquema de evaluación de seguridad de varios niveles para proveedores de chips, proveedores de sistemas operativos y fabricantes de dispositivos IoT.

Soporte del sistema operativo [ editar ]

Sistemas operativos de 32 bits [ editar ]

Android , un sistema operativo popular que se utiliza principalmente en la arquitectura ARM.

Sistemas operativos históricos [ editar ]

La primera computadora personal basada en ARM de 32 bits, Acorn Archimedes , originalmente estaba pensada para 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 . (Tampoco debe confundirse con RISC / os , una variante contemporánea de Unix para la arquitectura MIPS).

Sistemas operativos integrados [ editar ]

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

  • A2
  • Androide
  • ChibiOS / RT
  • Deos
  • DRYOS
  • eCos
  • embOS
  • FreeRTOS
  • Integridad
  • Linux
  • Sistemas operativos de microcontroladores
  • MINIX 3
  • MQX
  • Núcleo PLUS
  • NuttX
  • Sistema operativo integrado (OSE)
  • OS-9 [155]
  • Pharos [156]
  • Plan 9
  • PikeOS [157]
  • QNX
  • DISTURBIO
  • RTEMS
  • RTXC Quadros
  • SCIOPTA [158]
  • ThreadX
  • TizenRT
  • T-Kernel
  • VxWorks
  • Windows Embedded Compact
  • Windows 10 IoT Core
  • Céfiro

Sistemas operativos de dispositivos móviles [ editar ]

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:

  • Androide
  • Bada
  • BlackBerry OS / BlackBerry 10
  • Sistema operativo Chrome
  • Firefox OS
  • MeeGo
  • Pez vela
  • Symbian
  • Tizen
  • Ubuntu Touch
  • webOS
  • Windows RT
  • Windows Mobile
  • Telefono windows
  • Windows 10 móvil

Anteriormente, pero ahora descontinuado:

  • iOS 10 y versiones anteriores

Sistemas operativos de escritorio / servidor [ editar ]

La arquitectura ARM de 32 bits es compatible con RISC OS y con varios sistemas operativos similares a Unix, que incluyen:

  • FreeBSD
  • NetBSD
  • OpenBSD
  • OpenSolaris [159]
  • varias distribuciones de Linux , como:
    • Debian
    • Armbiano
    • Gentoo
    • Ubuntu
    • Sistema operativo Raspberry Pi (anteriormente Raspbian)
    • Slackware

Sistemas operativos de 64 bits [ editar ]

Sistemas operativos integrados [ editar ]

  • Integridad [160]
  • OSE [161]
  • SCIOPTA [158]
  • seL4 [162]
  • Pharos [156]
  • FreeRTOS
  • QNX [163]
  • Céfiro

Sistemas operativos de dispositivos móviles [ editar ]

  • iOS es compatible con ARMv8-A en iOS 7 y versiones posteriores en SoC de Apple de 64 bits . iOS 11 y versiones posteriores solo admiten procesadores y aplicaciones ARM de 64 bits.
  • Android es compatible con ARMv8-A en Android Lollipop (5.0) y versiones posteriores.

Sistemas operativos de escritorio / servidor [ editar ]

  • El soporte para ARMv8-A se fusionó con la versión 3.7 del kernel de Linux a finales de 2012. [164] ARMv8-A es compatible con varias distribuciones de Linux , como:
    • Debian [165] [166]
    • Armbiano
    • Ubuntu [167]
    • Fedora [168]
    • openSUSE [169]
    • SUSE Linux Enterprise [170]
    • RHEL [171]
  • El soporte para ARMv8-A se fusionó con FreeBSD a finales de 2014. [172]
  • OpenBSD tiene soporte ARMv8 experimental a partir de 2017. [173]
  • NetBSD tiene soporte ARMv8 desde principios de 2018. [174]
  • Windows 10 : ejecuta "aplicaciones ARM x86 y 32 bits" de 32 bits, [175] así como aplicaciones de escritorio ARM64 nativas. [176] [177] La compatibilidad con aplicaciones ARM de 64 bits en Microsoft Store está disponible desde noviembre de 2018. [178]
  • macOS tiene soporte ARM a partir de macOS Big Sur a finales de 2020. [179] Rosetta 2 agrega soporte para aplicaciones x86-64 pero no virtualización de plataformas informáticas x86-64. [180]

Portabilidad a sistemas operativos ARM de 32 o 64 bits [ editar ]

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. [181] [182] Los binarios x86, por ejemplo, cuando no se compilaron especialmente para ARM, se han demostrado en ARM usando QEMU con Wine (en Linux y más), [ cita requerida ] pero no funcionan a toda velocidad o con la misma capacidad que con Winelib .

Notas [ editar ]

  1. ^ Con palabras de 32 bits, 4 Mbit / segundo corresponden a 1 MIPS.
  2. ^ Matt Evans señala que parece que las versiones más rápidas simplemente se clasificaron más arriba y no parecen tener cambios subyacentes. [35]

Ver también [ editar ]

  • RISC
  • RISC-V
  • Procesadores diseñados por Apple
  • ARM big.LITTLE - Arquitectura informática heterogénea de ARM
    • DynamIQ
  • Ingeniero Acreditado ARM - programa de certificación
  • ARMulator : un simulador de conjunto de instrucciones
  • Ámbar (núcleo del procesador) : un núcleo de procesador compatible con ARM de código abierto
  • Microprocesador AMULET : una implementación asíncrona de la arquitectura ARM
  • Comparación de núcleos ARMv7-A
  • Comparación de núcleos ARMv8-A
  • Unicore : una arquitectura de 32 registros basada en gran medida en un ARM de 32 bits
  • Meltdown (vulnerabilidad de seguridad) [183]
  • Spectre (vulnerabilidad de seguridad)

Referencias [ editar ]

Citas [ editar ]

  1. ↑ a b c d e Grisenthwaite, Richard (2011). "Vista previa de la tecnología ARMv8-A" (PDF) . Consultado el 31 de octubre de 2011 .
  2. ^ "Estándar de llamada de procedimiento para la arquitectura ARM" (PDF) . Arm Holdings . 30 de noviembre de 2013 . Consultado el 27 de mayo de 2013 .
  3. ^ a b "ARM revela detalles técnicos de la próxima versión de la arquitectura ARM" (Comunicado de prensa). Arm Holdings . 27 de octubre de 2011. Archivado desde el original el 1 de enero de 2019 . Consultado el 20 de septiembre de 2013 .
  4. ^ "Anuncio de la plataforma ARM Neoverse N1" . community.arm.com . Consultado el 8 de abril de 2020 .
  5. ^ a b "Algunos hechos sobre la máquina Acorn RISC" Publicación de Roger Wilson en comp.arch, 2 de noviembre de 1988. Consultado el 25 de mayo de 2007.
  6. ↑ a b Hachman, Mark (14 de octubre de 2002). "Los núcleos ARM suben al territorio 3G" . ExtremeTech . Consultado el 24 de mayo de 2018 .
  7. ^ Turley, Jim (18 de diciembre de 2002). "La solución del dos por ciento" . Embebido . Consultado el 24 de mayo de 2018 .
  8. ^ Cutress, Dr Ian (22 de junio de 2020). "Nueva supercomputadora n. ° 1: Fugaku y A64FX de Fujitsu toman el brazo a la cima con 415 PetaFLOP" . www.anandtech.com . Consultado el 25 de enero de 2021 .
  9. ^ "El ecosistema Arm envía un récord de 6.700 millones de chips basados ​​en Arm en un solo trimestre" . Brazo | La arquitectura para el mundo digital (nota de prensa) . Consultado el 28 de febrero de 2021 .
  10. ^ "Diseñar un mundo inteligente y potenciar la inteligencia artificial: ARM" . The Silicon Review . 2019 . Consultado el 8 de abril de 2020 .
  11. ^ "Habilitación de la conectividad Mass IoT como socios de ARM envían 100 mil millones de chips" . community.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 desplegados durante las próximas dos décadas.
  12. ^ "Mercado de MCU en la ruta de migración a dispositivos de 32 bits y basados ​​en ARM: tops de 32 bits en ventas; clientes potenciales de 16 bits en envíos de unidades" . IC Insights. 25 de abril de 2013 . Consultado el 1 de julio de 2014 .
  13. ^ Turley, Jim (2002). "La solución del dos por ciento" . embedded.com.
  14. ^ "Arm Holdings ansioso por la expansión de PC y servidor" . 1 de febrero de 2011.
  15. ^ Kerry McGuire Balanza (11 de mayo de 2010). "ARM de cero a miles de millones en 25 cortos años" . Arm Holdings . Consultado el 8 de noviembre de 2012 .
  16. ^ Fairbairn, Douglas (31 de enero de 2012). "Historia oral de Sophie Wilson" (PDF) . Archivado desde el original (PDF) el 3 de marzo de 2016 . Consultado el 2 de febrero de 2016 .
  17. ^ Smith, Tony (30 de noviembre de 2011). "El BBC Micro cumple 30" . El registro de hardware. Archivado desde el original el 12 de diciembre de 2011 . Consultado el 12 de diciembre de 2011 .
  18. ^ Ken Polsson. "Cronología de microprocesadores" . Processortimeline.info . Consultado el 27 de septiembre de 2013 .
  19. ^ Leedy, Glenn (abril de 1983). "La familia de microprocesadores National Semiconductor NS16000" . BYTE . págs. 53–66 . Consultado el 22 de agosto de 2020 .
  20. ^ Evans 2019 , 6:00.
  21. ^ Manners, David (29 de abril de 1998). "Camino de ARM" . Electrónica semanal . Archivado desde el original el 29 de julio de 2012 . Consultado el 26 de octubre de 2012 .
  22. ^ Evans 2019 , 5:30.
  23. ↑ a b Evans , 2019 , 7:45.
  24. ^ Evans 2019 , 8:30.
  25. ^ Sophie Wilson en Alt Party 2009 (Parte 3/8) .
  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 de diseño del conjunto de instrucciones ARM con Sophie Wilson (parte 3)" . 10 de mayo de 2015 . Consultado el 25 de mayo de 2020 , a través de YouTube.
  33. ^ "Historia oral de Sophie Wilson - Miembro 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. ^ Evans 2019 , 20:30.
  35. ^ Evans 2019 , 22:00 horas.
  36. ^ Evans 2019 , 21:30.
  37. ^ Evans 2019 , 22: 0030.
  38. ↑ a b Evans , 2019 , 14:00.
  39. ^ Levy, Markus. "La historia de la arquitectura ARM: desde el inicio hasta la salida a bolsa" (PDF) . Consultado el 14 de marzo de 2013 .
  40. ^ Santanu Chattopadhyay (2010). Diseño de sistemas integrados . PHI Learning Pvt. Ltd. p. 9. ISBN 978-81-203-4024-4.
  41. ^ Richard Murray. "Operación de 32 bits" .
  42. ^ Hitos de ARM, sitio web de la empresa ARM. Consultado el 8 de abril de 2015.
  43. ^ Andrews, Jason (2005). "3 temas de verificación de SoC para la arquitectura ARM". Co-verificación de hardware y software para el diseño de SoC ARM . Oxford, Reino Unido: Elsevier . pp.  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 produjo el diseño del primer microprocesador ARM entre 1983 y 1985.
  44. ^ Weber, Jonathan (28 de noviembre de 1990). "Apple para unirse a Acorn, VLSI en empresa de fabricación de chips" . Los Angeles Times . Los Ángeles . Consultado el 6 de febrero de 2012 . Apple ha invertido alrededor de $ 3 millones (aproximadamente 1,5 millones de libras) por una participación del 30% en la empresa, denominada Advanced Risc Machines Ltd. (ARM) [...]
  45. ^ "ARM Corporate Backgrounder" Archivado el 4 de octubre de 2006 en Wayback Machine , ARM Technology .
  46. ^ Montanaro, James y col. (1997). "Un microprocesador CMOS RISC de 160 MHz, 32 b, 0,5 W" . Revista Técnica Digital , vol. 9, no. 1. págs. 49–62.
  47. ^ DeMone, Paul (9 de noviembre de 2000). "Carrera de ARM hacia la dominación mundial integrada" . Tecnologías del mundo real . Consultado el 6 de octubre de 2015 .
  48. ^ "Marcha de las Máquinas" . technologyreview.com . Revisión de tecnología del MIT . 20 de abril de 2010 . Consultado el 6 de octubre de 2015 .
  49. ^ Krazit, Tom (3 de abril de 2006). "ARMADO para la sala de estar" . CNET.
  50. ^ Tracy Robinson (12 de febrero de 2014). "Celebrando 50 mil millones de chips impulsados ​​por ARM enviados" .
  51. ^ Sarah Murry (3 de marzo de 2014). "Alcance de ARM: hito de 50 mil millones de chips" .
  52. ^ Brown, Eric (2009). "El netbook ARM se envía con una tableta desmontable" . Archivado desde el original el 3 de enero de 2013 . Consultado el 19 de agosto de 2009 .
  53. ^ Peter Clarke (7 de enero de 2016). "Amazon ahora vende sus propios chips ARM" .
  54. ^ "MACOM completa con éxito la adquisición de AppliedMicro" (Comunicado de prensa). 26 de enero de 2017.
  55. ^ Frumusanu, Andrei. "Detalles de ARM basados ​​en la licencia de tecnología ARM Cortex" . AnandTech . Consultado el 26 de mayo de 2019 .
  56. ^ Cortador, Dr. Ian. "Acceso flexible ARM: diseñe el SoC antes de gastar dinero" . AnandTech . Consultado el 9 de octubre de 2019 .
  57. ^ "Preguntas más frecuentes de ARM Flexible Access" . ARM | La arquitectura para el mundo digital . Consultado el 9 de octubre de 2019 .
  58. ^ Nolting, Stephan. "Sistema procesador STORM CORE" (PDF) . OpenCores . Consultado el 1 de abril de 2014 .
  59. ^ "krevanth / ZAP" . GitHub . Consultado el 13 de octubre de 2016 .
  60. ^ "Procesador Cortex-M23" . BRAZO . Consultado el 27 de octubre de 2016 .
  61. ^ "Procesador Cortex-M33" . BRAZO . Consultado el 27 de octubre de 2016 .
  62. ^ "La arquitectura ARMv8-M simplifica la seguridad para Smart Embedded" . BRAZO . Consultado el 10 de noviembre de 2015 .
  63. ^ "Arquitectura ARMv8-R" . Consultado el 10 de julio de 2015 .
  64. ^ "Arquitectura ARM Cortex-R" (PDF) . Arm Holdings. Octubre de 2013 . Consultado el 1 de febrero de 2014 .
  65. ^ Smith, Ryan (20 de septiembre de 2016). "ARM anuncia CPU Cortex-R52: determinista y seguro, para ADAS y más" . AnandTech . Consultado el 20 de septiembre de 2016 .
  66. ^ "Procesador Cortex-A32" . BRAZO . Consultado el 10 de octubre de 2019 .
  67. ^ "Procesador Cortex-A35" . BRAZO . Consultado el 10 de noviembre de 2015 .
  68. ^ a b "ARM lanza la serie Cortex-A50, los procesadores de 64 bits más eficientes energéticamente del mundo" (comunicado de prensa). Arm Holdings . Consultado el 31 de octubre de 2012 .
  69. ^ "Procesador Cortex-A72" . BRAZO . Consultado el 10 de julio de 2015 .
  70. ^ "Procesador Cortex-A73" . BRAZO . Consultado el 2 de junio de 2016 .
  71. ^ "Arquitectura ARMv8-A" . Consultado el 10 de julio de 2015 .
  72. ^ Vista previa de la tecnología de arquitectura ARMv8 (diapositivas); Arm Holdings.
  73. ^ "Cavium Thunder X aumenta el número de núcleos ARM a 48 en un solo chip" . Semi-exacto . 3 de junio de 2014.
  74. ^ "Cavium en 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 .
  75. ^ "Cray para evaluar chips ARM en sus supercomputadoras" . eWeek . 17 de noviembre de 2014.
  76. ^ "Samsung anuncia Exynos 8890 con módem Cat.12 / 13 y CPU personalizada" . AnandTech .
  77. ^ "Procesador Cortex-A34" . BRAZO . Consultado el 10 de octubre de 2019 .
  78. ^ "D21500 [AARCH64] Agregar soporte para Broadcom Vulcan" . reviews.llvm.org .
  79. ^ "Procesador Cortex-A55" . BRAZO . Consultado el 29 de mayo de 2017 .
  80. ^ "Procesador Cortex-A75" . BRAZO . Consultado el 29 de mayo de 2017 .
  81. ^ "Procesador Cortex-A76" . BRAZO . Consultado el 11 de octubre de 2018 .
  82. ^ Berenice Mann (abril de 2017). "Arquitectura ARM - ARMv8.2-A evolución y entrega" . community.ARM.com .
  83. ^ Frumusanu, Andrei. "Samsung anuncia el SoC Exynos 9825: primer chip de silicona EUV de 7nm" . AnandTech . Consultado el 11 de octubre de 2019 .
  84. ^ "Fujitsu comenzó a producir miles de millones de supercálculos de Japón con el procesador ARM más potente A64FX" . Noticias de TI de China . Consultado el 17 de agosto de 2019 . Chip ARMv8 SVE (Scalable Vector Extension), que utiliza un punto flotante de 512 bits.
  85. ^ "Cortex-A65AE - BRAZO" . ARM | La arquitectura para el mundo digital . Consultado el 8 de abril de 2020 . Puede ejecutar dos hilos en paralelo en cada ciclo. Cada hilo puede estar en diferentes niveles de excepción y ejecutar diferentes sistemas operativos.
  86. ^ Frumusanu, Andrei. "Marvell anuncia ThunderX3: 96 núcleos y 384 subprocesos de procesador de servidor ARM de tercera generación" . AnandTech . Consultado el 26 de mayo de 2020 .
  87. ^ "Tarjeta de línea" (PDF) . 2003 . Consultado el 1 de octubre de 2012 .
  88. ^ Parrish, Kevin (14 de julio de 2011). "Un millón de núcleos ARM vinculados para simular cerebro" . EE Times . Consultado el 2 de agosto de 2011 .
  89. ^ http://infocenter.arm.com/help/index.jsp
  90. ^ "Modo de procesador" . Arm Holdings . Consultado el 26 de marzo de 2013 .
  91. ^ "KVM / ARM" (PDF) . Consultado el 3 de abril de 2013 .
  92. ^ Brash, David (agosto de 2010). "Extensiones a la Arquitectura ARMv7-A" (PDF) . ARM Ltd . Consultado el 6 de junio de 2014 .
  93. ^ "¿Cómo admite el compilador ARM los accesos no alineados?" . 2011 . Consultado el 5 de octubre de 2013 .
  94. ^ "Acceso a datos no alineados" . Consultado el 5 de octubre de 2013 .
  95. ^ Manual de referencia técnica de Cortex-M0 r0p0; Arm Holdings.
  96. ^ "Manual de referencia de arquitectura ARMv7-M; tenencias de brazo" . arm.com . Consultado el 19 de enero de 2013 .
  97. ^ a b "Manual de referencia de arquitectura ARMv7-A y ARMv7-R; tenencias de brazos" . arm.com . Consultado el 19 de enero de 2013 .
  98. ^ "Centro de información de ARM" . Consultado el 10 de julio de 2015 .
  99. ^ "Códigos de condición 1: indicadores y códigos de condición" . Comunidad ARM . Consultado el 26 de septiembre de 2019 .
  100. ^ "9.1.2. Ciclo de instrucción cuenta" .
  101. ^ "Componentes de CoreSight: acerca del puerto de acceso de depuración" .
  102. ^ "El Cortex-M3: puerto de acceso de depuración (DAP)" .
  103. ^ Mike Anderson. "Comprensión de las opciones de depuración de ARM HW" .
  104. ^ "Guía del usuario del depurador CMSIS-DAP" .
  105. ^ "CMSIS-DAP" .
  106. ^ "SWDAP frente a CMSIS-DAP frente a DAPLink" .
  107. ^ "Extensiones de conjunto de instrucciones ARM DSP" . arm.com . Archivado desde el original el 14 de abril de 2009 . Consultado el 18 de abril de 2009 .
  108. ^ "DSP y SIMD" . Consultado el 10 de julio de 2015 .
  109. ^ ARM7TDMI Manual de referencia técnica página ii
  110. ^ Jaggar, Dave (1996). Manual de referencia de arquitectura ARM . Prentice Hall. págs. 6–1. ISBN 978-0-13-736299-8.
  111. ^ Nathan Willis (10 de junio de 2015). "Resucitando la arquitectura SuperH" . LWN.net .
  112. ^ "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 .
  113. ^ "ARM tiene como objetivo hijo de Thumb en UC, ASSP, SoC" . Linuxdevices.com. Archivado desde el original el 9 de diciembre de 2012 . Consultado el 18 de abril de 2009 .
  114. ^ "Centro de información de ARM" . Infocenter.arm.com . Consultado el 18 de abril de 2009 .
  115. ^ Tom R. Halfhill (2005). "ARM fortalece los compiladores de Java: nuevas instrucciones Thumb-2EE de 16 bits conservan la memoria del sistema" (PDF) . Archivado desde el original (PDF) el 5 de octubre de 2007.
  116. ^ 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.
  117. ^ "Cadena de herramientas del compilador ARM usando el ensamblador - coprocesador VFP" . ARM.com . Consultado el 20 de agosto de 2014 .
  118. ^ "Directivas VFP y notación vectorial" . ARM.com . Consultado el 21 de noviembre de 2011 .
  119. ^ a b "Diferencias entre ARM Cortex-A8 y Cortex-A9" . Shervin Emami . Consultado el 21 de noviembre de 2011 .
  120. ^ "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, pueden producirse multiplicaciones de precisión doble y extendida con un error de 1 o 2 unidades en el lugar menos significativo de la mantisa. .
  121. ^ a b "Manual de referencia técnica de Cortex-A7 MPCore - 1.3 características" . BRAZO . Consultado el 11 de julio de 2014 .
  122. ^ "ARMHardFloatPort - Wiki de Debian" . Wiki.debian.org. 20 de agosto de 2012 . Consultado el 8 de enero de 2014 .
  123. ^ "Procesador Cortex-A9" . arm.com . Consultado el 21 de noviembre de 2011 .
  124. ^ "Acerca del MPE de neón Cortex-A9" . arm.com . Consultado el 21 de noviembre de 2011 .
  125. ^ "US20050125476A1" .
  126. ^ "US20080141004A1" .
  127. ^ "Opciones de ARM" . Manual de recopilación de compiladores GNU . Consultado el 20 de septiembre de 2019 .
  128. ^ "Ne10: un proyecto de biblioteca de software optimizado abierto para la arquitectura ARM" . GitHub . Consultado el 20 de septiembre de 2019 .
  129. ^ Joseph Yiu. "Introducción a la arquitectura ARMv8.1-M" (PDF) . Consultado el 5 de marzo de 2020 .
  130. ^ "Genode - una exploración de la tecnología ARM TrustZone" . Consultado el 10 de julio de 2015 .
  131. ^ "ARM anuncia la disponibilidad de soluciones de software DRM para consumidores móviles basadas en la tecnología ARM TrustZone" (Comunicado de prensa). News.thomasnet.com . Consultado el 18 de abril de 2009 .
  132. ^ Laginimaineb (8 de octubre de 2015). "¡Bits, por favor !: Full TrustZone exploit para MSM8974" . ¡Bits, por favor! . Consultado el 3 de mayo de 2016 .
  133. ^ Di Shen. "Atacando su 'Trusted Core' explotando TrustZone en Android" (PDF) . Sesiones informativas de sombrero negro . Consultado el 3 de mayo de 2016 .
  134. ^ "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 .
  135. ^ "Tecnología segura de AMD" . AMD . AMD . Consultado el 6 de julio de 2016 .
  136. ^ Smith, Ryan (13 de junio de 2012). "Las APU AMD 2013 para incluir el procesador ARM Cortex A5 para capacidades Trustzone" . AnandTech . Consultado el 6 de julio de 2016 .
  137. ↑ a b Shimpi, Anand Lal (29 de abril de 2014). "Vista previa del rendimiento AMD Beema Mullins Architecture A10 micro 6700T" . AnandTech . Consultado el 6 de julio de 2016 .
  138. ^ Walton, Jarred (4 de junio de 2014). "AMD lanza APU móviles Kaveri" . AnandTech . Consultado el 6 de julio de 2016 .
  139. ^ "La plataforma Samsung KNOX" (PDF) . Samsung Electronics . Abril de 2016.
  140. ^ "Manual de referencia de arquitectura ARM" (PDF) . pag. B4-8. Archivado desde el original (PDF) el 6 de febrero de 2009. Se han agregado bits APX y XN (ejecutar nunca) en VMSAv6 [Arquitectura del sistema de memoria virtual]
  141. ^ Manual de referencia de arquitectura ARM, edición ARMv7-A y ARMv7-R . ARM Limited.
  142. ^ "Cortex-A65AE" . Desarrollador ARM . Consultado el 26 de abril de 2019 .
  143. ^ "Procesador Cortex-A32 - ARM" . Consultado el 18 de diciembre de 2016 .
  144. ^ "AppliedMicro presenta el primer núcleo ARM v8 de 64 bits del mundo" (Comunicado de prensa). AppliedMicro. 28 de octubre de 2011 . Consultado el 11 de febrero de 2014 .
  145. ^ "Exynos 5433 de Samsung es un SoC ARM A57 / A53" . AnandTech . Consultado el 17 de septiembre de 2014 .
  146. ^ "Manual de referencia técnica del procesador ARM Cortex-A53 MPCore: extensión de criptografía" . BRAZO . Consultado el 11 de septiembre de 2016 .
  147. ^ Frumusanu, Andrei (3 de septiembre de 2020). "ARM anunció Cortex-R82: primer procesador en tiempo real de 64 bits" . AnandTech .
  148. ^ Osborne, Charlie. "ARM anuncia la arquitectura de seguridad PSA para dispositivos IoT" . ZDNet.
  149. ^ Wong, William. "La arquitectura de seguridad de la plataforma de ARM apunta a Cortex-M" . Diseño Electrónico .
  150. ^ Hoffenberg, Steve. "ARM: La seguridad no es solo un imperativo tecnológico, es una responsabilidad social" . Investigación de VDC .
  151. ^ ARMasu, Lucian. "ARM revela más detalles sobre su arquitectura de seguridad de plataforma IoT" . Hardware de Tom .
  152. ^ Williams, Chris. "¿ARM PSA IoT API? BRB ... La caja de herramientas de tecnología para asegurar el kit conectado a la red se abre un poco más" . El registro .
  153. ^ "Certificado PSA: generar confianza en IoT" . Certificado PSA .
  154. ^ "Especificaciones de OS-9" . Microware .
  155. ^ a b "Pharos" . SourceForge . Consultado el 24 de mayo de 2018 .
  156. ^ "Virtualización segura y protegida de PikeOS" . Consultado el 10 de julio de 2013.
  157. ^ a b "Sistemas operativos en tiempo real con certificación de seguridad - CPU compatibles" .
  158. ^ "Puerto de plataforma ARM" . opensolaris.org. Archivado desde el original el 2 de diciembre de 2012 . Consultado el 29 de diciembre de 2012 .
  159. ^ "Multivisor basado en INTEGRIDAD de Green Hills Software ofrece la primera solución de virtualización segura de 64 bits de la industria integrada" . ghs.com . Consultado el 14 de marzo de 2018 .
  160. ^ "Sistema operativo en tiempo real Enea OSE para 5G y LTE-A | Enea" . www.enea.com . Consultado el 17 de abril de 2018 .
  161. ^ "Plataformas compatibles" . docs.sel4.systems . Consultado el 23 de noviembre de 2018 .
  162. ^ "Plataforma de desarrollo de software QNX (SDP 7.0) | BlackBerry QNX" . www.blackberry.qnx.com . Consultado el 27 de julio de 2020 .
  163. ^ 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 .
  164. ^ Larabel, Michael (27 de febrero de 2013). "La versión ARM de 64 bits de Ubuntu / Debian se está iniciando" . Phoronix . Consultado el 17 de agosto de 2014 .
  165. ^ "Noticias del proyecto Debian - 14 de agosto de 2014" . Debian . 14 de agosto de 2014 . Consultado el 17 de agosto de 2014 .
  166. ^ "Servidor Ubuntu para ARM" . ubuntu.com .
  167. ^ "Arquitecturas / AArch64" . Consultado el 16 de enero de 2015 .
  168. ^ "Portal: ARM / AArch64" . Consultado el 16 de enero de 2015 .
  169. ^ "Notas de la versión de SUSE Linux Enterprise 12 SP2" . Consultado el 11 de noviembre de 2016 .
  170. ^ "Red Hat presenta soporte de servidor ARM para Red Hat Enterprise Linux" . redhat.com . Consultado el 18 de enero de 2019 .
  171. ^ "Actualización del proyecto de arquitectura ARM de 64 bits" . La Fundación FreeBSD. 24 de noviembre de 2014.
  172. ^ "OpenBSD / arm64" . Consultado el 7 de agosto de 2017 .
  173. ^ "NetBSD / arm64" . Consultado el 5 de agosto de 2018 .
  174. ^ "HP, Asus anuncia las primeras PC con Windows 10 ARM: duración de la batería de 20 horas, gigabit LTE" . Ars Technica . 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.
  175. ^ Hassan, Mehedi (10 de diciembre de 2016). "Windows 10 en ARM64 obtiene sus primeras aplicaciones compiladas" . MSPoweruser .
  176. ^ Filippidis, Katrina (1 de junio de 2018). "VLC se convierte en una de las primeras aplicaciones de Windows ARM64" . Engadget .
  177. ^ 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 .
  178. ^ Gartenberg, Chaim (12 de noviembre de 2020). "macOS Big Sur ya está disponible para descargar" . The Verge . Consultado el 13 de noviembre de 2020 .
  179. ^ Clover, Juli (23 de junio de 2020). "Rosetta no admite aplicaciones de virtualización x86 que ejecutan Windows" . MacRumors . Consultado el 13 de noviembre de 2020 .
  180. ^ "ARM - La Wiki oficial del vino" . Consultado el 10 de julio de 2015 .
  181. ^ "ARM64 - La Wiki oficial del vino" . Consultado el 10 de julio de 2015 .
  182. ^ "Actualizaciones de seguridad de ARM - Desarrollador de ARM" . Desarrollador ARM . Consultado el 24 de mayo de 2018 .

Bibliografía [ editar ]

  • Evans, Matt (27 de diciembre de 2019). La última charla de Arquímedes de Bellota .Mantenimiento CS1: ref = harv ( enlace )

Lectura adicional [ editar ]

Enlaces externos [ editar ]

  • Sitio web oficial , ARM Ltd.
  • Extensiones de virtualización ARM
Tarjetas de referencia rápida
  • Instrucciones: pulgar , brazo y pulgar-2 , punto flotante vectorial
  • Códigos de operación: Pulgar , Pulgar , ARM , ARM , Directivas de ensamblador GNU