Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

AArch64

From Wikipedia, the free encyclopedia
64-bit extension of the ARM architecture

ARM AArch64 (64-bit)
Introduced2011; 14 years ago (2011)
VersionARMv8-A,ARMv8-R,ARMv9-A
EncodingAArch64/A64 andAArch32/A32 use 32-bit instructions, AArch32/T32 (Thumb-2) uses mixed 16- and 32-bit instructions[1]
EndiannessBi for data only (little as default, instructions are little)
Extensions
  • SVE, SVE2, SME, AES, SM3, SM4, SHA, CRC32, RNDR, TME
  • Mandatory:Thumb-2,Neon, VFPv4-D16, VFPv4
  • Obsolete:Jazelle
Registers
General-purpose31 × 64-bit integer registers[1]
Floating-point32 ×128-bit registers[1] for scalar 32- and 64-bitFP orSIMD FP or integer; or cryptography

AArch64, also known asARM64, is a64-bit version of theARM architecture family, a widely used set of computer processor designs. It was introduced in 2011 with theARMv8 architecture and later became part of theARMv9 series. AArch64 allows processors to handle more memory and perform faster calculations than earlier32-bit versions. It is designed to work alongside the older 32-bit mode, known asAArch32, allowing compatibility with a wide range of software. Devices that use AArch64 includesmartphones,tablets,personal computers, andservers. The AArch64 architecture has continued to evolve through updates that improve performance, security, and support for advanced computing tasks.[2]

AArch64 Execution state

[edit]

In ARMv8-A, ARMv8-R, and ARMv9-A, an "Execution state" defines key characteristics of the processor’s environment. This includes the number ofbits used in the primaryprocessor registers, the supportedinstruction sets, and other aspects of the processor's execution environment. These versions of the ARM architecture support two Execution states: the 64-bit AArch64 state and the 32-bit AArch32 state.[3]

Naming conventions

[edit]
  • 64-bit:
    • Execution state: AArch64
    • Instruction sets: A64
  • 32-bit:
    • Execution state: AArch32
    • Instruction sets: A32 + T32
    • Example: ARMv8-R, Cortex-A32[4]

AArch64 features

[edit]
  • New instruction set, A64:
    • Has 31 general-purpose 64-bit registers
    • Has dedicated zero or stack pointer (SP) register (depending on instruction)
    • Theprogram counter (PC) is no longer directly accessible as a register
    • Instructions are still 32 bits long and mostly the same as A32 (with LDM/STM instructions and most conditional execution dropped)
      • Has paired loads/stores (in place of LDM/STM)
      • Nopredication for most instructions (except branches)
    • Most instructions can take 32-bit or 64-bit arguments
    • Addresses assumed to be 64-bit
  • AdvancedSIMD (Neon) enhanced:
  • A new exception system:
    • Fewer banked registers and modes
  • Memory translation from 48-bit virtual addresses based on the existing Large Physical Address Extension (LPAE), which was designed to be easily extended to 64-bit

Extension: Data gathering hint (ARMv8.0-DGH).

AArch64 was introduced in ARMv8-A and is included in subsequent versions of ARMv8-A, and in all versions of ARMv9-A. It was also introduced in ARMv8-R as an option, after its introduction in ARMv8-A; it is not included in ARMv8-M.

A64 instruction formats

[edit]

The main opcode for selecting which group an A64 instruction belongs to is at bits 25–28.

A64 instruction formats
TypeBit
313029282726252423222120191817161514131211109876543210
Reserved0op00000op1
SME1op00000Varies
Unallocated0001
SVE0010Varies
Unallocated0011
Data Processing — Immediate PC-rel.opimmlo10000immhiRd
Data Processing — Immediate Otherssf10001–11Rd
Branches + System Instructionsop0101op1op2
Load and Store Instructionsop01op10op2op3op4
Data Processing — Registersfop0op1101op2op3
Data Processing — Floating Point and SIMDop0111op1op2op3

ARM-A (application architecture)

[edit]
See also:Comparison of ARMv8-A processors
Armv8-A platform withCortex-A57/A53 MPCorebig.LITTLE CPU chip

