| <bgcolor=#96834a> 명령어 집합 | |
| CISC | x86 (AMD64● · IA-32● · IA-16) · M68K · MC68xx · MOS 65xx · Z80 · 8080 · 8051 System/360 · z/Architecture · PDP-11 · VAX |
| RISC | Arm (A64 · A32 · T32) · RISC-V● · MIPS● · DEC Alpha● · Power ISA IBM Power · PowerPC · CELL-BE LoongArch · OpenRISC · PA-RISC · SPARC SuperH · Xtensa · AVR AVR32 |
| VLIW EPIC | E2K · IA-64 · Crusoe |
| <rowcolor=#fff> Arm 아키텍처 | |
| 명령어 집합 | A64 · A32 · T32 Thumb · Thumb-2 · Thumb-EE · Jazelle |
| SIMD · 부동소수점 확장 | |
| 부동소수점 | VFP · FP16 · BF16 |
| SIMD/벡터 | Neon · MVE Helium · SVE SVE2 |
| 행렬 | SME SME2 |
| 기타 확장 | |
| 보안 | TrustZone · PAC · BTI · MTE · TME · CCA |
| 암호화 | AES · PMULL · SHA1 · SHA2 · SHA3 · SM3 · SM4 |
| 메모리 | LSE LSE2 · LSE128 · LRCPC LRCPC2 · LRCPC3 |
| 가상화 | VHE · NV2 |
1. 개요
Arm 아키텍처의 SIMD 확장 명령어 세트이다. ARMv8 이후 정식 명칭은 Advanced SIMD이며, Neon은 Arm의 상표명이다.ARMv7-A에서 선택 사항으로 도입되었으며, ARMv8-A 이후 보편화되었다. 처리 단위는 최대 128비트이다.
후속 확장으로 128비트와 2048비트 사이 가변 길이 구현을 지원하는 Arm SVE가 있으나, 대부분의 지원 프로세서가 SVE를 128비트로 구현하였으며, Apple Silicon에서는 지원되지 않거나 극히 제한적으로 지원되기 때문에 여전히 Neon이 주력으로 사용되고 있다.
2. 특징
AArch32 모드에서의 실행 모델과 AArch64 모드에서의 실행 모델이 다르다.3. 역사
Arm 아키텍처 초기에는 DSP/SIMD 명령어가 없었으며, 2000년대 초반 ARMv6에서 SIMD 명령어가 처음 도입되었지만 32비트 크기의 일반 레지스터를 재활용하는 방식이어서 처리량에 한계가 있었다.이에 따라 당시 ARM 기반 XScale을 개발하던 인텔이 MMX를 이식한 커스텀 SIMD 확장인 iwMMXt를 발표하는 등 벤더별로 SIMD 구현이 파편화되었다.
3.1. ARMv7
2005년 ARMv7-A 발표와 함께 선택사항으로 SIMD 확장인 NEON이 도입되었다.2000년대 후반부터 TI OMAP, 삼성 허밍버드 등의 NEON 지원 프로세서를 탑재한 스마트폰이 출시되었으나, Tegra 2 등 NEON을 지원하지 않는 프로세서도 있었으며 인텔에게 XScale 사업을 넘겨받은 Marvell은 한동안 자체 확장인 iwMMXt를 사용하였다.
3.2. ARMv8 및 이후
2011년 ARMv8-A에서 Advanced SIMD라는 이름으로 계승되었다.4. 사양
각 모드에 맞는 사양을 서술한다.4.1. AArch32 (ARMv7)
4.2. AArch64 (ARMv8/ARMv9)
5. 기타
- 2017년 Arm이 브랜드를 대문자 ARM에서 소문자 Arm으로 바꾸면서 표기도 NEON에서 Neon으로 바뀌었다. 공식 문서는 여전히 Advanced SIMD라는 명칭을 사용한다.
FJCVTZS는 JavaScript의 ToInt32 처리를 위해 추가된 전용 명령어이다. RISC-V의 Zfa 확장에도 같은 목적으로fcvtmod.w.d라는 명령어가 존재한다.