1、 第五章 运算方法和运算器本章着重讨论两个大问题:本章着重讨论两个大问题:运算方法运算方法:即即计算机中数值数据的计算机中数值数据的运算规则运算规则 加减法(定点,浮点)加减法(定点,浮点)(补码为重点)(补码为重点)移位运算移位运算 乘除法(定点,浮点)乘除法(定点,浮点)(难点)(难点)逻辑运算逻辑运算运算器的基本结构和工作原理运算器的基本结构和工作原理:着重讨论运算规则的具体物理实现着重讨论运算规则的具体物理实现(难点)(难点)规则规则第五章 运算方法和运算器5.1 5.1 定点加减运算定点加减运算 5.1.15.1.1原码加减法原码加减法原码加减运算规则原码加减运算规则(P P9494
2、 ):要考虑要考虑符号符号和和数值数值两部分两部分同号相加同号相加和和异号相减异号相减:数值部分相加,结果的符号取被加(减)数值部分相加,结果的符号取被加(减)数符号数符号;异号相加异号相加和和同号相减同号相减:数值部分相减,结果的符号取绝对值大数值部分相减,结果的符号取绝对值大的数的符号,但数值部分相减,要将的数的符号,但数值部分相减,要将减数变补减数变补,变为加法,变为加法进行。进行。对于定点机,两数同号相加和异号相减,结果可能溢对于定点机,两数同号相加和异号相减,结果可能溢出,须作溢出判断。一般机器溢出后,提示溢出信息,出,须作溢出判断。一般机器溢出后,提示溢出信息,然后停机。然后停机。
3、原码一般不用来做加减运算,而多用来做乘除运算,原码一般不用来做加减运算,而多用来做乘除运算,做加减运算时,多用补码。做加减运算时,多用补码。第五章 运算方法和运算器5.1 5.1 定点加减运算定点加减运算 5.1.25.1.2补码加减法运算补码加减法运算(重点重点)引入补码后,不仅减法能变成加法,而且符号位能同引入补码后,不仅减法能变成加法,而且符号位能同数值位一样参与加运算,这样可以大大简化运算器的结构。数值位一样参与加运算,这样可以大大简化运算器的结构。1 1、补码加减运算规则、补码加减运算规则 参加运算的两个操作数均用补码表示;参加运算的两个操作数均用补码表示;符号位作为数的一部分参加运
4、算;符号位作为数的一部分参加运算;若做加法,则两数直接相加;若做加法,则两数直接相加;XXYY补补=X=X补补YY补补 若做减法,则将被减数与减数的机器负数相加;若做减法,则将被减数与减数的机器负数相加;XXYY补补=X=X补补 YY补补 (mod 2,mod 2,一位符号位一位符号位))运算结果用补码表示。运算结果用补码表示。第五章 运算方法和运算器2.2.变补的概念:变补的概念:对所有二进制位对所有二进制位(包括符号位包括符号位)均取反,然后在末尾在加均取反,然后在末尾在加1 1已知已知YY补补,求,求 YY补补=Y=Y补补 变补变补的方法是:的方法是:对对YY补补,包括符号位在内,各位取
5、反,末位加,包括符号位在内,各位取反,末位加1 1。-Y-Y补补被称为被称为YY补补的机器负数,由的机器负数,由YY补补求求-Y-Y补补的过程称为对的过程称为对YY补补变补(求补)变补(求补),补码补码:一个负数由原码表示转换成补码表示时一个负数由原码表示转换成补码表示时 符号位是不变的,仅对数值符号位是不变的,仅对数值位的各位变反,末尾加位的各位变反,末尾加“1”1”。变补变补:则不论这个数的真值是正是负则不论这个数的真值是正是负,一律连同符号位一起变反,末尾加一律连同符号位一起变反,末尾加1 1。YY补补表示的真值如果是正数,则变补后表示的真值如果是正数,则变补后-Y-Y补补所表示真值变为
6、负数,反之亦然所表示真值变为负数,反之亦然 。例如:例如:YY补补=1.01101=1.01101 YY补补=0.10011=0.10011 3 3、溢出判断、溢出判断一般用一般用双符号位进行判断双符号位进行判断:符号位符号位00,00,表示正数表示正数,符号位符号位11,11,表示负数表示负数结果的符号位为结果的符号位为0101时,称为上溢;时,称为上溢;结果的符号位为结果的符号位为1010时,称为下溢时,称为下溢 XX补补 0.11010.1101+Y+Y补补 0.10010.1001X+YX+Y补补 1 1.0110.0110XX补补 00.110100.1101+Y+Y补补 00.10
7、0100.1001X+YX+Y补补 0 01 1.0110.0110第五章 运算方法和运算器例例1:1:X=0.0101 Y=-0.1001 X=0.0101 Y=-0.1001 求求X XY=?Y=?解:解:XX补补=00.0101 Y=00.0101 Y补补=11.0111 -Y=11.0111 -Y补补=00.1001 =00.1001 两符号位相同,无溢出两符号位相同,无溢出 XX补补 00.010100.0101+Y+Y补补 11.011111.0111X+YX+Y补补 1111.1100.1100XX补补 00.010100.0101+-Y+-Y补补 00.100100.1001X
8、-YX-Y补补 0000.1110.1110X+Y=-0.0100X+Y=-0.0100X-Y=+0.1110X-Y=+0.1110第五章 运算方法和运算器例例2:2:X=0.1011 Y=0.1001 X=0.1011 Y=0.1001 求求X XY=?Y=?解:解:XX补补=00.1011 Y=00.1011 Y补补=00.1001 -Y=00.1001 -Y补补=11.0111 =11.0111 两符号位相异,正溢出两符号位相异,正溢出第一符号位为正确符号第一符号位为正确符号 XX补补 00.101100.1011+Y+Y补补 00.100100.1001X+YX+Y补补 0101.01
9、00.0100XX补补 00.101100.1011+-Y+-Y补补 11.011111.0111X-YX-Y补补 100100.0010.0010X+Y=X+Y=溢出溢出X-Y=+0.0010X-Y=+0.0010 两符号位相同,无溢出两符号位相同,无溢出 第五章 运算方法和运算器例例3:3:X=-0.1011 Y=-0.1001 X=-0.1011 Y=-0.1001 求求X XY=?Y=?解:解:XX补补=11.0101 Y=11.0101 Y补补=11.0111 -Y=11.0111 -Y补补=00.1001 =00.1001 两符号位相异,负溢出两符号位相异,负溢出第一符号位为正确符
10、号第一符号位为正确符号 XX补补 11.0101 11.0101+Y+Y补补 11.011111.0111X+YX+Y补补 1 11010.1100.1100XX补补 11.010111.0101+-Y+-Y补补 00.100100.1001X-YX-Y补补 1111.1110.1110X+Y=X+Y=溢出溢出X-Y=-0.0010X-Y=-0.0010 两符号位相同,无溢出两符号位相同,无溢出 第五章 运算方法和运算器总结:总结:1.1.用模用模4 4补码进行加法运算,结果的两符号位补码进行加法运算,结果的两符号位 相异时,表示溢出;相异时,表示溢出;0101正溢出、正溢出、10 10 负溢
11、出;负溢出;相同时,表示不溢出相同时,表示不溢出2.2.模模4 4补码相加的结果,不论溢出与否,补码相加的结果,不论溢出与否,第一符号位第一符号位始终指示正确的符号始终指示正确的符号建议:以模建议:以模4 4补码做习题补码做习题!第五章 运算方法和运算器练习:练习:求求X XY=?Y=?1.X=0.1001 Y=-0.11001.X=0.1001 Y=-0.1100 X+Y=-0.0011 X-Y X+Y=-0.0011 X-Y 溢出溢出2.X=-0.0110 Y=0.11012.X=-0.0110 Y=0.1101 X+Y=0.0111 X-Y X+Y=0.0111 X-Y 溢出溢出3.X=
12、-0.1010 Y=-0.10013.X=-0.1010 Y=-0.1001 X+Y X+Y 溢出溢出 X-Y=-0.0001X-Y=-0.0001 第五章 运算方法和运算器三、反码加减法运算三、反码加减法运算 1 1、反码加减运算规则、反码加减运算规则 参加运算的两个操作数均用反码表示;参加运算的两个操作数均用反码表示;符号位作为数的一部分参加运算;符号位作为数的一部分参加运算;若做加法,则两数直接相加;若做加法,则两数直接相加;X反反+Y反反=X+Y反反 若做减法,则将被减数与连同符号位一起变反后的减数相加;若做减法,则将被减数与连同符号位一起变反后的减数相加;X反反+-Y反反=X-Y反反
13、 运算时如果符号位产生进位运算时如果符号位产生进位,则在末位加则在末位加1,1,成为循环进位成为循环进位;运算结果用补码表示。运算结果用补码表示。对于补码:对于补码:XX补补 00.1101 00.1101+Y+Y补补 11.111011.1110X+YX+Y补补 100100.1011.1011去掉正确去掉正确第五章 运算方法和运算器三、反码加减法运算三、反码加减法运算 2 2、说明:说明:反码加法,规则同补码加法,但反码加法,规则同补码加法,但若符号位有进位若符号位有进位,需将此进位加到末位需将此进位加到末位循环进位循环进位 由由YY反反如何求如何求-Y-Y反反?对对YY反反,包括符号位,
14、各位求反。,包括符号位,各位求反。第五章 运算方法和运算器例例1 1:X=0.1101 Y=-0.0010 X=0.1101 Y=-0.0010 用反码规则用反码规则求求X XY=Y=?解解:XX反反00.1101 Y00.1101 Y反反11.1101 -Y11.1101 -Y反反00.001000.0010XX反反 00.1101 00.1101+Y+Y反反 11.110111.1101X+YX+Y反反 1 10000.1010.10101 10000.1011.1011XX反反 00.1101 00.1101+-Y+-Y反反 00.001000.0010X-YX-Y反反 0000.111
15、1.1111X+Y=0.1011X+Y=0.1011X-Y=0.1111X-Y=0.1111第五章 运算方法和运算器例例2 2:X=0.1011 Y=-0.0101 X=0.1011 Y=-0.0101 用反码规则求用反码规则求X XY=Y=?解解:XX反反00.1011 Y00.1011 Y反反11.1010 -Y11.1010 -Y反反00.010100.0101XX反反 00.1011 00.1011+Y+Y反反 11.101011.1010X+YX+Y反反 1 10000.0101.01011 10000.0110.0110XX反反 00.1011 00.1011+-Y+-Y反反 00
16、.010100.0101X-YX-Y反反 0101.0000.0000X+Y=0.0110X+Y=0.0110X-Y=X-Y=溢出溢出第五章 运算方法和运算器练习:练习:1 1、X=-0.1100 Y=-0.0010X=-0.1100 Y=-0.0010 用反码规则求用反码规则求X XY=Y=?解解:XX反反11.0011 Y11.0011 Y反反11.1101-Y11.1101-Y反反00.001000.0010XX反反 11.0011 11.0011+Y+Y反反 11.110111.11011 11111.0001.0001XX反反 11.0011 11.0011+-Y+-Y反反 00.0
17、01000.0010X-YX-Y反反 1111.0101.0101X+Y=-0.1110X+Y=-0.1110X-Y=-0.1010X-Y=-0.1010X+YX+Y反反 1 11111.0000.0000第五章 运算方法和运算器练习:练习:2 2、X=-0.1101 Y=0.0110 X=-0.1101 Y=0.0110 用反码规则求用反码规则求X XY=Y=?解解:XX反反11.0010 Y11.0010 Y反反00.0110-Y00.0110-Y反反11.100111.1001XX反反 11.0010 11.0010+Y+Y反反 00.011000.0110XX反反 11.0010 11
18、.0010+-Y+-Y反反 11.100111.1001X-YX-Y反反 1 11010.1011.1011X+Y=-0.0111X+Y=-0.0111X-Y=X-Y=溢出溢出X+YX+Y反反 1111.1000.1000第五章 运算方法和运算器5.2 5.2 补码的溢出判断与检测方法补码的溢出判断与检测方法1.1.溢出的产生溢出的产生 在补码加减运算中,有时会遇到这样的情况:在补码加减运算中,有时会遇到这样的情况:两个正数相加,而结果的符号位却为两个正数相加,而结果的符号位却为1 1(结果为负)(结果为负);两个负数相加,而结果的符号位却为两个负数相加,而结果的符号位却为0 0(结果为正)。
19、(结果为正)。例例1 1:设:设:X=1011B=11DX=1011B=11D,Y=111B=7D Y=111B=7D 则:则:XX补补=0,1011=0,1011,YY补补=0,0111=0,0111 有:有:0,1 0 1 1 0,1 0 1 1 +0,0 1 1 1+0,0 1 1 1 1,0 0 1 0 1,0 0 1 0 得出结果:得出结果:X+YX+Y补补=1,0010=1,0010,X+Y=-1110B=-14D X+Y=-1110B=-14D 两正数相加结果为两正数相加结果为-14D-14D,显然是错误的。,显然是错误的。第五章 运算方法和运算器5.2 5.2 补码的溢出判断与
20、检测方法补码的溢出判断与检测方法1.1.溢出的产生溢出的产生 在补码加减运算中,有时会遇到这样的情况:在补码加减运算中,有时会遇到这样的情况:两个正数相加,而结果的符号位却为两个正数相加,而结果的符号位却为1 1(结果为负)(结果为负);两个负数相加,而结果的符号位却为两个负数相加,而结果的符号位却为0 0(结果为正)(结果为正)。例例2 2:设:设:X=-1011B=-11DX=-1011B=-11D,Y=-111B=-7D Y=-111B=-7D 则:则:XX补补=1,0101 Y=1,0101 Y补补=1,1001=1,1001 有:有:1,0 1 0 1 1,0 1 0 1 +1,1
21、0 0 1+1,1 0 0 1 0,1 1 1 0 0,1 1 1 0 得出结果:得出结果:X+YX+Y补补=0,1110=0,1110,X+Y=1110B=14D X+Y=1110B=14D 两负数相加结果为两负数相加结果为14D14D,显然也是错误的。,显然也是错误的。原因:原因:在于两数相加之和的数值已在于两数相加之和的数值已超过了超过了机器允许的表示范围。机器允许的表示范围。F字长为字长为n+1n+1位位的的定点整数定点整数(其中一位为符号位),采用(其中一位为符号位),采用补码补码表示:表示:当运算结果大于当运算结果大于2 2n n-1-1 或小于或小于-2-2n n时,就产生溢出。
22、时,就产生溢出。F设参加运算的两数为设参加运算的两数为X X、Y Y,做加法运算。,做加法运算。若若X X、Y Y异号,不会溢出。异号,不会溢出。若若X X、Y Y同号,运算结果为正且大于所能表示的最大正数或运算结果为同号,运算结果为正且大于所能表示的最大正数或运算结果为负且小于所能表示的最小负数负且小于所能表示的最小负数 (绝对值最大的负数)时,产生溢出。(绝对值最大的负数)时,产生溢出。F溢出分为溢出分为2 2种:种:正溢正溢和和负溢负溢。第五章 运算方法和运算器5.2 5.2 补码的溢出判断与检测方法补码的溢出判断与检测方法1.1.溢出的产生溢出的产生 在补码加减运算中,有时会遇到这样的
23、情况:在补码加减运算中,有时会遇到这样的情况:两个正数相加,而结果的符号位却为两个正数相加,而结果的符号位却为1 1(结果为负)(结果为负);两个负数相加,而结果的符号位却为两个负数相加,而结果的符号位却为0 0(结果为正)。(结果为正)。第五章 运算方法和运算器5.2 5.2 补码的溢出判断与检测方法补码的溢出判断与检测方法 2.2.溢出检测方法溢出检测方法 采用一个符号位判断采用一个符号位判断采用一个符号位采用一个符号位加法运算加法运算时检测溢出的方法:时检测溢出的方法:两正数相加,结果为负表明产生正溢;即当两正数相加,结果为负表明产生正溢;即当Xs=Ys=0Xs=Ys=0,Ss=1Ss=
24、1时,产生正溢。时,产生正溢。两负数相加,结果为正表明产生负溢。即当两负数相加,结果为正表明产生负溢。即当Xs=Ys=1Xs=Ys=1,Ss=0Ss=0时,产生负溢。时,产生负溢。因此可得出加法运算时因此可得出加法运算时溢出的判断条件为:溢出的判断条件为:溢出溢出=XsYsSs+XsYsSs=XsYsSs+XsYsSs采用一个符号位采用一个符号位减法运算减法运算时检测溢出的方法:时检测溢出的方法:两数相减,只有两数相减,只有X,YX,Y异号时才可能溢出;异号时才可能溢出;因此可得出减法运算时因此可得出减法运算时溢出的判断条件为:溢出的判断条件为:溢出溢出=XsYsSs+XsYsSs=XsYsS
25、s+XsYsSs第五章 运算方法和运算器5.2 5.2 补码的溢出判断与检测方法补码的溢出判断与检测方法 2.2.溢出检测方法溢出检测方法 采用进位位判断采用进位位判断两正数相加,当最高有效位产生进位(两正数相加,当最高有效位产生进位(C C1 1=1=1)而符号位不产生进位)而符号位不产生进位(Cs=0Cs=0)时,发生正溢;)时,发生正溢;两负数相加,当最高有效位没有进位(两负数相加,当最高有效位没有进位(C C1 1=0=0)而符号位产生进位)而符号位产生进位(Cs=1Cs=1)时,发生负溢。)时,发生负溢。溢出的判断条件为:溢出的判断条件为:溢出溢出=CsC=CsC1 1+CsC+Cs
26、C1 1=CsC=CsC1 1 例例1 1:设:设:X=1011B=11DX=1011B=11D,Y=111B=7D Y=111B=7D 则:则:XX补补=0,1011=0,1011,YY补补=0,0111=0,0111 有:有:0,1 0 1 1 0,1 0 1 1 +0,0 1 1 1+0,0 1 1 1 1,0 0 1 0 1,0 0 1 0 C1=1C1=1Cs=0Cs=0例例2 2:设:设:X=-1011B=-11DX=-1011B=-11D,Y=-111B=-7D Y=-111B=-7D 则:则:XX补补=1,0101 Y=1,0101 Y补补=1,1001=1,1001 有:有:
27、1,0 1 0 1 1,0 1 0 1 +1,1 0 0 1+1,1 0 0 1 0,1 1 1 0 0,1 1 1 0 C1=0C1=0Cs=1Cs=1第五章 运算方法和运算器5.2 5.2 补码的溢出判断与检测方法补码的溢出判断与检测方法 2.2.溢出检测方法溢出检测方法 采用变形补码采用变形补码(双符号位补码双符号位补码)判断判断变形补码定义:变形补码定义:小数小数“变形补码变形补码”的定义为:的定义为:XX补补 =整数整数“变形补码变形补码”的定义为:的定义为:XX补补 =(设字长为:(设字长为:n+1n+1位)位)变形补码的变形补码的性质:性质:l当当-1X1-1X0 x 0)故进行
28、算术移位时,出现的空位均添补故进行算术移位时,出现的空位均添补0 0。正数:左移、右移都补正数:左移、右移都补0 0 x x原原=0.1001 2x=0.1001 2x原原=0.0010=0.0010 x x反反=0.0011 1/2x=0.0011 1/2x反反=0.0001=0.0001 x x补补=0.1001 2x=0.1001 2x补补=0.0010=0.0010第五章 运算方法和运算器 负数负数原码原码除符号位外,原码的数值部分与真值相同,故移位后都补除符号位外,原码的数值部分与真值相同,故移位后都补0 0。xx原原=1.0111 2x=1.0111 2x原原=1.1110 1/2
29、x=1.1110 1/2x原原=1.0011=1.0011反码反码除符号位外除符号位外,反码的数值部分与原码相反反码的数值部分与原码相反,故移位后都补故移位后都补1 1xx反反=1.0111 2x=1.0111 2x反反=1.1111 1/2x=1.1111 1/2x反反=1.1011=1.1011第五章运算方法和运算器补码补码xx补补=1.=1.1001001 1 x x原原=1.011=1.0111 1 x x反反=1.=1.1001000 0 xx补补=1.=1.01101110001000 x x原原=1.100=1.10010001000 x x反反=1.=1.01101101110
30、111xx补补=1.=1.11000110001010 x x原原=1.00111=1.001111010 x x反反=1.=1.1100001100001 1分析发现:分析发现:补码由低位向高位出现第一个补码由低位向高位出现第一个“1”1”的左边各位与反码同,从的左边各位与反码同,从“1”1”开始开始的右边各位与原码同。的右边各位与原码同。补码补码规则规则(负数)(负数):左移:补左移:补0 0,同原码,同原码 右移:补右移:补1 1,同反码,同反码 注意:注意:左移时,当数值最高位为:原码(左移时,当数值最高位为:原码(1 1)、反码和补码()、反码和补码(0 0)时,结果溢出;)时,结果
31、溢出;右移时,当数值最低位为:原码(右移时,当数值最低位为:原码(1 1)和补码()和补码(1 1)、反码()、反码(0 0)时,结果)时,结果不会溢出,但是数值变小;不会溢出,但是数值变小;第五章运算方法和运算器5.3.25.3.2移位功能的实现移位功能的实现注意:上图为第注意:上图为第i i位的一位逻辑电路位的一位逻辑电路左移时,相当于乘以左移时,相当于乘以2,2,控制信号控制信号2F2FL L有效有效右移时,相当于除以右移时,相当于除以2,2,控制信号控制信号2/F2/FL L有效有效不移位时不移位时,控制信号控制信号F FL L有效有效&1&LiF/2LFL2FLFi+1Fi-1Fi第
32、五章 运算方法和运算器5.3.35.3.3、带符号数的舍入操作、带符号数的舍入操作在算术移位时,由于硬件的限制,会失去一定的位数,造在算术移位时,由于硬件的限制,会失去一定的位数,造成一些误差,为减小误差,就要进行舍入操作。成一些误差,为减小误差,就要进行舍入操作。恒舍(切断)恒舍(切断):保留保留p p位位 多余多余q q位位全部舍去全部舍去冯冯 诺依曼舍入法诺依曼舍入法(末位恒置(末位恒置1 1)0 0舍舍1 1入法入法1.1.ROMROM舍入法舍入法(查表法,(查表法,P104P104)p位 1 1q位p位q位p位1 1 q位p位0 0 q位第五章 运算方法和运算器5.4 5.4 基本运
33、算的实现基本运算的实现 一、一、加法器加法器 计算机中计算机中最基本的运算部件是最基本的运算部件是加法器加法器。通常,加法器再配以其他必要的逻。通常,加法器再配以其他必要的逻辑电路就可以进行计算机中的一些基本运算。辑电路就可以进行计算机中的一些基本运算。1.1.全加器全加器三个输入量三个输入量:操作数:操作数A Ai i和和B Bi i、低位传来的进、低位传来的进 位位C Ci-1i-1,两个输出量两个输出量:本位和:本位和S Si i、向高位的进位、向高位的进位C Ci i。A Ai iB Bi iC Ci-1i-1S Si iC Ci i00000001100101001101100101
34、01011100111111全加器的逻辑表达式为全加器的逻辑表达式为:S Si i=A=Ai iBBi iCCi-1i-1 C Ci i=A=Ai iB Bi i+(A+(Ai iBBi i)C)Ci-1i-1 第五章 运算方法和运算器5.4 5.4 基本运算的实现基本运算的实现 一、一、加法器加法器 2.2.串行加法器串行加法器在串行加法器中,只有一个全加器,数据逐位串行送加法器进行运算。在串行加法器中,只有一个全加器,数据逐位串行送加法器进行运算。如果操作数长如果操作数长n n 位,加法就要分位,加法就要分n n次进行,每次只能产生一位和。次进行,每次只能产生一位和。串行运算器特点:所用元
35、器件少(一位全加器),但速度极低,因此,串行运算器特点:所用元器件少(一位全加器),但速度极低,因此,现在用的不多,现在广泛使用的是并行运算器。现在用的不多,现在广泛使用的是并行运算器。第五章 运算方法和运算器5.4 5.4 基本运算的实现基本运算的实现 一、一、加法器加法器 3.3.并行加法器并行加法器其位数的多少取决于机器的字其位数的多少取决于机器的字长,数据的各位同时运算。长,数据的各位同时运算。并行加法器特点:虽然操作数并行加法器特点:虽然操作数的各位是同时提供的,但低位运的各位是同时提供的,但低位运算所产生的进位有可能会影响高算所产生的进位有可能会影响高位的运算结果。位的运算结果。也
36、可以说也可以说并行加并行加法器的最长运算时间主要是由进法器的最长运算时间主要是由进位信号的传递时间决定位信号的传递时间决定的。提高的。提高并行加法器速度的关键是尽量并行加法器速度的关键是尽量加加快进位产生和传递的速度快进位产生和传递的速度。补码加减运算器如下图补码加减运算器如下图第五章 运算方法和运算器5.4 5.4 基本运算的实现基本运算的实现 二、并行加法器进位的产生和传递二、并行加法器进位的产生和传递并行加法器的位数并行加法器的位数:取决于机器的字长取决于机器的字长,和操作数的位数相同和操作数的位数相同;并行加法器的速度:并行加法器的速度:并行加法器的最长运算时间主要是由进位并行加法器的
37、最长运算时间主要是由进位信号的传递时间决定的。提高并行加法器速度的关键是尽量加信号的传递时间决定的。提高并行加法器速度的关键是尽量加快进位产生和传递的速度。快进位产生和传递的速度。进位链:进位链:各级各级进位间存在一个由低位向高位的传递关系进位间存在一个由低位向高位的传递关系,这种,这种进位信号的传递结构进位信号的传递结构进位链进位链。(各级进位信号,逐级串联。(各级进位信号,逐级串联成一条链)成一条链)1).1).全加器的函数表达式全加器的函数表达式 S Si i=A=Ai i B Bi i C Ci-1i-1 C Ci i=A=Ai iB Bi i+(A+(Ai i+B+Bi i)C)Ci
38、-1i-1=G=Gi i+P+Pi iC Ci-1i-1 第五章 运算方法和运算器 C Ci i=A Ai iB Bi i+(A(Ai i+B+Bi i)C Ci i1 1=G Gi i+P Pi iC Ci-1i-1 G Gi i=A=Ai iB Bi i 名称:名称:进位产生函数、本地进位、绝对进位进位产生函数、本地进位、绝对进位含义:含义:只有本位两输入全只有本位两输入全1 1时,才产生向高位的进位。时,才产生向高位的进位。(进位仅与本位有关,与低位无关)(进位仅与本位有关,与低位无关)P Pi i=A=Ai i+B+Bi i 名称:名称:进位传送函数、传送条件、跳跃条件进位传送函数、传
39、送条件、跳跃条件含义:含义:只要本位两输入有一个为只要本位两输入有一个为1 1时,低位来的进位时,低位来的进位就能传送到高位。就能传送到高位。第五章 运算方法和运算器2).2).进位信号的传送进位信号的传送进位链进位链串行进位链(串行进位链(行波进位链行波进位链)进位逐级形成,每一级的进位直接依赖于前一级的进位进位逐级形成,每一级的进位直接依赖于前一级的进位 C C1 1=A=A1 1B B1 1+(A A1 1+B+B1 1)C C0 0 C C2 2=A=A2 2B B2 2+(A A2 2+B+B2 2)C C1 1 C C2 2要等要等C C1 1形成后才能产生形成后才能产生 C Cn
40、 n=A=An nB Bn n+(A An n+B+Bn n)C Cn-1n-1 C Cn n要等要等C Cn-1n-1形成后才能产生形成后才能产生 第五章 运算方法和运算器串行进位串行进位并行并行加法器的特点:加法器的特点:电路较节省,但严电路较节省,但严重影响着加法器的速度;重影响着加法器的速度;进位时间:进位时间:C Ci i=A=Ai iB Bi i+(A Ai i+B+Bi i)C Ci-1i-1=G Gi i+P+Pi i C Ci-1i-1若全部用与门和或门来构造加法器,每级门延迟若全部用与门和或门来构造加法器,每级门延迟为为1ty1ty,n n位字长,位字长,不考虑不考虑G G
41、i i、P Pi i的形成时间的形成时间,由由C C0 0产生后到产生后到C Cn n产生共需产生共需2nty2nty.为什么?为什么?因为因为每一级加法器的进位延迟时间是每一级加法器的进位延迟时间是2ty2ty改进改进:1 1)减少门的级数)减少门的级数 2 2)采用高速进位元件)采用高速进位元件 第五章 运算方法和运算器 并行进位链并行进位链(理想进位链。理想进位链。)G Gi i=A=Ai iB Bi i P Pi i=A=Ai i+B+Bi i C C1 1=G=G1 1+P+P1 1C C0 0 C C2 2=G=G2 2+P+P2 2C C1 1=G=G2 2+P+P2 2G G1
42、 1+P+P2 2P P1 1C C0 0 C C3 3=G=G3 3+P+P3 3C C2 2=G=G3 3+P+P3 3G G2 2+P+P3 3P P2 2G G1 1+P+P3 3P P2 2P P1 1C C0 0 C C4 4=G=G4 4+P+P4 4C C3 3=G=G4 4+P+P4 4G G3 3+P+P4 4P P3 3G G2 2+P+P4 4P P3 3P P2 2G G1 1+P+P4 4P P3 3P P2 2P P1 1C C0 0 上述各式中所有各位的进位均不依赖于低位的进上述各式中所有各位的进位均不依赖于低位的进位,各位的进位可以同时产生。位,各位的进位可以
43、同时产生。第五章 运算方法和运算器 用与门和或门用与门和或门实现的并行进位链实现的并行进位链(CLA)CLA)电路。每级电路。每级门延迟门延迟1ty1ty,从从C C0 0CCn n的最长延迟时的最长延迟时间间共需共需2ty2ty。第五章 运算方法和运算器C C0 0、G G、P P 形成后,最多只有两级门的延迟即可形形成后,最多只有两级门的延迟即可形成成CnCn,是速度最快的一种进位链。,是速度最快的一种进位链。n n位字长位字长,C,Cn n产生共需产生共需2ty2ty.但此方案但此方案C Cn n的逻辑表达的逻辑表达式会变得越来越长式会变得越来越长,这使得电路结构变得很复杂这使得电路结构
44、变得很复杂,完全采用并行进位是不现实的,故称为完全采用并行进位是不现实的,故称为理想的进理想的进位链。位链。优点:优点:速度快(速度快(各级进位信号几乎同时产生各级进位信号几乎同时产生)缺点:缺点:位数增多,扇入系数太大,无法完全实现。位数增多,扇入系数太大,无法完全实现。第五章 运算方法和运算器分组并行进位方式分组并行进位方式单级先行进位方式:单级先行进位方式:将将n n位加法分组,位加法分组,组内用并行组内用并行进位链,进位链,组组间用串行间用串行进位链。进位链。(组内并行,组间串行)(组内并行,组间串行)例如:利用例如:利用4 4位先行进位电路和求和电路可以构成位先行进位电路和求和电路可
45、以构成4 4位的先行进位的先行进位加法器。位加法器。则则1616位加法器,可分位加法器,可分4 4组,组,4 4位位/组就可用组就可用4 4个个4 4位的位的先行进位加法器构成。如图:先行进位加法器构成。如图:P P103103图图5-65-6组内:并行进位,组内:并行进位,组间:串行进位组间:串行进位特点:特点:这种方案,速度高,但线路相对串行进位复这种方案,速度高,但线路相对串行进位复 杂,成本高杂,成本高 。第五章 运算方法和运算器分组并行进位方式分组并行进位方式多级先行进位方式:多级先行进位方式:(组内并行,组间并行)(组内并行,组间并行)首先对第一组的最高进位位首先对第一组的最高进位
46、位C C4 4有有:C C4 4=G G4 4+P+P4 4G G3 3+P+P4 4P P3 3G G2 2+P+P4 4P P3 3P P2 2G G1 1+P P4 4P P3 3P P2 2P P1 1C C0 0 =G G*1 1+P P*1 1C C0 0 同理:同理:(P104P104)对第二组对第二组,第三组第三组,第四组的最高进位第四组的最高进位位位C C8 8、C C12 12、C C1616有有:C C8 8=G=G2 2*+P+P2 2*C C4 4=G=G2 2*+P+P2 2*G G1 1*+P+P2 2*P P1 1*C C0 0C C1 21 2=G=G3 3*
47、+P+P3 3*G G2 2+P+P3 3*P P2 2*G G1 1*+P+P3 3*P P2 2*P P1 1*C C0 0C C1616=G=G4 4*+P+P4 4*G G3 3*+P+P4 4*P P3 3*G G2 2*+P+P4 4*P P3 3*P P2 2*G G1 1*+P+P4 4*P P3 3*P P2 2*P P1 1*C C0 0第五章 运算方法和运算器G G*i i、T T*i i如何形成?如何形成?G G*1 1=G=G4 4+P+P4 4G G3 3+P+P4 4P P3 3G G2 2+P+P4 4P P3 3P P2 2G G1 1P P*1 1=P=P4
48、 4P P3 3P P2 2P P1 1第五章 运算方法和运算器*5.5.补码加减法运算器(补码加减法运算器(P105P105)第五章 运算方法和运算器第五章 运算方法和运算器补码加法:补码加法:XFXF、YFYF、FXFX、CPCPX XACBF0 10 1XXsYsFs寄存器寄存器加法器 YFF XX F1 F F_YY寄存器寄存器X寄存器寄存器加法器加法器XFYFFXCPXCPX第五章 运算方法和运算器补码减法:补码减法:XFXF、YFYF、1F1F、FXFX、CPCPX XACBF0 10 1XXsYsFs寄存器寄存器加法器 YFF XX F1 F F_YY寄存器寄存器X寄存器寄存器加
49、法器加法器FXCPXCPXXFYF1F第五章 运算方法和运算器5.5 5.5 定点乘法运算定点乘法运算乘法运算是计算机中常用的运算,过去的计算机中,乘法运算是计算机中常用的运算,过去的计算机中,没有专门的乘法器。乘法运算要靠软件编程来实现。没有专门的乘法器。乘法运算要靠软件编程来实现。但现在随着但现在随着LSILSI和和VLSIVLSI应用的普及以及价格的下降,应用的普及以及价格的下降,乘法运算已做成了标准部件乘法运算已做成了标准部件乘法器。乘法器。硬件实现:速度快,成本高硬件实现:速度快,成本高 软件实现:速度低,成本低软件实现:速度低,成本低乘法乘法实现原理一样实现原理一样一般来讲,做乘除
50、法运算,用原码比用补码简单,一般来讲,做乘除法运算,用原码比用补码简单,但有的机器,数据是用补码表示的,为避免码制间但有的机器,数据是用补码表示的,为避免码制间的频繁转换,乘除也用补码来做。的频繁转换,乘除也用补码来做。二位乘一位乘补码二位乘一位乘原码乘法乘法第五章 运算方法和运算器重点难点重点难点5.5.15.5.1原码乘法原码乘法一、原码一位乘一、原码一位乘用原码运算,数据的符号不能同数值位一同参加运算,用原码运算,数据的符号不能同数值位一同参加运算,而需而需单独处理单独处理,两原码表示的数相乘,其结果的符号,两原码表示的数相乘,其结果的符号是两数符号的是两数符号的异或异或。0.11010