performance - 在单精度CPU上进行 double 计算

标签 performance floating-point embedded fpu

我想知道单精度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/

相关文章:

性能改进计算巨型

java - 在 JAVA 中使用 BLOB 获得更好的性能

floating-point - 如何用二进制表示 float 。 IEEE

将本地时间作为字符串转换为 1970 年 1 月 1 日起的毫秒

performance - 删除引用同一个表的列的行需要花费大量时间

performance - 为什么附加到列表不好?

c - 浮点单调性

java - 创建一个运行时数组,该数组接受用户输入并在运行时创建数组并接受 3 个变量来计算总和和平均值

c++ - 使用旧 GLIBC 版本检测堆栈溢出

c - NTP 将自 1900 年 1 月 1 日以来的秒数转换为当前日期