Robocikowo>ROBOCIKOWO
hardware

NEON

2005AktywnyOpublikowano: 9 listopada 2026Aktualizacja: 9 listopada 2026Opublikowany
NEON (Advanced SIMD) to zestaw 128-bitowych instrukcji SIMD w architekturze ARM do równoległego przetwarzania wektorowego — multimediów, DSP oraz akceleracji inferencji ML na CPU.
Kluczowa innowacja
Standaryzowane, 128-bitowe rozszerzenie SIMD dla procesorów ARM, które przeniosło równoległe przetwarzanie wektorowe (multimedia, DSP, dziś inferencja ML) z koprocesorów i rdzeni DSP do głównego potoku instrukcji CPU.
Kategoria
hardware
Poziom abstrakcji
Primitive
Poziom operacji
InferencjaUdostępnianieWdrożenie
Zastosowania
Akceleracja inferencji LLM/ML na CPU ARM (np. llama.cpp)Mobilne i brzegowe (edge) przetwarzanie sieci neuronowychDekodowanie i kodowanie audio/wideoPrzetwarzanie sygnałów (DSP) i filtracjaGrafika, przetwarzanie obrazu i obliczenia multimedialne

Jak działa

NEON pakuje wiele elementów danych (np. szesnaście 8-bitowych lub cztery 32-bitowe wartości) do jednego 128-bitowego rejestru wektorowego i wykonuje na nich jedną instrukcję jednocześnie (SIMD). Zestaw obejmuje operacje arytmetyczne i logiczne na liczbach całkowitych i zmiennoprzecinkowych, przesunięcia, operacje z nasyceniem, ładowanie/zapisy wektorów oraz instrukcje mnożenia z akumulacją, w tym fused multiply-add (FMA, od VFPv4/Armv8), fundamentalne dla jąder GEMM i splotów w ML. Kompilatory generują kod NEON przez auto-wektoryzację lub programista używa intrinsics/asemblera; biblioteki (np. Ne10, Arm Compute Library, jądra w llama.cpp) dostarczają gotowe, zoptymalizowane rutyny. W AArch64 NEON korzysta z 32 rejestrów 128-bitowych V i zapewnia zaokrąglanie zgodne z IEEE 754.

Rozwiązany problem

Skalarne instrukcje CPU przetwarzają jedną wartość na raz, co jest nieefektywne dla regularnych, masowych obliczeń na wektorach i macierzach (multimedia, DSP, mnożenia w sieciach neuronowych). Osobne koprocesory/DSP komplikowały programowanie i przenośność. NEON dostarcza standaryzowany, wektorowy zestaw instrukcji wbudowany w CPU ARM, który pozwala wykonać wiele operacji równolegle bez dedykowanego akceleratora.

Komponenty

Rejestry wektorowe (Q/D/V)Przechowywanie spakowanych wektorów danych dla operacji SIMD.

W AArch32: 16 rejestrów 128-bitowych Q (Q0–Q15) nakładających się na 32 rejestry 64-bitowe D (D0–D31). W AArch64: 32 niezależne rejestry 128-bitowe V (V0–V31). Dzielone z jednostką VFP.

Operacje wektorowe całkowite i zmiennoprzecinkoweRównoległe przetwarzanie wielu elementów danych jedną instrukcją.

Operacje SIMD na liczbach całkowitych 8/16/32/64-bit oraz zmiennoprzecinkowych pojedynczej precyzji (32-bit); w AArch64 także podwójnej precyzji, zgodnie z IEEE 754. Obejmują arytmetykę, logikę, przesunięcia i operacje z nasyceniem.

Fused multiply-add (FMA)Podstawowa operacja algebry liniowej dla sieci neuronowych.

Instrukcje mnożenia z akumulacją w jednym kroku z pojedynczym zaokrągleniem (od VFPv4/Armv8). Krytyczne dla jąder GEMM i splotów wykorzystywanych w inferencji ML.

Ewolucja

2002
Armv6: rozszerzenia SIMD dla multimediów (prekursor NEON)

Architektura Armv6 wprowadziła wczesne instrukcje SIMD dla multimediów — bezpośredniego poprzednika Advanced SIMD.

2005
Armv7-A: wprowadzenie Advanced SIMD (NEON)
Punkt przełomowy

NEON pojawił się jako 64-/128-bitowe rozszerzenie SIMD architektury Armv7-A; obecny we wszystkich rdzeniach Cortex-A8, opcjonalny w Cortex-A9.

2011
Armv8-A / AArch64: NEON standardem, 32 rejestry V, IEEE 754
Punkt przełomowy

W Armv8-A Advanced SIMD (NEON) stał się elementem standardowym dla AArch32 i AArch64. AArch64 daje 32 niezależne rejestry 128-bitowe V i w pełni zgodną z IEEE 754 arytmetykę, w tym podwójną precyzję.

2021
Armv9-A: SVE2 jako skalowalny następca

Architektura Armv9-A upowszechnia SVE2 (Scalable Vector Extension 2) — wektorowe rozszerzenie o skalowalnej długości wektora, rozwijane obok NEON.

Paradygmat wykonania

Tryb główny
Gęsty

SIMD wykonuje tę samą operację gęsto na wszystkich aktywnych liniach (lane) wektora.

Wzorzec aktywacji
Wszystkie ścieżki aktywne

Równoległość

Poziom równoległości
W pełni równoległy

Równoległość danych (data parallelism) w obrębie pojedynczej instrukcji wektorowej.

Zakres
Inferencja

Wymagania sprzętowe

Podstawowe

NEON to natywne rozszerzenie SIMD procesorów ARM/AArch64 (Cortex-A, Apple Silicon, serwery ARM, SoC mobilne i edge). Kategoria „CPU SIMD" — odpowiednik AVX po stronie x86.