【问题标题】:Why is division more expensive than multiplication?为什么除法比乘法更昂贵?
【发布时间】:2013-03-22 16:01:25
【问题描述】:

我并没有真正尝试优化任何东西,但我记得我一直从程序员那里听到这个,我认为这是事实。毕竟他们应该知道这些东西。

但我想知道为什么除法实际上比乘法慢?除法不只是一种美化的减法,而乘法是一种美化的加法吗?所以从数学上讲,我不明白为什么选择一种方式或另一种方式在计算上会产生非常不同的成本。

任何人都可以澄清原因/原因以便我知道,而不是我从其他程序员那里听到的我之前问过的是:“因为”。

【问题讨论】:

  • "After all they are supposed to know this stuff." - 你可能会对大多数人不知道的事情感到惊讶。
  • 您将不得不询问电子工程师,这是一个电路设计问题。创建硬件乘法器非常简单,而硬件除法器则不然。实际的分压器电路是迭代的,因此需要更长的时间。在electronics.stackexchange.com询问
  • 维基百科(参见关于 FLOPS 的文章)和其他来源 (en.community.dell.com/techcenter/high-performance-computing/w/…) 声称典型的 CPU 每个时钟周期可以执行 4 个浮点运算。这似乎与类型无关。在此之后,除法将与乘法一样昂贵/便宜。谁自愿做一个基准测试?
  • 简而言之:商估计和修正步骤。
  • 你说得对,乘法分解为多次加法,除法分解为多次减法。不同之处在于,乘法中的加法可以并行完成,而在除法中,您不能进行下一次减法,直到完成前一个并进行比较。因此,硬件乘法器将通过同时计算和总结许多子产品来利用这种固有的并行性,但代价是增加了面积。司没有这种奢侈。

标签: performance division cpu-architecture multiplication


【解决方案1】:

CPU 的ALU(算术逻辑单元)执行算法,尽管它们是在硬件中实现的。经典的乘法算法包括Wallace treeDadda tree。更多信息请访问here。更新的处理器中提供了更复杂的技术。通常,处理器努力并行化位对操作,以最小化所需的时钟周期。乘法算法可以非常有效地并行化(尽管需要更多的晶体管)。

Division algorithms 不能高效地并行化。最有效的除法算法相当复杂(The Pentium FDIV bug 展示了复杂程度)。通常,它们每比特需要更多的时钟周期。如果您想了解更多技术细节,here 是英特尔的一个很好的解释。 Intel居然patented他们的除法算法。

【讨论】:

    【解决方案2】:

    但我想知道为什么除法实际上比乘法慢?除法不是美化的减法,乘法是美化的加法吗?

    最大的区别在于,在长乘法中,您只需在移位和屏蔽后将一堆数字相加即可。在长除法中,您必须在每次减法后测试溢出。


    让我们考虑两个 n 位二进制数的长乘法。

    • 轮班(没时间)
    • 掩码(恒定时间)
    • 添加(看起来时间与 n² 成正比)

    但如果我们仔细观察,我们可以通过使用两个技巧来优化加法(还有进一步的优化,但这些是最重要的)。

    1. 我们可以按组而不是按顺序添加数字。
    2. 在最后一步之前,我们可以将三个数字相加产生二,而不是相加二产生一。虽然将两个数字相加产生一个所需的时间与 n 成正比,但将三个数字相加产生两个可以在恒定时间内完成,因为我们可以消除进位链。

    所以现在我们的算法看起来像

    • 轮班(没时间)
    • 掩码(恒定时间)
    • 三个一组的数字相加得到两个,直到只剩下两个(时间与 log(n) 成正比)
    • 执行最后的加法(时间与 n 成正比)

    换句话说,我们可以为两个 n 位数构建一个乘法器,时间大致与 n 成正比(空间大致与 n² 成正比)。只要 CPU 设计者愿意投入,逻辑乘法几乎可以和加法一样快。


    在长除法中,我们需要知道每个减法是否溢出,然后才能决定下一个使用什么输入。所以我们不能应用与长乘法相同的并行技巧。

    有些除法比基本长除法快,但仍然比乘法慢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-14
      • 2016-08-31
      • 1970-01-01
      • 2010-09-08
      相关资源
      最近更新 更多