我在主处理器上安装了一个协处理器。一些浮点计算需要在协处理器中完成,但它不支持硬件浮点指令,并且仿真速度太慢。
现在,一种方法是让主处理器缩放浮点值,以便它们可以表示为整数,将它们发送到协处理器,由协处理器执行一些计算,然后在返回时缩减这些值。然而,这在大多数情况下是行不通的,因为数字最终会变得太大或太小而不会超出这些整数的范围。所以我的问题是,什么是正确完成此操作的最快方法。
发布于 2013-04-10 02:45:04
你是说仿真太慢了。我猜你指的是浮点数的仿真。如果缩放的整数还不够,剩下的唯一选择是定点数学,但它也不是很快,尽管它比模拟的浮点数快得多。
此外,你永远无法逃脱这样一个事实,即使用缩放整数和fixed point math,你将获得比浮点数更少的dynamic range。
但是,如果您预先知道您的范围,则可以针对您需要的范围调整定点数学实现。
Here is一篇关于定点的文章。技巧的要点是决定如何拆分变量,数字的低位和高位部分有多少位。
C的一个完整的定点实现可以是found here。(BSD许可证。)好了,are others。
发布于 2013-04-10 18:26:24
除了@Amigable Clark Kant的建议之外,Anthony Williams' fixed point math library还提供了一个C++ fixed类,它几乎可以与float或double互换使用,并且在ARM上提供了5倍于软件浮点的性能改进。它包括一个完整的标准数学库的fixed点版本,包括使用CORDIC算法的trig和log函数等。
https://stackoverflow.com/questions/15909986
复制相似问题