为啥他们仍然有单独的浮点单元,如果在 ARM 皮质处理器中有用于快速处理浮点的 Neon。 [关闭]

Posted

技术标签:

【中文标题】为啥他们仍然有单独的浮点单元,如果在 ARM 皮质处理器中有用于快速处理浮点的 Neon。 [关闭]【英文标题】:Why they still have separate floating point unit , if there is Neon for fast processing of floating points in ARM cortex processors. [closed]为什么他们仍然有单独的浮点单元,如果在 ARM 皮质处理器中有用于快速处理浮点的 Neon。 [关闭] 【发布时间】:2016-05-27 10:38:52 【问题描述】:

Neon(高级 SIMD)对于单精度和双精度等加法、减法、乘法和浮点运算非常快。如图所示,为什么 ARM 公司还有另一个独立的浮点计算单元。 我对此有点困惑。

【问题讨论】:

因为漂亮的营销图片不是微架构的准确文档? 这个不是正确答案。不满意。 这不是一个答案——它是一个评论指出问题是无效的,因为它基于不正确的假设:NEON 不执行双精度——支持 NEON 的 FPU 仍然为此实现 VFP 指令——和Cortex-A9's data engine options are mutually exclusive。营销图片上的任意框不代表实际的管道。 FPU 早于 NEON。 NEON 是 SIMD,FPU 不是多个数据,一次只有一个浮点数。两者都消耗硅并且是许多 Cortex CPU 中的可选元素。但是,当它们出现时,它们在整个家庭中的行为都是相同的。 我投票结束这个问题,因为它不涉及特定的编程相关问题。 【参考方案1】:

这主要是为了说明,也因为浮点和霓虹灯是 ARMv8-A 或 Aarch32 之前的两个独立指令集。而且 Neon 仅支持浮点支持的子集(无双精度)。

这显然是 Cortex-A9 的情况,如图所示。

但是,在没有这种拆分的 ARMv8-A Aarch64 中,情况不再如此。取而代之的是 SIMD 与标量拆分,SIMD 指令可以使用 64 位浮点数。

【讨论】:

也有一些技术差异 - 例如处理 IEE 极端情况,例如 Inf、NaN 和 denomals。 NEON 的要求比完整的 VFP IEE 标量浮点数要宽松得多,因此 NEON 不是直接替代品,即使对于 fp32 也是如此。 是的。但在 ARMv8 Aarch64 中不再是这种情况了。

以上是关于为啥他们仍然有单独的浮点单元,如果在 ARM 皮质处理器中有用于快速处理浮点的 Neon。 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

STM32的外设寄存器在哪里?它们是在皮质-m 核心还是在外围单元本身?

Raspberry Pi 上的浮点性能(ARM 架构,BCM2835)

arm处理器,为啥12个引脚对应4096个位置啊?

Visual Studio 单元测试:为啥在测试相同的浮点值时测试运行不确定?

为啥 ARM 芯片的指令名称中带有 Javascript(FJCVTZS)?

有没有办法在 Xcode 4 中为 ARM 而不是 Thumb 编译?