DSP

NEON的一些总结

2019-07-13 18:33发布

参考文章: 1、http://blog.sina.com.cn/s/blog_4ae178ba01013yax.html 2、http://blog.csdn.net/conowen/article/details/7255920 3、【整理】SIMD、MMX、SSE、AVX、3D Now、NEON
http://www.arm.com/zh/products/processors/technologies/neon.php
4、ARM汇编指令 http://infocenter.arm.com/help/basic/help.jsp?topic=/com.arm.doc.dui0204ic/CJAJIIGG.html
5、ARM体系架构参考手册 http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0406c/index.html
一、NEON简介         ARM® NEON™ 通用 SIMD 引擎可有效处理当前和将来的多媒体格式,从而改善用户体验。NEON 技术可加速多媒体和信号处理算法(如视频编码/解码、2D/3D 图形、游戏、音频和语音处理、图像处理技术、电话和声音合成),其性能至少为 ARMv5 性能的 3 倍,为 ARMv6 SIMD 性能的 2 倍。        通过干净方式构建的 NEON 技术可无缝用于其本身的独立管道和寄存器文件。         NEON 技术是 ARM Cortex™-A 系列处理器的 128 位 SIMD(单指令,多数据)架构扩展,旨在为消费性多媒体应用程序提供灵活、强大的加速功能,从而显著改善用户体验。它具有 32 个寄存器,64 位宽(双倍视图为 16 个寄存器,128 位宽。)。 二、NEON的特点和优点 1、NEON支持用于Internet应用程序的范围广泛的多媒体编解码器 (1)许多软编解码器标准:MPEG-4、H.264、On2 VP6/7/8、Real、AVS (2)对于各种格式的正常大小的“Internet 流”解码来说,是理想的解决方案
(3)不仅仅针对编解码器,还适用于 2D 和 3D 图形和其他矢量处理
(4)提供现有工具、操作系统支持生态体系支持 2、所需周期减少 (1)NEON 可使复杂视频编解码器的性能提升 60-150% (2)单个简单 DSP 算法可实现更大的性能提升(4 倍 -8 倍) (3)处理器可更快进入睡眠状态,从而在整体上节约了动态功耗
3、NEON技术的大量元素能够提高性能并简化软件的开发过程,如:
(1)通过对齐和非对齐数据访问,可对 SIMD 操作进行有效的矢量化。
(2)清晰的指令集架构,设计用于自动矢量化编译器和手动编码。
(3)有效访问打包数组,如 ARGB 或 xyz 坐标
(4)支持整数和浮点操作,以确保适合从编解码器、高性能计算到 3D 图形等广泛应用领域。
(5)与 ARM 处理器紧密结合,提供单指令流和内存的统一视图,从而能够提供一个具有更简单工具流的开发平台目标。nbsp;
(6)通过具有双 128 位/64 位视图的大型 NEON 寄存器文件,可有效处理数据并尽可能减少对内存的访问,从而增加了数据吞吐量。 三、工作原理 NEON 指令可执行“打包的 SIMD”处理:
(1)寄存器被视为同一数据类型元素矢量 (2)数据类型可为:签名/未签名的 8 位、16 位、32 位、64 位单精度浮点
(3)指令在所有通道中执行同一操作                                 
使用 NEON 技术的 ARM Cortex™-A 系列处理器,以及 ARM 的 Mali 多媒体硬件解决方案可用于多媒体应用,范围从智能手机移动计算设备到HDTV
从图上可以看到,对于SISD,每个指令只能处理一个数据,而SIMD一个指令可以处理多个数据,因为多个数据的处理是平行的,因此从时间来说,一个指令执行的时间,SISD和SIMD是差不多的。由于SIMD一次可以处理N个数据,所以它的处理的时间也就缩短到SISD的1/N。 需要指出一点,NEON是需要硬件的支持的,需要有一块寄存器放到硬件上来处理这个的。