Announced in October 2011,[5]ARMv8-A represents a fundamental change to the ARM architecture. It adds an optional 64-bit Execution state, named "AArch64", and the associated new "A64" instruction set, in addition to a 32-bit Execution state, "AArch32", supporting the 32-bit "A32" (original 32-bit ARM) and "T32" (Thumb/Thumb-2) instruction sets. The latter instruction sets provideuser-space compatibility with the existing 32-bit ARMv7-A architecture. ARMv8-A allows 32-bit applications to be executed in a 64-bit OS, and a 32-bit OS to be under the control of a 64-bithypervisor.[1] ARM announced theirCortex-A53 andCortex-A57 cores on 30 October 2012.[6]Apple was the first to release an ARMv8-A compatible core (Cyclone) in a consumer product (iPhone 5S).AppliedMicro, using anFPGA, was the first to demo ARMv8-A.[7] The first ARMv8-ASoC fromSamsung is the Exynos 5433 used in theGalaxy Note 4, which features two clusters of four Cortex-A57 and Cortex-A53 cores in abig.LITTLE configuration; but it only runs in AArch32 mode.[8]ARMv8-A includes VFPv3/v4 and advanced SIMD (Neon) as standard features in both AArch32 and AArch64. It also adds cryptography instructions supportingAES,SHA-1/SHA-256 andfinite field arithmetic.[9]

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

ARMv8.1-A

[edit]

In December 2014, ARMv8.1-A,[14] an update with "incremental benefits over v8.0", was announced. The enhancements fell into two categories: changes to the instruction set, and changes to the exception model and memory translation.

Instruction set enhancements included the following:

  • A set of AArch64 atomic read-write instructions.
  • Additions to the Advanced SIMD instruction set for both AArch32 and AArch64 to enable opportunities for some library optimizations:
    • Signed Saturating Rounding Doubling Multiply Accumulate, Returning High Half.
    • Signed Saturating Rounding Doubling Multiply Subtract, Returning High Half.
    • The instructions are added in vector and scalar forms.
  • A set of AArch64 load and store instructions that can provide a memory access order that is limited to configurable address regions.
  • The optional CRC instructions in v8.0 become a requirement in ARMv8.1.

Enhancements for the exception model and memory translation system included the following:

  • A new Privileged Access Never (PAN) state bit provides control that prevents privileged access to user data unless explicitly enabled.
  • An increased VMID range for virtualization; supports a larger number of virtual machines.
  • Optional support for hardware update of thepage table access flag, and the standardization of an optional, hardware updated, dirty bit mechanism.
  • The Virtualization Host Extensions (VHE). These enhancements improve the performance of Type 2 hypervisors by reducing the software overhead associated when transitioning between the Host and Guest operating systems. The extensions allow the Host OS to execute at EL2, as opposed to EL1, without substantial modification.[15]
  • A mechanism to free up some translation table bits for operating system use, where the hardware support is not needed by the OS.
  • Top byte ignore formemory tagging.[16]

ARMv8.2-A

[edit]

ARMv8.2-A was announced in January 2016.[17] Its enhancements fall into four categories:

Scalable Vector Extension (SVE)

[edit]

The Scalable Vector Extension (SVE) is licensed as "an optional extension to the ARMv8.2-A architecture and newer" developed specifically for vectorization ofhigh-performance computing scientific workloads.[18][19] The specification allows for ARM licensees to choose a hard-coded architectural register width between 128 and 2048 bits in multiples of 128. The extension is complementary to and does not replace theNEON extensions.

A 512-bit SVE variant has already been implemented on theFugaku supercomputer using theFujitsu A64FX ARM processor; this computer[20] was the fastest supercomputer in the world for two years, from June 2020[21] to May 2022.[22] A more flexible version, 2x256 SVE, was implemented by theAWS Graviton3 ARM processor.

SVE is supported byGCC, with GCC 8 supporting automatic vectorization[19] and GCC 10 supporting C intrinsics. As of July 2020[update],LLVM andclang support C and IR intrinsics. ARM's own fork of LLVM supports auto-vectorization.[23]

ARMv8.3-A

