Robots Atlas>ROBOTS ATLAS
Hardware

NEON

2005ActivePublished: 9 November 2026Updated: 9 November 2026Published
Key innovation
A standardised 128-bit SIMD extension for ARM CPUs that moved parallel vector processing (multimedia, DSP and today ML inference) from dedicated coprocessors and DSP cores into the mainstream CPU instruction pipeline.
Category
Hardware
Abstraction level
Primitive
Operation level
InferenceServingDeployment
Use cases
Accelerating LLM/ML inference on ARM CPUs (e.g. llama.cpp)Mobile and edge neural-network inferenceAudio/video decoding and encodingDigital signal processing (DSP) and filteringGraphics, image processing and multimedia compute

How it works

NEON packs multiple data elements (e.g. sixteen 8-bit or four 32-bit values) into a single 128-bit vector register and applies one instruction to all of them at once (SIMD). The instruction set covers integer and floating-point arithmetic and logic, shifts, saturating operations, vector load/store and multiply-accumulate instructions, including fused multiply-add (FMA, from VFPv4/Armv8), which is fundamental to GEMM and convolution kernels in ML. Compilers emit NEON via auto-vectorisation, or developers use intrinsics/assembly; libraries (e.g. Ne10, Arm Compute Library, llama.cpp kernels) ship ready, optimised routines. On AArch64 NEON uses 32 128-bit V registers and provides IEEE 754-compliant rounding.

Problem solved

Scalar CPU instructions process one value at a time, which is inefficient for regular, bulk computation over vectors and matrices (multimedia, DSP, neural-network multiply-accumulate). Separate coprocessors/DSP cores complicated programming and portability. NEON provides a standardised vector instruction set built into the ARM CPU, letting many operations run in parallel without a dedicated accelerator.

Components

Vector registers (Q/D/V)Hold packed data vectors for SIMD operations.

In AArch32: 16 128-bit Q registers (Q0–Q15) overlapping 32 64-bit D registers (D0–D31). In AArch64: 32 independent 128-bit V registers (V0–V31). Shared with the VFP unit.

Integer and floating-point vector operationsProcess many data elements in parallel with a single instruction.

SIMD operations on 8/16/32/64-bit integers and single-precision (32-bit) floating point; AArch64 also adds double precision, IEEE 754-compliant. Cover arithmetic, logic, shifts and saturating operations.

Fused multiply-add (FMA)The core linear-algebra operation for neural networks.

Multiply-accumulate instructions performed in one step with a single rounding (from VFPv4/Armv8). Critical for the GEMM and convolution kernels used in ML inference.

Evolution

2002
Armv6: SIMD extensions for multimedia (NEON precursor)

The Armv6 architecture introduced early SIMD-for-multimedia instructions — the direct precursor of Advanced SIMD.

2005
Armv7-A: introduction of Advanced SIMD (NEON)
Inflection point

NEON appeared as a 64-/128-bit SIMD extension of the Armv7-A architecture; present in all Cortex-A8 cores, optional in Cortex-A9.

2011
Armv8-A / AArch64: NEON made standard, 32 V registers, IEEE 754
Inflection point

In Armv8-A, Advanced SIMD (NEON) became standard for both AArch32 and AArch64. AArch64 provides 32 independent 128-bit V registers and fully IEEE 754-compliant arithmetic, including double precision.

2021
Armv9-A: SVE2 as the scalable successor

The Armv9-A architecture mainstreams SVE2 (Scalable Vector Extension 2) — a vector extension with scalable vector length, developed alongside NEON.

Execution paradigm

Primary mode
Dense

SIMD applies the same operation densely across all active vector lanes.

Activation pattern
All paths active

Parallelism

Parallelism level
Fully parallel

Data parallelism within a single vector instruction.

Scope
Inference

Hardware requirements

Primary

NEON is the native SIMD extension of ARM/AArch64 CPUs (Cortex-A, Apple Silicon, ARM servers, mobile and edge SoCs). A "CPU SIMD" category — the ARM counterpart of x86 AVX.