AArch64 o ARM64 es el estado de ejecución de 64 bits de la familia de arquitecturas ARM . Se introdujo por primera vez con la arquitectura Armv8-A y ha tenido muchas actualizaciones de extensión. [1]
Estado de ejecución de AArch64
Convenciones de nombres
64 bits:
Estado de ejecución: AArch64.
Conjuntos de instrucciones: A64.
32 bits:
Estado de ejecución: AArch32.
Conjuntos de instrucciones: A32 + T32.
Ejemplo: ARMv8-R, Cortex-A32. [2]
Características de AArch64
Nuevo conjunto de instrucciones, A64:
Tiene 31 registros de 64 bits de propósito general.
Tiene un registro de puntero cero o de pila (SP) dedicado (dependiendo de la instrucción).
El contador de programa (PC) ya no es accesible directamente como registro.
Las instrucciones siguen teniendo 32 bits de longitud y son en su mayoría iguales a las de A32 (con instrucciones LDM/STM y la mayoría de las ejecuciones condicionales eliminadas).
Tiene cargas/almacenes emparejados (en lugar de LDM/STM).
No hay predicción para la mayoría de las instrucciones (excepto las ramas).
La mayoría de las instrucciones pueden aceptar argumentos de 32 o 64 bits.
Se supone que las direcciones son de 64 bits.
SIMD avanzado(Neón) mejorado:
Tiene 32 registros de 128 bits (en lugar de 16), también accesibles a través de VFPv4.
Las instrucciones de cifrado/descifrado AES y de hash SHA-1/SHA-2 también utilizan estos registros.
Un nuevo sistema de excepciones:
Menos registros y modos bancarizados.
Traducción de memoria de direcciones virtuales de 48 bits basada en la Gran Extensión de Dirección Física (LPAE) existente, que fue diseñada para extenderse fácilmente a 64 bits.
Extensión: Sugerencia de recopilación de datos (ARMv8.0-DGH).
AArch64 se introdujo en ARMv8-A y se incluye en versiones posteriores de ARMv8-A. También se introdujo en ARMv8-R como una opción, después de su introducción en ARMv8-A; no se incluye en ARMv8-M.
Formatos de instrucciones
El código de operación principal para seleccionar a qué grupo pertenece una instrucción A64 está en los bits 25-28.
ARM-A (arquitectura de aplicación)
Anunciado en octubre de 2011, [3] ARMv8-A representa un cambio fundamental en la arquitectura ARM. Añade un estado de ejecución de 64 bits opcional, denominado "AArch64", y el nuevo conjunto de instrucciones "A64" asociado, además de un estado de ejecución de 32 bits, "AArch32", que admite los conjuntos de instrucciones "A32" (Arm original de 32 bits) y "T32" (Thumb/Thumb-2) de 32 bits. Los últimos conjuntos de instrucciones proporcionan compatibilidad en el espacio de usuario con la arquitectura ARMv7-A de 32 bits existente. ARMv8-A permite que las aplicaciones de 32 bits se ejecuten en un sistema operativo de 64 bits, y que un sistema operativo de 32 bits esté bajo el control de un hipervisor de 64 bits . [4] ARM anunció sus núcleos Cortex-A53 y Cortex-A57 el 30 de octubre de 2012. [5] Apple fue el primero en lanzar un núcleo compatible con ARMv8-A ( Cyclone ) en un producto de consumo ( iPhone 5S ). AppliedMicro , utilizando un FPGA , fue el primero en demostrar ARMv8-A. [6] El primer SoC ARMv8-A de Samsung es el Exynos 5433 utilizado en el Galaxy Note 4 , que cuenta con dos clústeres de cuatro núcleos Cortex-A57 y Cortex-A53 en una configuración big.LITTLE ; pero solo se ejecutará en modo AArch32. [7]
ARMv8-A incluye VFPv3/v4 y SIMD avanzado (Neon) como características estándar tanto en AArch32 como en AArch64. También agrega instrucciones de criptografía que admiten AES , SHA-1 / SHA-256 y aritmética de campos finitos . [8]
Un procesador ARMv8-A puede soportar uno o ambos de AArch32 y AArch64; puede soportar AArch32 y AArch64 en niveles de excepción más bajos y solo AArch64 en niveles de excepción más altos. [9] Por ejemplo, el ARM Cortex-A32 soporta solo AArch32, [10] el ARM Cortex-A34 soporta solo AArch64, [11] y el ARM Cortex-A72 soporta tanto AArch64 como AArch32. [12] Un procesador ARMv9-A debe soportar AArch64 en todos los niveles de excepción, y puede soportar AArch32 en EL0. [9]
ARMv8.1-A
En diciembre de 2014 se anunció ARMv8.1-A, [13] una actualización con "ventajas adicionales respecto de la versión 8.0". Las mejoras se dividían en dos categorías: cambios en el conjunto de instrucciones y cambios en el modelo de excepción y la traducción de memoria.
Las mejoras del conjunto de instrucciones incluyeron lo siguiente:
Un conjunto de instrucciones de lectura-escritura atómicas AArch64.
Adiciones al conjunto de instrucciones SIMD avanzadas tanto para AArch32 como para AArch64 para permitir oportunidades para algunas optimizaciones de la biblioteca:
Firmado Saturando Redondeando Duplicando Multiplicando Restar, Devolviendo la mitad alta.
Las instrucciones se agregan en forma vectorial y escalar.
Un conjunto de instrucciones de carga y almacenamiento de AArch64 que pueden proporcionar un orden de acceso a la memoria limitado a regiones de direcciones configurables.
Las instrucciones CRC opcionales en v8.0 se convierten en un requisito en ARMv8.1.
Las mejoras para el modelo de excepción y el sistema de traducción de memoria incluyeron lo siguiente:
Un nuevo bit de estado PAN (Acceso privilegiado nunca) proporciona control que evita el acceso privilegiado a los datos del usuario a menos que esté habilitado explícitamente.
Un rango VMID aumentado para la virtualización; admite una mayor cantidad de máquinas virtuales.
Soporte opcional para actualización de hardware del indicador de acceso a la tabla de páginas y la estandarización de un mecanismo de bit sucio, opcional y actualizado por hardware.
Extensiones de host de virtualización (VHE). Estas mejoras mejoran el rendimiento de los hipervisores de tipo 2 al reducir la sobrecarga de software asociada con la transición entre los sistemas operativos host e invitado. Las extensiones permiten que el sistema operativo host se ejecute en EL2, en lugar de EL1, sin modificaciones sustanciales.
Un mecanismo para liberar algunos bits de la tabla de traducción para el uso del sistema operativo, donde el sistema operativo no necesita soporte de hardware.
Ignorar el byte superior para el etiquetado de memoria. [14]
ARMv8.2-A
En enero de 2016, se anunció ARMv8.2-A. [15] Sus mejoras se dividieron en cuatro categorías:
La extensión de vector escalable (SVE) es "una extensión opcional para la arquitectura ARMv8.2-A y posteriores" desarrollada específicamente para la vectorización de cargas de trabajo científicas de computación de alto rendimiento . [16] [17] La especificación permite implementar longitudes de vector variables de 128 a 2048 bits. La extensión es complementaria a las extensiones NEON y no las reemplaza .
Ya se ha implementado una variante SVE de 512 bits en la supercomputadora Fugaku utilizando el procesador ARM Fujitsu A64FX ; esta computadora [18] fue la supercomputadora más rápida del mundo durante dos años, desde junio de 2020 [19] hasta mayo de 2022. [20] Una versión más flexible, 2x256 SVE, fue implementada por el procesador ARM AWS Graviton3 .
El compilador GCC admite SVE , con GCC 8 que admite la vectorización automática [17] y GCC 10 que admite intrínsecos de C. A partir de julio de 2020 [actualizar], LLVM y clang admiten intrínsecos de C e IR. La propia bifurcación de LLVM de ARM admite la vectorización automática. [21]
ARMv8.3-A
En octubre de 2016 se anunció ARMv8.3-A. Sus mejoras se dividieron en seis categorías: [22]
Autenticación de puntero [23] (sólo AArch64); extensión obligatoria (basada en un nuevo cifrado de bloque, QARMA [24] ) a la arquitectura (los compiladores necesitan explotar la característica de seguridad, pero como las instrucciones están en el espacio NOP, son compatibles con versiones anteriores aunque no brindan seguridad adicional en chips más antiguos).
Virtualización anidada (sólo AArch64).
Soporte avanzado de números complejos SIMD (AArch64 y AArch32); por ejemplo, rotaciones de múltiplos de 90 grados.
Un cambio en el modelo de consistencia de memoria (solo AArch64); para soportar el modelo RCpc (Release Consistent Processor Consistent) más débil (no predeterminado) de C++11 / C11 (el modelo de consistencia C++11/C11 predeterminado ya era soportado en ARMv8 anterior).
Soporte de mecanismo de identificación para cachés visibles del sistema más grandes (AArch64 y AArch32).
La arquitectura ARMv8.3-A ahora es compatible con (al menos) el compilador GCC 7. [26]
ARMv8.4-A
En noviembre de 2017 se anunció ARMv8.4-A. Sus mejoras se dividen en las siguientes categorías: [27] [28] [29]
En septiembre de 2018 se anunció ARMv8.5-A. Sus mejoras se clasificaron en las siguientes categorías: [30] [31] [32]
Extensión de etiquetado de memoria (MTE) (AArch64). [33]
Indicadores de destino de rama (BTI) (AArch64) para reducir "la capacidad de un atacante de ejecutar código arbitrario". Al igual que la autenticación de puntero, las instrucciones relevantes no son operaciones en versiones anteriores de ARMv8-A.
Instrucciones del generador de números aleatorios: "proporciona números aleatorios deterministas y verdaderos que cumplen con varios estándares nacionales e internacionales".
El 2 de agosto de 2019, Google anunció que Android adoptaría Memory Tagging Extension (MTE). [34]
En marzo de 2021, se anunció ARMv9-A. La base de ARMv9-A son todas las características de ARMv8.5. [35] [36] [37] ARMv9A también agrega:
Extensión de vector escalable 2 (SVE2). SVE2 se basa en la vectorización escalable de SVE para lograr un paralelismo de nivel de datos (DLP) de grano fino , lo que permite realizar más trabajo por instrucción. SVE2 tiene como objetivo llevar estos beneficios a una gama más amplia de software, incluido el código SIMD multimedia y DSP que actualmente utiliza Neon. [38] Los códigos de desarrollo LLVM / Clang 9.0 y GCC 10.0 se actualizaron para admitir SVE2. [38] [39]
Instrucciones de manipulación de matrices SIMD, BFDOT, BFMMLA, BFMLAL y BFCVT.
Mejoras para la virtualización, gestión del sistema y seguridad.
Y las siguientes extensiones (que LLVM 11 ya agregó soporte para [43] ):
Virtualización de contadores mejorada (ARMv8.6-ECV).
Trampas de grano fino (ARMv8.6-FGT).
Virtualización de monitores de actividad (ARMv8.6-AMU).
Por ejemplo, trampas de grano fino, instrucciones de espera de evento (WFE), EnhancedPAC2 y FPAC. Las extensiones bfloat16 para SVE y Neon están destinadas principalmente al uso en aprendizaje profundo. [44]
ARMv8.7-A y ARMv9.2-A
En septiembre de 2020 se anunció ARMv8.7-A. Sus mejoras se clasificaron en las siguientes categorías: [30] [45]
Extensión de matriz escalable (SME) (solo ARMv9.2). [46] SME agrega nuevas funciones para procesar matrices de manera eficiente, como:
Almacenamiento de mosaicos de matriz.
Transposición de matriz sobre la marcha.
Cargar/almacenar/insertar/extraer vectores de mosaicos.
Producto externo matricial de vectores SVE.
"Modo de transmisión" SVE.
Soporte mejorado para conexión en caliente PCIe (AArch64).
Carga atómica de 64 bytes y almacenamiento en aceleradores (AArch64).
Esperar instrucción (WFI) y Esperar evento (WFE) con tiempo de espera (AArch64).
Grabación de Branch-Record (solo ARMv9.2).
ARMv8.8-A y ARMv9.3-A
En septiembre de 2021 se anunciaron ARMv8.8-A y ARMv9.3-A. Sus mejoras se clasificaron en estas categorías: [30] [47]
Interrupciones no enmascarables (AArch64).
Instrucciones para optimizar operaciones de estilo memcpy() y memset() (AArch64).
Mejoras al PAC (AArch64).
Ramas condicionales sugeridas (AArch64).
LLVM 15 es compatible con ARMv8.8-A y ARMv9.3-A. [48]
ARMv8.9-A y ARMv9.4-A
En septiembre de 2022, se anunciaron ARMv8.9-A y ARMv9.4-A, que incluyen: [49]
Mejoras en la arquitectura del sistema de memoria virtual (VMSA).
Indirección de permisos y superposiciones.
Endurecimiento de la traducción.
Tablas de traducción de 128 bits (sólo ARMv9).
Extensión de matriz escalable 2 (SME2) (solo ARMv9).
Instrucciones multivectoriales.
Predicados multivectoriales.
Compresión de peso 2b/4b.
1b redes binarias.
Precarga de rango.
Pila de control protegida (GCS) (solo ARMv9).
Computación confidencial.
Contextos de cifrado de memoria.
Asignación de dispositivo.
ARMv9.5-A
En octubre de 2023, se anunció ARMv9.5-A, que incluye: [50]
Se agregó soporte para FP8 (formatos E5M2 y E4M3) a:
PYME2
SVE2
SIMD avanzado (Neón)
Migración en vivo de máquinas virtuales mediante estructuras de seguimiento de estado de hardware sucio (FEAT_HDBSS)
Aritmética de puntos comprobados
Soporte para usar una combinación de PC y SP como modificador al generar o verificar códigos de autenticación de puntero.
Soporte para diseños habilitados para Realm Management Extension (RME), soporte para no seguros solo en las Tablas de protección de gránulos y la capacidad de deshabilitar ciertos espacios de direcciones físicas (PAS).
Trampas de escritura de configuración EL3.
Soporte de puntos de interrupción para rangos de direcciones y activación de desajustes sin necesidad de vinculación.
Soporte para delegar eficientemente errores de EL3 a EL2 o EL1.
ARMv9.6-A
En octubre de 2024, se anunció ARMv9.6-A, que incluye: [51]
Mejora de la eficiencia de las PYME con operaciones estructuradas de escasez y de cuarto de mosaico
Dominios MPAM para brindar un mejor soporte a los sistemas informáticos de memoria compartida en sistemas multichiplet y multichip
Control de memoria del hipervisor para el seguimiento y la creación de perfiles estadísticos en máquinas virtuales
Almacenamiento en caché y ubicación de datos mejorados
Aislamiento de datos granulares para computación confidencial
Bloqueo bit a bit de los registros del sistema EL1
Escalabilidad mejorada de las tablas de protección granular (GPT) para sistemas de memoria de gran tamaño
Nuevas instrucciones SVE para expandir/compactar y encontrar el primer/último elemento activo
Instrucciones adicionales de carga y almacenamiento sin privilegios para permitir que el sistema operativo interactúe con la memoria de la aplicación
Nueva instrucción de comparación y bifurcación
Inyección de excepciones de instrucción no definida desde EL3
ARM-R (arquitectura en tiempo real)
La arquitectura ARM-R , específicamente el perfil Armv8-R, está diseñada para abordar las necesidades de las aplicaciones en tiempo real, donde el comportamiento predecible y determinista es esencial. Este perfil se centra en ofrecer alto rendimiento, confiabilidad y eficiencia en sistemas integrados donde las restricciones en tiempo real son críticas.
Con la introducción de la compatibilidad opcional con AArch64 en el perfil Armv8-R, las capacidades en tiempo real se han mejorado aún más. El Cortex-R82 [52] es el primer procesador que implementa esta compatibilidad extendida, lo que aporta varias características nuevas y mejoras al dominio del tiempo real. [53]
Características principales de Armv8-R con soporte AArch64
Conjunto de instrucciones AArch64 (A64) :
La instrucción A64 [25] establecida en el Cortex-R82 proporciona manejo y operaciones de datos de 64 bits, lo que mejora el rendimiento para ciertas tareas computacionales y mejora la eficiencia general del sistema. [52]
Instrucción de ejemplo : ADD X0, X1, X2suma los valores de los registros de 64 bits X1 y X2 y almacena el resultado en X0. Esta operación de 64 bits permite realizar cálculos más grandes y complejos en comparación con las operaciones de 32 bits del conjunto de instrucciones A32 anterior.
Gestión de memoria mejorada :
Instrucciones de barrera de memoria : El Cortex-R82 introduce instrucciones de barrera de memoria mejoradas para garantizar el orden correcto de las operaciones de memoria, lo cual es fundamental en sistemas en tiempo real donde el tiempo de las operaciones de memoria debe controlarse estrictamente. [54]
Barrera de sincronización de datos (DSB) : garantiza que todos los accesos a los datos antes de la barrera se completen antes de continuar con las operaciones posteriores.
Barrera de memoria de datos (DMB) : garantiza que todos los accesos a la memoria antes de la barrera se completen antes de que pueda continuar cualquier acceso a la memoria después de la barrera.
Ejemplo : En un sistema de control automotriz en tiempo real, se puede utilizar DSB para garantizar que los datos del sensor se escriban completamente en la memoria antes de que el sistema proceda con el procesamiento o la toma de decisiones, evitando la corrupción o inconsistencia de los datos.
Espacio de direcciones mejorado :
Direccionamiento de 64 bits : AArch64 permite que el Cortex-R82 direccione un espacio de memoria mucho más grande en comparación con sus predecesores de 32 bits, lo que lo hace adecuado para aplicaciones que requieren memoria extensa.
Ejemplo : Un sistema de automatización industrial complejo puede utilizar el espacio de direcciones ampliado para gestionar grandes conjuntos de datos y buffers de manera más eficiente, mejorando el rendimiento y la capacidad del sistema.
Mejoras de rendimiento en tiempo real :
Manejo de interrupciones : con soporte para AArch64, el Cortex-R82 puede manejar interrupciones con menor latencia y previsibilidad mejorada, crucial para operaciones en tiempo real.
Ejemplo : En una aplicación de robótica, el manejo mejorado de interrupciones del Cortex-R82 puede garantizar respuestas oportunas a estímulos externos, como cambios en los datos de los sensores o comandos de control.
Referencias
^ "Descripción general". Conozca la arquitectura: descripción de las extensiones Armv8.x y Armv9.x .
^ "Procesador Cortex-A32 – ARM" . Consultado el 18 de diciembre de 2016 .
^ "ARM revela detalles técnicos de la próxima versión de la arquitectura ARM" (Nota 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 .
↑ Grisenthwaite, Richard (2011). «ARMv8-A Technology Preview» (PDF) . Archivado desde el original (PDF) el 11 de noviembre de 2011. Consultado el 31 de octubre de 2011 .
^ "ARM lanza la serie Cortex-A50, los procesadores de 64 bits más eficientes energéticamente del mundo" (Nota de prensa). Arm Holdings . Consultado el 31 de octubre de 2012 .
^ "AppliedMicro presenta el primer núcleo ARM v8 de 64 bits del mundo" (nota de prensa). AppliedMicro. 28 de octubre de 2011. Consultado el 11 de febrero de 2014 .
^ "El Exynos 5433 de Samsung es un SoC ARM A57/A53". AnandTech . Consultado el 17 de septiembre de 2014 .
^ "Manual de referencia técnica del procesador ARM Cortex-A53 MPCore: extensión de criptografía". ARM . Consultado el 11 de septiembre de 2016 .
^ ab "Impacto de los niveles de excepción implementados". Conozca la arquitectura: modelo de excepción AArch64 . Arm.
^ "Cortex-A32". Desarrollador de Arm .
^ "Cortex-A34". Desarrollador de Arm .
^ "Cortex-A72". Desarrollador de Arm .
^ Brash, David (2 de diciembre de 2014). «La arquitectura ARMv8-A y su desarrollo en curso» . Consultado el 23 de enero de 2015 .
^ "Ignorar byte superior (TBI)". WikiChip .
^ Brash, David (5 de enero de 2016). «Evolución de la arquitectura ARMv8-A» . Consultado el 7 de junio de 2016 .
^ "La extensión vectorial escalable sve para la arquitectura ARMv8". Comunidad Arm . 22 de agosto de 2016 . Consultado el 8 de julio de 2018 .
^ ab «Serie de lanzamientos de GCC 8: cambios, nuevas características y correcciones – Proyecto GNU – Free Software Foundation (FSF)». gcc.gnu.org . Consultado el 9 de julio de 2018 .
^ "Fujitsu completa el prototipo de CPU de supercomputadora Post-K y comienza las pruebas de funcionalidad – Fujitsu Global". www.fujitsu.com (Nota de prensa) . Consultado el 8 de julio de 2018 .
^ "El Fugaku de Japón obtiene el título de supercomputadora más rápida del mundo" (Comunicado de prensa). www.riken.jp. 23 de junio de 2020. Consultado el 7 de diciembre de 2020 .
^ "Frontier de ORNL es el primero en romper el techo de exaflops". Top500 . 30 de mayo de 2022 . Consultado el 30 de mayo de 2022 .
^ "⚙ D71712 Implementación descendente de SVE/SVE2 (LLVM)". reviews.llvm.org .
^ David Brash (26 de octubre de 2016). "Arquitectura ARMv8-A: novedades de 2016".
^ . "[Ping~,AArch64] Agregar soporte de línea de comandos para -march=armv8.3-a". La extensión de autenticación de puntero se define como una extensión obligatoria en ARMv8.3-A y no es opcional
^ "Qualcomm publica un informe técnico que detalla la autenticación de puntero en ARMv8.3". 10 de enero de 2017.
^ ab "Instrucciones de punto flotante A64: FJCVTZS". arm.com . Consultado el 11 de julio de 2019 .
^ "Serie de versiones GCC 7: cambios, nuevas funciones y correcciones". Ahora se admite la arquitectura ARMv8.3-A. Se puede utilizar especificando la opción -march=armv8.3-a. [..] La opción -msign-return-address= es compatible para habilitar la protección de la dirección de retorno mediante extensiones de autenticación de puntero ARMv8.3-A.
^ "Presentación de las extensiones de 2017 a la arquitectura Arm". community.arm.com . 2 de noviembre de 2017 . Consultado el 15 de junio de 2019 .
^ "Explorando el aprendizaje automático de productos escalares". community.arm.com . 6 de diciembre de 2017 . Consultado el 15 de junio de 2019 .
^ "ARM prepara el soporte de ARMv8.4-A para el compilador GCC – Phoronix". www.phoronix.com . Consultado el 14 de enero de 2018 .
^ abcd "Extensiones y características de ARMv8.x y ARMv9.x". Conozca la arquitectura: Comprensión de las extensiones de ARMv8.x y ARMv9.x .
^ "Arquitectura Arm ARMv8.5-A Anuncio – Blog de procesadores – Procesadores – Comunidad Arm". community.arm.com . Consultado el 26 de abril de 2019 .
^ "Manual de referencia de arquitectura ARM ARMv8, para el perfil de arquitectura ARMv8-A". ARM Developer . Consultado el 6 de agosto de 2019 .
^ "Arquitectura Arm MTE: mejora de la seguridad de la memoria". community.arm.com . 5 de agosto de 2019 . Consultado el 27 de julio de 2021 .
^ "Adopción de la extensión de etiquetado de memoria Arm en Android". Blog de seguridad en línea de Google . Consultado el 6 de agosto de 2019 .
^ "La solución de Arm a las necesidades futuras de IA, seguridad y computación especializada es v9". Arm | La arquitectura para el mundo digital . Consultado el 27 de julio de 2021 .
^ Schor, David (30 de marzo de 2021). «Arm lanza ARMv9». WikiChip Fuse . Consultado el 27 de julio de 2021 .
^ Frumusanu, Andrei. "Arm anuncia la arquitectura ARMv9: SVE2, seguridad y la próxima década". www.anandtech.com . Consultado el 27 de julio de 2021 .
^ abc «Arm lanza SVE2 y TME para la arquitectura de perfil A – Blog de procesadores – Procesadores – Comunidad Arm». community.arm.com . 18 de abril de 2019 . Consultado el 25 de mayo de 2019 .
^ ab "Alineación del soporte de Arm SVE2 para GCC 10, LLVM Clang 9.0 – Phoronix". www.phoronix.com . Consultado el 26 de mayo de 2019 .
^ "Desbloquear el poder de los datos con Arm CCA". community.arm.com . 23 de junio de 2021 . Consultado el 27 de julio de 2021 .
^ "Arm presenta su arquitectura informática confidencial". WikiChip Fuse . 23 de junio de 2021 . Consultado el 27 de julio de 2021 .
^ "Actualización de la arquitectura del perfil Arm A 2019". community.arm.com . 25 de septiembre de 2019 . Consultado el 26 de septiembre de 2019 .
^ "Notas de la versión de LLVM 11.0.0". releases.llvm.org . Consultado el 11 de marzo de 2021 .
^ "Extensiones BFloat16 para ARMv8-A". community.arm.com . 29 de agosto de 2019 . Consultado el 30 de agosto de 2019 .
^ Weidmann, Martin (21 de septiembre de 2020). "Desarrollos de la arquitectura Arm A-Profile 2020". community.arm.com . ARM . Consultado el 28 de septiembre de 2022 .
^ "Extensión de matriz escalable para la arquitectura ARMv9-A". community.arm.com . 14 de julio de 2021 . Consultado el 27 de julio de 2021 .
^ Weidmann, Martin (8 de septiembre de 2021). "Desarrollos de la arquitectura ARM A-Profile 2021". community.arm.com . ARM . Consultado el 28 de septiembre de 2022 .
^ "¿Qué novedades hay en LLVM 15? - Blog sobre arquitecturas y procesadores - Blogs de la comunidad Arm - Comunidad Arm". 27 de febrero de 2023. Consultado el 15 de abril de 2023 .
^ "Desarrollos de la arquitectura Arm A-Profile 2022 - Blog de arquitecturas y procesadores - Blogs de la comunidad Arm - Comunidad Arm". community.arm.com . 29 de septiembre de 2022 . Consultado el 9 de diciembre de 2022 .
^ "Arm A-Profile Architecture Developments 2023 - Blog de arquitecturas y procesadores - Blogs de la comunidad Arm - Comunidad Arm". community.arm.com . 5 de octubre de 2023 . Consultado el 14 de octubre de 2024 .
^ "Arm A-Profile Architecture Developments 2024 - Blog de arquitecturas y procesadores - Blogs de la comunidad Arm - Comunidad Arm". community.arm.com . 1 de octubre de 2024 . Consultado el 14 de octubre de 2024 .
^ ab Frumusanu, Andrei (3 de septiembre de 2020). "ARM anunció Cortex-R82: el primer procesador en tiempo real de 64 bits". AnandTech .
^ "Suplemento del Manual de referencia de arquitectura Arm - Armv8, para el perfil de arquitectura AArch64 de Armv8-R". Arm Ltd.