计算机教材 列阵计算,计算机组成原理第二章第八讲定点乘法运算.ppt

计算机组成原理第二章第八讲定点乘法运算

[例21] 设x=-15,y=-13,用带求补器的补码阵列乘法器求出乘积 x·y=? 并用十进制数乘法进行验证。 解:[x]补=10001 , [y]补=10011 , 乘积符号位运算:1⊕1=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,算后求补器输[x×y]补=011000011 补码二进制数真值 x·y=1×27+1×26+1×21+1×20 =(+195)10 十进制数乘法验证 x·y = (-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.直接补码阵列乘法器 需要将乘法阵列中的全加器进行升级,改为一般化全加器,使得被加数、加数和进位都可为负,就可实现直接补码并行乘法了! * * * * * * * * * * * * * * * * * * * * * * * * 定点乘法运算 2.3 定点乘法运算 2.3.1 定点原码乘法 2.3.2 定点补码乘法 定点 浮点 加 定点加减法器 浮点加减法 减 乘 原码并行乘法 直接补码乘法 浮点乘除法 除 原码除法 并行除法器 2.3.1 定点原码乘法 原码乘法 在定点计算机中,两个原码数相乘的运算规则: 乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。 设n位被乘数和乘数用定点整数表示 (定点小数也同样适用): 被乘数 [x]原=xf xn-1…x1x0 乘数 [y]原=yf yn-1…y1y0 则乘积 [z]原=(xf⊕yf)+(xn-1…x1x0)(yn-1…y1y0) 式中,xf为被乘数符号,yf为乘数符号。 关键问题:怎样解决两个无符号整数的乘法运算 2.3.1 定点原码乘法 1、定点原码乘法原理 尾数乘法举例如下: 设x=1101,y=1011 1 1 0 1 (x) × 1 0 1 1 (y) 1 1 0 1 1 1 0 1 0 0 0 0 + 1 1 0 1 1 0 0 0 1 1 1 1 (z) 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=am-1…a1a0 B=bn-1…b1b0 它们的真值分别为