计算机组成原理第二章第8讲定点乘法运算.ppt
定点乘法运算2.3 定点乘法运算2.3.1 2.3.1 定点原定点原码码乘法乘法2.3.2 2.3.2 定点定点补码补码乘法乘法定点定点浮点浮点加加定点加减法器定点加减法器浮点加减法浮点加减法减减乘乘原码并行乘法原码并行乘法直接补码乘法直接补码乘法浮点乘除法浮点乘除法除除原码除法原码除法并行除法器并行除法器2.3.1 定点原码乘法原码乘法在定点计算机中,两个原码数相乘的运算规则:l l乘积的符号位由两数的符号位按异或运算得到乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。而乘积的数值部分则是两个正数相乘之积。设设n位被乘数和乘数用定点整数表示位被乘数和乘数用定点整数表示(定点小数也同样适用定点小数也同样适用):被乘数被乘数 原原f n110乘数乘数 原原f n110则乘积则乘积 原原(ff)(n110)(n110)式中式中,f为被乘数符号为被乘数符号,f为乘数符号。为乘数符号。关键问题关键问题:怎样解决两个无符号整数的乘法运算:怎样解决两个无符号整数的乘法运算2.3.1 定点原码乘法1、定点原码乘法原理尾数乘法举例如下:设设1101,1101,10111011 1 1 0 1 1 1 0 1 ()1 0 1 11 0 1 1()1 11 10 01 1 1 11 10 01 1 0 00 00 00 0 1 11 10 01 1 1 10 00 00 01 11 11 11 1()1、定点原码乘法原理n位乘n位积可能为2n位.乘积的最后是所有位积之和,有n个数相加,而加法器只有两个输入端l l所以需要改造所以需要改造l l方法一:硬件实现方法方法一:硬件实现方法(串行的串行的“移位和加法移位和加法”),),硬件结构简单硬件结构简单,速度太慢速度太慢(时间延迟太长,时间延迟太长,不采用不采用).).l l方法二:不带符号位的方法二:不带符号位的阵列乘法器阵列乘法器1、定点原码乘法原理A=a4a3a2a1a0 A=a4a3a2a1a0 阵列分析:阵列分析:B=b4b3b2b1b0B=b4b3b2b1b0 a4b0 a3b0 a2b0 a1b0 a0b0 a4b0 a3b0 a2b0 a1b0 a0b0 a4b1 a3b1 a2b1 a1b1 a0b1 a4b1 a3b1 a2b1 a1b1 a0b1 a4b2 a3b2 a2b2 a1b2 a0b2 a4b2 a3b2 a2b2 a1b2 a0b2 a4b3 a3b3 a2b3 a1b3 a0b3 a4b3 a3b3 a2b3 a1b3 a0b3a4b4 a3b4 a2b4 a1b4 a0b4a4b4 a3b4 a2b4 a1b4 a0b4用公式描述乘法过程:用公式描述乘法过程:设有两个无符号二进制整数:设有两个无符号二进制整数:A Aa amm1 1aa1 1a a0 0B Bb bn n1 1bb1 1b b0 0它们的真值分别为它们的真值分别为a a和和b b,即即mm1 1n n1 1 a a a ai i2 2i ib b b bj j2 2j ji i0 0j j0 0 在二进制乘法中在二进制乘法中,被乘数被乘数A A与乘数与乘数B B相乘相乘,产生产生mmn n位位乘积乘积P P:P Pp pmmn n1 1pp1 1p p0 0乘积乘积P P 的数值为:的数值为:1、定点原码乘法原理实现这个乘法过程所需要的操作:其中的aibj实际为ai与bj的逻辑与不带符号位的阵列乘法器解决问题的核心:怎样将乘法阵列中的每个逻辑与累加 用构思精巧、绘图细密、像个刺绣作品的阵列乘法器实现乘法阵列器工作构思图:a4b0 a3b0 a2b0 a1b0 a0b0 a4b0 a3b0 a2b0 a1b0 a0b0 a4b1 a3b1 a2b1 a1b1 a0b1 a4b1 a3b1 a2b1 a1b1 a0b1 a4b2 a3b2 a2b2 a1b2 a0b2 a4b2 a3b2 a2b2 a1b2 a0b2 a4b3 a3b3 a2b3 a1b3 a0b3 a4b3 a3b3 a2b3 a1b3 a0b3a4b4 a3b4 a2b4 a1b4 a0b4a4b4 a3b4 a2b4 a1b4 a0b4FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA结构FA被加数或和被加数或和进位进位加数加数和和进位进位不带符号位的阵列乘法器先勘误:l l教材图教材图2.52.5最下边一行最下边一行FAFA右侧的水平箭头应删右侧的水平箭头应删掉(除了掉(除了0 0输入)输入)l l即,改为和上页即,改为和上页pptppt图一致。图一致。阵列乘法器分析:m位被乘数,n位乘数的阵列乘法器可由(m1)n个全加器构成。为提高并行处理能力和速度,减少进位延迟时间,每行相加产生的进位移到下一行前一位的全加器处理。虚线部分是一个行波进位加法器,将最后一次进位加入分别累加。最难的就是耗时分析:阵列乘法器分析:耗时分析(5位乘以5位原码):l l对于对于FAFA得到得到S S耗时耗时6T6T,得到,得到C C耗时耗时5T5Tl l向下运算耗时向下运算耗时6T 46T 4l l最后一行行波进位耗时最后一行行波进位耗时 2T 4+3T2T 4+3T 3T3T指的是每个指的是每个FAFA运算中第一个异或门的共同耗时,运算中第一个异或门的共同耗时,过程中不需要溢出判断过程中不需要溢出判断l l不要忘了:乘法阵列是由不要忘了:乘法阵列是由与门组与门组生成生成所以tm=T +(n-1)6T +(n-1)2T+3TFA逻辑电路和框图1位补码运算的加法减法器位补码运算的加法减法器1位补码运算的加法减法器位补码运算的加法减法器FA不带符号位的阵列乘法器阵列乘法器耗时计算的特别说明:l l1.1.该耗时公式为时间估算,有一定程度的细节该耗时公式为时间估算,有一定程度的细节忽略成分忽略成分l l2.2.即使不做溢出判断,加法器最后一个结果出即使不做溢出判断,加法器最后一个结果出来还得再多加一个来还得再多加一个T Tl l3.3.如果将加法器第一个全加器输入端连接更合如果将加法器第一个全加器输入端连接更合理(低位进位和理(低位进位和0 0连接连接AiAi、BiBi端)又可省出一个端)又可省出一个T T的时间的时间l l4.4.具体细节自行推敲讨论具体细节自行推敲讨论 a4b0 a3b0 a2b0 a1b0 a0b0 a4b0 a3b0 a2b0 a1b0 a0b0 a4b1 a3b1 a2b1 a1b1 a0b1 a4b1 a3b1 a2b1 a1b1 a0b1 a4b2 a3b2 a2b2 a1b2 a0b2 a4b2 a3b2 a2b2 a1b2 a0b2 a4b3 a3b3 a2b3 a1b3 a0b3 a4b3 a3b3 a2b3 a1b3 a0b3a4b4 a3b4 a2b4 a1b4 a0b4a4b4 a3b4 a2b4 a1b4 a0b4FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA思考:向思考:向FA左侧产生进左侧产生进位可以吗?位可以吗?每个每个FA影响它左边和下边影响它左边和下边的的FA计算,并行程度降低计算,并行程度降低例例19 参见图参见图2.5,已知不带符号的二进制整数,已知不带符号的二进制整数A=11011,B=10101,求每一部分乘积项,求每一部分乘积项aibj的值与的值与p9p8p0的值。的值。解:解:1 1 0 1 1 A(2710)1 0 1 0 1 B(2110)1 1 0 1 1 a4b0=1,a3b0=1,a2b0=0,a1b0=1,a0b0=1 0 0 0 0 0 a4b1=0,a3b1=0,a2b1=0,a1b1=0,a0b1=0 1 1 0 1 1 a4b2=1,a3b2=1,a2b2=0,a1b2=1,a0b2=1 0 0 0 0 0 a4b3=0,a3b3=0,a2b3=0,a1b3=0,a0b3=0 1 1 0 1 1 a4b4=1,a3b4=1,a2b4=0,a1b4=1,a0b4=1 1 0 0 0 1 1 0 1 1 1 PP=p9p8p7p6p5p4p3p2p1p0=1000110111(56710)注意教材上勘误:注意教材上勘误:a0b2=13、带符号位的阵列乘法器要解决的问题说明:l l前面刚讨论了两个数是原码时的乘法运算,或前面刚讨论了两个数是原码时的乘法运算,或者说是正数补码的乘法者说是正数补码的乘法l l计算机中大部分时候数据以补码形式出现,当计算机中大部分时候数据以补码形式出现,当碰到负数,或者说有符号的数的补码乘法时该碰到负数,或者说有符号的数的补码乘法时该怎样处理?怎样处理?l l方法方法:先转为原码,然后再处理:先转为原码,然后再处理l l转为原码的过程和求补的过程完全相同转为原码的过程和求补的过程完全相同3、带符号位的阵列乘法器先看求补电路(a3a2a1a0均为数值)、(E接符号位)3、带符号的阵列乘法器求补电路分析:l lE=0E=0时,输入和输出相等时,输入和输出相等l lE=1E=1时,则从数最右端往左边扫描,直到第一时,则从数最右端往左边扫描,直到第一个个1 1的时候,该位和右边各位保持不变的时候,该位和右边各位保持不变0 0A=AA=A,左边各数值位按位取反,左边各数值位按位取反1 1A=A=A Al l可以用符号作为可以用符号作为E E的输入的输入l l这些操作也叫这些操作也叫对对2 2求补求补3、带符号的阵列乘法器原:1.10110 补:1.01010举例:10011 101000 11000011101 111000 110000(最高位是符号位)从右至左碰到第一个从右至左碰到第一个1不变,不变,左边数值按位取反左边数值按位取反3、带符号的阵列乘法器时间延迟分析:或门延时串行时序,是关键时间路径转换n+1位带符号机器码的时间延迟为 t=(n-1)*T+4T其中(n-1)*T为或门延迟时间,4T为最高位与门和异或门的时延。与教材上有出入3、带符号的阵列乘法器(间接法)带符号的阵列乘法器既适用于原码乘法也适用于补码乘法A、B均为原码时:l l算前求补和算后求补禁用,即不求补算前求补和算后求补禁用,即不求补A、B均为补码时:l l算前求补和算后求补有效,需要求补算前求补和算后求补有效,需要求补两者都是符号位单独运算后者耗时约增加一倍3、带符号的阵列乘法器(间接法)2023/2/2330例例20 设设x=+15,y=-13,用带求补器的原码阵列乘法器求出,用带求补器的原码阵列乘法器求出乘积乘积xy=?解:解:x原原=01111,y原原=11101,|x|=1111,|y|=1101符号位运算:符号位运算:01=11 1 1 11 1 0 11 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1乘积符号为乘积符号为1,算后求补器输出,算后求补器输出11000011,xy原原=111000011换算成二进制数真值是换算成二进制数真值是 xy=(-11000011)2=(-195)10 被乘数和乘数都是原码时:被乘数和乘数都是原码时:求补操作不执行,只将去掉求补操作不执行,只将去掉符号的数值部分原样输出。符号的数值部分原样输出。例例21 设设x=-15,y=-13,用带求补器的补码阵列乘法器求出乘积,用带求补器的补码阵列乘法器求出乘积xy=?并用十进制数乘法进行验证。并用十进制数乘法进行验证。解:解:x补补=10001,y补补=10011,乘积符号位运算:乘积符号位运算:11=0尾数部分算前求补器输出尾数部分算前求补器输出|x|=1111,|y|=11011 1 1 11 1 0 11 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 1 1乘积符号为乘积符号为0,算后求补器输出,算后求补器输出11000011,xy补补=011000011补码二进制数真值补码二进制数真值 xy=127126121120=(+195)10十进制数乘法验证十进制数乘法验证 xy=(-15)(-13)=+195 被乘数和乘数都是补码时:被乘数和乘数都是补码时:去掉符号位,其余各位求反加去掉符号位,其余各位求反加1,即完成求补过程得到原码。,即完成求补过程得到原码。你可能好奇:如果不转成原码直接进行补码乘法?如果不转成原码直接进行补码乘法?设设x=-15x=-15,y=-13y=-13xx补补=10001,y=10001,y补补=10011=10011 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1-0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1-0 0 0 0 0 1 1 0 0 0 1 1 出现错误!出现错误!即,要实现定点两机器数的乘法运算,需要先将其转换为原码,乘法运算结束后,再将其转换为补码,并附加符号位,得到乘积的补码形式,进而得到乘积原码与真值。这样的方案耗时约增加一倍,思考:一定要有这样的来回转换吗?即,一定要有算前对2求补和算后对2求补操作吗?直接补码并行乘法(选学)1.补码与真值的转公式2.一般化的全加器形式3.直接补码阵列乘法器需要将乘法阵列中的全加器进行升需要将乘法阵列中的全加器进行升级,改为一般化全加器,使得被加级,改为一般化全加器,使得被加数、加数和进位都可为负,就可实数、加数和进位都可为负,就可实现直接补码并行乘法了!现直接补码并行乘法了!