最近正在学习利用 cortex-A9 的neon intrinsics 优化已有的程序,看了一些技术白皮书有几个疑问:
1.我原先的程序用的是双精度浮点数(double precision,64bit length),用Neon的话只能处理16位的浮点数吗?(因为文档里只介绍了半精度浮点数,所以不是很了解)
2.我用VFP处理浮点数是否比Neon的SIMD技术更优呢?
不胜感激!
1. NEON只能处理32位浮点数, 16/64位浮点是由VFP处理的
2. VFP支持的浮点类型更多,但是不能并行,而NEON能最多并行处理四条浮点数据通道,这样还是大大增加了运算能力
neon intrinsic是利用NEON硬件的有效方式,建议你可以先了解NEON的基本指令集,然后再利用intrinsic实现
可以参考以下文档:
ARM Compiler toolchain Assembler Reference
ARM Compiler toolchain Compiler Reference
Thanks
Hi Zhangyang,你速度好快,赞
我目前的任务是在已有的C语言基础上用NEON进行优化,而且之前也没什么硬件背景,您可否给一些具体的建议呢?
用NEON优化有的C程序,建议你先熟悉NEON指令,先用NEON实现功能,在逐步调优,实现性能优化。
我之前列出的文档可供参考学习