AArch64

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

AArch64 o ARM64 es la extensión de 64 bits de la familia de arquitectura ARM. Se introdujo por primera vez con la arquitectura Armv8-A y tuvo muchas actualizaciones de extensión.

ARM-A (arquitectura de aplicación)

Anunciado en octubre de 2011, ARMv8-A representa un cambio fundamental en la arquitectura ARM. Agrega una arquitectura opcional de 64 bits, denominada "AArch64", y el nuevo conjunto de instrucciones asociado "A64". AArch64 proporciona compatibilidad de espacio de usuario con la arquitectura de 32 bits existente ("AArch32" / ARMv7-A) y el conjunto de instrucciones ("A32"). El conjunto de instrucciones Thumb de 16-32 bits se denomina "T32" y no tiene contraparte de 64 bits. ARMv8-A permite ejecutar aplicaciones de 32 bits en un sistema operativo de 64 bits y que un sistema operativo de 32 bits esté bajo el control de un hipervisor de 64 bits. ARM anunció sus núcleos Cortex-A53 y Cortex-A57 el 30 de octubre de 2012. Apple fue el primero en lanzar un núcleo compatible con ARMv8-A (Cyclone) en un producto de consumo (iPhone 5S). AppliedMicro, utilizando una FPGA, fue el primero en realizar una demostración de ARMv8-A. El primer SoC ARMv8-A de Samsung es el Exynos 5433 utilizado en el Galaxy Note 4, que presenta dos grupos de cuatro núcleos Cortex-A57 y Cortex-A53 en una configuración big.LITTLE ; pero se ejecutará sólo en modo AArch32.

ARMv8-A implementa el estándar VFPv3/v4 y SIMD (Neon) avanzado 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.

Convenciones de nombres

Características de AArch64

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 opción, tras su introducción en ARMv8-A; no está incluido en ARMv8-M.

Formatos de instrucción

El código de operación principal para seleccionar a qué grupo pertenece una instrucción A64 se encuentra en los bits 25-28.

Formatos de instrucción de A64
Type Bit
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Reservado 0 op0 0 0 0 0 op1
SME 1 op0 0 0 0 0 Varía
Unallocated 0 0 0 1
SVE 0 0 1 0 Varía
No asignado 0 0 1 1
Procesamiento de datos: PC-rel inmediato. op immlo 1 0 0 0 0 immhi Rd
Procesamiento de Datos — Otros Inmediatos sf 1 0 0 01-11 Rd
Ramas + Instrucciones del sistema op0 1 0 1 op1 op2
Instrucciones carga/almacenamiento op0 1 op1 0 op2 op3 op4
Procesamiento de datos — Registros sf op0 op1 1 0 1 op2 op3
Procesamiento de datos: punto flotante y SIMD op0 1 1 1 op1 op2 op3

ARMv8.1-A

En diciembre de 2014, se anunció ARMv8.1-A, una actualización con "beneficios incrementales sobre v8.0". Las mejoras se dividieron en dos categorías: cambios en el conjunto de instrucciones y cambios en el modelo de excepción y traducción de memoria.

Las mejoras del conjunto de instrucciones incluyeron lo siguiente:

Las mejoras para el modelo de excepción y el sistema de traducción de memoria incluyeron lo siguiente:

ARMv8.2-A

En enero de 2016, se anunció ARMv8.2-A. Sus mejoras se dividieron en cuatro categorías:

Extensión vectorial escalable (SVE)

Scalable Vector Extension (SVE) es "una extensión opcional de la arquitectura ARMv8.2-A y más reciente" desarrollada específicamente para la vectorización de cargas de trabajo científicas informáticas de alto rendimiento. La especificación permite implementar longitudes de vectores variables de 128 a 2048 bits. La extensión es complementaria y no reemplaza a las extensiones NEON.

Ya se ha implementado una variante SVE de 512 bits en la supercomputadora Fugaku utilizando el procesador Fujitsu A64FX ARM; esta computadora fue la supercomputadora más rápida del mundo durante dos años, desde junio de 2020 hasta mayo de 2022. El procesador ARM AWS Graviton3 implementó una versión más flexible, 2x256 SVE.

SVE es compatible con el compilador GCC, donde GCC 8 admite la vectorización automática y GCC 10 admite los intrínsecos de C. A julio de 2020, LLVM y clang admiten elementos intrínsecos de C e IR. La propia bifurcación de ARM de LLVM admite la vectorización automática.

ARMv8.3-A

En octubre de 2016, se anunció ARMv8.3-A. Sus mejoras se dividieron en seis categorías:

La arquitectura ARMv8.3-A ahora es compatible con (al menos) el compilador GCC 7.

ARMv8.4-A

