---
title: ARM架构SIMD指令集发展史
description: "ARM最早支持SIMD指令集是ARMv6。这一代SIMD指令集依赖的向量寄存器，复用了ARM本身的通用寄存器。支持8/16 bit整数，可以实现4个8 bit整数或者2个16 bit整数的并行计算。在ARMv7-A架构中，ARM进一步发展自身的SIMD指令集，并命名为NEON。这一代的指令集，有32个64 bit的NEON向量寄存器，同时也支持单精度浮点。而在ARMv8-A架构中，NEON指令集进一步得到发展，32个向量寄存器的长度都增加到128 bit。支持8/16/32/64 bit整数，同时支持单精度和双精度浮点运算。"
url: https://www.hikunpeng.com/document/detail/zh/perftuning/progtuneg/kunpengprogramming_05_0019.html
sourcePath: /source/zh/perftuning/progtuneg/kunpengprogramming_05_0019.html
indexId: 0a464b75ffae124f0111df64375428ce4cce436a60e10b1c366de0afe98b01b463
---
# ARM架构SIMD指令集发展史

ARM最早支持SIMD指令集是ARMv6。这一代SIMD指令集依赖的向量寄存器，复用了ARM本身的通用寄存器。支持8/16 bit整数，可以实现4个8 bit整数或者2个16 bit整数的并行计算。在ARMv7-A架构中，ARM进一步发展自身的SIMD指令集，并命名为NEON。这一代的指令集，有32个64 bit的NEON向量寄存器，同时也支持单精度浮点。而在ARMv8-A架构中，NEON指令集进一步得到发展，32个向量寄存器的长度都增加到128 bit。支持8/16/32/64 bit整数，同时支持单精度和双精度浮点运算。

NEON的向量寄存器长度虽然是128 bit，但也可以复用为32 bit Sn寄存器或者64 bit Dn寄存器。复用的方式如图1所示。

图1 NEON向量寄存器
