《计算机组成原理》第3版PPT电子课件教案-第二章运算方法和运算器.ppt_第1页
《计算机组成原理》第3版PPT电子课件教案-第二章运算方法和运算器.ppt_第2页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章 运算方法和运算器,本章要点: 计算机内部数据与文字表示的方法; 定点数运算方法,定点运算器的组成; 浮点数运算方法,浮点运算器的组成。 2.1数据与文字表示的方法 1.数据格式: 定点数:数值范围小,处理硬件简单。 浮点数:数值范围大,处理硬件复杂。 1)定点数:小数点固定。设用n+1位计算机字长表示。 纯整数: 小数点隐含在xn的右边。,x0是x数符号位, 0 |x|2n-1。 纯小数: 小数点隐含在x0和x1的中间。 x0是x数符号位, 0 |x|1-2-n。 定点整数和定点小数运算方法基本上差不多。 2)浮点数: n=rem, m是尾数,用定点小数表示,它的基为r(一般r2)。 浮点数的精度主要有尾数决定,尾数二进制位愈长,精度愈高。 e为浮点数的指数,用定点整数表示。浮点数的表数范围主要有e决定。,阶符 阶码 数符 尾数,下面列出ieee754标准的两种浮点数表示的格式: (1)32位浮点数标准格式: 31 30 23 22 0 (2)64位浮点数标准格式: 63 62 52 51 0 r=2 对于32浮点数,尾数m用原码表示,s放在最前面,是浮点数的符号位,也是尾数的符号位。s=0,浮点数是正数;s=1,浮点数是负数。 m是尾数的|m|,定点小数,23位。 e是阶码,采用移码表示,8位,定点整数表示。 ee e=e+127=e+01111111;反之,ee e=e-127=e-01111111。,(1)32位浮点数代码表示,求它表示的x真值。 x=(-1)s(1.m)2e-127 (2)64位浮点数代码表示,求它表示的x真值。 e是阶码,采用移码表示,11位,定点整数表示。 ee e=e+1023;反之,ee e=e-1023。 尾数m用52位,有更高的精度。 x=(-1)s(1.m)2e-1023 p21例1 浮点数x在标准格式(1)32位代码表示(41360000)h,求x表示的十进制值。 41360000h0100 0001 0011 0110 0000 0000 0000 0000,s,e,m,x=(-1)s(1.m)2e-127 =+1.011011210000010-01111111=1.011011211b =1011.011b=11.375d,p21例2, 将十进制数-31.625用32位标准浮点数代码表示。 -31.625= -11111.101b= -1.111110124 = (-1)1 1.111110124 s=1, m=11111010000000000000000 e=e+127=100+01111111=10000011 32位标准浮点数代码表示形式如下: 110000011 11111010000000000000000 s e m 用8位16进制代码表示: x= -31.625c1fd0000h 3.十进制数串表示(为十进制运算) 1)字符串形式(非压缩的十进制数串形式):一个字节放一个ascii编码的十进制数字(p28,表2.1 ascii字符编码表)。 2)压缩的十进制数串形式:用4位二进制放一个二进制bcd码,一个字节放两个十进制bcd码。c=1100表示,d=1101表示。,例如:+123和123 bcd码的表示:,数的机器码表示 4. 定点数在计算机中四种代码(原码,补码,反码,移码)的表示: 1)定点小数 x=0.x1x2xnn+1位的二进制字长 y0.y1y2yn表示。 (1)原码表示: x原=,x 0x1,1-x=1+|x| -1x 0,已知:x的真值,如何求x原的代码表示? 当x=+0.x1x2xn时, x原=0.x1x2xn 当x= -0.x1x2xn时, x原=1.x1x2xn 例如: x=+0.1011, x原=0.1011 y=-0.1011, y原=1.1011 注意:原码的0有两种不同形式。 +0原=0.000 -0原=1.000 已知x原=x0.x1x2xn,求真值x=? 1) x0 =0, x=+0. x1x2xn 2) x0 =1, x= -0.x1x2xn 例如: x原=0.1010,x=+0.1010b=0.101b=0.5+0.125=0.625 x原=1.1010,x=-0.1010b=-0.101b=-(0.5+0.125)=-0.625,(2)补码表示: x补= 2+x mod 2= 当x=+0.x1x2xn时, x补=0.x1x2xn 当x= -0.x1x2xn时, x补=1.x1x2xn+0.0001 mod 2 例如: x=+0.1011, x补=0.1011 y=-0.1011, y补=1.0101 补码0的代码形式只有一种, +0补= -0补= 0.000 已知x补=x0.x1x2xn,求真值x=? 1) x0 =0, x=+0. x1x2xn 2) x0 =1, x=-(0.x1x2xn+0.0001) 例如: x补=0.1010,x=+0.1010b=0.101b=0.5+0.125=0.625 x补=1.1010,x=-(0.1010+0.0001)b=-0.0110b=-(0.25+0.125)=-0.375,x 0x1 2-|x| -1 x 0,(3)反码表示: x反= x 0x1 (2-2-n) +x -1 x 0 当x=+0.x1x2xn时, x反=0.x1x2xn 当x= -0.x1x2xn时, x反=1.x1x2xn 例如: x=+0.1011, x反=0.1011 y=-0.1011, y反=1.1011 =1.0100 注意:反码的0有两种不同形式。 +0反=0.000 -0反=1.111 已知x反=x0.x1x2xn,求真值x=? 1) x0 =0, x=+0. x1x2xn 2) x0 =1, x=-0.x1x2xn 例如: x反=0.1010,x=+0.1010b=0.101b=0.5+0.125=0.625 x反=1.1010,x=-(0.1010)b=-0.0101b=-(0.25+0.0625)=-0.3125,(4)移码表示: x移=1+x -1x1 当x=+0.x1x2xn时, x移=1.x1x2xn 当x= -0.x1x2xn时, x移=0.x1x2xn+0.0001 例如: x=+0.1011, x移=1.1011 y=-0.1011, y移=(0.1011+0.0001) =0.0101 移码0的代码形式只有一种, +0移= -0移= 1.000 已知x移=x0.x1x2xn,求真值x=? 1) x0 =1, x=+0. x1x2xn 2) x0 =0, x=-(0.x1x2xn+0.0001) 例如: x移=1.1010,x=+0.1010b=0.101b=0.5+0.125=0.625 x移=0.1010,x=-(0.1010+0.0001)b=-0.0110b=-(0.25+0.125)=-0.375,2)定点整数 x=x1x2xnn+1位的二进制字长y0y1y2yn表示。 (1)原码表示: x原= x 0x2n 2n-x= 2n+|x| -2nx 0 当x=+x1x2xn时, x原=0x1x2xn 当x= -x1x2xn时, x原=1x1x2xn 例如: x=+1011, x原=01011 y=-1011, y原=11011 注意:原码的0有两种不同形式。 +0原=0000 -0原=1000 已知x原=x0x1x2xn,求真值x=? 1) x0 =0, x=+x1x2xn 2) x0 =1, x=-x1x2xn 例如: x原=01010,x=+1010b=1010b=8+2=10 x原=11010,x=-1010b=-(8+2)=-10,(2)补码表示: x补= 2n+1+x mod 2n+1 = 当x=+x1x2xn时, x补=0x1x2xn 当x= -x1x2xn时, x补=1x1x2xn+1 mod 2n+1 例如: x=+1011, x补=01011 y=-1011, y补=10101 补码0的代码形式只有一种, +0补= +0补= 0000 已知x补=x0x1x2xn,求真值x=? 1) x0 =0, x=+x1x2xn 2) x0 =1, x=-(x1x2xn+1) 例如: x补=01010,x=+1010b=8+2=10 x补=11010,x=-(1010+1)b=-0110b=-(4+2)=-6,x 0x2n 2n+1-|x| -2n x 0,(3)反码表示: x反= x 0x2n (2n+1-1) +x -2nx 0 当x=+x1x2xn时, x反=0x1x2xn 当x=-x1x2xn时, x反=1x1x2xn 例如: x=+1011, x反=01011 y=-1011, y反=10100 注意:反码的0有两种不同形式。 +0反=0000 -0反=11111 已知x反=x0x1x2xn,求真值x=? 1) x0 =0, x=+x1x2xn 2) x0 =1, x=-x1x2xn 例如: x反=01010,x=+1010b=1010b=8+2=10 x反=11010,x=-(1010)b=-0101b=-(4+1)=-5,(4)移码表示: x移=2n+x - 2nx 2n 当x=+x1x2xn时, x移=1x1x2xn 当x= -x1x2xn时, x移=0x1x2xn+1 例如: x=+1011, x移=11011 y=-1011, y移= 01011+1=00101 移码0的代码形式只有一种, +0移= -0移= 1000 已知x移=x0x1x2xn,求真值x=? 1) x0 =1, x=+x1x2xn 2) x0 =0, x=-(x1x2xn+1) 例如: x移=11010,x=+1010b=1010b=8+2=10 x移=01010,x=-(1010+1)b=-0110b=-(4+2)=-6,总结4种代码(原码,补码,反码,移码)定义。 以定点整数为例: (1) 若x=+x1xn 0 x补= x原= x反= 0x1xn x移= 1x1xn 例如 :x=+11011 x补= x原= x反= 011011, x移= 111011(注意:补码和移码最高位相反) (2)若x= -x1xn 0,原码,补码,反码,移码都表示不一样。 x原= 1x1xn x反= 1x1xn x补= 1x1xn+1 x移= 0x1xn+1 例如 :x= 11011 x原= 111011 x反= 100100 x补= 100101 x移= 000101 (注意:补码和移码最高位相反),p26 例4,用n=8表示下面十进制数的四种代码形式:,例:有计算机字长8位,它的代码为全1,分别求四种代码定点整数和定点小数时表示的十进制值。 (1)定点整数: x原=11111111x= - 1111111b= - 127 x反=11111111x=-(1111111)b=-0000000b=0 x补=11111111x= -(1111111+1)b =-0000001b=-1 x移=11111111x= 1111111b =127 (2)定点小数: x原=1.1111111x= -0.1111111b= - (1-2-7) x反=1.1111111x=-(0.1111111)b=-0.0000000b=0 x补=1.1111111x= -(0.1111111+0.0000001)b =-0.0000001b=- 2-7 x移=1.1111111x= 0.1111111b = 1-2-7,p27 例6 32位表示的规格化浮点数:(和ieee754标准格式不一样),31 30 23 22 0,x=(-1)s(1.m)2e-128 尾数是原码,阶码是移码(e=e+128, e=e-128)。 (1)最大正数的代码形式:0 11111111 11111111111111111111111 尾数最大,移码最大 e=11111111-1000000=1111111b=127 x= (-1)s(1.m)2e-128 1+(1-2-23) 2127 (2)最小正数的代码形式:0 00000000 00000000000000000000000 尾数最小,移码最小 e=0000000-1000000=-128 x= (-1)s(1.m)2e-128 1+0 2-128=1.0 2-128 (3)最小负数的代码形式:1 11111111 11111111111111111111111 x=-1+(1-2-23) 2127 (2)最大负数的代码形式:1 00000000 00000000000000000000000 x=-(1.0+0 ) 2-128 =-1.0 2-128,ieee754标准格式: e=e+127 e=e-127,p27 字符和字符串的表示方法 1. 计算机处理非数值数据字符愈来愈多。 2. 字符表示用7位bit的ascii(美国国家信息交换标准字符码的缩写) p28 表2.1 27=128个字符。 特点:可见字符和不可见字符 数字字符:011 011bcd 0000(0), 0001(1), 0010(2), ,1000(8), 1001(9), 7位ascii码8bit(一个字节)方法:最高位扩展0或奇偶校验位。 3.计算机内字符串表示方法:按字符顺序存放。p28 图2.0,p29 汉字表示方法: 汉字特点:多;结构复杂;重音字多;一个字多音多义;随时间改变。 2. 有关汉字几种编码 (1)汉字输入码: (用西文键盘输入汉字) 数字:区位码(4个十进制编码) 字音:拼音,全拼音,双拼双音 字形:五笔字型 (2)汉字内码:统一标准,用国标码(gb2312-80)一级汉字(3755个) 二级汉字(3008个) 。(计算机内部处理),一个西文字符ascii:一个字节:,214=16384个汉字,一个汉字:二个字节,在汉字操作系统下:区分西文字符和汉字。 若ascii编码的最高位用为奇偶校验位,则一个汉字3个字节。,(3)汉字字模码(汉字输出) 点阵码:1616(p30图2.1); 2424; 3232 。 需要汉字库容量:32b8000个=256kb 矢量码:按笔画点的坐标。,校验码 (p30) 1.原因:信息在传递过程中,因外部环境干扰或硬件本身错误,信息出错(01/10) 2.方法:硬件增加抗干扰措施(不讨论)。 从信息编码角度考虑:在信息传递过程中,发生错误,能发现,进一步改错,是本节讨论的重点。 信息位+附加位=校验码(具有指出错误和改错的编码)。 奇偶校验码,校验码中最简单的一种。增加一位c校验位。,c,奇校验c=xn-1xn-2x0(c, xn-1x0有奇数个1) 偶校验c=xn-1xn-2x0(c, xn-1x0有偶数个1) 例如:p30下的例子: 11111111(偶校验)111111110 11111111(奇校验)111111111 奇偶校验码特点: 实现线路简单(只增加1位二进制位)。 只能发现有错还是无错,在发生奇数错的情况下,可发现,但不能纠错。偶数错不能发现。,以奇校验为例: 一位错:0/1 1/0,使收方收到代码1的个数为偶数个(增加/减少 1个), 可以发现。 二位错: 00 11,使收方收到代码1的个数为奇数个(增加2个)。 11 00,使收方收到代码1的个数为奇数个(减少2个)。 0/1 1/0,使收方收到代码1的个数为奇数个(保持不变)。 不可以发现。,2.2 定点加法、减法运算(本书重点之一)p31 补码的加法 (1)计算机定点数用补码好处:补码的减法不需减法器,只要加法器 (2) 定点小数补码: 已知: x补=x0.x1x2xn=2+x mod 2 y补= y0.y1y2yn =2+y mod 2 求: x+y补=? 可以证明,x+y不溢出,x+y补=x补+y补 mod 2 书上p31分四种情况证明。我们用简单数学公式证明: 因为:x补= 2+x mod 2 y补= 2+y mod 2 因为x+y不溢出,x+y补=2+(x+y) mod 2=(2+x)+(2+y) mod 2 = x补+y补 mod 2,补码的定义,p32 例8:x=0.1001, y=0.0101 求:x+y的计算机中的实现。 x补=0.1001 y补= 0.0101 x+y补=x补y补 mod 2=0.1001+ 0.0101 mod 2=0.1110 因为x+y补的最高位为0, 所以真值x+y=0.1110 例9:x=+0.1011, y=-0.0101 求:x+y的计算机中的实现。 x补=0.1011 y补= 1.0101+0.0001=1.1011 x+y补=x补y补 mod 2=0.1011+ 1.1011 mod 2=0.0110 x补 0.1011 + y补 1.1011 x+y补 0.0110 因为x+y补的最高位为0, 所以真值x+y=0.0110,最高位进位1丢掉,1,注意:若x+y溢出, x+y补 不会得到正确的结果。后面讨论。 (2)定点整数补码 已知: x补=x0x1x2xn=2n+1+x mod 2n+1 y补= y0y1y2yn = 2n+1+y mod 2n+1 求: x+y补=? 可以证明,x+y不溢出,x+y补=x补y补 mod 2n+1 例:x=+1011, y=-0101 求:x+y的计算机中的实现。 x补=01011 y补= 10101+1=11011 x+y补=x补y补 mod 25 =01011+ 11011 mod 25 =00110 x补 01011 + y补 11011 x+y补 00110 因为x+y补的最高位为0, 所以真值x+y=0110,最高位进位1丢掉,1,2.补码的减法:可用加法器实现,不需要减法器。 (1)定点小数补码 已知: x补=x0.x1x2xn=2+x mod 2 y补= y0.y1y2yn =2+y mod 2 求: x-y补=? 可以证明,x-y不溢出,x-y补=x补-y补 mod 2 因为:x-y补=x+(-y)补=x补-y补 mod 2 现在要解决的问题是:已知y补= y0.y1y2yn,求-y补=? p32已有证明-y补= y补 mod 2= y0.y1y2yn+0.0001(2-n) mod 2 即对y补的各位求反且末位加1。 所以: x-y补= x0.x1x2xn+ y0.y1y2yn+0.0001(2-n) mod 2 (2)定点整数补码 已知: x补=x0x1x2xn=2n+1 +x mod 2n+1, y补= y0y1y2yn=2n+1 +y mod 2n+1 求: x-y补=? 可以证明,x-y不溢出,x-y补=x补-y补 mod 2n+1 = x0x1x2xn y0y1y2yn+1 mod 2n+1,例:x=+0.1001, y=-0.0101 求:x-y的计算机中的实现。 x补=0.1001 y补= 1.0101+0.0001=1.1011, -y补=1.1011+0.0001 (2-4)=0.0101 x-y补=x补+-y补 mod 2=0.1001+ 0.0101 mod2=0.1110 x补 0.1001 + -y补 0.0101 x-y补 0.1110 因为x-y补的最高位为0, 所以真值x-y=0.1110 例:x=+1001, y=-0101 求:x-y的计算机中的实现。 x补=01001 y补= 11011, -y补=11011+1=00101 x-y补=x补-y补 mod 25 =01001+ 00101 mod 25 =01110 x补 01001 + -y补 00101 x-y补 01110 因为x+y补的最高位为0, 所以真值x-y=1110,3.补码的溢出和补码加减溢出检测 (1)定点补码溢出的概念,定点小数 设x=+0.1011, x补=0.1011 y=+0.1001, y补=0.1001 x+y补= x补+y补mod 2 = 0.1011+ 0.1001 mod 2=1.0100 两个正数相加,结果为负数,显然是错误。,定点整数 设x=-1011, x补=10101 y=-1001, y补=10111 x+y补= x补+y补mod 25 = 10101+ 10111 mod 25 =01100 两个负数相加,结果为正数,显然是错误。,对于定点小数,同号的两个数相加的绝对值超出了1; 对于定点整数,同号的两个数相加的绝对值超出了计算机字长表示的值。例如:n=8, xy补表示的真值:-128(x y) 127。 若补码加减运算的过程中, (x y)127, 则xy补发生上溢(正溢出); (x y) -128, 则xy补发生下溢(负溢出)。,溢出的本质:计算机在加减运算过程中,超出了有限的计算机字长。 所以,对于补码表示的计算机,在补码加减运算过程中,当不发生溢出时,计算机应得到正确的结果;当发生溢出时,计算机应该发现溢出,仃止计算机执行,且告诉计算机操作系统。 (2)定点数加减运算的溢出检测方法(溢出判别法则) 1)补码双符号溢出判别方法(变形补码/模4补码)p33,定点小数: x补=x0.x1x2xn y补= y0.y1y2yn 计算机字长n+1扩展为n+2位。 x变补=x0x0.x1x2xn y变补=y0y0.y1y2yn 由于计算机字长扩展一位, xy变补不会发生溢出。 xy变补=x变补+ y变补mod 4=x0x0.x1x2xn+y0y0.y1y2yn mod 4 y0y0.y1y2yn+00.0001(减法) = sf1sf2.s1s2sn,最后计算机得到的xy 补应该是n+1位,这里就有判别溢出问题。 xy变补= sf1sf2.s1s2sn (n+2位) xy补(n+1位字长表示) 下面就是具体判别方法: 若sf1=sf2, xy不溢出, xy补=sf2.s1s2sn (取xy变补后面的n+1位)。 若sf1sf2, xy溢出, xy补溢出。若sf1 sf2 =01, xy补正溢出; 若sf1 sf2 =10, xy补负溢出。 v= sf1sf2 ,用一个半加器可以实现。 当sf1=sf2 ,v=0, xy补不溢出。当sf1 sf2 , v=1, xy补溢出。 关于定点整数: x补=x0x1x2xn y补= y0y1y2yn xy变补=x变补+y变补 mod 2n+2 =x0x0x1x2xn+y0y0y1y2yn mod2n+2 y0y0y1y2yn+1(减法) = sf1sf2s1s2sn(判别方法同定点小数相同),举例:x=+1011, y=-0101 求:xy的计算机中的实现及溢出判别。 x补=01011, x变补=001011 y补= 11011, y变补=111011, -y变补=111011 +1=000101 x+y变补=x变补+y变补 mod 26 =001001+ 111011 mod 26 = 000110 x变补 001011 + y变补 111011 x+y变补 000110 因为sf1=sf2=0, x+y不溢出, x+y补=00110 (取x+y变补后面的5位)。 因为x+y补的最高位为0, 所以真值x+y=110b=6d。 x-y变补=x变补-y变补 mod 26 =001011+ 000101 mod 26 =010000 x变补 001011 + -y变补 000101 x-y变补 010000 因为sf1 = 0 sf2 =1, 所以,x-y溢出, sf1sf2=01, x-y补正溢出。,2)单符号法(进位判别法) p34 倒数第6行 定点小数: x补=x0.x1x2xn y补= y0.y1y2yn xy 补=x补+ y 补mod 2=x0.x1x2xn+y0.y1y2yn mod 2 y0.y1y2yn+0.0001(减法) = sf.s1s2sn cf是最高位产生的进位,c0是次最高位向最高位的的进位。 若cf=c0,则xy不溢出,xy 补= sf.s1s2sn 。 若cfc0,则xy溢出, cfc0=01, xy 补正溢出。 cfc0=10, xy 补负溢出。 定点整数: x补=x0x1x2xn y补= y0y1y2yn xy 补=x补+ y 补mod 2n+1=x0x1x2xn+y0y1y2yn mod 2n+1 y0y1y2yn+1(减法) = sfs1s2sn cf是最高位产生的进位,c0是次最高位向最高位的的进位。 溢出判别同上。,v= cfc0,例:x=+1011, y=-0101 求:用单符号法(进位判别法) xy的计算机中的实现及溢出判别。 x补=01011 y补= 11011, -y 补=11011 +1=00101 x+y 补=x补y补 mod 25 =01001+11011 mod 25 =00110 x补 01011 + y补 11011 各位进位 110110 x+y补 00110 因为cf=c0=1, x+y不溢出, x+y补=00110。 因为x+y补的最高位为0, 所以真值x+y=0110。 x-y补=x补+-y补 mod 25 =01011+00101 mod 25 =10000 x补 01011 + -y补 00101 各位进位 011110 x-y补 10000,cf,c0,cf,c0,因为 cfc0 ,所以x-y溢出, cfc0 =01, x-y补正溢出。,4. 基本二进制加法 / 减法器(硬件的实现p35) 1)一位二进制全加器fa,fa,ai,bi,ci,si,ci+1,真值表:p35 表2.2 si=aibici ci+1=aibi+aici+bici =aibi+(ai+bi)ci =aibi+(aibi)ci =aibi (aibi) ci,一位二进制全加器fa线路实现p32 图2.2 (b) 设一个半加器的延迟时间为3t,一个与非门延迟时间为t,一个全加器从输入ai,bi,ci,到稳定的输出si(6t时间), ci+1(5t时间)。,2)一个n位行波进位补码加法/减法器 见p35 图2.2(a), 动画演习二(1)。 m=0, bi0=bi a+b 补=a补b补=an-1a0+bn-1b0(加法) m=1, bi1=bi a-b 补=a补-b补=an-1a0+bn-1b0+1 (减法) v=cncn-1,单符号进位判别方法。 不考虑v溢出检测, n位行波进位补码加法/减法器稳定需要时间: t=3t+(3t+(n-1)2t)+3t=(n-1)2t+9t,bim 需要时间,从c0串行形成cn-1需要时间,最后形成sn-1需要时间,(补充内容)(1)加法器串行进位:时间比较长。 c1=g0+p0c0 g0=a0b0 p0=a0b0 c2=g1+p1c1 g1=a1b1 p1=a1b1 c3=g2+p2c2 g2=a1b2 p2=a2b2 c4=g3+p3c3 g3=a3b3 p3=a3b3 (2)加法器并行进位:时间比较短,由pi,gi,c0, 同时产生c1 , c2 , c3 , c4 。 c1=g0+p0c0 c2=g1+p1c1 =g1+p1g0+p1p0c0 c3 =g2+p2c2 =g2+p2g1+p2p1g0+p2p1p0c0 c4=g3+p3c3 =g3+p3g2+p3p2g1 +p3p2p1g0 +p3p2p1p0c0,2.2.5 十进制加法器(不讲,自己看) 2.3 定点乘法运算 p37 定点小数和定点整数乘法运算基本相同,在这里主要只考虑定点小数的乘法,然后简单引进定点整数乘法。下面介绍原码和补码定点乘法。 1.原码乘法: 已知: x原=xf.xn-1 x1x0, y原= yf.yn-1y1y0 求: xy原= z原= ? 人工手算法: z原=zf.|z| 1) zf =xfyf (同号为正,异号为负)。 2) |z|= (0.xn-1 x1x0)(0.yn-1 y1y0) (和十进制小数乘法基本相同,从乘数最低位开始),p37 例:x=-0.1101, y=0.1011 求xy原= z原= ? x原=1.1101, y原=0.1011 zf =xfyf=10=1 (2)|z|=|x|y|=0.11010.1011 0.1101 |x| 0.1011 |y| 1101 1101 0000 + 1101 0.10001111 |z| (3)附上积的符号:xy原= z原=1.10001111,若x,y为定点整数,x=-1101, y=1011 求xy原= z原= ? 算法和定点小数基本相同。 x原=11101, y原=01011 zf =xfyf=10=1 (2) |z|=|x|y|=11011011=10001111 (3)附上积的符号:xy原= z原=110001111。,计算机定点数算法实现和人工算法有两个不同: (1)计算机字长n位,两个n位数乘法的积为2n. (2)早期用加法器移位实现,速度慢。 现在采用高速乘法部件流水式阵列乘法器。 1)不带符号的阵列乘法器 p38 图2.4 阵列乘法器逻辑框图 已知:|a|=am-1 a1a0(m位二进制), |b| =bn-1b1b0 (n位二进制) |a|= |b|= p=|a|b|= pm+n-1 p1p0 (m+n-1位二进制) =( )( )= =,p38 am-1 am-2 a1 a0 =|a| ) bn-1 b1 b0 =|b| am-1b0 am-2 b0 a1 b0 a0 b0 am-1b1 am-2 b1 a1 b1 a0 b1 . +) am-1bn-1 am-2 bn-1 a1 bn-1 a0 bn-1 pm+n-1pmn-2 pn-1 p1 p0 aibj用两个输入的与门来实现。共需要mn个与门。 p39 图2.5 5位5不带符号的阵列乘法器逻辑电路图。动画演习二2。 下面讨论该逻辑电路图: (1)需要的硬件:共需要:55=25个双输入的与门(ta=2t); 54=20个fa(全加器tf=2t)。,(2)分析阵列乘法器执行乘法一次需要的时间: 看p39图2.5, 设与门的延迟时间ta=2t, 全加器fa的延迟时间tf=2t。 n位n位阵列乘法器乘法需要时间: 最长时间:沿着最右面的对角线和最下面的一行路径: 共 2(n-1)个全加器 tm= ta + 2(n-1)个全加器=ta+2(n-1)tf = 2t+2(n-1)2t=(4n-2)t 若n=5, 则tm= 18t。,p39 例16 已知:|a|=11011 |b|=10101,按不带符号阵列乘法器算法: p=|a| |b|=1000110111 见p40 2) 带符号阵列乘法器(补码的阵列乘法器) (1)已知: a补=anan-1a0, 求:a的真值。 an=0, a=an-1a0; an=1, a=-(an-1a0+1); 能实现上述运算的硬件电路:对2求补电路图 p40 图2.6动画演习二3 e=an c-1=0 e=0, a*=an-1a0;(代入图2.6,说明) e=1, a*=an-1a0+1;(若a补=anan-1a0=10100100, |a|=1011 100,低位向高位扫描,扫到第一个1,则包括本位及后面的位保持不变,右面的其他各位都求反) 设半加器延迟时间为3t, 或门延迟时间为2t(低位向高位扫描) 与门延迟时间为2t。 n位对2求补电路需要延迟时间tpc=n2t+5t=(2n+5)t。,各位求反,各位保持不变,(2)补码乘法的第一种实现: p41图2.7(n+1) (n+1)位带求补级阵列乘法器 见动画演习二4。 若给出的原码,前求补级和后求补级都不需要。p41 例17给出的原码的乘法过程,自己看。 下面给出补码的乘法: x=+15 x补01111; y=-13=-1101 y补10011,求xy补? (1)进入求补电路,|x|=1111, |y|=1101 (2)44的不带符号阵列乘法器,p41 |xy|=11000011 (3)进入求补电路,由于积的符号为1 0=1, 输出: p =xy补=100111101(我们应该掌握补码乘法的这种算法) (2)补码乘法的第二种实现: 直接补码阵列乘法器,自己看。,2.4定点除法运算(p45) 1.定点小数原码除法原理 已知: x原=xf.xn-1 x1x0, y原= yf.yn-1y1y0 求: x/y原= q原= qf.qn-1q1q0 =? 算法: 求商的符号,qfxfyf。 |q|=|x|/|y|=0.xn-1 x1x0/ 0.yn-1y1y0 和十进制手算方法基本相同,运算更简单。举例:p45 |x|=0.1001, |y|=0.1011,|q|=0.1101,余数r=0.00000001 开始时,被除数和除数对齐做减法。一般情况,不够减,否则商溢出。 以后够减,商为1;不够减,商为0,然后除数右移一位,把得到的余数继续做减法,得到下面一位商。 人可以判别余数和除数的大小,决定商1或0。但在计算机中,不能马上判别余数和除数大小,必须先做减法,得到余数为正,才知道够减,本次商为1;得到余数为负,才知道不够减, 本次商为0。,在手算中,上一次得到的余数ri(保持位置不变),除数(右移1位),再做减法。 在计算机中,为了节省硬件,上一次得到的余数ri(左移一位),除数(保持位置不变),再做减法;或者余数ri保持不变,除数右移一位。 在计算机原码的除法中,有两种方法: 1)恢复余数法:若本次余数为正,本次上商为1, 保持余数ri ,下一次执行减去右移一位的除数,得到下一次余数ri1;若本次余数为负,本次上商为0,加上除数,恢复原来的余数ri ,减去右移一位的除数,得到下一次余数ri1 。 该方法比较直观,但商0时,要多做一次加法,计算机速度较慢。 2)不恢复余数法(加减交替法) :若本次余数为正(和恢复余数法相同);若本次余数为负,本次上商为0, 不恢复原来的余数,保持余数不变,加上右移一位的除数,得到下一次余数ri1 。 该方法计算机执行速度快,实现控制比较复杂。 现在,原码除法采用不恢复余数法(加减交替法) 。 早期计算机采用减法移位操作实现,速度很慢,现采用并行除法器。,2.并行除法器: (1)一位二进制可控制加法/减法单元(cas) p47图2.9 (a),cas,ai,bi,ci,ci+1,si,p,p=0 cas=fa, 是一个加法器。 p=1 cas是一个减法器。 设半加器延迟时间为t, cas延迟时间为3t。,(2)不恢复余数的阵列除法器(用cas来构成),执行速度快。 设被除数:|x|=0.x1x2x6 除数:|y|=0.y1y2y3 求:|z|=|x|/|y| p47 图2.9 一共需要16个cas。 每一行决定加法/减法,由前一行输出的余数符号的反(q商)控制。,bi,p,从上到下,第一行p=1,一定做减法。最右面的cas的p输出和ci接在一起,为1,求反加1,正好做减法。 第二行就由第一行最左面cas的输出q0决定(第0次余数r0符号的反)(q0接在第二行的p上): 若q0 0,控制第二行做减法; q0 1,控制第二行做加法。 以此来推。 自动生成商|q|= 0.q1q2q3, 余数=0.00 r3r4r5r6 需要时间td=423t=48t 若定点小数n位,不恢复余数的阵列除法器(用cas来构成)需要时间td= (n+1)23t。 (3)p49 例20 |x|=0.101001, |y|=0.111 求|q|=|x|/|y|=? -y补=1.001 具体执行见p49, 下页的幻灯片。 |q|=0.101 余数r=0.000110。,y=0.111 补1.001 被除数 0.1 0 1 0 0 1 减 1.0 0 1 余数为负 1.1 1 0 0 0 1 0 q00 (除数右移1位)加 0.0 1 1 1 余数为正 0.0 0 1 1 0 1 0 q11 (除数右移1位)减 1.1 1 0 0 1 余数为负 1.1 1 1 1 1 1 0 q20 (除数右移1位)加 0.0 0 0 1 1 1 余数为正 0.0 0 0 1 1 0 0 q31 故得商 |q|q0.q1q2q30.101, 余数 r(0.000r4r5r6)0.000110,2.5定点运算器的组成 p49 1.运算器最基本结构组成:alu(算术/逻辑运算单元), 阵列乘/除器,数据缓冲寄存器,通用寄存器,数据总线,多路转换器等。 2.算术运算:主要是定点数加、减、乘、除四则运算(有进位)。 3.逻辑运算:逻辑非,逻辑加,逻辑乘,逻辑异等(无进位)。 设:计算机字长n+1位二进制数,按位逻辑运算,无进位和借位。 1)逻辑非(各位求反) x= x0x1x2 xn, x= x0x1x2 xn p50 例21 x1=01001011, x2=11110000 x1=10110100, x2=00001111 2)逻辑加(或), 符号用+ / x= x0x1x2 xn, y= y0y1y2 yn xvy=( x0x1x2 xn) ( y0y1y2 yn ) xivyi,其中:xi,yi,全0,它的值为0;其它情况为1。,p50 例22 x=10100001, y=10011011 x y=10111011 3)逻辑乘 (逻辑与) 符号用 / x= x0x1x2 xn, y= y0y1y2 yn x y=( x0x1x2 xn) ( y0y1y2 yn ) xi yi, 其中:xi,yi,全1, 它的值为1;其它情况为0。 例23 x=10111001, y=11110011 x y=10110001 4)逻辑异(半加器): 符号用 x= x0x1x2 xn, y= y0y1y2 yn x y=( x0x1x2 xn) ( y0y1y2 yn ) xi yi,其中:xi,yi,相同,它的值为0; xi,yi不相同,它的值为0。 p 51 例24 x=10101011, y=11001100 x y=01100111,运算器的功能部件: 1.alu(多功能算术/逻辑运算单元) 1)功能:执行算术运算、逻辑运算。 2)alu的组成:由fa全加器组成是不能完成的。 必须具备下列功能: a)多功能 b)4位组内高速进位。 如何faalu? (1)alu的逻辑结构原理框图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论