在ARM Cortex-A8处理器中,我了解NEON是什么,它是SIMD协处理器。

但是,也是协处理器的VFP( vector 浮点)单元是否可以用作SIMD处理器?如果是这样,哪个更好使用?

我读了一些链接,例如-

  • Link1
  • Link2

  • 但不是很清楚他们的意思。他们说,VFP从未打算用于SIMD,但在Wiki上,我读到以下内容:“VFP架构还支持执行短 vector 指令,但这些指令顺序地在每个 vector 元素上运行,因此不提供真正的SIMD性能(单指令多数据)并行性。”

    尚不清楚该相信什么,任何人都可以在这个话题上做更多的阐述吗?

    最佳答案

    两者之间有相当大的差异。 Neon是SIMD(单指令多数据)加速器处理器,是ARM内核的一部分。这意味着在执行一条指令期间,将对多达16个数据集并行执行相同的操作。由于Neon内部存在并行性,因此与以相同时钟频率运行的标准SISD处理器相比,您可以从Neon中获得更多的MIPS或FLOPS。

    Neon的最大好处是,如果您想使用 vector 执行操作,即视频编码/解码。它还可以并行执行单精度浮点(float)操作。

    VFP是经典的浮点硬件加速器。它不是像Neon这样的并行架构。基本上,它对一组输入执行一个操作并返回一个输出。目的是加快浮点计算。它支持单精度和 double 浮点。

    您可以使用3种 NEON :

  • 使用内在函数#include“arm_neon.h”
  • 内联汇编代码
  • 通过提供-mfpu=neon作为参数让gcc为您做优化(gcc 4.5很好)
  • 关于arm - ARM Cortex-A8:VFP和NEON有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4097034/

    10-12 02:14