NEON (auch Advanced SIMD genannt) ist die Vektor- und SIMD-Erweiterung der ARM-Architektur. Eine NEON-Instruktion führt dieselbe Operation auf mehreren Datenwerten gleichzeitig aus – zum Beispiel acht 16-Bit-Ganzzahlen oder vier 32-Bit-Gleitkommazahlen in einem einzigen Befehl. NEON ist fester Bestandteil der Cortex-A-Prozessoren und treibt Multimedia, Codecs und Signalverarbeitung in Smartphones und eingebetteten Systemen an.
Register: D und Q
In der 32-Bit-ARMv7-Welt stehen NEON-Entwicklern zwei Sichten auf dieselben Register zur Verfügung: 32 Register zu 64 Bit (D0-D31, Doubleword) oder 16 Register zu 128 Bit (Q0-Q15, Quadword). Jedes Q-Register ist die Zusammenlegung zweier D-Register. In der 64-Bit-Architektur AArch64 (ARMv8) findet sich ein einheitlicher Satz von 32 Vektoren zu 128 Bit (V0-V31), die je nach Befehl in verschiedene Elementbreiten zerlegt werden.
Befehlsspektrum
NEON deckt Arithmetik, Logik, Vergleiche, Shifts und Datenumordnung ab – typische Mnemonics sind VADD.I16, VMUL.F32 oder VLD1 für das Laden ganzer Vektoren. In der Praxis greifen Compiler automatisch auf NEON zurück, wenn sie Schleifen vektorisieren; wer die volle Kontrolle will, nutzt Intrinsics oder Inline-Assembly.
Anwendungsfelder
Video- und Audiocodecs (H.264, HEVC, VP9), Bildverarbeitung, DSP-artige Aufgaben und seit einigen Jahren auch On-Device-KI: Frameworks wie TensorFlow Lite und PyTorch Mobile nutzen NEON, um Inferenzen auf dem Smartphone ohne Cloud-Anbindung zu beschleunigen.
Abgrenzung
Auf der x86-Seite entspricht NEON den Erweiterungen SSE und AVX. Die neuere ARM-Erweiterung SVE (Scalable Vector Extensions) richtet sich vor allem an Hochleistungsrechnen (HPC) und arbeitet mit variabler Registerbreite statt der festen 128 Bit.
Verwandte Grundlagen: SIMD, Register-Bank, Mikroarchitektur, RISC.