[edit]

In October 2016, ARMv8.3-A was announced. Its enhancements fell into six categories:[24]

  • Pointer authentication (PAC)[25][26] (AArch64 only); mandatory extension (based on a newblock cipher,QARMA[27]) to the architecture (compilers need to exploit the security feature, but as the instructions are in NOP space, they are backwards compatible albeit providing no extra security on older chips).
  • Nested virtualization (AArch64 only).
  • Advanced SIMDcomplex number support (AArch64 and AArch32); e.g. rotations by multiples of 90 degrees.
  • New FJCVTZS (Floating-pointJavaScript Convert to Signed fixed-point, rounding toward Zero) instruction.[28]
  • A change to the memory consistency model (AArch64 only) to support the (non-default) weaker RCpc (Release Consistent processor consistent) model ofC++11/C11 (the default C++11/C11 consistency model was already supported in previous ARMv8).
  • ID mechanism support for larger system-visible caches (AArch64 and AArch32).

ARMv8.3-A architecture is now supported by (at least)GCC 7.0.[29]

ARMv8.4-A

[edit]

In November 2017, ARMv8.4-A was announced. Its enhancements fell into these categories:[30][31][32]

  • "SHA3 / SHA512 / SM3 /SM4 crypto extensions." I.e. optional instructions.
  • Improved virtualization support.[33]
  • Memory Partitioning and Monitoring (MPAM) capabilities.
  • A new Secure EL2 state and Activity Monitors.
  • Signed and unsigned integerdot product (SDOT and UDOT) instructions.

ARMv8.5-A and ARMv9.0-A

[edit]

In September 2018, ARMv8.5-A was announced. Its enhancements fell into these categories:[34][35][36]

  • Memory Tagging Extension (MTE) (AArch64).[37]
  • Branch Target Indicators (BTI) (AArch64) to reduce "the ability of an attacker to execute arbitrary code". Like pointer authentication, the relevant instructions are no-ops on earlier versions of ARMv8-A.
  • Random Number Generator instructions – "providing Deterministic and True Random Numbers conforming to various National and International Standards".

On 2 August 2019,Google announcedAndroid will adopt Memory Tagging Extension (MTE).[38]

In March 2021, ARMv9-A was announced. ARMv9-A's baseline is all features from ARMv8.5.[39][40][41] ARMv9-A also adds:

ARMv8.6-A and ARMv9.1-A

[edit]

In September 2019, ARMv8.6-A was announced. Its enhancements fell into these categories:[34][47]

  • General Matrix Multiply (GEMM).
  • Bfloat16 format support.
  • SIMD matrix manipulation instructions (added to NEON):
    • BFDOT* (BFloat16 dot product)
    • BFMMLA (BFloat16 matrix multiply and accumulate)
    • BFMLAL* (BFloat16 multiply and accumulate, widening to long)
    • BFCVT* (BFloat16 conversion)
  • Enhancements for virtualization, system management and security.
  • And the following extensions (thatLLVM 11 already added support for[48]):
    • Enhanced Counter Virtualization (ARMv8.6-ECV).
    • Fine-Grained Traps (ARMv8.6-FGT).
    • Activity Monitors virtualization (ARMv8.6-AMU).

For example, fine-grained traps, Wait-for-Event (WFE) instructions, EnhancedPAC2 and FPAC. The bfloat16 extensions for SVE and Neon are mainly for deep learning use.[49]

ARMv8.7-A and ARMv9.2-A

[edit]

In September 2020, ARMv8.7-A was announced. Its enhancements fell into these categories:[34][50]

  • Scalable Matrix Extension (SME)(ARMv9.2 only).[51] SME adds new features to process matrices efficiently, such as:
    • Matrix tile storage.
    • On-the-fly matrix transposition.
    • Load/store/insert/extract tile vectors.
    • Matrix outer product of SVE vectors.
    • "Streaming mode" SVE.
  • Enhanced support for PCIe hot plug (AArch64).
  • Atomic 64-byte load and stores to accelerators (AArch64).
  • Wait For Interrupt (WFI) and Wait For Event (WFE) with timeout (AArch64).
  • Branch-Record recording (ARMv9.2 only).
  • Call Stack Recorder

