定点数学比 armv7-a 上的浮点运算快吗?

Posted

技术标签:

【中文标题】定点数学比 armv7-a 上的浮点运算快吗?【英文标题】:Is fixed point math faster than floating point on armv7-a? 【发布时间】:2014-08-17 16:18:14 【问题描述】:

libfixmath 等库的性能是否优于 arm FP 和 NEON,或者与现有 FP hw 相比,固定点没有任何收益?

我正在考虑将代码中的所有 float 实例转换为定点 C++ 类(类似于 libfixmath),以优化在 Cortex-A9 上运行的算法的运行时。问题是是否有人对此有任何经验。

当前在 Intel-i5 和 ARM-Cortex-A9 上使用多个定点实现的结果并未显示定点与浮点硬件相比有任何改进。

【问题讨论】:

ARMv7 不是指令集吗?在这种情况下,无法回答您的问题,因为您没有说要比较哪个特定处理器。无论如何,定点数学运算需要几条指令,并且极不可能比在硬件中实现专用指令的浮点指令更快。 你说得对,我的意思是 ARM Cortex-A9 CPU。那么定点只有在没有hw浮点的情况下才有用? 【参考方案1】:

通常,固定比浮动快得多,因为:

整数指令需要更少的周期 延迟要低得多 无需转换

但是,如果您正在处理 32 位源数据,因此需要 64 位数学运算,那么浮点数可能会更好,因为长整数运算需要更多周期、寄存器和指令。

这取决于源/目标数据类型:当它们都是整数时,固定要好得多。如果没有,坚持浮动。

【讨论】:

我正在考虑将代码中的所有 float 实例转换为定点 C++ 类(类似于 libfixmath),以便在运行时优化算法Cortex-A9。问题是是否有人对此有任何经验,如果这种方法不是浪费时间......

以上是关于定点数学比 armv7-a 上的浮点运算快吗?的主要内容,如果未能解决你的问题,请参考以下文章

DSP定点与浮点计算

钳制真实(固定/浮点)值的最快方法?

钳制真实(固定/浮点)值的最快方法?

DSP视频教程DSP视频教程第10期:DSP运算加速的精髓,含SIMD指令,饱和运算指令和浮点以及定点的MAC乘累加指令

单片机如何能运行如飞?一种高效实现数学函数的方式!

1定点数与浮点数