【发布时间】:2013-01-10 05:08:09
【问题描述】:
我正在开发一个没有浮点单元的处理器,因此我必须为用户界面使用固定或自定义浮点类型。
这三种类型的乘法性能如何:
1. IEEE 浮点数 (32)
2. 具有 16 位有符号值和有符号 16 位指数的自定义 32 位浮点类
3. 32位固定十进制
我想要一些可以扩展到具有浮点单元的处理器的东西,自定义浮点是否会与 IEEE 浮点在性能方面具有竞争力?我听说 IEEE 浮点数在没有 FPU 的处理器上的性能很糟糕,是不是因为 24 位值不是原生的,它必须做疯狂和/或运算?也就是说,自定义浮点类会缓解这个性能问题吗?
任何帮助将不胜感激!
【问题讨论】:
-
如果你想与使用硬件浮点的处理器兼容,你真的别无选择,是吗?否则,您已经将它们从慢到快列出。您的软类型(3 种中的任何一种)都将比硬件类型慢。
-
与硬件实现相比,软 IEEE 浮点数相当慢。我不清楚浮动的其他表示形式会快得多。例如my C# implementation 需要大约 38 个时钟周期来进行加法/乘法运算。
标签: c++ floating-point fixed-point