我有一个连接到主处理器的协处理器。一些浮点计算需要在协处理器中完成,但不支持硬件浮点指令,仿真速度太慢。
现在一种方法是让主处理器缩放浮点值,以便它们可以表示为整数,将它们发送到协处理器,协处理器执行一些计算,并在返回时缩小这些值。但是,这在大多数情况下都行不通,因为数字最终会变得太大或太小而超出这些整数的范围。所以我的问题是,正确执行此操作的最快方法是什么。
我有一个连接到主处理器的协处理器。一些浮点计算需要在协处理器中完成,但不支持硬件浮点指令,仿真速度太慢。
现在一种方法是让主处理器缩放浮点值,以便它们可以表示为整数,将它们发送到协处理器,协处理器执行一些计算,并在返回时缩小这些值。但是,这在大多数情况下都行不通,因为数字最终会变得太大或太小而超出这些整数的范围。所以我的问题是,正确执行此操作的最快方法是什么。
除了@Amigable Clark Kant 的建议之外,Anthony Williams 的定点数学库还提供了一个 C++fixed
类,该类几乎可以与float
or互换使用,double
并且在 ARM 上,与软件浮点相比,性能提高了 5 倍。它包括标准数学库的完整fixed
点版本,包括使用 CORDIC 算法的三角函数和日志函数等。