Robocikowo>ROBOCIKOWO
hardware

SVE

2016AktywnyOpublikowano: 9 listopada 2026Aktualizacja: 9 listopada 2026Opublikowany
SVE (Scalable Vector Extension) to skalowalne, wektorowe rozszerzenie SIMD architektury ARM o zmiennej długości wektora (128–2048 bitów, VLA), uzupełniające NEON — stosowane w HPC oraz akceleracji ML/LLM na CPU ARM.
Kluczowa innowacja
Wektorowe rozszerzenie SIMD o zmiennej długości wektora (vector length agnostic, 128–2048 bitów): ten sam binarny kod działa poprawnie niezależnie od szerokości rejestrów w danym procesorze, co uniezależnia oprogramowanie od konkretnej implementacji — inaczej niż NEON/AVX o stałej szerokości.
Kategoria
hardware
Poziom abstrakcji
Primitive
Poziom operacji
InferencjaUdostępnianieWdrożenie
Zastosowania
Wektoryzacja obliczeń naukowych HPC (np. superkomputer Fugaku / Fujitsu A64FX)Akceleracja inferencji modeli ML i LLM na serwerowych CPU ARM (np. AWS Graviton3)Przenośny kod wektorowy skalujący się od urządzeń brzegowych (edge) po HPCJądra algebry liniowej i GEMM dla sieci neuronowych na AArch64Przetwarzanie sygnałów i multimediów (szczególnie w SVE2)

Jak działa

SVE nie koduje długości wektora na stałe w instrukcjach. Zamiast tego operacje działają na rejestrach Z o szerokości ustalonej dopiero sprzętowo (128–2048 bitów), a sterowanie pętlą opiera się na rejestrach predykatów P: predykat wyznacza, które linie (lane) wektora są aktywne w danej iteracji, co pozwala obsłużyć resztki pętli i warunki bez osobnego kodu skalarnego. Instrukcje takie jak WHILELT generują predykat na podstawie bieżącego indeksu i granicy pętli, a INCB/CNTB zwiększają licznik o (nieznaną w czasie kompilacji) długość wektora. Dodatkowo SVE udostępnia gather-load / scatter-store dla dostępu do rozproszonych adresów oraz FFR (First Fault Register) umożliwiający spekulatywne, odporne na błędy ładowania — kluczowe przy wektoryzacji pętli o nieznanej długości. Kompilatory (GCC, LLVM/Clang) generują kod SVE przez auto-wektoryzację lub programista używa intrinsics C; ten sam binarny kod wykorzystuje pełną szerokość rejestrów danego CPU. SVE2 (Armv9-A) rozszerza zestaw o instrukcje DSP i ogólnego przeznaczenia.

Rozwiązany problem

Tradycyjne rozszerzenia SIMD (NEON, AVX) mają stałą szerokość wektora, więc kod zoptymalizowany pod jedną szerokość trzeba przepisywać lub rekompilować dla innej i nie korzysta automatycznie z szerszych jednostek. Utrudnia to przenośność między procesorami o różnej wydajności — od urządzeń mobilnych po HPC. SVE rozwiązuje to przez model vector length agnostic: jeden binarny kod działa poprawnie i skaluje się na implementacjach o szerokości 128–2048 bitów, bez wiązania oprogramowania z konkretną szerokością rejestru.

Komponenty

Zmienna długość wektora (VLA)Uniezależnia oprogramowanie od konkretnej szerokości wektora i zapewnia przenośność.

Model, w którym długość wektora nie jest zakodowana w instrukcjach. Producent wybiera sprzętową szerokość rejestru z zakresu 128–2048 bitów w wielokrotnościach 128, a kod SVE działa poprawnie na każdej z nich bez rekompilacji.

Rejestry wektorowe Z (Z0–Z31)Przechowują spakowane wektory danych dla operacji SIMD o skalowalnej długości.

32 skalowalne rejestry wektorowe o szerokości ustalanej sprzętowo (128–2048 bitów). Dolne 128 bitów każdego rejestru Z pokrywa się z odpowiednim rejestrem V (NEON).