En noviembre de 2017, se anunció ARMv8.4-A. Sus mejoras se clasifican en estas categorías:

ARMv8.5-A y ARMv9.0-A

En septiembre de 2018, se anunció ARMv8.5-A. Sus mejoras se clasifican en estas categorías:

El 2 de agosto de 2019, Google anunció que Android adoptaría Memory Tagging Extension (MTE).

En marzo de 2021, se anunció ARMv9-A. La base de ARMv9-A son todas las características de ARMv8.5. ARMv9-A también agrega:

ARMv8.6-A y ARMv9.1-A

En septiembre de 2019, se anunció ARMv8.6-A. Sus mejoras se clasifican en estas categorías:

Por ejemplo, trampas detalladas, instrucciones de espera de evento (WFE), EnhancedPAC2 y FPAC. Las extensiones bfloat16 para SVE y Neon son principalmente para uso de aprendizaje profundo.

ARMv8.7-A y ARMv9.2-A

En septiembre de 2020, se anunció ARMv8.7-A. Sus mejoras se clasifican en estas categorías:

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:

LLVM 15 es compatible con ARMv8.8-A y ARMv9.3-A.

ARMv8.9-A y ARMv9.4-A

En septiembre de 2022, se anunciaron ARMv8.9-A y ARMv9.4-A, que incluyen:

ARM-R (arquitectura en tiempo real)

Se agregó compatibilidad opcional con AArch64 al perfil Armv8-R, y el primer núcleo de Arm que lo implementó fue el Cortex-R82. Agrega el conjunto de instrucciones A64, con algunos cambios en las instrucciones de la barrera de memoria.

