|
1
42
两者之间有很大的区别。Neon是作为ARM核心的一部分的SIMD(单指令多数据)加速器处理器。这意味着在执行一条指令的过程中,最多16个数据集将并行执行相同的操作。由于Neon内部存在并行性,因此Neon中的MIPS或FLOPS比以相同时钟速率运行的标准SISD处理器要多。 Neon的最大好处是如果你想用向量来执行操作,即视频编码/解码。它还可以并行执行单精度浮点(float)操作。 VFP是一种典型的浮点硬件加速器。它不像霓虹灯那样是一个并行架构。基本上,它对一组输入执行一个操作并返回一个输出。它的目的是加速浮点运算。它支持单精度和双精度浮点运算。
|
|
|
2
17
适用于armv7 ISA(及变型) NEON是一个用于整数和浮点数据的SIMD并行数据处理单元,VFP是一个完全兼容IEEE-754的浮点单元。尤其是在A8上,霓虹灯的速度比任何东西都快得多,即使你没有高度并行的数据,因为VFP是非流水线的。 那你为什么要用VFP呢?!
其次,VFP提供了一些专门的指令,在NEON单元中没有相应的实现。想到SQRT,可能是一些类型转换。
适用于armv8+ISA(及变型) [更新] NEON现在完全符合IEE-754,从程序员(和编译器)的角度来看,实际上没有太大的区别。双精度已矢量化。从微观架构的角度来看,我怀疑它们甚至是不同的硬件单元。ARM单独记录标量和矢量指令,但两者都是“高级SIMD”的一部分 |
|
|
3
16
在体系结构上,VFP(它并不是毫无意义地称为向量浮点)确实提供了在单个指令中操作浮点向量的功能。我不认为它会同时执行多个操作(比如真的SIMD),但它可以节省一些代码大小。但是,如果您阅读Shark帮助中的ARM架构参考手册(如我在NEON简介中所述,问题中的link 1),您将在A2.6节看到,在ARMv7中VFP的矢量特性已被弃用(这是Cortex A8实现的),软件应使用高级SIMD进行浮点矢量操作。
希望这能解决问题! |
|
4
2
这意味着您可以在浮点向量上使用指令来实现类似SIMD的行为,但在内部,指令是在向量的每个元素上执行的 按顺序 . 虽然由于使用了单加载指令,因此减少了指令所需的总时间,但VFP仍然需要时间来处理矢量的所有元素。 真正的SIMD将获得更多的净浮点性能,但是使用带向量的VFP比使用纯顺序的VFP更快。 |