最新四章节数据机器运算ppt课件.ppt
2本章主要内容本章主要内容主要内容主要内容n算术、逻辑运算的实现算术、逻辑运算的实现n定点加、减运算定点加、减运算n数的移位和舍入操作数的移位和舍入操作n定点乘、除运算定点乘、除运算n规格化浮点运算规格化浮点运算93 3、并行加法器的快速进位、并行加法器的快速进位l改进串行进位方式的基本思路是让各进位同时形成,避免各进位之改进串行进位方式的基本思路是让各进位同时形成,避免各进位之间的依赖关系。现在来分析一下进位关系。间的依赖关系。现在来分析一下进位关系。 展开展开C1=G1+P1C0 ;C2=G2+P2C1 ; ,Cn=Gn+PnCn-1 得关系式:得关系式: C1=G1+P1C0 C2=G2+P2C1=G2+P2G1+P2P1C0 C3=G3+P3C2=G3+P3G2+P3P2G1+P3P2P1C0 C4=G4+P4C3=G4+P4G3+P4P3G2+P4P3P2G1 +P4P3P2P1C0 以上进位输出只与以上进位输出只与Gi、Pi以及最低进位以及最低进位C0有关,而且不依赖于其低有关,而且不依赖于其低位进位位进位Ci-1的输入,因此各级进位可以同时产生,形成的输入,因此各级进位可以同时产生,形成并行进位。并行进位。10并行进位的特点并行进位的特点n并行进位的特点是各级进位信号同时形成,与字长无并行进位的特点是各级进位信号同时形成,与字长无关,提高了整体运算速度关,提高了整体运算速度 。并行进位又叫先行进位。并行进位又叫先行进位。n最长延迟时间仅为最长延迟时间仅为2ty。n随着加法器位数的增加,随着加法器位数的增加,Ci的逻辑表达式会变得越来的逻辑表达式会变得越来越长,输入变量会越来越多,电路结构也会变得越来越长,输入变量会越来越多,电路结构也会变得越来越复杂,导致电路实现也越来越困难。越复杂,导致电路实现也越来越困难。n并行进位方式需继续改进,才能有实用价值。这就是并行进位方式需继续改进,才能有实用价值。这就是下面要介绍的分组进位方式。下面要介绍的分组进位方式。11n以以16位加法器为例,将其分为位加法器为例,将其分为4组,每组组,每组4位。位。n在组内,按照并行进位函数直接产生在组内,按照并行进位函数直接产生C1C4,这,这些进位可同时得到。实现这种进位逻辑的电路称些进位可同时得到。实现这种进位逻辑的电路称为为4位位先行进位电路(先行进位电路(CLA),如,如74181ALU。n利用这种利用这种4位一组的位一组的CLA电路和电路和4位全加器可以构位全加器可以构成成4位位CLA加法器。注意,加法器。注意,4位位CLA加法器包含了加法器包含了两部分逻辑:两部分逻辑:4位全加器和位全加器和4位一组的先行进位链,位一组的先行进位链,这个组内的进位为一级进位。这个组内的进位为一级进位。 n在组间,每个组的进位输入是前一个组的进位输在组间,每个组的进位输入是前一个组的进位输出,而每个组的进位输出是下一个组的进位输入出,而每个组的进位输出是下一个组的进位输入.构成构成1616位加法位加法器很容器很容易实现易实现 单级先行进位单级先行进位12单级先行进位(续一)单级先行进位(续一)n上述组内并行、组间串行的进位方式也称为单级先上述组内并行、组间串行的进位方式也称为单级先行进位方式,原理如下图所示。行进位方式,原理如下图所示。13单级先行进位(续二)单级先行进位(续二)n组内并行、组间串行进位的时间图组内并行、组间串行进位的时间图(16位位)如下:如下:n完成进位时间完成进位时间8ty.n进位时间与组数成正比,组数越多,进位时间越长。进位时间与组数成正比,组数越多,进位时间越长。14多级先行进位多级先行进位n为说明问题,我们不妨仍以为说明问题,我们不妨仍以16位加法器为例,仍然位加法器为例,仍然4位一组,分成位一组,分成4个小组,先就第一小组的进位输出函个小组,先就第一小组的进位输出函数数C4做一下分析:做一下分析:C4 = G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0 G1* P1* = G1* +P1*C0n G1*称为称为组进位产生函数组进位产生函数,P1*称为称为组进位传递函数组进位传递函数;这两个函数类似于进位产生函数这两个函数类似于进位产生函数G和进位传递函数和进位传递函数P.15多级先行进位(续一)多级先行进位(续一)n四个组内的最高进位四个组内的最高进位C16、C12、C8、C4可以分别表示为可以分别表示为: : C4 = G1* + P1* C0 C8 = G2* + P2* C4 C12 = G3* + P3* C8 C16 = G4* + P4* C12现在逐项代入、并展开得关系式:现在逐项代入、并展开得关系式:C4 = G1* + P1* C0C8 = G2*+P2*C4=G2*+P2*G1* +P2*P1*C0C12 = G3*+P3*G2*+P3*P2*G1* +P3*P2*P1*C0C16 = G4*+P4*G3*+P4*P3*G2*+P4*P3*P2*G1*+P4*P3*P2*P1*C0可以看出,这可以看出,这4组进位结构与前述组进位结构与前述4位先行进位逻辑完全相同,位先行进位逻辑完全相同,组间进位信号只与最低进位组间进位信号只与最低进位C0有关,所以能同时产生。有关,所以能同时产生。16多级先行进位(续二)多级先行进位(续二)n组内进位信号能同时产生、组间进位信号也能同时产组内进位信号能同时产生、组间进位信号也能同时产生,由此可以构成多级并行进位逻辑。生,由此可以构成多级并行进位逻辑。16位位2级先行级先行进位加法器如下图所示。进位加法器如下图所示。17多级先行进位(续三)多级先行进位(续三)n问题是这问题是这4个组间进位信号如何用硬件来产生呢?个组间进位信号如何用硬件来产生呢?对于多级先行进位的实现可以按如下思路来理解:对于多级先行进位的实现可以按如下思路来理解:n先把单级先行进位加法器的串行进位链断开;先把单级先行进位加法器的串行进位链断开;n增加一级先行进位链,这个新增加的先行进位链的增加一级先行进位链,这个新增加的先行进位链的进位称为二级进位;进位称为二级进位;n组间进位信号组间进位信号C4、C8、C12、C16由二级进位链来产由二级进位链来产生,其逻辑关系式已经得到;生,其逻辑关系式已经得到;n让一级进位链多产生两个辅助函数让一级进位链多产生两个辅助函数Gi*和和Pi*,并且,并且作为二级进位链的输入。作为二级进位链的输入。 18多级先行进位(续四)多级先行进位(续四)16位位2级级先行进位时间图先行进位时间图 进位产生次序如下:进位产生次序如下:n产生第一小组的产生第一小组的C1C3、所有、所有组进位产生函数组进位产生函数Gi*和组进位传和组进位传递函数递函数Pi*,时间为,时间为2ty. n由由CLA电路产生第二、三、四电路产生第二、三、四小组的组间进位信号小组的组间进位信号C4、C8、C12、C16,时间为,时间为2ty.n产生第二、三、四小组的组内产生第二、三、四小组的组内进位信号进位信号C5、C6、C7、C9、C10、C11、C13、C14、C15,时间为,时间为2ty. 194 4、多功能算术逻辑部件、多功能算术逻辑部件ALUn前面介绍了运算器的算术运算功能,为了完成多种算前面介绍了运算器的算术运算功能,为了完成多种算术逻辑运算,需要将加法器的功能进行扩展,扩展的术逻辑运算,需要将加法器的功能进行扩展,扩展的基本思想如下:基本思想如下:参加运算的两个数参加运算的两个数Ai、Bi和低位进位和低位进位Ci-1先不进行全加,先把两个输入先不进行全加,先把两个输入Ai、Bi和四个控制参数和四个控制参数S0、S1、S2、S3进进行组合,形成函数行组合,形成函数Xi和和Yi,然后再将,然后再将Xi、Yi和低位进位和低位进位Ci-1通过全加器进行全加。通过全加器进行全加。这样一来,控制参数不同,得到的组这样一来,控制参数不同,得到的组合函数也不同,从而实现多种算术和合函数也不同,从而实现多种算术和逻辑运算。逻辑运算。 20算术逻辑部件算术逻辑部件ALUn算术逻辑部件算术逻辑部件ALU大体上有三部分组成:大体上有三部分组成:n全加器全加器n进位链进位链n输入选择器输入选择器n下面以下面以ALU的一位逻辑为例,原理性地说明的一位逻辑为例,原理性地说明算术、逻辑功能是如何实现的。算术、逻辑功能是如何实现的。21算术逻辑部件算术逻辑部件ALU(续一)(续一)l一位加法器由全加器和进位门构一位加法器由全加器和进位门构成,其中,两个半加器构成全加成,其中,两个半加器构成全加器、与或非门构成一位进位门。器、与或非门构成一位进位门。l一位输入选择器,由两个与或非一位输入选择器,由两个与或非门构成,可输入门构成,可输入2个本位操作数个本位操作数或非、或非、4个控制信号(个控制信号(S3S0)l一个控制门一个控制门M,选择算逻运算。,选择算逻运算。当当M=0时,开门接收低位来的进时,开门接收低位来的进位信号,执行算术运算;当位信号,执行算术运算;当M=1时,关门不接收低位进位信号,时,关门不接收低位进位信号,执行逻辑运算,与进位无关。执行逻辑运算,与进位无关。 22算术逻辑部件算术逻辑部件ALU(续二)(续二)控制信号与选择器输出关系表:控制信号与选择器输出关系表:S3 S2 Xi S1 S0 Yi0 0 1 0 0 Ai0 1 Ai+Bi 0 1 AiBi1 0 Ai+Bi 1 0 AiBi1 1 Ai 1 1 0 进位传递函数进位传递函数进位产生函数进位产生函数通过不同的输入选择,实现不同的功能,这进一步说明:数据是在传通过不同的输入选择,实现不同的功能,这进一步说明:数据是在传送过程实现运算、并得到处理的。多位送过程实现运算、并得到处理的。多位ALUALU的实现思路完全一样。的实现思路完全一样。235 5、运算器的组织、运算器的组织n运算器主要由算逻部件运算器主要由算逻部件ALU、寄存器、多路转换、寄存器、多路转换器、内部数据总线组成。器、内部数据总线组成。n在运算器内部,各功能模块之间的连接大都采用在运算器内部,各功能模块之间的连接大都采用总线结构,称为运算器的内部总线,总线结构,称为运算器的内部总线,ALU和各寄和各寄存器都挂在上面。存器都挂在上面。n运算器大体上有如下三种结构:单总线结构、双运算器大体上有如下三种结构:单总线结构、双总线结构和三总线总线结构。总线结构和三总线总线结构。24l操作数需要分两次送入操作数需要分两次送入ALU,而,而且需要两个缓冲寄存器;完成一且需要两个缓冲寄存器;完成一次运算需要次运算需要3步。特点是控制电路步。特点是控制电路简单,而速度较慢。简单,而速度较慢。 l两个操作数可以同时到达两个操作数可以同时到达ALU进行进行运算,且马上可以得到运算结果,运算,且马上可以得到运算结果,输出端需要设置一个缓冲寄存器输出端需要设置一个缓冲寄存器 ;完成一次运算需要完成一次运算需要2步步 。l两条总线同时供给操作数,输出与两条总线同时供给操作数,输出与第三条总线相连;完成一次运算需第三条总线相连;完成一次运算需要要1步。特点是操作速度快,控制步。特点是操作速度快,控制相对复杂一些。相对复杂一些。 运算器的运算器的3种组织结构种组织结构25二、定点加减运算二、定点加减运算 n原码加减运算原码加减运算n当原码做加减运算时,符号位不参加运算,只当原码做加减运算时,符号位不参加运算,只在两数的绝对值之间进行。在两数的绝对值之间进行。n加法时可能要做减法(两数异号)、减法时又加法时可能要做减法(两数异号)、减法时又可能做加法(两数异号)。可能做加法(两数异号)。n操作结果需要根据绝对值的大小来确定运算结操作结果需要根据绝对值的大小来确定运算结果的符号。计算机中通常没有减法器,减法运果的符号。计算机中通常没有减法器,减法运算需要转换为加法来实现。算需要转换为加法来实现。结论:原码加减运算过程比较复杂,一般不用结论:原码加减运算过程比较复杂,一般不用. .261 1、补码加减运算、补码加减运算 补码加减运算的依据如下:补码加减运算的依据如下:n和的补码等于补码的和和的补码等于补码的和 nX + Y补补 = X补补 + Y补补 n相反数的补码等于补码的相反数相反数的补码等于补码的相反数 n-X补补 = - X补补 n差的补码等于补码的差差的补码等于补码的差nX-Y补补 = X补补+ -Y补补 = X补补- Y补补 补码的运算规则:补码的运算规则: n参加运算的操作数用补码表参加运算的操作数用补码表示。示。n补码的符号位与数值位同时补码的符号位与数值位同时参加运算。参加运算。n若做加法,则两数补码直接若做加法,则两数补码直接相加;相加;若做减法,用被减数与减数若做减法,用被减数与减数的的机器负数机器负数相加。相加。n运算结果为和运算结果为和、差的补码。差的补码。 注注:机器负数等于补码连同机器负数等于补码连同符号位按位求反,末位加符号位按位求反,末位加1。27补码加减示例补码加减示例例例1、A=0.1011, B=-0.1110,求,求A+B.解:解: A补补 = 0.1011, B补补 = 1.00100.1011+1.00101.1101 A+B补补 = 1.1101 A+B = -0.0011例例2、A=0.1011, B=-0.0010,求,求A-B.解:解: A补补 = 0.1011, B补补 = 1.1110, -B补补 = 0.0010 0.1011+ 0.0010 0.1101 A-B补补 = 0.1101 A-B = 0.1101282 2、补码加减溢出的判别、补码加减溢出的判别例例3、X=1011,Y=111 求X+Y。 例例4、X=-1011,Y=-111 求X+Y。解解:X补=0,1011,Y补=0,0111 解解:X补=1,0101,Y补=1,10010,1011 (+11) 1,0101 (-11)+0,0111 (+7) + 1,1001 (-7 )1,0010 0,1110 X+Y补 =1,0010 X+Y补=0,1110 X+Y=-1110 (-14) X+Y=+1110 (+14) 出错原因在于用了出错原因在于用了4个二进制位来表示绝对值为个二进制位来表示绝对值为18的和数的和数。29补码加减运算溢出补码加减运算溢出n当运算结果超出了机器所能表示的范围时,当运算结果超出了机器所能表示的范围时,数值位侵占了符号位,这种现象称为数值位侵占了符号位,这种现象称为溢出溢出。两个同符号的数相加会产生溢出。两个同符号的数相加会产生溢出。 n两个正数相加,结果大于机器所能表示的两个正数相加,结果大于机器所能表示的最大正数,称为最大正数,称为上溢(正溢)上溢(正溢)。n两个负数相加,结果小于机器所能表示的两个负数相加,结果小于机器所能表示的最小负数,称为最小负数,称为下溢(负溢)下溢(负溢)。30补码加减溢出的判别方法补码加减溢出的判别方法 判断溢出的三种基本方法:判断溢出的三种基本方法: 采用一个符号位判别采用一个符号位判别 l当参加运算的两个数的符号为当参加运算的两个数的符号为0、而和的符号、而和的符号位为位为1时上溢;时上溢;l当参加运算的两个数的符号为当参加运算的两个数的符号为1、而和的符号、而和的符号位为位为0时下溢。时下溢。 判别条件为:溢出判别条件为:溢出= XsYsSs+XsYsSs其中,其中,Xs、Ys为参加运算两数的符号,为参加运算两数的符号, Ss为结果符号位。为结果符号位。31补码加减溢出的判别方法补码加减溢出的判别方法( (续续) ) 采用进位位判别采用进位位判别 l两个正数相加,当最高有效位产生进位(两个正数相加,当最高有效位产生进位(C1=1)而)而符号位不产生进位(符号位不产生进位(Cs=0)时,发生上溢;)时,发生上溢;l两个负数相加,当最高有效位不产生进位(两个负数相加,当最高有效位不产生进位(C1=0)而符号位产生进位,发生下溢。而符号位产生进位,发生下溢。 判别条件为:溢出判别条件为:溢出= CsC1+CsC1 = Cs C1 采用变形补码(双符号位补码)采用变形补码(双符号位补码)l采用变形补码检测,当运算结果的两符号位不一致采用变形补码检测,当运算结果的两符号位不一致时表示溢出。若符号位用时表示溢出。若符号位用Ss1Ss2表示,则表示,则Ss1Ss2=01 结果上溢,结果上溢,Ss1Ss2=10 结果下溢结果下溢. 判别溢出的条件为:判别溢出的条件为: 溢出溢出=Ss1 Ss2SS1始终正确始终正确323 3、补码定点加减运算器的基本组成、补码定点加减运算器的基本组成 l补码加法:补码加法: 在在XF、YF、FX三个控制三个控制信号的控制下,打开门信号的控制下,打开门A、门、门B和门和门C,把寄,把寄存器存器X和寄存器和寄存器Y的内的内容送入加法器的两个输容送入加法器的两个输入端进行加法运算,把入端进行加法运算,把结果送回寄存器结果送回寄存器X中中.l补码减法:与补码加法补码减法:与补码加法不同之处在于要用不同之处在于要用YF来代替来代替YF、并、并在在1F控制信号作用控制信号作用下使结果加下使结果加1,即可完,即可完成补码减法运算。成补码减法运算。33三、带符号数的移位与舍入三、带符号数的移位与舍入 n移位移位是算术、逻辑运算的又一基本操作,而且几乎是算术、逻辑运算的又一基本操作,而且几乎所有机器的指令系统都设有移位指令。所有机器的指令系统都设有移位指令。比如,乘法比如,乘法运算大多数是通过运算大多数是通过“累加累加移位移位”来实现的。来实现的。n算术移位操作时,算术移位操作时,符号位不变符号位不变,数值大小则会发生,数值大小则会发生变化。左移一位相当于乘以变化。左移一位相当于乘以2,右移一位相当于除,右移一位相当于除以以2,因为移位使位权发生了变化,因为移位使位权发生了变化。n在移位过程中,有效数位会被移出数据字而丢失。在移位过程中,有效数位会被移出数据字而丢失。因此,还需要考虑数据的舍入问题,以尽可能提高因此,还需要考虑数据的舍入问题,以尽可能提高数据的表示精度。数据的表示精度。341 1、移位规则、移位规则 n原码移位规则原码移位规则 n符号位不变符号位不变 n空出位补空出位补0 例如:例如:1X1X2X3Xn 左移后为:左移后为:1X2X3Xn0 右移后为:右移后为:10X1X2Xn-1n补码移位规则补码移位规则n符号位不变符号位不变 n左移时,空出位补左移时,空出位补0 n右移时,符号位补充空出位右移时,符号位补充空出位例如:例如:1X1X2X3Xn 左移后为:左移后为:1X2X3Xn0 右移后为:右移后为:11X1X2Xn-1算术左移在不产生溢出时,算术左移在不产生溢出时,符号位保持不变。符号位保持不变。 我们用的微机使用补码我们用的微机使用补码来表示数据来表示数据. . 352 2、移位器逻辑电路、移位器逻辑电路 n移位器移位器是由与门和或门组成的逻辑电路(实际是一个是由与门和或门组成的逻辑电路(实际是一个多路选择器),可以实现直传(不移位)、左斜一位多路选择器),可以实现直传(不移位)、左斜一位送(左移一位)和右斜一位送(右移一位)的功能。送(左移一位)和右斜一位送(右移一位)的功能。移位器逻辑电路如图所示。移位器逻辑电路如图所示。 左移由左移由2FL控制,控制,Fi-1Li直传由直传由FL来控制,来控制,FiLi 右移由右移由F/2L来控制,来控制,Fi+1Li移位器无数据寄存能力。移位器无数据寄存能力。363 3、舍入操作、舍入操作 n舍入操作有以下几种:舍入操作有以下几种:n截断法截断法:无条件地舍去多余的位。无条件地舍去多余的位。n恒置恒置1法法:舍去多余位,保留部分最低位置舍去多余位,保留部分最低位置1。 n0舍舍1入法入法:舍去部分的最高位为舍去部分的最高位为1时,则保留部时,则保留部分末位加分末位加1,与四舍五入法类似,与四舍五入法类似。n截断法和恒置截断法和恒置1法误差比较大;法误差比较大;0舍舍1入法比较合理,入法比较合理,但当保留部分为但当保留部分为0.111时,会导致再次溢出。末时,会导致再次溢出。末位恒置位恒置1,在除法中非常有用。,在除法中非常有用。37四、定点乘法运算四、定点乘法运算 乘法运算要比加法运算复杂。先举一个大家熟悉的手工定点乘法乘法运算要比加法运算复杂。先举一个大家熟悉的手工定点乘法的例子;之后我们来看,如果将手工运算改为机器运算,会出现的例子;之后我们来看,如果将手工运算改为机器运算,会出现什么问题?该如何解决?什么问题?该如何解决?l 例:例:0.11010.1011 = ? 0.1101 0.1011 1101 1101 0000 + 1101 0.10001111 l手工计算的二进制乘法规则:手工计算的二进制乘法规则:数值位:数值位: 00 = 0 10 = 0 11 = 1,逻辑与。,逻辑与。符号位:符号位: 同号相乘为正同号相乘为正 异号相乘为负,逻辑异或异号相乘为负,逻辑异或其结果:乘积其结果:乘积 = 符号位符号位 / 数值位。数值位。 38乘法:由手工计算到机器运算乘法:由手工计算到机器运算n由手工计算到机器运算,需要解决由手工计算到机器运算,需要解决3个问题:个问题:n符号如何处理?符号如何处理?n多个部分积如何相加?多个部分积如何相加?n为保持两次部分积之间的位权对应关系,会导致加法器位数的增为保持两次部分积之间的位权对应关系,会导致加法器位数的增加,能否在不增加位数的情况下保持位权对应?加,能否在不增加位数的情况下保持位权对应?n由于解决方式的不同,形成了两种主要的乘法器结构由于解决方式的不同,形成了两种主要的乘法器结构n采用常规的加法器来实现采用常规的加法器来实现n将将n位乘法转换为位乘法转换为n次累加和移位,每次处理次累加和移位,每次处理1位。位。n为避免加法器位数的扩充,可以把手工计算时的新部分积为避免加法器位数的扩充,可以把手工计算时的新部分积“左移左移累加累加”改为机器运算的原部分积改为机器运算的原部分积“累加累加右右移移”。n采用阵列乘法器实现采用阵列乘法器实现n利用中大规模集成电路把多项部分积同时相加,这种结构的利用中大规模集成电路把多项部分积同时相加,这种结构的乘法器称为阵列乘法器。乘法器称为阵列乘法器。 391 1、原码一位乘法、原码一位乘法 n原码一位乘法是从手算演变而来的,即用两个操作数的绝对值相原码一位乘法是从手算演变而来的,即用两个操作数的绝对值相乘,乘积的符号为两操作数符号的异或值乘,乘积的符号为两操作数符号的异或值(同号为正,异号为负同号为正,异号为负).乘积乘积 P = |X|Y|符号符号 Ps = Xs Ysn原码一位乘法的规则原码一位乘法的规则 被乘数和乘数取绝对值。被乘数和乘数取绝对值。 乘数的最低位为乘数的最低位为1时,部分积加被乘数,否则加时,部分积加被乘数,否则加0。部分积和乘数右移一位。部分积和乘数右移一位。重复重复,直到乘数全部移出。,直到乘数全部移出。 积的符号由两乘数符号的异或得到。积的符号由两乘数符号的异或得到。 积的符号与积的数值拼接得到积的原码。积的符号与积的数值拼接得到积的原码。40原码一位乘示例原码一位乘示例实际运算的准备工作:实际运算的准备工作:n|被乘数被乘数| B寄存器寄存器n|乘数乘数| C寄存器(将要存放部分积的低位)寄存器(将要存放部分积的低位)n0 A寄存器(将要存放部分积的高位)寄存器(将要存放部分积的高位)例例4:已知:已知:X=0.1101,Y=-0.1011,求求:XY。解:解: |X|=00.1101B (被乘数采用双符号位被乘数采用双符号位) |Y|=.1011C (乘数取数值乘数取数值) 0A41 A C 说明说明原码一位乘原码一位乘0 0.0 0 0 0 1 0 1 1+|X| 0 0.1 1 0 1 C4=1,+|X|0 0.1 1 0 1 0 0.0 1 1 0 1 1 0 1 部分积右移一位部分积右移一位0 1.0 0 1 1+|X| 0 0.1 1 0 1 C4=1,+|X| 0 0.1 0 0 1 1 1 1 0 部分积右移一位部分积右移一位+0 0 0.0 0 0 0 C4=0,+00 0.1 0 0 1 0 0.0 1 0 0 1 1 1 1 部分积右移一位部分积右移一位+|X| 0 0.1 1 0 1 C4=1,+|X|0 1.0 0 0 1 0 0.1 0 0 0 1 1 1 1 部分积右移一位部分积右移一位Ps =Xs Ys = 0 1 = 1 X Y = -0.10001111 42原码一位乘法的硬件实现原码一位乘法的硬件实现 nA、B为为n+2位,位,C为为n位,加法器位,加法器为为n+2位,异或门。位,异或门。nA、C寄存器级连在一起,具有右寄存器级连在一起,具有右移功能。每次移位时,移功能。每次移位时,A的最低位的最低位进入进入C 的最高位,而的最高位,而C的最低位被的最低位被丢掉。最后,丢掉。最后,A的内容为乘积的高的内容为乘积的高位部分,位部分,C的内容为乘积的低位部的内容为乘积的低位部分。分。nC的最低位作为控制信号,控制运的最低位作为控制信号,控制运算器加被乘数还是加零。算器加被乘数还是加零。 432 2、补码一位乘法、补码一位乘法 n原码乘法虽然容易实现,但一般计算机中数据多以补码原码乘法虽然容易实现,但一般计算机中数据多以补码表示。若仍用原码做乘法,需要进行码制转换,反倒不表示。若仍用原码做乘法,需要进行码制转换,反倒不方便而且又影响速度。方便而且又影响速度。n因为补码符号位直接参加运算,所以补码乘法不能简单因为补码符号位直接参加运算,所以补码乘法不能简单地套用原码乘法的算法。实现补码乘法有地套用原码乘法的算法。实现补码乘法有2种方法。种方法。n一种方法为一种方法为校正法校正法,使用较少,只给出算式:,使用较少,只给出算式:XY补补=X补补(0.X1X2Xn)-X补补Yn另一种更好的方法为另一种更好的方法为比较法比较法,该算法是英国人,该算法是英国人Booth夫妇夫妇提出,所以也称为提出,所以也称为Booth法。该算法无需校正,控制较为法。该算法无需校正,控制较为简单。以下主要讨论比较法。简单。以下主要讨论比较法。44Booth的推导的推导设:被乘数设:被乘数X补补=X.X1X2Xn,乘数,乘数Y补补=Y.Y1Y2Yn,则:,则:XY补补 = X补补0.Y1Y2Yn - X补补Y = X补补2-1Y1+2-2Y2+2-nYn- X补补Y = X补补-Y+2-1Y1 +2-2Y2+2-nYn = X补补-Y+(Y1-2-1Y1)+ (2-1Y2-2-2Y2)+(2-(n-1)Yn-2-nYn) = X补补(Y1-Y)+(Y2-Y1)2-1+(0-Yn)2-n = X补补(Y1-Y)+(Y2-Y1)2-1+(Yn+1-Yn)2-n ;Yn+1=0上式表明:上式表明:XY补补可以根据乘数相邻两项的比较结果,可以根据乘数相邻两项的比较结果, 即用即用“低位低位-高位高位”的值来确定每步的运算操作。的值来确定每步的运算操作。45Booth法的递推公式法的递推公式从前面的推导中得出递推公式:从前面的推导中得出递推公式: Z0补补 = 0 Z1补补 = 2-1Z0补补+(yn+1-yn)X补补 Z2补补 = 2-1Z1补补+(yn-yn-1)X补补 Zn补补 = 2-1Zn-1补补+(y2-y1)X补补 XY补补= Zn补补+(y1-ys)X补补式中,式中,Z0补补为初始部分积,为初始部分积, Z1补补Zn补补为每次累加并右移之后的部分积。为每次累加并右移之后的部分积。XY补补=X补补 (y1-y0)+(y2-y1) 2-1+(yn+1-yn) 2-n n1246Booth乘法运算规律与规则乘法运算规律与规则n判断位判断位 YnYn+1 操操 作作 0 0 原部分积右移一位原部分积右移一位 0 1 原部分积加原部分积加X补补后右移一位后右移一位 1 0 原部分积加原部分积加-X补补后右移一位后右移一位 1 1 原部分积右移一位原部分积右移一位n参加运算的数用补码表示,结果也是补码;符号位直接参加运算。参加运算的数用补码表示,结果也是补码;符号位直接参加运算。 n乘数最低位后面增加一位附加位乘数最低位后面增加一位附加位Yn+1,初值为,初值为0。n乘数的最低两位乘数的最低两位YnYn+1的值决定每次执行的操作。的值决定每次执行的操作。 n部分积和乘数一起右移一位。部分积和乘数一起右移一位。 n共做共做n+1次累加、次累加、n次移位,最后累加不移位。次移位,最后累加不移位。由于符号位参加运算,部分积累加时最高有效位的进位可能侵占符由于符号位参加运算,部分积累加时最高有效位的进位可能侵占符号位,所以被乘数和部分积应取双符号位,乘数只需取一个符号位号位,所以被乘数和部分积应取双符号位,乘数只需取一个符号位规律规律规则规则47补码一位乘示例补码一位乘示例例例5:已知:已知: X=-0.1101,Y=0.1011; 求:求: XY。解:解: X补补 = 11.0011B, Y补补= 0.1011C, -X补补= 00.1101 0A运算过程见下页:运算过程见下页:补码一位乘补码一位乘 A C 附加位附加位 说明说明0 0.0 0 0 0 0.1 0 1 1 0 +-X补补 0 0.1 1 0 1 C4C5=10,+-X补补0 0.1 1 0 1 0 0.0 1 1 0 1 0 1 0 1 1 部分积右移一位部分积右移一位+0 0 0.0 0 0 0 C4C5=11,+00 0.0 1 1 0 0 0.0 0 1 1 0 1 0 1 0 1 部分积右移一位部分积右移一位+X补补 1 1.0 0 1 1 C4C5=01,+X补补1 1.0 1 1 0 1 1.1 0 1 1 0 0 1 0 1 0 部分积右移一位部分积右移一位+-X补补 0 0.1 1 0 1 C4C5=10,+-X补补0 0.1 0 0 0 0 0.0 1 0 0 0 0 0 1 0 1 部分积右移一位部分积右移一位+X补补 1 1.0 0 1 1 C4C5=01,+X补补1 1.0 1 1 1 X Y补补=1.01110001 X Y= -0.1000111149补码一位乘法的硬件实现补码一位乘法的硬件实现nA、B、C为为n+2位,位,加法器为加法器为n+2位。位。与或门有与或门有n+2个。个。n各器件的作用与原码各器件的作用与原码一位乘法相同。控制一位乘法相同。控制方式上有所不同,即方式上有所不同,即由由C寄存器的最低两寄存器的最低两位来控制加、减被乘位来控制加、减被乘数或加数或加0操作。操作。 503 3、阵列乘法器、阵列乘法器 为了提高乘法运算速度,还可以采用高速阵列乘法器为了提高乘法运算速度,还可以采用高速阵列乘法器执行乘法运算。执行乘法运算。设有两个设有两个不带符号不带符号的二进制整数:的二进制整数: A、B两数的乘积两数的乘积P为:为: 假设,当假设,当m = n = 4时,来考虑乘法的情况:时,来考虑乘法的情况: 101022njjjmiiibBaA10101022nmkkkjiminjjipbaBAP51阵列乘法器原理阵列乘法器原理 a3 a2 a1 a0 b3 b2 b1 b0 a3b0 a2b0 a1b0 a0b0 a3b1 a2b1 a1b1 a0b1 a3b2 a2b2 a1b2 a0b2 + a3b3 a2b3 a1b3 a0b3 P7 p6 p5 p4 p3 p2 p1 p052阵列乘法器原理(续一)阵列乘法器原理(续一)n一个基本乘法单元由两部分组成:一个基本乘法单元由两部分组成:naibi是逻辑与运算,可用与门实现是逻辑与运算,可用与门实现n错位相加可用全加器完成错位相加可用全加器完成基本乘法单元原理图基本乘法单元原理图53阵列乘法器原理(续二)阵列乘法器原理(续二)由乘法单元构成的乘法器如图所示,每个方框代表一个基本乘法单元由乘法单元构成的乘法器如图所示,每个方框代表一个基本乘法单元.54阵列乘法器原理(三)阵列乘法器原理(三)n构成构成nn整数阵列乘法器,共需要整数阵列乘法器,共需要nn个乘法单元。个乘法单元。n若采用补码相乘时,可在上述乘法阵列若采用补码相乘时,可在上述乘法阵列外增加三个求补器,两个为外增加三个求补器,两个为算前求补器算前求补器,将两个操作数先变成正整数,一个为将两个操作数先变成正整数,一个为算算后求补器后求补器,在相乘两数符号不一致时,在相乘两数符号不一致时,把运算结果变成补码把运算结果变成补码。55五、定点除法运算五、定点除法运算 n大家很熟悉除法运算。手工计算大家很熟悉除法运算。手工计算除法的关键是比较余除法的关键是比较余数与除数的大小,根据比较结果决定商值。数与除数的大小,根据比较结果决定商值。n问题是,当将手工计算转换为机器运算时,如何判断问题是,当将手工计算转换为机器运算时,如何判断够减?如何处理符号位?如何提高运算速度?够减?如何处理符号位?如何提高运算速度?n除法运算是乘法运算的逆运算。乘法通过除法运算是乘法运算的逆运算。乘法通过加加- -右移右移实实现现,不难想到机器除法运算是通过,不难想到机器除法运算是通过减减-左移左移实现的。实现的。n机器实现除法运算有两个先决条件(纯小数):机器实现除法运算有两个先决条件(纯小数):n除数不等于除数不等于0,否则商为无穷大。,否则商为无穷大。 n被除数要小于除数,否则商会溢出。被除数要小于除数,否则商会溢出。561 1、原码恢复余数法、原码恢复余数法 n所谓恢复余数法,不管被除数(或部分余数)是否所谓恢复余数法,不管被除数(或部分余数)是否够减除数,都一律先做减法。若部分余数为正,表够减除数,都一律先做减法。若部分余数为正,表示够减,该位商上示够减,该位商上“1 1”;若部分余数为负,表示不;若部分余数为负,表示不够减,该位商上够减,该位商上“0 0”,并要恢复余数(加除数)。,并要恢复余数(加除数)。n恢复余数法恢复余数法固有的缺点固有的缺点:n由于部分余数的正、负是随机出现的,使得除法由于部分余数的正、负是随机出现的,使得除法运算的实际运算的实际操作次数不固定操作次数不固定,控制电路较复杂控制电路较复杂。n在恢复余数时,要在恢复余数时,要多作一次加法多作一次加法,降低了除法的,降低了除法的执行的速度。执行的速度。 572 2、原码不恢复余数法、原码不恢复余数法n分析恢复余数法发现,当减除数操作使得余数为负数时,分析恢复余数法发现,当减除数操作使得余数为负数时,商为商为“0”,并恢复余数,然后左移,再减除数。,并恢复余数,然后左移,再减除数。 若用若用R表示余数,用表示余数,用B表示除数,上述操作过程可表示为:表示除数,上述操作过程可表示为: (R + B) 2 B = 2R + B 结论:当余数为负时,商上结论:当余数为负时,商上“0”,余数左移一次后加除数,余数左移一次后加除数,结果不变。这就是结果不变。这就是不恢复余数法不恢复余数法的实现思想。的实现思想。n不恢复余数法(加减交替法)的运算规则为:不恢复余数法(加减交替法)的运算规则为: n若余数若余数0,上商,上商“1”,余数左移一位,减除数。,余数左移一位,减除数。 n若余数若余数0,上商,上商“0”,余数左移一位,加除数。,余数左移一位,加除数。 n由于加减运算交替地进行,所以又称为由于加减运算交替地进行,所以又称为原码加减交替法原码加减交替法。58原码不恢复余数法示例原码不恢复余数法示例除法运算需要除法运算需要3个寄存器:个寄存器:nA寄存器存放被除数:寄存器存放被除数: 被除数被除数 A nB寄存器存放除数:寄存器存放除数: 除数除数 BnC寄存器存放商:寄存器存放商: 商商 C例例6:已知:已知:X=-0.10101,Y=0.11110,求:,求:XY。解:解: |X|=00.10101A, 0C |Y|=00.11110B, -|Y|=11.00010原码不恢原码不恢复余数