Referencias

  1. ↑ «Overview». Learn the architecture: Understanding the Armv8.x and Armv9.x extensions.
  2. ↑ Grisenthwaite, Richard (2011). «ARMv8-A Technology Preview». Archivado desde el original el 11 de noviembre de 2011. Consultado el 31 de octubre de 2011.
  3. ↑ «Samsung's Exynos 5433 is an A57/A53 ARM SoC». AnandTech. Archivado desde el original el 11 de mayo de 2019. Consultado el 17 de septiembre de 2014.
  4. ↑ «ARM Cortex-A53 MPCore Processor Technical Reference Manual: Cryptography Extension». ARM. Consultado el 11 de septiembre de 2016.
  5. ↑ «Cortex-A32 Processor – ARM». Consultado el 18 de diciembre de 2016.
  6. ↑ Brash, David (2 de diciembre de 2014). «The ARMv8-A architecture and its ongoing development». Archivado desde el original el 23 de enero de 2015. Consultado el 23 de enero de 2015.
  7. ↑ «Top-byte ignore (TBI)». WikiChip. Archivado desde el original el 15 de agosto de 2021. Consultado el 3 de abril de 2024.
  8. ↑ Brash, David (5 de enero de 2016). «ARMv8-A architecture evolution». Consultado el 7 de junio de 2016.
  9. ↑ «The scalable vector extension sve for the ARMv8 a architecture». Arm Community (en inglés). 22 de agosto de 2016. Archivado desde el original el 9 de julio de 2018. Consultado el 8 de julio de 2018.
  10. 1 2 «GCC 8 Release Series – Changes, New Features, and Fixes – GNU Project – Free Software Foundation (FSF)». gcc.gnu.org (en inglés). Consultado el 9 de julio de 2018.
  11. ↑ «ORNL's Frontier First to Break the Exaflop Ceiling». Top500. 30 de mayo de 2022. Consultado el 30 de mayo de 2022.
  12. ↑ «⚙ D71712 Downstream SVE/SVE2 implementation (LLVM)». reviews.llvm.org.
  13. ↑ David Brash (26 de octubre de 2016). «ARMv8-A architecture – 2016 additions».
  14. ↑ .«[Ping~,AArch64] Add commandline support for -march=armv8.3-a». Archivado desde el original el 26 de febrero de 2021. Consultado el 3 de abril de 2024. «pointer authentication extension is defined to be mandatory extension on ARMv8.3-A and is not optional».
  15. ↑ «Qualcomm releases whitepaper detailing pointer authentication on ARMv8.3». 10 de enero de 2017.
  16. ↑ «A64 Floating-point Instructions: FJCVTZS». arm.com. Consultado el 11 de julio de 2019.
  17. ↑ «GCC 7 Release Series – Changes, New Features, and Fixes». «The ARMv8.3-A architecture is now supported. It can be used by specifying the -march=armv8.3-a option. [..] The option -msign-return-address= is supported to enable return address protection using ARMv8.3-A Pointer Authentication Extensions.»
  18. ↑ «Introducing 2017's extensions to the Arm Architecture». community.arm.com (en inglés). 2 de noviembre de 2017. Consultado el 15 de junio de 2019.
  19. ↑ «Exploring dot product machine learning». community.arm.com (en inglés). 6 de diciembre de 2017. Consultado el 15 de junio de 2019.
  20. ↑ «ARM Preps ARMv8.4-A Support For GCC Compiler – Phoronix». www.phoronix.com (en inglés). Consultado el 14 de enero de 2018.
  21. 1 2 3 4 «ARMv8.x and ARMv9.x extensions and features». Learn the architecture: Understanding the ARMv8.x and ARMv9.x extensions.
  22. ↑ «Arm Architecture ARMv8.5-A Announcement – Processors blog – Processors – Arm Community». community.arm.com (en inglés). Consultado el 26 de abril de 2019.
  23. ↑ «Arm Architecture Reference Manual ARMv8, for ARMv8-A architecture profile». ARM Developer (en inglés). Consultado el 6 de agosto de 2019.
  24. ↑ «Arm MTE architecture: Enhancing memory safety». community.arm.com (en inglés). 5 de agosto de 2019. Consultado el 27 de julio de 2021.
  25. ↑ «Adopting the Arm Memory Tagging Extension in Android». Google Online Security Blog (en inglés). Consultado el 6 de agosto de 2019.
  26. ↑ «Arm's solution to the future needs of AI, security and specialized computing is v9». Arm | The Architecture for the Digital World (en inglés). Consultado el 27 de julio de 2021.
  27. ↑ Schor, David (30 de marzo de 2021). «Arm Launches ARMv9». WikiChip Fuse (en inglés estadounidense). Archivado desde el original el 27 de julio de 2021. Consultado el 27 de julio de 2021.
  28. ↑ Frumusanu, Andrei. «Arm Announces ARMv9 Architecture: SVE2, Security, and the Next Decade». www.anandtech.com. Archivado desde el original el 27 de julio de 2021. Consultado el 27 de julio de 2021.
  29. 1 2 3 «Arm releases SVE2 and TME for A-profile architecture – Processors blog – Processors – Arm Community». community.arm.com (en inglés). 18 de abril de 2019. Consultado el 25 de mayo de 2019.
  30. 1 2 «Arm SVE2 Support Aligning For GCC 10, LLVM Clang 9.0 – Phoronix». www.phoronix.com. Consultado el 26 de mayo de 2019.
  31. ↑ «Unlocking the power of data with Arm CCA». community.arm.com (en inglés). 23 de junio de 2021. Consultado el 27 de julio de 2021.
  32. ↑ «Arm Introduces Its Confidential Compute Architecture». WikiChip Fuse (en inglés estadounidense). 23 de junio de 2021. Archivado desde el original el 27 de julio de 2021. Consultado el 27 de julio de 2021.
  33. ↑ «Arm A profile architecture update 2019». community.arm.com (en inglés). 25 de septiembre de 2019. Consultado el 26 de septiembre de 2019.
  34. ↑ «LLVM 11.0.0 Release Notes». releases.llvm.org. Consultado el 11 de marzo de 2021.
  35. ↑ «BFloat16 extensions for ARMv8-A». community.arm.com (en inglés). 29 de agosto de 2019. Consultado el 30 de agosto de 2019.
  36. ↑ Weidmann, Martin (21 de septiembre de 2020). «Arm A-Profile Architecture Developments 2020». community.arm.com. ARM. Consultado el 28 de septiembre de 2022.
  37. ↑ «Scalable Matrix Extension for the ARMv9-A Architecture». community.arm.com (en inglés). 14 de julio de 2021. Consultado el 27 de julio de 2021.
  38. ↑ Weidmann, Martin (8 de septiembre de 2021). «Arm A-Profile Architecture Developments 2021». community.arm.com. ARM. Consultado el 28 de septiembre de 2022.
  39. ↑ «What is New in LLVM 15? - Architectures and Processors blog - Arm Community blogs - Arm Community». 27 de febrero de 2023. Consultado el 15 de abril de 2023.
  40. ↑ «Arm A-Profile Architecture Developments 2022 - Architectures and Processors blog - Arm Community blogs - Arm Community». community.arm.com (en inglés). 29 de septiembre de 2022. Consultado el 9 de diciembre de 2022.
  41. ↑ Frumusanu, Andrei (3 de septiembre de 2020). «ARM Announced Cortex-R82: First 64-bit Real Time Processor». AnandTech. Archivado desde el original el 20 de septiembre de 2022. Consultado el 3 de abril de 2024.
  42. ↑ «Arm Architecture Reference Manual Supplement - Armv8, for Armv8-R AArch64 architecture profile». Arm Ltd.