多功能算术/逻辑运算单元(ALU) ,什么是多功能算术/逻辑

多功能算术/逻辑运算单元(alu) ,什么是多功能算术/逻辑运算单元(alu) 由一位全加器(fa)构成的行波进位加法器,它可以实现补码数的加法运算和减法运算。但是这种加法/减法器存在两个问题:一是由于串行进位,它的运算时间很长。假如加法器由n位全加器构成,每一位的进位延迟时间为20ns,那么最坏情况下, 进位信号从最低位传递到最高位而最后输出稳定,至少需要n*20ns,这在高速计算中显然是不利的。二是就行波进位加法器本身来说,它只能完成加法和减法两种操作而不能完成逻辑操作。本节我们介绍的多功能算术/逻辑运算单元(alu)不仅具有多种算术运算和逻辑运算的功能,而且具有先行进位逻辑, 从而能实现高速运算。
1.基本思想
一位全加器(fa)的逻辑表达式为
fi=ai⊕bi⊕ci
ci+1=aibi+bici+ciai (2.35)
我们将ai和bi先组合成由控制参数s0,s1,s2,s3控制的组合函数xi和yi,然后再将xi,yi和下一位进位数通过全加器进行全加。这样,不同的控制参数可以得到不同的组合函数,因而能够实现多种算术运算和逻辑运算。
图2.10 alu的逻辑结构原理框图
因此,一位算术/逻辑运算单元的逻辑表达式为
fi=xi⊕yi⊕xn+i
cn+i+1=xiyi+yicn+i+cn+ixi
上式中进位下标用n+i代替原来以为全加器中的i,i代表集成在一片电路上的alu的二进制位数。对于4位一片的alu,i=0,1,2,3。n代表若干片alu组成更大字长的运算器时每片电路的进位输入,例如当4片组成16位字长的运算器时,n=0,4,8,12。
2.逻辑表达式
控制参数s0,s1,s2,s3 分别控制输入ai 和bi ,产生y和x的函数。其中yi是受s0 ,s1控制的ai和bi的组合函数,而xi是受s2,s3控制的ai和bi组合函数,其函数关系如表2.4所示。
表2.4 xi,yi与控制参数和输入量的关系
根据上面所列的函数关系,即可列出xi和yi的逻辑表达式
xi=s2s3+s2s3(ai+bi)+s2s3(ai+bi)+s2s3ai
yi=s0s1ai+s0s1aibi+s0s1aibi
进一步化简并代入前面的求和与进位表达式,可得alu的某一位逻辑表达式如下
 (2.36)
4位之间采用先行进位公式,根据式(2.36),每一位的进位公式可递推如下:
第0位向第1位的进位公式为
cn+1=y0+x0cn
其中cn是向第0位(末位)的进位。
第1位向第2位的进位公式为
cn+2=y1+x1cn+1=y1+y0x1+x0x1cn
第2位向第3位的进位公式为
cn+3=y2+x2cn+2=y2+y1x2+y0x1x2+x0x1x2cn
第3位的进位输出(即整个4位运算进位输出)公式为
cn+4=y3+x3cn+3=y3+y2x3+y1x2x3+y0x1x2x3+x0x1x2x3cn

g=y3+y2x3+y1x2x3+y0x1x2x3
p=x0x1x2x3

