Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Arm Community blogs
Arm Community blogs
Architectures and Processors blog Programmer's Guide for ARMv8-A
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded and Microcontrollers blog

  • Internet of Things (IoT) blog

  • Laptops and Desktops blog

  • Mobile, Graphics, and Gaming blog

  • Operating Systems blog

  • Servers and Cloud Computing blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tell us what you think
Tags
  • Architecture
  • AArch64
  • Documentation
  • Armv8-A
  • Cortex-A
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Programmer's Guide for ARMv8-A

Michael Thomas
Michael Thomas
May 15, 2015
3 minute read time.
Following on from the popularity of the Cortex-A Series Programmer’s Guide for ARMv7-A, there is now a programmer's guide for processors implementing the ARMv8-A architecture profile.

The new Cortex-A Series Programmer's Guide for ARMv8-A is available now and does not require a click-through agreement to download.

Besides a general introduction to the ARMv8-A architecture, the guide covers:

The ARMv8-A A64 and A32 instructions sets

The most significant change introduced in the ARMv8-A architecture is the addition of a 64-bit instruction set called A64. This set complements the existing 32-bit instruction set architecture. This addition provides access to 64-bit wide integer registers and data operations, and the ability to use 64-bit sized pointers to memory.

The AArch64 execution state provides thirty one 64-bit general-purpose registers.

ARMv8-A also includes the original ARM instruction set, now called A32.

Floating-point and NEON improvements (ARM Advanced SIMD architecture)

There are now thirty-two 128-bit registers, rather than the 16 available for ARMv7.

Smaller registers are no longer packed into larger registers, but are mapped one-to-one to the lower-order bits of the 128-bit register. A single precision floating-point value uses the lower 32 bits, while double precision value uses the lower 64 bits of the 128-bit register.

ARMv8-A supports both single-precision (32-bit) and double-precision (64-bit) floating-point vector data types and arithmetic as defined by the IEEE 754 floating-point standard.

The Application Binary Interface (ABI) for ARM 64-bit software

The ABI specifies fundamental rules to which all executable native code modules must adhere so that they can work correctly together.

Changes to the exception model and exception handling

In ARMv8-A, execution occurs at one of four Exception levels. In AArch64 state, the Exception level determines the level of privilege, in a similar way to the privilege levels defined in ARMv7.

Porting software to A64

For many applications, porting code from older versions of the ARM Architecture, or other processor architectures, to A64 means simply recompiling the source code. However, there are a number of areas where code is not fully portable such as constants, atomic load and store, and conditional execution.

Memory access improvements

The ARMv8-A architecture employs a weakly-ordered model of memory. In general terms, this means that the order of memory accesses is not required to be the same as the program order for load and store operations. Hardware optimizations, such as the use of cache and write buffer, improve the performance of the processor. Bandwidth between the processor and external memory can be reduced and the long latencies associated with such external memory accesses are hidden.

Improvements for multi-core systems

The ARMv8-A architecture provides a significant level of support for systems containing multiple processing elements.

The Cortex-A53 and Cortex-A57 processors support coherency management between the different cores in a cluster to ensure that all processors or bus masters within a system have the same view of shared memory.

Coherency management and a shared interrupt controller simplify creating big.LITTLE systems that combines energy-efficient LITTLE cores with high-performance big cores.

The exception level access restrictions and TrustZone extensions provide high security for multiple processors running at different privilege levels.

New ARMv8-A Models

Platform models enable development of software without the requirement for actual hardware. Software models provide models of processors and devices from the perspective of a programmer. The functional behavior of a model is equivalent to real hardware.

The programmer's guide complements rather than replaces other ARM documentation for the Cortex-A series processors.

For information on a specific processor, see the appropriate ARM Technical Reference Manual:

  • ARM Cortex-A53 MPCore Processor Technical Reference Manual
  • ARM Cortex-A57 MPCore Processor Technical Reference Manual.

The most important and definitive reference for the ARMv8-A architecture remains the ARMv8-A Reference Manual.

Read ARMV8-A Reference Manual

Anonymous
  • Philippe Robin
    Philippe Robin over 10 years ago

    Thanks. Very nice to see this and make it easier for developers to access!

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Ping Zuo 左平
    Ping Zuo 左平 over 10 years ago

    already promoted: https://plus.google.com/b/108065586321333973698/+arm/posts/NC5HgUpHjVk

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Vatsalya Thakur
    Vatsalya Thakur over 10 years ago

    Thanks a lot Michael.
    Programming guide is one of the material which is easy and simple to understand as compared to ARM Technical reference manual.

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Alban Rampon
    Alban Rampon over 10 years ago

    Excellent indeed. I have started spreading the news. Even better your team managed to release it without any gate!

    wenjunzhang/pingzuo, this is something the technical social media audience will want to know

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
  • Chris Shore
    Chris Shore over 10 years ago

    That's great news, Michael!

    • Cancel
    • Up 0 Down
    • Reply
    • More
    • Cancel
Architectures and Processors blog
  • Introducing GICv5: Scalable and secure interrupt management for Arm

    Christoffer Dall
    Christoffer Dall
    Introducing Arm GICv5: a scalable, hypervisor-free interrupt controller for modern multi-core systems with improved virtualization and real-time support.
    • April 28, 2025
  • Getting started with AARCHMRS Features.json using Python

    Joh
    Joh
    A high-level introduction to the Arm Architecture Machine Readable Specification (AARCHMRS) Features.json with some examples to interpret and start to work with the available data using Python.
    • April 8, 2025
  • Advancing server manageability on Arm Neoverse Compute Subsystem (CSS) with OpenBMC

    Samer El-Haj-Mahmoud
    Samer El-Haj-Mahmoud
    Arm and 9elements Cyber Security have brought a prototype of OpenBMC to the Arm Neoverse Compute Subsystem (CSS) to advancing server manageability.
    • January 28, 2025