为什么比在旧的微处理器加法/减法运算位运算速度稍快?(Why were bitwise operat

2019-07-28 17:58发布

我碰到这个摘录今天:

在大多数较旧的微处理器,位运算是略高于加减法运算,比乘法和除法操作通常显著快了快了。 在现代建筑,这是情况并非如此:位运算一般都是相同的速度增加(虽然比乘法仍然较快)。

我很好奇,为什么按位运算比在旧的微处理器加法/减法运算速度稍快。

所有我能想到的,会导致延迟的电路来实现加法/减法取决于逻辑门(并行加法器和诸如此类的东西)的几个层次,而位运算具有更简单的电路实现。 这是什么原因?

我知道算术和位操作上都现代处理器一个时钟cyle内执行,而纯粹是谈到传播时间的电路,是等待还是理论上说在现代处理器?

最后,我对按位换档操作的执行的概念Ç问题:

unsigned x = 1;
x <<= 5;

unsigned y = 0;
y += 32;

这两个xy应持有的价值32 ,但它采取5个独立的左移得到x为该值(如被逐位的变化通过管道实现)? 为了澄清,我问纯粹是电路行为没有时钟周期数。

Answer 1:

在任何二进制按位操作中,每个输出位只取决于在输入端的两个相应的比特。 在加法操作中,每个输出位依赖于输入的相应的位和所有位到右侧(朝向较低的值)。

例如,01111111 00000001 +最左边的位是1,但01111110 00000001 +最左边的位是0。

在其最简单的形式中,加法器将两个低比特,并产生一个输出位和一个进位。 再下两个最低位被添加,和进位被添加在,产生另一个输出位和另一个进位。 重复此过程。 因此,最高输出位处添加的链的末端。 如果你一点做手术一点,因为旧的处理器一样,那么它需要时间来到达终点。

有一些方法可以加快这一些,通过将几个输入比特到更复杂的逻辑安排。 但是,当然,这需要在芯片和更大的功率更大的面积。

今天的处理器有用于执行各种各种工作负载,商店,加法,乘法,浮点运算,多了许多不同的单位。 鉴于今天的能力,相对于其他的任务做一个附加的工作是小,所以它在单个处理器周期内适合。

也许在理论上可以使一个处理器做了位运算速度比附加。 (有,至少在纸面上,异步操作,用做在自己的步伐工作不同单位异国情调的处理器)。然而,与使用中的设计,你需要一些常规固定周期的处理器负载来协调很多事情说明,它们调度到执行单元,将来自执行单元结果寄存器中,很多,很多。 一些执行单元都需要多个周期来完成他们的工作(例如,某些浮点单元大约需要四个周期做一个浮点加)。 所以,你可以有一个组合。 然而,目前的规模,使得循环时间更小,使其适合按位操作,但不附加可能是不经济的。



Answer 2:

有关添加(你通常得到减去免费)的复杂的事情是,有讨厌的携带问题。

所以,你最终用天真的是N次全加器 ,其中N是你的ALU多少位宽。

这些讨厌的承载意味着你有很多的传播延时的。 而且,因为单个带走可以使整个结果不准确,你最终不得不等待的时间相当显著量对所有进值,并在转,其他全加器环比下跌的解决。

有很多的解决这个特定瓶颈的方式,但没有简单或资源,廉价的实施,因为全加器的链条。 (最快的是在硅中实现的查找表)

如果您想了解更多的细节,你可能要问,这对http://electronics.stackexchange.com代替



Answer 3:

要回答你的最后一个问题,这取决于。 一些架构中只具有由1位移(如Z80),某些架构暴露由较大的常数和/或变量的变化,但“由1移”在内部实现它们作为一束的(例如x86的旧的实现),有一些架构中,可以由多于1在一个周期移位,但只有当移动量是一个常数,也有一些结构(例如x86的现代的实现)使用一个桶形移位器 ,并且可以通过一个可变在单个周期内转移,并且还有更多的可能性。

一个桶形移位器的电路深度在最大偏移它可以做,这不一定是寄存器的宽度的对数 - 它有时一个小于宽度和这是可以想象为它是更少。



Answer 4:

有些除了实现具有为进位做一个额外的周期。 例如:一个16位整数需要在8位处理器多个指令。 这也适用于移位。 但这种转变可以高度位,总是转移到下一个字节的低位。 加入必须以另一轮加低位。



Answer 5:

逐位操作执行上的时间更少,因为

  • 处理器需要一个指令来执行逐位的操作和(让说)取一个执行周期,在另一方面其它算术指令(特别是,乘,除)采取更多的执行周期
  • 大部分的时间逐位操作是在一个寄存器与执行,并且需要其它算术指令以处理一个以上的寄存器

这就是为什么移位快于其他算术运算



Answer 6:

这是我从介绍到装配类闪闪发光。 但是换档只是一个处理器能够执行的指令最快。 加减需要一些指令来执行。 我想,现代的处理器更好的优化。

据推测,有人能这样更准确,更彻底地回答。



文章来源: Why were bitwise operations slightly faster than addition/subtraction operations on older microprocessors?