关于NEON的一些总结

一、NEON简介

      NEON是通用的SIMD(单指令多数据)引擎。通过NEON可以加速多媒体和信号的处理算法。NEON可以处理当前和未来的多媒体格式,从而改善用户体验。

 

 

二、NEON原理

      

o     NEON 指令可执行打包的 SIMD处理:
n        寄存器被视为同一数据类型元素矢量
n        数据类型可以为:签名/未签名的 8 位、16 位、32 位、64 位单精度浮点
n
          原理图如下:
   
 
            下图通过SISD(单指令单数据)和SIMD(单指令多数据)的对比,来说明NEON的工作原理:
 
            
      从图上可以看到,对于SISD,每个指令只能处理一个数据,而SIMD一个指令可以处理多个数据,因为多个数据的处理是平行的,因此从时间来说,一个指令执行的时间,SISD和SIMD是差不多的。由于SIMD一次可以处理N个数据,所以它的处理的时间也就缩短到SISD的1/N。
     需要指出一点,NEON是需要硬件的支持的,需要有一块寄存器放到硬件上来处理这个的。
 
 
三、NEON的使用
      
o      NEON的函数是C语言风格,但是编译后成为汇编语句,这样执行的效率会提高。
o
 
四、NEON举例
   
    下面是一个用C现实的将GRB转化成灰度图的算法 
     关于NEON的一些总结_第1张图片
      
    下面是一个用NEON现实的将GRB转化成灰度图的算法 
 
     关于NEON的一些总结_第2张图片
      对以上函数进行说明如下:
    
       把权重放入 NEON寄存器
   
   
    
    一次载入 8 pixles 到三个 NOEN 寄存器,这个地方是重点可以说明NEON的高效率。
   
  
       计算结果
      
       
      
      NEON函数参考gcc工具里面的gcc.pdf文档 NEON部分。
       指令在所有通道中执行同一操作

你可能感兴趣的:(算法,汇编,gcc,文档,语言,引擎)