ARMv8.8-A and ARMv9.3-A

[edit]

In September 2021, ARMv8.8-A and ARMv9.3-A were announced. Their enhancements fell into these categories:[34][52]

  • Non-maskable interrupts (AArch64).
  • Instructions to optimize memcpy() and memset() style operations (AArch64).
  • Enhancements to PAC (AArch64).
  • Hinted conditional branches (AArch64).

LLVM 15 supports ARMv8.8-A and ARMv9.3-A.[53]

ARMv8.9-A and ARMv9.4-A

[edit]

In September 2022, ARMv8.9-A and ARMv9.4-A were announced, including:[54]

  • Virtual Memory System Architecture (VMSA) enhancements.
    • Permission indirection and overlays.
    • Translation hardening.
    • 128-bit translation tables (ARMv9 only).
  • Scalable Matrix Extension 2 (SME2) (ARMv9 only).
    • Multi-vector instructions.
    • Multi-vector predicates.
    • 2b/4b weight compression.
    • 1b binary networks.
    • Range Prefetch.
  • Guarded Control Stack (GCS) (ARMv9 only).
  • Confidential Computing.
    • Memory Encryption Contexts.
    • Device Assignment.

ARMv9.5-A

[edit]

In October 2023, ARMv9.5-A was announced, including:[55]

  • FP8 support (E5M2 and E4M3 formats) added to:
    • SME2
    • SVE2
    • Advanced SIMD (Neon)
  • Live migration of Virtual Machines using Hardware Dirty state tracking structures (FEAT_HDBSS)
  • Checked Point Arithmetic
  • Support for using a combination of the PC and SP as the modifier when generating or checking Pointer Authentication codes.
  • Support for Realm Management Extension (RME) enabled designs, support for non-secure only in the Granule Protection Tables and the ability to disable certain Physical Address Spaces (PAS).
  • EL3 configuration write-traps.
  • Breakpoint support for address range and mismatch triggering without the need for linking.
  • Support for efficiently delegating SErrors from EL3 to EL2 or EL1.

ARMv9.6-A

[edit]

In October 2024, ARMv9.6-A was announced, including:[56]

  • Improved SME efficiency with structured sparsity and quarter tile operations
  • MPAM Domains to better support shared-memory computer systems on multi-chiplet and multi-chip systems
  • Hypervisor memory control for Trace and Statistical Profiling on virtual machines
  • Improved Caching and Data Placement
  • Granular Data Isolation for Confidential Compute
  • Bitwise locking of EL1 system registers
  • Improved scaling of Granular Protection Tables (GPT) for large memory systems
  • New SVE instructions for expand/compact and finding first/last active element
  • Additional unprivileged load and store instructions to enable OS to interact with application memory (LDL(U)R* and STL(U)R*)
  • Injection of Undefined-Instruction exceptions from EL3

ARMv9.7-A

[edit]

In October 2025, ARMv9.7-A was announced, including:[57]

  • Targeted memory invalidation broadcasts
  • Flexible resource management (MPAMv2)
  • 6-bit data types for Artificial Intelligence
  • Video-codecs
  • GICv5

ARM-R (real-time architecture)

[edit]
[icon]
This sectionneeds expansion with: examples and additional citations. You can help byadding to it. Relevant discussion may be found onTalk:AArch64.(May 2021)

TheARM-R architecture, specifically the Armv8-R profile, is designed to address the needs of real-time applications, where predictable and deterministic behavior is essential. This profile focuses on delivering high performance, reliability, and efficiency in embedded systems where real-time constraints are critical.

With the introduction of optional AArch64 support in the Armv8-R profile, the real-time capabilities have been further enhanced. The Cortex-R82[58] is the first processor to implement this extended support, bringing several new features and improvements to the real-time domain.[59]

References

