Architecture fundamentals

AARCH64 orange coloured icon

Introducing the Arm Architecture

This guide provides a non-technical introduction to the Arm Architecture.

View the guide

AArch64 Exception model

This guide introduces the exception and privilege model in AArch64. 

View the guide

AArch64 Instruction Set Architecture (ISA)

This guide introduces the A64 instruction set used in AArch64.

View the guide View the exercises

AArch64 memory management

This guide introduces the MMU, which is used to control virtual to physical address translation.

View the guide View the examples

AArch64 memory model

This guide introduces the memory model in AArch64. It describes memory attributes and the basics of memory ordering.

View the guide

Understanding the Armv8.x extensions

This guide explains extensions to the Arm architecture and provides guidance on how to read and use them.

View the guide

AArch64 self-hosted debug

This guide introduces debug and the Armv8-A AArch64 debug architecture that is incorporated into the Arm architecture for application class processors.

View the guide

AArch64 external debug

This guide provides an overview of external debug, and describes the external debug features that the architecture supports.

View the guide

Introducing CoreSight: Debug and trace infrastructure

This guide introduces the debug and trace infrastructure support that is provided by the Arm CoreSight Architecture.

View the guide

Advanced features

Secured processor yellow coloured icon

AArch64 Virtualization

This guide describes the virtualization support in the Armv8-A AArch64, including basic virtualization theory, stage 2 translation, virtual exceptions, and trapping.

View the guide

Generic Interrupt Controller

This guide provides an overview of the GIC, describing the operation of a GICv3 compliant interrupt controller, and providing information about configuration for use in a bare metal environment.

View the guide

AArch64 Generic Timer

This guide introduces the Generic Timer, the timer framework for A-profile PEs.

View the guide


Security lock green coloured icon

Introduction to security

This guide introduces some generic concepts about security. These concepts apply to the secure compute platforms that Arm provides for a range of security-focused applications.

View the guide

TrustZone for AArch64

This guide introduces TrustZone, an efficient, system-wide approach to security with hardware-enforced isolation built into the CPU.

View the guide

Providing protection for complex software

This guide examines the features in Armv8-A that help to mitigate against software attacks including pointer authentication, branch target authentication, and memory tagging.

View the guide

Introducing Arm Confidential Compute Architecture

This guide explains the principles of confidential computing, and describes how the Arm Confidential Compute Architecture enables confidential computing in an Arm compute platform. 

View the guide

Realm Management Extension

This guide introduces the Realm Management Extension, a hardware component of the Arm Confidential Compute Architecture.

View the guide

Arm Confidential Compute Architecture software stack

This guide describes the key software features that the Arm Confidential Compute Architecture introduces or changes to provide an environment for confidential computing.

View the guide

Software development

Software models lught blue coloured icon

Introducing Neon 

This guide introduces Arm Neon technology, the Advanced SIMD (Single Instruction Multiple Data) architecture extension for implementation of the Armv8–A or Armv8–R architecture profiles.

View the guide

Optimizing C code with Neon intrinsics

This guide shows you how to use Neon intrinsics in your C, or C++, code to take advantage of the Advanced SIMD technology in the Armv8 architecture.

View the guide

Compiling for Neon with auto-vectorization

This guide shows how to use the auto-vectorization features in Arm Compiler 6 to automatically generate code that contains Armv8 Advanced SIMD instructions.

View the guide

Neon Programmers Guide

This series of guides introduces Neon, shows you how to optimise C code using intrinsics, and how to use your compiler to automatically generate code that contains Armv8 advanced SIMD instructions.

View the guide

Use the Memory Model Tool

Learn more about the Memory Model Tool, explore a working example, and learn how to automatically generate litmus tests.

View part 1 View part 2

Migrating from Neon to SVE

This guide describes the differences between the Scalable Vector Extension (SVE) of the Armv8-A instruction set and the Advanced SIMD architectural extension (Neon). It also describes the coding best practices for both.

View the guide

SVE and SVE2

This guide introduces the version 2 of the Scalable Vector Extension (SVE2), which is part of the Armv9-A architecture. It describes the extension concept, main features, application domains, and how to develop programs for SVE2.

View the guide

SVE and SVE2 programming examples

This guide provides an in-depth description into Scalable Vector Extension (SVE) and Scalable Vector Extension V2 (SVE2), illustrated with extensive code examples. The guide shows software developers how to explain SVE or SVE2 in their software.

View the examples

Boot: bare metal

We're working on a new guide. Until it's ready, you can read our Application Note Bare-metal Boot Code for Armv8-A Processors.

View the guide

Before debugging

This guide describes concepts that are useful to know before debugging an Armv8-A processor, including different types of debug, target types and target states.

View the guide

Building your first embedded image

This guide describes how create an embedded image, including compiling the program, specifying the memory map, use a model to run the image. 

View the guide

Understanding trace

This guide provides a high-level view of trace in Armv7 and some Armv8 systems, including how trace works and is used.

View the guide

Debugger usage

This guide focuses on characteristics that are common to bare-metal debuggers that target the Armv8-A architecture. It also covers what you need to know when you work with debuggers, and possible consequences of their use.

View the guide

Accelerating DSP functions with the DOT instructions

This blog describes three use cases for the Armv8.4-A dot product instructions, and shows how we used these instructions to improve the performance of the libvpx implementation of VP9.

Learn more

SVE and Neon coding compared

This guide summarizes the important differences between coding for the Scalable Vector Extension (SVE) and coding for Neon. For users who have already ported their applications to Armv8-A Neon hardware, the guide also highlights the key differences to consider when porting an application to SVE.

View the guide