资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,定点乘法运算,2.3,定点乘法运算,2.3.1,定点原码乘法,2.3.2,定点补码乘法,定点,浮点,加,定点加减法器,浮点加减法,减,乘,原码并行乘法,直接补码乘法,浮点乘除法,除,原码除法,并行除法器,2.3.1,定点原码乘法,原码乘法,在定点计算机中,两个原码数相乘的运算规则,:,乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。,设,n,位被乘数和乘数用定点整数表示,(,定点小数也同样适用,),:,被乘数,原,f,n,1,1,0,乘数,原,f,n,1,1,0,则乘积,原,(,f,f,),(,n,1,1,0,)(,n,1,1,0,),式中,f,为被乘数符号,f,为乘数符号。,关键问题,:怎样解决两个无符号整数的乘法运算,2.3.1,定点原码乘法,1,、定点原码乘法原理,尾数乘法举例如下:,设,1101,1011,1 1 0 1,(,),1 0 1 1,(,),1,1,0,1,1,1,0,1 0,0,0,0,1,1,0,1,1,0,0,0,1,1,1,1,(,),1,、定点原码乘法原理,n,位乘,n,位积可能为,2n,位,.,乘积的最后是所有,位积,之和,有,n,个数相加,而加法器只有两个输入端,所以需要改造,方法一:硬件实现方法,(,串行的“移位和加法”,),硬件结构简单,速度太慢,(,时间延迟太长,不采用,).,方法二:不带符号位的,阵列乘法器,1,、定点原码乘法原理,A=a4a3a2a1a0,阵列分析:,B=b4b3b2b1b0,a4b0 a3b0 a2b0 a1b0 a0b0,a4b1 a3b1 a2b1 a1b1 a0b1,a4b2 a3b2 a2b2 a1b2 a0b2,a4b3 a3b3 a2b3 a1b3 a0b3,a4b4 a3b4 a2b4 a1b4 a0b4,用公式描述乘法过程:,设有两个无符号二进制整数:,A,a,m,1,a,1,a,0,B,b,n,1,b,1,b,0,它们的真值分别为,a,和,b,即,m,1,n,1,a,a,i,2,i,b,b,j,2,j,i,0,j,0,在二进制乘法中,被乘数,A,与乘数,B,相乘,产生,m,n,位乘积,P,:,P,p,m,n,1,p,1,p,0,乘积,P,的数值为:,1,、定点原码乘法原理,实现这个乘法过程所需要的操作:,其中的,a,i,b,j,实际为,a,i,与,b,j,的,逻辑与,不带符号位的阵列乘法器,解决问题的核心:,怎样将乘法阵列中的每个逻辑与累加,用构思精巧、绘图细密、像个刺绣作品的,阵列乘法器实现,乘法阵列器工作构思图:,a4b0 a3b0 a2b0 a1b0 a0b0,a4b1 a3b1 a2b1 a1b1 a0b1,a4b2 a3b2 a2b2 a1b2 a0b2,a4b3 a3b3 a2b3 a1b3 a0b3,a4b4 a3b4 a2b4 a1b4 a0b4,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,结构,FA,被加数或和,进位,加数,和,进位,不带符号位的阵列乘法器,先勘误:,教材图,2.5,最下边一行,FA,右侧的水平箭头应删掉(除了,0,输入),即,改为和上页,ppt,图一致。,阵列乘法器分析:,m,位被乘数,,n,位乘数的阵列乘法器可由,(m,1)n,个全加器构成。,为提高并行处理能力和速度,减少进位延迟时间,每行相加产生的进位移到下一行前一位的全加器处理。,虚线部分是一个行波进位加法器,将最后一次进位加入分别累加。,最难的就是耗时分析:,阵列乘法器分析:,耗时分析(,5,位乘以,5,位原码):,对于,FA,得到,S,耗时,6T,,得到,C,耗时,5T,向下运算耗时,6T 4,最后一行行波进位耗时,2T 4+3T,3T,指的是每个,FA,运算中第一个异或门的共同耗时,过程中不需要溢出判断,不要忘了:乘法阵列是由,与门组,生成,所以,tm=T +(n-1)6T +(n-1)2T+3T,FA,逻辑电路和框图,1,位补码运算的加法减法器,1,位补码运算的加法减法器,FA,不带符号位的阵列乘法器,阵列乘法器耗时计算的,特别说明,:,1.,该耗时公式为时间估算,有一定程度的细节忽略成分,2.,即使不做溢出判断,加法器最后一个结果出来还得再多加一个,T,3.,如果将加法器第一个全加器输入端连接更合理(低位进位和,0,连接,Ai,、,Bi,端)又可省出一个,T,的时间,4.,具体细节自行推敲讨论,a4b0 a3b0 a2b0 a1b0 a0b0,a4b1 a3b1 a2b1 a1b1 a0b1,a4b2 a3b2 a2b2 a1b2 a0b2,a4b3 a3b3 a2b3 a1b3 a0b3,a4b4 a3b4 a2b4 a1b4 a0b4,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,FA,思考:向,FA,左侧产生进位可以吗?,每个,FA,影响它左边和下边的,FA,计算,并行程度降低,例,19,参见图,2.5,,已知不带符号的二进制整数,A=11011,,,B=10101,,求每一部分乘积项,a,i,b,j,的值与,p,9,p,8,p,0,的值。解:,1 1 0 1 1,A(27,10,),1 0 1 0 1,B(21,10,),1 1 0 1 1,a,4,b,0,=1,a,3,b,0,=1,a,2,b,0,=0,a,1,b,0,=1,a,0,b,0,=1,0 0 0 0 0,a,4,b,1,=0,a,3,b,1,=0,a,2,b,1,=0,a,1,b,1,=0,a,0,b,1,=0,1 1 0 1 1,a,4,b,2,=1,a,3,b,2,=1,a,2,b,2,=0,a,1,b,2,=1,a,0,b,2,=1,0 0 0 0 0,a,4,b,3,=0,a,3,b,3,=0,a,2,b,3,=0,a,1,b,3,=0,a,0,b,3,=0,1 1 0 1 1,a,4,b,4,=1,a,3,b,4,=1,a,2,b,4,=0,a,1,b,4,=1,a,0,b,4,=1,1 0 0 0 1 1 0 1 1 1,P,P=p,9,p,8,p,7,p,6,p,5,p,4,p,3,p,2,p,1,p,0,=1000110111(567,10,),注意教材上勘误:,a,0,b,2,=1,3,、带符号位的阵列乘法器,要解决的问题说明:,前面刚讨论了两个数是原码时的乘法运算,或者说是正数补码的乘法,计算机中大部分时候数据以补码形式出现,当碰到负数,或者说有符号的数的补码乘法时该怎样处理?,方法,:先转为原码,然后再处理,转为原码的过程和求补的过程完全相同,3,、带符号位的阵列乘法器,先看求补电路,(,a3a2a1a0,均为数值)、(,E,接符号位),3,、带符号的阵列乘法器,求补电路分析:,E=0,时,输入和输出相等,E=1,时,则从数最右端往左边扫描,直到第一个,1,的时候,该位和右边各位保持不变,0A=A,,左边各数值位按位取反,1A=,A,可以用符号作为,E,的输入,这些操作也叫,对,2,求补,3,、带符号的阵列乘法器,原:,1.,10110,补:,1.,010,10,举例:,1001,1,10,1000,1,10000,11101 111000 110000,(最高位是符号位),从右至左碰到第一个,1,不变,左边数值按位取反,3,、带符号的阵列乘法器,时间延迟分析:,或门延时串行时序,是关键时间路径,转换,n+1,位带符号机器码的时间延迟为,t=(n-1)*T+4T,其中,(n-1)*T,为或门延迟时间,,4T,为最高位与门和异或门的时延。,与教材上有出入,3,、带符号的阵列乘法器,(,间接法,),带符号的阵列乘法器既适用于,原码乘法,也适用于,补码乘法,A,、,B,均为原码时:,算前求补和算后求补禁用,即不求补,A,、,B,均为补码时:,算前求补和算后求补有效,需要求补,两者都是符号位单独运算,后者耗时约增加一倍,3,、带符号的阵列乘法器,(,间接法,),2026/1/29 周四,30,例,20,设,x=+15,,,y=-13,,用带求补器的原码阵列乘法器求出乘积,xy=?,解:,x,原,=01111,y,原,=11101,|x|=1111,|y|=1101,符号位运算:,01=1,1 1 1 1,1 1 0 1,1 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|=1101,1 1 1 1,1 1 0 1,1 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=12,7,12,6,12,1,12,0,=(+195),10,十进制数乘法验证,xy=(-15)(-13)=+195,被乘数和乘数都是补码时:,去掉符号位,其余各位求反加,1,,即完成求补过程得到原码。,你可能好奇:,如果不转成原码直接进行补码乘法?,设,x=-15,,,y=-13,x,补,=10001,y,补,=10011,0 0 0 1,0 0 1 1,-,0 0 0 1,0 0 0 1,-,0,0 0 0 1 1,出现错误!,即,要实现定点两机器数的乘法运算,需要先将其转换为原码,乘法运算结束后,再将其转换为补码,并附加符号位,得到乘积的补码形式,进而得到乘积原码与真值。,这样的方案耗时约增加一倍,,思考,:一定要有这样的来回转换吗?即,一定要有算前对,2,求补和算后对,2,求补操作吗?,2.3.2,直接补码并行乘法(选学),1.,补码与真值的转公式,2.,一般化的全加器形式,3.,直接补码阵列乘法器,需要将乘法阵列中的全加器进行升级,改为一般化全加器,使得被加数、加数和进位都可为负,就可实现直接补码并行乘法了!,
展开阅读全文