Apple A4之NEON技术——NEON寄存器架构

Apple A4处理器以及iPhone3GS、iPod Touch3代32GB和64GB版本所使用的三星ARM cortex A-8处理器支持了完整的ARM NEON技术。

ARM NEON技术是英国ARM公司在其最新的ARMv7架构中添加的一项128位SIMD技术,能够实现8位到64位不同长度的向量算术逻辑计算。

这些处理器支持的NEON特征为:VFPv3-D32加Advanced SIMD。

也就是说,SIMD寄存器共有16个128位的向量寄存器构成。而32个双精度浮点寄存器共享了这16个寄存器;32个单精度浮点寄存器共享了前8个寄存器。因此,这寄存器组是与浮点寄存器共享的。

单精度寄存器用s0~s31表示;双精度寄存器用d0~d31来表示;而128位的SIMD寄存器则用q0~q15来表示。

 

这些寄存器可以通过向量指令后缀.<size>来表示整个向量里的每个元素占多少字节,当然,每个元素的字节长度都是一样的。因此<size>只能有8,16,32和64。.F<size>表示单精度浮点数据类型;.I<size>表示整数类型;.P<size>表示多项式类型;.S<size>表示带符号的整型;.U<size>表示无符号整型。

 

这些寄存器标识后面可以跟后缀[i]来表示当前向量的第i个元素(索引从0开始,并且从低到高)。比如,对于d0,d0[1]表示d0的第二个元素(索引0为第一个元素)。如果我使用指令:vld1.32     {d0[1]}, [r0]

那就是将r0所指的地址的32位数据内容加载到d0的高32位。由于是对一个64位寄存器做32位的向量操作,因此,向量只有2个元素,并且每个元素的长度为32位。

 

你可能感兴趣的:(apple,iPhone,三星)