[edit]
  1. ^abcdGrisenthwaite, Richard (2011)."ARMv8-A Technology Preview"(PDF). Archived fromthe original(PDF) on 11 November 2011. Retrieved31 October 2011.
  2. ^"Overview".Learn the architecture: Understanding the Armv8.x and Armv9.x extensions.
  3. ^"ARM Cortex-A57 MPCore Processor Technical Reference Manual".Arm Ltd.
  4. ^"Cortex-A32 Processor – ARM". Retrieved18 December 2016.
  5. ^"ARM Discloses Technical Details Of The Next Version Of The ARM Architecture" (Press release).Arm Holdings. 27 October 2011. Archived fromthe original on 1 January 2019. Retrieved20 September 2013.
  6. ^"ARM Launches Cortex-A50 Series, the World's Most Energy-Efficient 64-bit Processors" (Press release).Arm Holdings. Retrieved31 October 2012.
  7. ^"AppliedMicro Showcases World's First 64-bit ARM v8 Core" (Press release). AppliedMicro. 28 October 2011. Retrieved11 February 2014.
  8. ^"Samsung's Exynos 5433 is an A57/A53 ARM SoC". AnandTech. Archived fromthe original on 17 September 2014. Retrieved17 September 2014.
  9. ^"ARM Cortex-A53 MPCore Processor Technical Reference Manual: Cryptography Extension". ARM. Retrieved11 September 2016.
  10. ^ab"Impact of implemented Exception levels".Learn the architecture - AArch64 Exception Model. Arm.
  11. ^"Cortex-A32".Arm Developer.
  12. ^"Cortex-A34".Arm Developer.
  13. ^"Cortex-A72".Arm Developer.
  14. ^Brash, David (2 December 2014)."The ARMv8-A architecture and its ongoing development". Retrieved23 January 2015.
  15. ^"ARM Virtualization: Performance and Architectural Implications".ISCA 2016. 18 June 2016.
  16. ^"Top-byte ignore (TBI)".WikiChip.
  17. ^Brash, David (5 January 2016)."ARMv8-A architecture evolution". Retrieved7 June 2016.
  18. ^"The scalable vector extension sve for the ARMv8 a architecture".Arm Community. 22 August 2016. Retrieved8 July 2018.
  19. ^ab"GCC 8 Release Series – Changes, New Features, and Fixes – GNU Project – Free Software Foundation (FSF)".gcc.gnu.org. Retrieved9 July 2018.
  20. ^"Fujitsu Completes Post-K Supercomputer CPU Prototype, Begins Functionality Trials – Fujitsu Global".www.fujitsu.com (Press release). Retrieved8 July 2018.
  21. ^"Japan's Fugaku gains title as world's fastest supercomputer" (Press release). www.riken.jp. 23 June 2020. Retrieved7 December 2020.
  22. ^"ORNL's Frontier First to Break the Exaflop Ceiling".Top500. 30 May 2022. Retrieved30 May 2022.
  23. ^"⚙ D71712 Downstream SVE/SVE2 implementation (LLVM)".reviews.llvm.org.
  24. ^David Brash (26 October 2016)."ARMv8-A architecture – 2016 additions".
  25. ^"[Ping~,AArch64] Add commandline support for -march=armv8.3-a".pointer authentication extension is defined to be mandatory extension on ARMv8.3-A and is not optional
  26. ^"Pointer Authentication on Arm". ARM. Retrieved5 March 2025.
  27. ^"Qualcomm releases whitepaper detailing pointer authentication on ARMv8.3". 10 January 2017.
  28. ^"A64 Floating-point Instructions: FJCVTZS".arm.com. Retrieved11 July 2019.
  29. ^"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.
  30. ^"Introducing 2017's extensions to the Arm Architecture".community.arm.com. 2 November 2017. Retrieved15 June 2019.
  31. ^"Exploring dot product machine learning".community.arm.com. 6 December 2017. Retrieved15 June 2019.
  32. ^"ARM Preps ARMv8.4-A Support For GCC Compiler – Phoronix".www.phoronix.com. Retrieved14 January 2018.
  33. ^"NEVE: Nested Virtualization Extensions for ARM".SOSP 2017. 14 October 2017.
  34. ^abcd"ARMv8.x and ARMv9.x extensions and features".Learn the architecture: Understanding the ARMv8.x and ARMv9.x extensions.
  35. ^"Arm Architecture ARMv8.5-A Announcement – Processors blog – Processors – Arm Community".community.arm.com. Retrieved26 April 2019.
  36. ^"Arm Architecture Reference Manual ARMv8, for ARMv8-A architecture profile".ARM Developer. Retrieved6 August 2019.
  37. ^"Arm MTE architecture: Enhancing memory safety".community.arm.com. 5 August 2019. Retrieved27 July 2021.
  38. ^"Adopting the Arm Memory Tagging Extension in Android".Google Online Security Blog. Retrieved6 August 2019.
  39. ^"Arm's solution to the future needs of AI, security and specialized computing is v9".Arm | The Architecture for the Digital World. Retrieved27 July 2021.
  40. ^Schor, David (30 March 2021)."Arm Launches ARMv9".WikiChip Fuse. Retrieved27 July 2021.
  41. ^Frumusanu, Andrei."Arm Announces ARMv9 Architecture: SVE2, Security, and the Next Decade".www.anandtech.com. Archived fromthe original on 30 March 2021. Retrieved27 July 2021.
  42. ^abc"Arm releases SVE2 and TME for A-profile architecture – Processors blog – Processors – Arm Community".community.arm.com. 18 April 2019. Retrieved25 May 2019.
  43. ^ab"Arm SVE2 Support Aligning For GCC 10, LLVM Clang 9.0 – Phoronix".www.phoronix.com. Retrieved26 May 2019.
  44. ^"Design and Verification of the Arm Confidential Compute Architecture".OSDI 2022. Retrieved11 July 2022.
  45. ^"Unlocking the power of data with Arm CCA".community.arm.com. 23 June 2021. Retrieved27 July 2021.
  46. ^"Arm Introduces Its Confidential Compute Architecture".WikiChip Fuse. 23 June 2021. Retrieved27 July 2021.
  47. ^"Arm A profile architecture update 2019".community.arm.com. 25 September 2019. Retrieved26 September 2019.
  48. ^"LLVM 11.0.0 Release Notes".releases.llvm.org. Retrieved11 March 2021.
  49. ^"BFloat16 extensions for ARMv8-A".community.arm.com. 29 August 2019. Retrieved30 August 2019.
  50. ^Weidmann, Martin (21 September 2020)."Arm A-Profile Architecture Developments 2020".community.arm.com. ARM. Retrieved28 September 2022.
  51. ^"Scalable Matrix Extension for the ARMv9-A Architecture".community.arm.com. 14 July 2021. Retrieved27 July 2021.
  52. ^Weidmann, Martin (8 September 2021)."Arm A-Profile Architecture Developments 2021".community.arm.com. ARM. Retrieved28 September 2022.
  53. ^"What is New in LLVM 15? - Architectures and Processors blog - Arm Community blogs - Arm Community". 27 February 2023. Retrieved15 April 2023.
  54. ^"Arm A-Profile Architecture Developments 2022 - Architectures and Processors blog - Arm Community blogs - Arm Community".community.arm.com. 29 September 2022. Retrieved9 December 2022.
  55. ^"Arm A-Profile Architecture Developments 2023 - Architectures and Processors blog - Arm Community blogs - Arm Community".community.arm.com. 5 October 2023. Retrieved14 October 2024.
  56. ^"Arm A-Profile Architecture Developments 2024 - Architectures and Processors blog - Arm Community blogs - Arm Community".community.arm.com. 1 October 2024. Retrieved14 October 2024.
  57. ^"Arm A-Profile Architecture developments 2025 - Architectures and Processors blog - Arm Community blogs - Arm Community".community.arm.com. 2 October 2025. Retrieved15 October 2025.
  58. ^Frumusanu, Andrei (3 September 2020)."ARM Announced Cortex-R82: First 64-bit Real Time Processor".AnandTech. Archived fromthe original on 3 September 2020.
  59. ^"Arm Architecture Reference Manual Supplement - Armv8, for Armv8-R AArch64 architecture profile".Arm Ltd.

External links

[edit]
Retrieved from "https://en.wikipedia.org/w/index.php?title=AArch64&oldid=1319185825"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp