



通用处理器通常支持加法运算,用于对数据进行计算,也可用来管理指令指针(Instruction Pointer,IP)。在每条指令执行之后,指令指针递增到下一条指令的位置。当处理器支持多字指令时,新的指令指针必须设置其为当前值加上刚完成的指令字长。
一个简单的加法器电路对两个数据位和进位输入进行加法运算,并产生一位的和与一位的进位输出。因为它在计算中包含进位输入,所以该电路(如图2.15所示)称为全加器。半加器只对两个数据位相加,而没有进位输入。
图2.15 全加器电路
全加器使用逻辑门产生输出,其计算规则为:仅当A、B、C in 三个值中为1的总数为奇数时,结果位S才为1;否则,S为0。使用两个异或门执行该逻辑操作。如果A和B都是1,或者A和B中只有一个是1并且C in 也是1,则C out 为1;否则,C out 为0。
图2.15中的电路可以简要地使用具有三个输入和两个输出的框图来表示,以进行更高层次的抽象。图2.16是由4个图2.15所示的全加器电路构成的4位加法器。输入是要相加的两个数据A 0 ~A 3 和B 0 ~B 3 ,以及进位输入C in ,输出是和S 0 ~S 3 与进位输出C out 。
图2.16 4位加法器电路
需要注意的是,该电路是一个组合电路,这意味着一旦确定了输入,就会直接产生输出。该电路包含了逐位的进位操作,而不考虑进位会影响多少位。因为进位逐位传播,所以这种结构称为行波进位加法器(ripple carry adder)。进位在所有数据位之间的传播及输出值的稳定需要一些延迟。
由于我们现在讨论的电路具有通过大量器件的信号通路,因此应该讨论信号从端到端经过多个器件所需的时间。
传播延迟
当逻辑器件的输入改变时,输出不会立即改变。在输入端的状态改变和在输出端出现的最终结果之间存在一段时间的延迟,称为传播延迟。通过电路的传播延迟给电路能够工作的时钟频率设定了一个上限。在微处理器中,时钟的速度决定了器件能够执行指令的速度。
串联的多个组合电路会导致出现一个总的传播延迟,它是所有中间器件的延迟之和。逻辑门从低电平到高电平转换的传播延迟可能与从高电平到低电平转换的传播延迟不同,因此估计最坏情况下的延迟应该用这两个值中较大的值。
从图2.15可以看出,全加器从输入到输出的最长路径(以串联的门数表示)是从输入A和输入B到输出C out :总共有三个门。如果图2.16中的所有输入信号在全加器输入端同时到达,则与这些输入相关的三个门延迟将在所有加法器上同时传播。然而,全加器0(Full Adder 0)的输出C 0 只有在全加器0的三个门延迟之后才能保证稳定。一旦C 0 稳定,全加器1上就会有额外的两个门延迟(需要注意的是,在图2.15中,C in 仅通过两个门)。
因此,图2.16中电路的总体传播延迟是全加法器0上的3个门延迟,然后加上其余3个全加器中每个加法器的2个门延迟,总共9个门延迟。这看起来可能并不太糟糕,但考虑一个32位加法器:该加法器的传播延迟是全加器0的3个门延迟加上其余31个加法器的每个加法器的两个门延迟,总共65个门延迟。
通过组合电路的传播延迟最长的路径称为关键路径,该延迟限制了可用于驱动电路的时钟频率的上限。
基于 先进肖特基晶体管-晶体管逻辑 (Advanced Schottky Transistor-Transistor Logic,(AS)TTL)系列的逻辑门是当今市场上速度最快且单独封装的门电路之一。在典型负载条件下,(AS)TTL与非门具有2ns的传播延迟。相比之下,真空中的光在2ns内传播不到2ft(1ft=0.3048m)。
在32位行波进位加法器中,通过(AS)TTL门的65个单位的传播延迟导致输入变化和最终稳定输出之间的延迟为130ns。为了进行粗略的估计,假设这是通过整个处理器集成电路中最坏情况下的传播延迟,忽略了有效时钟沿前后数据保持输入稳定所需的任何额外时间。因此,该加法器对输入数据执行顺序操作的频率不能超过每130ns一次。
当使用行波进位加法器执行32位加法时,处理器使用时钟沿将两个寄存器(每个寄存器由一组D触发器组成)的内容加上处理器C标志传输到加法器输入。随后的时钟沿将加法结果加载到目标寄存器。C标志接收来自加法器的C OUT 。
周期为130ns的时钟具有(1/130ns)的频率,即7.6MHz。这看起来不是很快,特别是在今天有许多时钟速度超过4GHz的低成本处理器的情况下更是如此。造成这种情况的部分原因是包含大量紧密耦合晶体管的集成电路固有的速度优势,另一部分原因是设计者的聪明才智,正如第1章中所提到的那样。为了有效地执行加法器功能,已经开发了许多优化设计以显著降低最坏情况下的传播延迟。第8章将讨论处理器体系结构设计师通过其设计获得更高速度的一些方法。
除了门延迟之外,还有一些延迟是由于信号通过导线和集成电路导电路径造成的。通过导电路径的传播速度取决于导电材料和导体周围的绝缘材料。由于这些因素和其他一些因素,信号在数字电路中的传播速度通常是真空中光速的50%~90%。
下一节将讨论数字电路中时钟信号的产生和使用。