首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在较老的微处理器上,按位运算比加/减运算稍微快一些?

为什么在较老的微处理器上,按位运算比加/减运算稍微快一些?
EN

Stack Overflow用户
提问于 2013-03-28 04:25:34
回答 6查看 18.3K关注 0票数 24

我今天看到了这段摘录:

在大多数较老的微处理器上,按位运算比加法和减法运算略快,通常比乘法和除法运算快得多。在现代架构上,情况并非如此:按位运算的速度通常与加法相同(尽管仍然比乘法快)。

我很好奇为什么在较老的微处理器上,按位运算比加/减运算稍微快一些。

我所能想到的会导致延迟的是,实现加/减的电路依赖于几个级别的逻辑门(并行加法器和诸如此类的),而按位运算的电路实现要简单得多。这就是原因吗?

我知道在现代处理器上,算术和按位运算都是在一个时钟周期内执行的,但纯粹就电路的传播时间而言,理论上延迟仍然存在于现代处理器中吗?

最后,我有一个关于执行按位移位操作的概念性C问题:

代码语言:javascript
复制
unsigned x = 1;
x <<= 5;

unsigned y = 0;
y += 32;

xy都应该保持值32,但是是否需要5单独的左移才能使x达到该值(就像在通过管道实现的逐位移位一样)?为了澄清,我纯粹是问电路行为,而不是时钟周期的数量。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-03-28 04:35:04

在任何二进制位操作中,每个输出位仅取决于输入中的两个相应位。在加法运算中,每个输出位取决于输入中的相应位和右侧的所有位(朝向较低的值)。

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

在其最简单的形式中,加法器将两个低位相加,并产生一个输出位和一个进位。然后,将下两个最低位相加,并将进位相加,从而产生另一个输出位和另一个进位。这会重复发生。因此,最高输出位位于加法链的末尾。如果您像以前的处理器那样一点一点地执行操作,则需要时间才能完成。

有一些方法可以加速这一过程,方法是将几个输入位输入到更复杂的逻辑排列中。但这当然需要更大的芯片面积和更大的功率。

今天的处理器有许多不同的单元,用于执行各种类型的工作-加载、存储、加法、乘法、浮点操作等等。鉴于目前的功能,与其他任务相比,执行add的工作量很小,因此它适合在单个处理器周期内完成。

也许从理论上讲,你可以做一个比加法更快完成位运算的处理器。(而且,至少在纸面上,有异国处理器异步运行,不同的单元按照自己的速度工作。)然而,在使用设计时,您需要一些常规的固定周期来协调处理器中的许多事情-加载指令,将它们分派到执行单元,将结果从执行单元发送到寄存器,等等。一些执行单元确实需要多个周期来完成它们的作业(例如,一些浮点单元需要大约四个周期来执行浮点加法)。所以你可以有一种混合。然而,使用当前的比例,使周期时间更小,以便它适合逐位操作,而不是加法,这可能不经济。

票数 26
EN

Stack Overflow用户

发布于 2013-03-28 04:38:17

关于加法(通常是免费的减法)的复杂之处在于有一个麻烦的进位问题。

所以,你最终得到的原始解决方案是N乘以算术逻辑单元,其中N是你的算术运算单元有多少位宽。

这些讨厌的进位意味着你有很大的传播延迟。而且,因为单次进位可能会使整个结果不准确,所以您最终必须等待相当长的时间才能完成所有进位值,并依次等待链中所有其他全加法器的稳定。

绕过这一特定瓶颈的方法有很多,但没有一种方法像全加器链那样简单或节省资源。(最快的是在硅片中实现的查找表)

如果你想知道更多细节,你可能需要在http://electronics.stackexchange.com上问这个问题

票数 4
EN

Stack Overflow用户

发布于 2013-03-28 19:23:34

要回答你的最后一个问题,要看情况。一些架构只有1的移位(例如z80),一些架构通过更大的常量和/或变量公开移位,但在内部将它们实现为一堆“1移位”(例如x86的旧实现),有些架构可以在单个周期内移位1以上,但只有当移位量是常量时,才会有一些架构(例如x86的现代实现)使用barrel shifter并可以在单个周期内按变量移位,而且还有更多的可能性。

桶形移位器的电路深度在它所能做的最大移位中是对数的,这不一定是寄存器的宽度-它有时比宽度小一,而且可以想象它甚至更小。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15668718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档