简单来讲,NEON其实是一种SIMD(Single Instruction MultipleData 单指令流多数据流)技术。而SIMD,是指采用一个控制器来控制多个处理单元(处理器/处理微元),同时对一组数据中的每一个分别执行相同的操作从而实现空间上的并行性的技术。如下图所示。
而NEON,另外一个名字是AdvancedSIMD,是ARM-v7架构(CortexA8和A9都是v7构架)中定义的SIMD技术。该技术只适用于ARMCortex-A系列处理器,比如我们这里的Cortex A9处理器。
其实在SIMD前面加了一个Advanced,我想应该是为区别与ARM之前的SIMD技术的区别。用ARM网站自己的话来说,就是在ARM-v6 体系结构(比如ARM11就是v6构架)中的SIMD是 32 位宽 ,而ARM-v7构架中的NEON™ 技术是根据SIMD 概念构建的,采用一个专用模块提供 64位/128 位宽的矢量操作。
这是来自ARM网站的一张介绍NEON运算的示意图。
NEON 支持 8-, 16-, 32- 和 64-bit 的整数及单精度浮点数据,并以 SIMD的方式运算,运行图形和游戏处理中关于语音/视频的部分。在 NEON 中,SIMD 最高可支持到同时 16个运算。这个时候是以8bit的数据运算,而NEON的位宽是128bit,即为16个运算。
另外一个NEON显著的特点是是他和VFP单元共用自己的寄存器堆,而与主核的寄存器堆区别开。
一些数据显示:NEON 可以在 10 MHz 的 CPU 上运行 MP3 音效解码,且可以运行 13 MHz 频率以下的 GSMAMR (Adaptive Multi-Rate) 语音编码。 |