ARM Neon基础知识(二)

本文深入探讨了微处理器指令处理数据的方法,重点介绍了ARM架构中的Single Instruction Multiple Data (SIMD)技术,特别是向量模式。在ARMv5中引入的向量浮点(VFP)扩展为浮点运算提供了加速,而在ARMv7中,NEON技术进一步提升了SIMD操作的效率,尤其是在宽寄存器上的多操作执行。
摘要由CSDN通过智能技术生成

1. 下面介绍了微处理器指令处理数据的常用方法:

        A. 单指令单数据SISD(Single Instruction Single Data)

        B.  单指令多数据SIMD(Single Instruction Multiple Data)向量模式

        C.  单指令多数据SIMD(Single Instruction Multiple Data)压缩数据模式


A. 单指令单数据SISD

       每个指令指定单个数据源进行处理,处理多个数据项需要多个指令。这种处理方式比较慢,而且数据项分布在不同的寄存器中,很难看出数据项的相关性。为了改善性能和效率,媒体处理经常被加载到诸如GPU(Graphics Processing Unit)或者多媒体处理单元(Media Processing Unit)这样的专用处理器中,他们可以用单指令处理多数据。在ARM 32位处理器上,处理大量8-bit或16-bit数据并没有有效利用处理器资源,因为处理器,寄存器、数据总线这些都是32位的。如下面所示的加法操作,每一操作元都是单个数据:

                              add r0, r5
                              add r1, r6
                              add r2, r7
                              add r3, r8

B. 单指令多数据SIMD(向量模式)

       操作可以指定对多个数据源进行相同的处理。若控制寄存器中LEN长度为4,则单个向量加法指令在4个地址上执行。在ARM术语中,这被称为向量浮点运算。在ARMv5架构中引入了向量浮点(VFP)扩展执行短向量指令以加速浮点运算。源和目标寄存器可以是标量操作的单个寄存器,也可以是两个序列(8个寄存器)的矢量操作。因为SIMD操作比VFP操作更有效地执行向量计算,矢量模式操作在ARMv7上被弃用,取而代之的是NEON技术在宽寄存器上执行多种操作。浮点和NEON的操作使用共通的通用寄存器。

                              VADD.F32 S24, S8, S16
                              // four operations occur
                              // S24 = S8 +S16
                              // S25 = S9 +S17
                              // S26 = S10 +S18
                              // S27 = S11 +S20


C. 单指令多数据SIMD(打包数据模式)
        操作可以指定对存储在一个大的寄存器中的多个数据字段进行相同的处理。这样的操作在ARM术语中叫做Advanced SIMD technology or NEON technology.
        图中所示的加法操作是真正独立的,数据的溢出或移位不会对前面数据的末位产生影响,数据之间是独立计算的。
                              VADD.I16 Q10, Q8, Q9
                              // One operation adds two 64-bit registers,
                              // but each of the four 16-bit lanes in the register is added separately.
                              // There are no carries between the lanes
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值