Rejestry predykatów P (P0–P15)Sterują aktywnością linii wektora i obsługą reszt pętli oraz warunków.

16 rejestrów predykatów maskujących pojedyncze linie (lane) wektora; P0–P7 pełnią rolę predykatów rządzących (governing) dla operacji ładowania/zapisu i arytmetyki. Umożliwiają predykację per-lane i sterowanie pętlą bez osobnego kodu skalarnego.

Gather-load / scatter-storeUmożliwiają wektoryzację kodu o nieregularnym dostępie do pamięci.

Instrukcje ładowania i zapisu wektorowego z/na rozproszone, nieciągłe adresy pamięci wskazane wektorem indeksów lub offsetów.

SVE2Upowszechnia skalowalne wektory poza HPC — do zastosowań ogólnych i brzegowych.

Następca SVE wprowadzony z architekturą Armv9-A (2021), rozszerzający zestaw instrukcji o operacje DSP, multimedialne i ogólnego przeznaczenia, zachowując model VLA.

Ewolucja

Oryginalny paper · 2017 · IEEE Micro 2017 · Nigel Stephens
The ARM Scalable Vector Extension
Nigel Stephens, Stuart Biles, Matthias Boettcher, Jacob Eapen, Mbou Eyole
2016
Zapowiedź SVE jako opcjonalnego rozszerzenia Armv8.2-A
Punkt przełomowy

ARM (we współpracy z Fujitsu, pod kątem japońskiego superkomputera post-K) zapowiada SVE — skalowalne wektorowe rozszerzenie SIMD dla obliczeń HPC, komplementarne wobec NEON.

2020
Fujitsu A64FX / Fugaku: pierwsze duże wdrożenie (512-bit SVE)
Punkt przełomowy

Procesor Fujitsu A64FX z 512-bitowym SVE zasila superkomputer Fugaku, który od czerwca 2020 do maja 2022 jest najszybszym komputerem na świecie.

2021
Armv9-A: SVE2 jako skalowalne rozszerzenie ogólnego przeznaczenia

Architektura Armv9-A upowszechnia SVE2, rozszerzając zestaw instrukcji o operacje DSP, multimedialne i ogólnego przeznaczenia poza niszę HPC.

2022
AWS Graviton3: elastyczny wariant 2×256-bit SVE w chmurze

Procesor AWS Graviton3 implementuje elastyczny wariant 2×256-bitowy SVE, przenosząc skalowalne wektory do serwerowych CPU ARM w chmurze.

Hiperparametry (konfigurowalne osie)

Długość wektora (VL)Krytyczna

Sprzętowa szerokość rejestru wektorowego Z, wybierana przez producenta z zakresu 128–2048 bitów w wielokrotnościach 128. Nie jest widoczna w kodzie (VLA), ale decyduje o przepustowości na danym CPU.

512 bitów (Fujitsu A64FX / Fugaku)Pierwsze duże wdrożenie SVE.
2×256 bitów (AWS Graviton3)Elastyczny wariant w serwerach chmurowych ARM.
128 bitów (minimum specyfikacji)Dolna granica szerokości rejestru.

Paradygmat wykonania

Tryb główny
Gęsty

SIMD wykonuje tę samą operację na wszystkich liniach wektora, ale rejestry predykatów P maskują pojedyncze linie w zależności od granic pętli i warunków (predykacja per-lane).

Wzorzec aktywacji
Zależne od wejścia

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 o skalowalnej długości; stosowana zarówno w obliczeniach naukowych (HPC), jak i w inferencji ML.

Zakres
InferencjaTrening

Wymagania sprzętowe

Podstawowe

SVE to natywne, skalowalne rozszerzenie SIMD procesorów ARM/AArch64 (Fujitsu A64FX, AWS Graviton3, rdzenie Neoverse, SoC mobilne i brzegowe). Kategoria „CPU SIMD" — skalowalny odpowiednik AVX po stronie x86.