我想知道单精度MCU被要求进行 double 计算会发生什么?这种计算是否有已知的良好性能负载? 集成的单精度单元(FPU)是否提高了性能?
我有一个大型嵌入式软件,具有一些 double 计算,我想根据更高的速度或内置 double FPU 来决定 CPU
最佳答案
问题在于编译器将做什么,而不是处理器将做什么以及其数学库和算术运算符实现是否使用 FPU 进行 double 算术。
我建议您使用首选编译器为候选目标构建一些代码,并查看汇编器输出。
另一种方法是使用定点算术。 64 位 36Q28 定点类型适合 19 位整体精度和 8 位小数。定点库描述here据报道,与 ARM 上的软件浮点相比,性能提高了 5 倍,这与使用 ARM VFP 单元(没有 SIMD 优化)获得的性能提升没有什么不同。该库是 C++ 语言,并使用广泛的运算符和函数重载,因此在大多数情况下,您只需将关键字 double
替换为 fixed
即可工作。
关于performance - 在单精度CPU上进行 double 计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24701953/