对单精度CPU进行双精度计算

时间:2014-07-11 16:02:52

标签: performance floating-point embedded fpu

我想知道被要求进行双精度计算的单精度MCU会发生什么?这种计算是否有已知的良好性能负载? 集成单精度单元(FPU)是否提高了性能?

我有大嵌入式软件,有一些双精度计算,我想决定一个基于更高速度的CPU或内置双精度FPU

3 个答案:

答案 0 :(得分:1)

这是一个问题,你的编译器将做什么,而不是处理器将做什么,以及它的数学库和算术运算符实现是否使用FPU进行双精度算术。

我建议您使用首选编译器为候选目标构建一些代码,并查看汇编程序输出。

另一种方法是使用定点算术。 64位36Q28定点类型适用于总体19位数精度和8位小数。所描述的定点库here报告的ARM上的软件浮点性能提高了5倍,这与使用ARM VFP单元(没有SIMD优化)的性能提升没有什么不同。该库是C ++并使用广泛的运算符和函数重载,因此大多数情况下您只需将关键字double替换为fixed即可。

答案 1 :(得分:0)

这个问题听起来太假设了。它触及了许多理论和实践方法。您是否至少有一个问题是您提到的软件和任何CPU的组合?如果是这样,最好将其包含在问题中,这样任何人都可以获得更多的理解。

如果它更真实,更严肃而不是理论上的讨论而且你是关于运行批量生产,那么你的问题中的细节应该更加具体。因为制作需要尽可能降低CPU成本并选择一个的东西将基于背景中的各种细节和/或特定问题。

答案 2 :(得分:0)

单精度FPU无法帮助进行双精度操作。在单个FPU MCU上,执行双精度算法会导致使用软件例程。它要多少钱?取决于编译器和MCU的性能。无论如何,你可以很容易地测量它。