cn+4=g+pcn (2.37)
这样,对一片alu来说,可有三个进位输出。其中g称为进位发生输出,p称为进位传送输出。在电路中多加这两个进位输出的目的,是为了便于实现多片(组)alu之间的先行进位,为此还需一个配合电路,称之为先行进位发生器(cla),下面还要介绍。
cn+4是本片(组)的最后进位输出。逻辑表达式表明,这是一个先行进位逻辑。换句话说,第0位的进位输入cn可以直接传送到最高位上去,因而可以实现高速运算。
用正逻辑表示的4位算术/逻辑运算单元(alu)的逻辑电路图如下,它是根据上面的原始推导公式用ttl电路实现的。这个器件的商业标号为74181alu。
3.算术逻辑运算的实现
上演示图中除了s0-s3四个控制端外,还有一个控制端m,它使用来控制alu是进行算术运算还是进行逻辑运算的。
当m=0时,m对进位信号没有任何影响。此时f 不仅与本位的被操作数y和操作数x 有关,而且与本位的进位输出,即c 有关,因此m=0时,进行算术操作。
当m=1时,封锁了各位的进位输出,即c =0,因此各位的运算结果f 仅与y 和x 有关,故m=1时,进行逻辑操作。
图2.11(b)示出了工作于负逻辑和正逻辑操作数方式的74181alu方框图。显然,这个器件执行的正逻辑输入/输出方式的一组算术运算和逻辑操作与负逻辑输入/输出方式的一组算术运算和逻辑操作是等效的。
图2.11 74181alu的逻辑电路图和方框图
表2.5列出了74181alu的运算功能表,它有两种工作方式。对正逻辑操作数来说,算术运算称高电平操作,逻辑运算称正逻辑操作(即高电平为“1”,低电平为“0”)。对于负逻辑操作数来说,正好相反。由于s -s 有16种状态组合,因此对正逻辑输入与输出而言,有16种算术运算功能和16种逻辑运算功能。同样,对于负逻辑输入与输出而言,也有16种算术运算功能和16种逻辑运算功能。
表2.5 74181alu算术/逻辑运算功能表
说明:(1)h=高电平,l=低电平.(2)*表示每一位均移到下一个更高位,即a*=2a
注意,表2.5中算术运算操作是用补码表示法来表示的。其中“加”是指算术加,运算时要考虑进位,而符号“+”是指“逻辑加”。其次,减法是用补码方法进行的,其中数的反码是内部产生的,而结果输出“a减b减1”,因此做减法时需在最末位产生一个强迫进位(加1),以便产生“a减b”的结果。另外,“a=b”输出端可指示两个数相等,因此它与其他alu的“a=b”输出端按“与”逻辑连接后,可以检测两个数的相等条件。
4.两级先行进位的alu
前面说过,74181alu设置了p和g两个本组先行进位输出端。如果将四片74181的p,g输出端送入到74182先行进位部件(cla),又可实现第二级的先行进位,即组与组之间的先行进位。
假设4片(组)74181的先行进位输出依次为p0,g0,g1p1,p2,g2,p3,g3,那么参考式(2.37)的进位逻辑表达式,先行进位部件74182cla所提供的进位逻辑关系如下:
cn+x=g0+p0cn
cn+y=g1+p1cn+x=g1+g0p1+p0p1cn 
cn+z=g2+p2cn+y=g2+g1p2+g0p1p2+p0p1p2cn(2.38) 
cn+4 =g3+p3cn+z=g3+g2p3+g1p1p2+g0p1p2p3+p0p1p2p3cn
   =g*+p*cn
其中
p*=p0p1p2p3 
g*=g3+g2p3+g1p1p2+g0p1p2p3
根据以上表达式,用ttl器件实现的成组先行进位部件74182的逻辑电路图如下所示,其中g*称为成组进位发生输出,p*称为成组进位传送输出。
下面介绍如何用若干个74181alu位片,与配套的74182先行进位部件cla在一起,构成一个全字长的alu。
下图示出了用两个16位全先行进位部件级联组成的32位alu逻辑方框图。在这个电路中使用了八个74181alu和两个74182cla器件。很显然,对一个16位来说,cla部件构成了第二级的先行进位逻辑,即实现四个小组(位片)之间的先行进位,从而使全字长alu的运算时间大大缩短。
图2.13 用两个6位全先行进位部件级联组成的32位alu

百度AI开发者大会议程 关于元宇宙的探索
金立S10:性能与拍照相结合的国产旗舰
三星量产1GB eMRAM内存,良率已经达到90%
DSP的汇编程序优化
IT公司Quest告耐克使用盗版软件并破解密匙
多功能算术/逻辑运算单元(ALU) ,什么是多功能算术/逻辑
热继电器工作原理及选型
BYRD推出入门级入耳式耳塞系列 售价约合人民币998元
一文看懂AI制药的作用
边缘计算的应用未来可在整个人工智能领域中流行起来
硅基氮化镓是什么
金立M7体验 表现可圈可点
钛金Plus!纳微超高功率密度CPRS185 3.2kW服务器电源方案全解析
区块链与前沿市场有什么变化
虹科新品 | 虹科正式推出分布式PROFINET IO模块,帮您便捷实现PROFINET通信!
晨控IO-Link通讯技术,IO系统模块主站从站方案介绍
慧荣科技NVMe 2.0实现混合式NAND操作
用向日葵坐席远程运维,让软件外包脱离驻场苦海
三星五代V-NAND闪存芯片,使生产效率提高了30%以上
法拉电容和电解电容介绍及应用