现代计算机组成与体系结构
上QQ阅读APP看书,第一时间看更新

2.7 加法器

通用处理器通常支持加法运算,用于对数据进行计算,也可以用来管理指令指针(Instruction Pointer,IP)。执行每条指令之后,指令指针递增到下一个指令位置。当处理器支持多字指令时,新的指令指针必须设置为当前值加上刚完成的指令字长。

一个简单的加法器电路对两个数据位和输入进位进行加法运算,并产生一位的和与一位的进位输出。因为它在计算中包含输入进位,所以该电路(如图2.15所示)称为全加器半加器只对两个数据位相加,而没有输入进位。

图2.15 全加器电路

全加器使用逻辑门产生输出,其计算规则为:仅当A、B、Cin三个值中为1的总数为奇数时,结果位S才为1;否则,S为0。使用两个异或门执行该逻辑运算。如果A和B都是1,或者A和B中只有一个是1并且Cin也是1,则Cout为1;否则,Cout为0。

图2.15中的电路可以简要地使用具有三个输入和两个输出的框图来表示,以进行更高层次的抽象。图2.16是由图2.15所示的4个全加器电路构成的四位加法器。输入是要相加的两个数据A0-A3和B0-B3,以及进位输入Cin。输出是和(S0-S3)与进位输出Cout

图2.16 4位加法器电路

需要注意的是,该电路是一个组合电路,这意味着一旦确定了输入,就会直接产生输出。该电路包含了逐位的进位操作,无须考虑进位会影响多少位。因为进位逐位传播,所以这种结构称为行波进位加法器(ripple carry adder)。进位在所有数据位之间的传播及输出值的稳定需要一些延迟。

由于我们现在讨论的电路是信号通过大量器件的信号通路,因此应该讨论信号通过多个器件的端到端传播所需的时间。

传播延迟

当逻辑器件的输入改变时,输出不会立即改变。在输入端的状态改变与输出端出现最终结果之间存在一段时间的延迟,称为传播延迟

串联的多个组合电路会导致出现一个总的传播延迟,它是所有中间器件的延迟之和。逻辑门从低到高转换的传播延迟可能与从高到低转换的传播延迟不同,因此估计最坏情况下的延迟应该用这两个值中较大的值。

从图2.15可以看出,全加器从输入到输出的最长路径(以串联的门数表示)是从输入A和输入B到输出Cout:总共有三个门。如果图2.16中的所有输入信号在全加器输入端同时到达,则与这些输入相关的三个门延迟将在所有加法器上同时传播。然而,全加器0的输出C0只有在全加器0的三个门延迟之后才能保证稳定。一旦C0稳定,全加器1上就会有额外的两个门延迟(需要注意的是,在图2.15中,Cin仅通过两个门)。

因此,图2.16中电路的总体传播延迟是全加器0上的3个门延迟,然后加上其余3个全加器中每个加法器的2个门延迟,总共9个门延迟。这看起来可能并不太糟糕,但考虑一个32位加法器:该加法器的传播延迟是全加器0的三个门延迟加上其余31个加法器中每个加法器的2个门延迟,总共65个门延迟。

通过组合电路的传播延迟最长的路径称为关键路径,该延迟限制了可用于驱动电路的时钟频率的上限。

先进肖特基晶体管-晶体管逻辑(Advanced Schottky Transistor-Transistor Logic,(AS)TTL)系列的逻辑门是当今市场上速度最快且单独封装的门电路之一。在典型的负载条件下,(AS)TTL与非门具有2 ns的传播延迟。相比之下,真空中的光在2 ns内传播不到2英尺。

在32位行波进位加法器中,通过(AS)TTL门的65个单位的传播延迟导致输入变化和最终稳定输出之间的延迟为130 ns。为了进行粗略的估计,假设这是通过整个处理器集成电路中最坏情况下的传播延迟。忽略有效时钟边沿前后数据保持输入稳定所需的任何额外时间,该加法器对输入数据执行顺序操作的频率不能超过每130 ns一次。

当使用行波进位加法器执行32位加法时,处理器使用时钟边沿将两个寄存器(每个寄存器由一组D触发器组成)的上下文加上处理器C标志传送到加法器输入。随后的时钟边沿将加法结果加载到目标寄存器中。C标志接收来自加法器的Cout

周期为130 ns的时钟具有(1/130 ns)的频率,即7.6 MHz。这看起来不是很快,特别是在今天有许多时钟速率超过4 GHz的低成本处理器的情况下更是如此。造成这种情况的部分原因是包含大量紧密耦合晶体管的集成电路固有的速度优势,另一部分原因是设计者的聪明才智,正如摩尔在第1章中所提到的那样。为了有效地执行加法器功能,设计者已经开发了许多优化设计以显著降低最坏情况下的传播延迟。第8章将讨论处理器架构师通过设计获得更高速度的一些方法。

除了门延迟之外,还有一些延迟是由于信号通过导线和集成电路导电路径造成的。通过导电路径的传播速度取决于导电材料和导体周围的绝缘材料。由于这些因素和其他一些因素,信号在数字电路中的传播速度通常是真空中光速的50%~90%。

下一节将讨论数字电路中时钟信号的产生和使用。