第五节 算术逻辑单元
对于每个算术操作,必须有相应的基本硬件配置,其核心部件是加法器和寄存器。当需要完成逻辑操作时,必须配置相应的逻辑电路ALU电路是能够完成算术操作和逻辑操作的部件。
一、ALU电路
下图是ALU框图。图中Ai和Bi输入变量;Ki控制信号,Ki不同的值可以决定电路的算术操作或逻辑操作;Fi输出函数。
现在ALU该电路已制成集成电路芯片,例如74181是一能够完成四位二进制代码的算逻操作部件,其外部特性如下图所示。
74181有两种工作方式:正逻辑和负逻辑。下表列出了其算术/逻辑操作功能。
以正逻辑为例,B3~B0和A3~A0是两个操作数,F3~F0为输出结果。C-l表示进位表示最低水平,Cn 4是7418l进入高位;P、G可先行进位使用。M用于区分算术操作或逻辑操作;S3~S0的不同值可以实现不同的操作。例如,当M=1,S3~S0=0110时,74181逻辑运算A⊕B;当M=0,S3~S0=74181在010点算术。从上表可以看出,在正逻辑条件下,M=0,S3~S0=0110,且C-l=1时,完成A减B减1操作。如果要完成的话。A减B运算,可使C-l=0.需要注意的是,74181算术操作是通过补码实现的,其中减数反码是由内部电路形成的,而末位加1则通过C-l=体现0。特别要注意,ALU实际应用是组合逻辑电路ALU其输入端口A和B必须与锁定器连接,锁定器的内容在操作过程中保持不变。它的输出也必须送到寄存器。
二、快速进位链
随着操作数位数的增加,电路中进位的速度对运算时间的影响也越大,为了提高运算速度,本节将通过对进位过程的分析设计快速进位链。
1.并行加法器
并行加法器由几个全加法器组成,如下图所示。n 一个全加器级联组成一个n 1位并行加法器。
由于每位全加器的进位输出是高一位全加器的进位输入,因此当全加器有进位时,这种一级一级传递进位的过程,将会大大影响运算速度。
从全加器的逻辑表达式可以看出:
和
进位
可见,Ci进位由两部分组成:本地进位AiBi,可记作di,与低位无关;传递进位;
,与低位有关;可称
记录传递条件ti则:
由Ci其组成可以逐步将进位结构转换为快速进位链。目前,进位链通常采用串行和并行两种。
2.串行进位链
串行进位链是指并行加法器中的进位信号采用串行传输。
以四位并行加法器为例,每位进位表达式如下:
从上面可以看出,采用非逻辑电路可以轻松实现进位传输,如下图所示。
如果设置和非门的等级延迟时间为ty,那么当di、ti形成后,共需8ty能产生最高进位。事实上,每增加一个全加器,进位时间就会增加2ty。n位全加器的最长进位时间为2nty。
3.并行进位链
并行进位链是指同时产生并行加法器中的进位信号,又称先行进位、跳跃进位等。理想的并行进位链是n位全加器的n同时产生位进位,但实际实现困难;通常有两种实现方案:单重分组和双重分组。
(1)单重组跳跃进位。单重组跳跃进位是指M全加器分为几组,同时产生小组内的进位,小组间串行进位,也称为组内并行串行。
以四位并行加法器为例,对其进位表示式稍作改变,即可获得并行进位表示式:
可获得相应的逻辑图。如下图所示。
设置或非门的等级延迟时间为1.5ty,如果非门级延迟时间仍为1ty,则di、ti形成后,只需2.5ty所有进位都可以产生。
若将16位全加器按四位一组分组,则可获得单重分组跳跃进位链框图,如下图所示。
不难理解在di、ti形成后,经2.5ty可产生C3、C2、C3、C34个进位信息,10个ty所有进位都可以产生,n=串行进位链的总进位时间为32ty,单重分组方案的进位时间仅为串行进位链的三分之一。
但随着n如果增加,它的优势很快就会减弱,比如n=64时,按4位分组,共16组,组间串行进位16位di、ti形成后,需要40次ty为了产生所有的进位,显然进位时间太长。如果能同时产生组间进位,进位速度必然会大大提高,即组间和组间并行进位。
(2)双组跳跃进位。双组跳跃进位是指n全加工器分为几个组,每个组包含几个组,每个组包含每个组的最高进入同时形成,大组和大组之间串行进入。由于每个小组的最高进入是同时形成的,小组中的其他进入也是同时形成的(请注意,两个小组中的其他进入和小组的最高进入不是同时产生的),因此也被称为小组(小组)和小组(小组)之间的平行。下图显示了32个平行加法器双组跳跃进入链的框图。
图中分为两组,每组包括,第一组4组最高进位C31、C27、C23、C19是同时产生的;第二组四组的最高进位C15、C11、C7、C3也是同时产生的,第二组进入第一组C15串行进位方式。
以第二大组为例,分析各进位的逻辑关系。
例写出第八小组的最高位进位表达式:
式中
仅与本小组内的di、ti有关,不依赖外来进C-l,故称D8为第八小组的本地进位:
是将低位进位C-1传到高位小组的条件,故称T8为第八小组的传送条件。
同理可写出第五、六、七小组的最高位进位表达式:
第七小组
第六小组
第五小组
进一步展开又得:
可得大组跳跃进位链,如下图所示。
由图可见,当Di、Ti(i=5~8)及外来进位C-1形成后,再经过2.5ty便可同时产生Cl5、C11,C7、C3。至于Di和Ti它们都是由小组产生的,按其逻辑表达式可画出相应的电路如下图所示。
可见,每小组可产生本小组的本地进位Di和传送条件Ti以及组内的各低位进位,但不能产生组内最高位进位,即
第五组形成D5、T5、C14、C13、C12,不产生C15;
第六组形成D6、T6、C10、C9、C8,不产生C11;
第七组形成D7、T7、C6、C5、C4,不产生C7;
第八组形成D8、T8、C2、C1、C0不产生C3。
用上两种类型的线路可构成16位加法器的双重分组跳跃进位链框图,如下图所示。
由此可计算出从Di、Ti、及C-1(外来进位)形成后开始,经2.5Ty形成C2、C1、C0和全部Di、Ti;再经2.5Ty形成大组内的四个进位Cl5、Cl1、C7、C3;再经过2.5Ty形成第五、六、七小组的其余进位Cl4、C13、C12、C10、C9、C8、C6、C5、C4,可见,按双重分组设计n=16的进位链,最长进位时间为7.5Ty,比单重分组进位链又省了2.5Ty。随着n的增大,双重分组的优越性显得格外突出。
机器究竟采用哪种方案,每个小组内应包含几位,应根据运算速度指标及所选元件等诸方面团素综合考虑。
由上述分析可知,Di和Ti均是由小组进位链产生的,它们与低位进位无关。而Di和Ti又是大组进位链的输入,因此,引入Di和Ti可采用双重分组进位链,大大提高了运算速度。
74181芯片是4位ALU电路,其四位进位是同时产生的,多片74181级联就犹如本节介绍的单重分组跳跃进位,即组内(74181片内)并行,组间(74181片间)串行。74181芯片的G、P输出就如本节介绍的D、T。当需要进一步提高进位速度时,将74181与74182芯片配合,就可组成双重分组跳跃进位链,如下图所示。
图中74182为先行进位部件,两片74182和8片74181组成32位ALU电路,该电路采用双重分组先行进位方案,在此图中74182还提供了大组的本地进位G和大组的传送条件P。