jli*_*u83 2 embedded floating-point instruction-set cortex-m
所以我正在研究一个需要计算浮点数的嵌入式项目.显然,有多种方法可以估算输出并减少计算周期.我的问题是,浮点数与整数比较(相对来说,不是精确的周期)有多贵?其中一个操作可能会以这种方式进行优化,但我想知道是否值得付出努力.芯片是皮质M0(没有浮点硬件).所有浮点都是通过软件完成的.
确定浮点比较成本的最简单方法是计算时间.如果出于某种原因无法做到这一点,可以估计一下.
我在2003年左右使用FPU-less ARM处理器,并为这些处理器编写了我自己的高度优化的单精度浮点数.虽然我不再访问该代码,但我发现其性能与Iordache和Tang在XScale上的浮点仿真库本文中发布的性能数字非常相似.
这表示在35个循环中执行单精度加法,并且减法的时间基本相同.由于比较是一种简化的减法形式,其中不需要计算浮点结果,因此比较会稍微便宜一些,这就是比较成本的上限.
对于浮点仿真,单精度操作数由32位整数表示,并存储在通用寄存器中.如果两个操作数都是有限正操作数,则可以通过整数比较直接比较它们.基本上,这会对binary32
重新解释为的操作数使用整数比较int32
.这给出了成本的下限.这个答案显示了如何将这种方法推广到非特殊操作数对.