在整数和浮点运算中,加法(+)运算是否比比较运算(>)更复杂?我希望能在基于微处理器和基于 FPGA 的系统的背景下得到答案。
我的想法:当我们谈论基于微处理器的系统时,我认为比较和加法是一回事,因为比较a>b可以通过检查(ab)的符号位来解决,即加法运算。但是,在基于 FPGA 的系统中,我猜比较算子的复杂度可以降低吗?
在整数和浮点运算中,加法(+)运算是否比比较运算(>)更复杂?我希望能在基于微处理器和基于 FPGA 的系统的背景下得到答案。
我的想法:当我们谈论基于微处理器的系统时,我认为比较和加法是一回事,因为比较a>b可以通过检查(ab)的符号位来解决,即加法运算。但是,在基于 FPGA 的系统中,我猜比较算子的复杂度可以降低吗?
从理论上讲,比较可能会更快,您只需要比较每个位并且可以并行完成。这种比较分两个阶段完成,一个阶段比较所有位,第二个阶段检查一个位是否打开。(技术上是 (a0^b0)|(a1^b1)|...(an^bn)。所有 ai^bi 可以同时完成。应该是 O(log(n))
但是,对于加法,您需要将进位从每个位传播到另一个位,因此您最终会遇到 O(n)。
比较对于整数来说有点“简单”,因为我们只需要比较从 msb 到 lsb 的每一位(没有进位,加法需要)。就复杂性而言,两者都是 O(log n)。
但我怀疑您是否真的可以在资源使用(逻辑片或功耗)方面测量这种微小的差异。