Arm 手臂皮质-A8:VFP和霓虹灯有什么区别
在ARM Cortex-A8处理器中,我理解NEON是什么,它是一个SIMD协处理器 但VFP(矢量浮点)单元也是一个协处理器,它能像SIMD处理器一样工作吗?如果是的话,哪一个更好 我读了一些链接,比如- 但他们的意思不是很清楚。他们说VFP从未打算用于SIMD,但在我读到以下内容时——“VFP体系结构也支持短向量指令的执行,但这些指令按顺序操作每个向量元素,因此不能提供真正的SIMD(单指令多数据)并行性的性能。”Arm 手臂皮质-A8:VFP和霓虹灯有什么区别,arm,simd,neon,cortex-a8,Arm,Simd,Neon,Cortex A8,在ARM Cortex-A8处理器中,我理解NEON是什么,它是一个SIMD协处理器 但VFP(矢量浮点)单元也是一个协处理器,它能像SIMD处理器一样工作吗?如果是的话,哪一个更好 我读了一些链接,比如- 但他们的意思不是很清楚。他们说VFP从未打算用于SIMD,但在我读到以下内容时——“VFP体系结构也支持短向量指令的执行,但这些指令按顺序操作每个向量元素,因此不能提供真正的SIMD(单指令多数据)并行性的性能。” 现在还不太清楚该相信什么,有人能详细阐述一下这个话题吗?IIRC,VFP
现在还不太清楚该相信什么,有人能详细阐述一下这个话题吗?IIRC,VFP是一个按顺序工作的浮点协处理器 这意味着您可以在浮点向量上使用指令来实现类似SIMD的行为,但在内部,指令是按顺序在向量的每个元素上执行的 虽然由于采用单加载指令,指令所需的总时间因此减少,但VFP仍需要时间来处理向量的所有元素
True SIMD将获得更高的净浮点性能,但使用带向量的VFP比使用纯顺序的VFP更快。两者之间有很大差异。Neon是作为ARM内核一部分的SIMD(单指令多数据)加速器处理器。这意味着,在执行一条指令的过程中,相同的操作将并行地发生在多达16个数据集上。由于Neon内部具有并行性,因此与以相同时钟速率运行的标准SISD处理器相比,Neon可以获得更多的MIPS或FLOP Neon的最大好处是,如果您想使用矢量执行操作,即视频编码/解码。它还可以并行执行单精度浮点(float)操作 VFP是一个经典的浮点硬件加速器。它不像霓虹灯那样是一个平行的建筑。基本上,它对一组输入执行一个操作,并返回一个输出。它的目的是加速浮点计算。它支持单精度和双精度浮点 您有3种可能使用霓虹灯:
- 使用内部函数#包括“arm_neon.h”
- 内联汇编代码
- 让gcc通过提供
作为参数来为您进行优化(GCC4.5在这方面很好)-mfpu=neon
-mfpu=neon
的较新GCC版本也不会生成浮点neon指令,除非您还指定了-funsafe数学优化
NEON现在完全符合IEE-754标准,从程序员(和编译器)的角度来看,实际上没有太大区别。双精度已矢量化。从微观架构的角度来看,我有点怀疑它们甚至是不同的硬件单元。ARM确实单独记录标量指令和矢量指令,但它们都是“高级SIMD”的一部分。嘿,Pierre,大开眼界!但是,我不能理解你所说的Shark帮助是什么意思,你能发布链接吗?由于愚蠢的原因,没有到ARM架构文档的直接链接。相反,我将iOS开发人员指向他们已经拥有的本地副本,位于/Library/Application\Support/Shark/Helpers/ARM\Help.app/Contents/Resources/ARMISA.pdf(更好的是,该文档忽略了iOS开发人员已经过时或与之无关的信息)