为什么除法比其他算术运算那么复杂?


39

我最近遇到一种情况,我需要在一个缺少整数的运算符(ARM Cortex-A8)上进行整数除法运算。在尝试研究为什么必须这样做时,我发现在几乎所有整数(或定点)架构上,除法运算比加法,减法或乘法要花费更多的周期。为什么会这样呢?它不是像其他所有东西一样用两层AND-OR逻辑表示的吗?

Answers:


34

除法是一种迭代算法,其中必须使用欧几里德测度将商的结果移至余数,请参见2。然而,乘法可以减少为一系列(固定的)位操作技巧。


2
过去,乘法和除法都是缓慢的运算。如今,乘法要快一些(但比加法/减法要慢一些),但是除法仍然比其他方法慢。我相信大多数人仍在内部使用Newton-Raphson来求数。
JM

12
(题外话:“逆运算通常很困难。只看积分与微分。”-取决于您正在做的是符号运算还是数字运算。微分在符号上容易,但在数字上很难;积分在符号上很难,但在数字上轻松。)
JM

1
好的,我要说的是,孵化器是另一种蠕虫。但至少在一维情况下,求积要比求积容易。
JM

1
无论如何,逆总是成对出现。为什么将一个称为“运算”而另一个称为“逆”?
大卫·凯奇森2011年

2
迭代和逆都不会使难度变大。除法的困难来自这样一个事实,即您必须使用欧几里德测度将结果从商转换为余数。请参阅除法算法定理

20

正如aterrel所建议的那样,当前所有的CPU似乎都使用迭代方法,但在非迭代方法上已经做了一些工作。可变精度浮点除法和平方根讨论了使用查找表和taylor系列扩展在FPGA中实现浮点除法和平方根的非迭代实现。

我怀疑相同的技术可能使将这些操作降低到一个周期(吞吐量,如果不是延迟),但是您可能需要巨大的查找表,因此无法实现大面积的硅房地产。

为什么不可行?

在设计CPU时,需要做出很多权衡。功能,复杂性(晶体管数量),速度和功耗都相互关联,并且在设计过程中做出的决定可能会对性能产生巨大影响。

新式处理器可能可以有一个主浮点单元,其致力于在硅足够晶体管在执行浮点除法单周期,但是这将是不太可能有效地使用那些晶体管。

浮点乘积在十年前从迭代过渡到非迭代。如今,即使在移动处理器中,单周期乘法甚至乘法累加也很普遍。

在有效利用晶体管预算之前,乘法和除法通常是通过迭代方法执行的。那时,专用DSP处理器可能会将其大部分芯片专用于单个快速乘法累加(MAC)单元。Core2duo CPU的浮点乘法延迟为3(该值在进入管道后3个周期就从管道中出来),但可以一次运行3个乘法,从而产生单周期吞吐量,而SSE2单元可以在一个周期内抽出多个FP乘积。

现代CPU没有将大量的硅片分配给一个单周期的分割单元,而是具有多个单元,每个单元可以并行执行操作,但针对其特定情况进行了优化。实际上,一旦考虑了SIMD指令(例如SSESandy Bridge或更高版本CPU的CPU 集成图形),CPU上可能会有许多这样的浮点除法单元。

如果通用浮点除法对现代CPU而言更为重要,则可能有必要分配足够的硅面积以使其成为单周期,但是大多数芯片制造商显然已经决定,通过将这些门用于其他用途,可以更好地利用该硅。 。因此,一种操作速度较慢,但​​总体而言(对于典型的使用情况),CPU速度更快和/或功耗更低。


据我所知,没有芯片具有浮点的单周期除法延迟。例如,Agner Fog针对Intel,AMD和VIA CPU的指令表将DIVPS(SSE压缩浮点除法)列为10-14个周期。我找不到带有单周期除法指令的任何硬件,但我愿意证明自己是错误的。据我所知,这并不普遍。
比尔·巴特

@Bill-谢谢,你是对的。我敢肯定,我以前见过DSP芯片中的单周期除法运算,因此假设它会像单周期乘法那样进入台式机,但现在找不到任何参考。我已经更新了答案,并添加了有关非迭代方法的一些相关信息,但将来可能会允许这样做。令人惊讶的是,现在每个周期的分割效率都没有我使用晶片机时高。
Mark Booth,

1
我认为DSP通过限制其准确范围来做到这一点。这与用于平方根的查找+插值的策略相同。
Matt Knepley 2011年

1
不过,我不确定这种分裂的潜伏期是多少。在4 GHz时,在N个周期内往返查找表会严重限制该表的潜在大小(例如,L1高速缓存的每个都停滞了32K)。使用3D可以帮助增加这一点(但对冷却来说是有挑战性的)。您是否知道现代4GHz / 5GHz CPU可以达到什么延迟?
Matthieu M.

1
有关divps / divpd与mulps / mulpd的延迟和吞吐量数的信息,请参见浮点除法与浮点乘法。我从Agner Fog的指令表中获取了数据,并将其格式化为div,mul吞吐量和等待时间等单变量,双变量和不同SIMD向量宽度的摘要。(英特尔芯片通常具有SIMD分频器,其宽度仅为其他矢量ALU的一半。)
Peter Cordes,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.