NEON 学习参考文档:
ARM NEON优化(一)——NEON简介及基本架构 - Orchid Bloghttp://zyddora.github.io/2016/02/28/neon_1/
neon intrinsics函数
Intrinsics – Arm Developerhttps://developer.arm.com/architectures/instruction-sets/intrinsics/
三大主流芯片架构
1、ARM 2、MIPS 3、x86
编译器自动向量化,往往发挥不了neon的最佳性能,这时候可能需要你借组内联的Neon Intrinsics(arm_neon.h提供),甚至嵌套neon的汇编指令来进行优化
1、neon简述
NEON是指适用于Arm Cortex-A系列处理器的一种高级SIMD(单指令多数据)扩展指令集。NEON 技术可加速多媒体和信号处理算法(如视频编码/解码、2D/3D 图形、游戏、音频和语音处理、图像处理技术、电话和声音合成)。Single Instruction Multiple Data (SIMD)顾名思义就是“一条指令处理多个数据(一般是以2为底的指数数量)”的并行处理技术
NEON 指令可执行并行数据处理:
个人理解 neon就是通过对arm内部的一些特有寄存器做运算操作,以便能加速运算
2、Arm 高级SIMD发展历史
3、 为什么要用NEON
(1)支持整数和浮点操作,以确保适合从编解码器、高性能计算到 3D 图形等广泛应用领域。
(2)与 Arm处理器紧密结合,提供指令流和内存的统一视图,编程比外部硬件加速器更简单。
4、NEON指令格式
NEON寄存器:
- 16×128-bit寄存器(Q0-Q15);
- 或32×64-bit寄存器(D0-D31)
- 或上述寄存器的组合。
- ps每一个Q0-Q15寄存器映射到一对D寄存器