在定点 算术运算导致溢出中,为了判断溢出是否发生,可采用双符号位检测法.不论溢出与否

计算机组成与结构练习2_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
计算机组成与结构练习2
&&计算机组成与结构练习
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢第二章 运算方法和运算器2_宁波大学科学技术学院:计算机组成原理与结构(白中英)_ppt_大学课件预览_高等教育资讯网
宁波大学科学技术学院:计算机组成原理与结构(白中英):第二章 运算方法和运算器2
分类: 格式: 日期:日
2009年 7月 27日 8时 35分 1年 月 日 时 分§ 2.2 定点加法、减法运算一、补码的加减法运算1、加法任意两个数的补码之和,等于该两数和的补码。[X+Y]补 = [X]补 +[Y]补 (mod 2)两个数不管正负,均用补码表示,符号位应当做数值参加运算,符号位相加所产生的进位要丢掉,结果为补码。2009年 7月 27日 8时 35分 2年 月 日 时 分可以证明:[X+Y]补 = [X]补 +[Y]补[X-Y]补 = [X]补 +[-Y]补[-Y]补 的求法:将 [Y]补 连同符号位求反加 1。例,X= 1001 Y= 0101,求 X+Y=?解,[X]补 =01001[Y]补 =00101[X+Y]补 =[X]补 +[Y]补 = =01110 x+y=1110例,X= 1001 Y= -0101,求 X+Y=?解,[X]补 =01001[Y]补 =11011[X+Y]补 =[X]补 +[Y]补 = =00110 x+y=即,[-y]补 =V [y]补 + 2-n 其中,2-n表示末位加 12009年 7月 27日 8时 35分 3年 月 日 时 分定点运算器 ―― 定点加减法例,X= 0.1011 Y= -0.0101,求 X+Y=?解,[X]补 =0,1 0 1 1[Y]补 =1,1 0 1 1+011010.丢到1[X]补 +[Y]补 =0.0110X+Y=0.01102009年 7月 27日 8时 35分 4年 月 日 时 分定点运算器 ―― 定点加减法例,X= -11001,Y= -00011,求 X+Y=?解,[X]补 =1 0 0 1 1 1[Y]补 =1 1 1 1 0 1+00101 1丢到[X]补 +[Y]补 =100100X+Y=-111000由以上两例看到,补码加法的特点,一是符号位要作为数的一部分一起参加运算。二是要在模 2的意义下相加,即超过2的进位要丢掉 !2009年 7月 27日 8时 35分 5年 月 日 时 分定点运算器 ―― 定点加减法补码的减法:[X]补 - [Y]补 =[X+( -Y) ]补 =[X]补 +[-Y]补( -Y)的补码称为 [Y]补 的机器负数,由 [Y]补求 [-Y]补 的过程称为将 [Y]补,变补,或对 [Y]补 求补,由 [Y]补 求 [-Y]补 的方法是,不管 Y的真值为正或为负,都是将 [Y]补 的各位连同符号位在内全变反后,最低位加 1。即,[-y]补 =V [y]补 + 2-n 其中,2-n表示末位加 12009年 7月 27日 8时 35分 6年 月 日 时 分定点运算器 ―― 定点加减法例,X= -0.1011 Y= -0.0110,求 X- Y=?解,[X]补 =1,0 1 0 1[-Y]补 =0,0 1 1 0+11011.[X- Y]补 = 1.1011X- Y=-0.01012009年 7月 27日 8时 35分 7年 月 日 时 分二、溢出及其判别方法:在计算机中,由于机器码的尾数通常是给定的(如 16位字长,32位字长),因此,在计算机中数的表示范围是有限的,若两数进行加减运算的结果超出了给定的取值范围,就称为 溢出 。一旦出现溢出,必须及时处理,否则会出现错误。2009年 7月 27日 8时 35分 8年 月 日 时 分1、溢出例 1,X=1010 Y=1001 求 X+Y解,[X]补 = 0 1 0 1 0+ [Y]补 = 0 1 0 0 11 0 0 1 1例 2,X=-1010 Y=-1011 求 X+Y解,[X]补 = 1 0 1 1 0+ [Y]补 = 1 0 1 0 10 1 0 1 1较大正数相加产生进位,影响符号位较大的负数对应较小的正数补码相加无进位,符号位自己相加2009年 7月 27日 8时 35分 9年 月 日 时 分2、溢出原因:1)两个正数太大,产生进位而改变了符号位;2)两个负数绝对值太大,对应的补码太小,不能向符号位产生进位,使符号位相加后,向前产生进位。1,两异号数相加或两同号数相减是否会产生溢出?2、仅当两同号数相加或两异号数相减时才有可能产生溢出?问题:决不会产生溢出正确2009年 7月 27日 8时 35分 10年 月 日 时 分例,X= -0.100 Y= -0.101,求 X+Y=?解,[X]补 =1,1 0 0[Y]补 =1,0 1 1+11110.丢到1两负数相加,结果应为负数,但运算结果为正数,表明有溢出发生 。 数据向前无进位,符号位向前有进位3、溢出的判断1) 采用 单符号位 的判断方法2009年 7月 27日 8时 35分 11年 月 日 时 分例,X= 100,Y= -110,求 X-Y=?解,[X]补 =0 1 0 0[-Y]补 =0 1 1 0+011一个正数减去一个负数,结果为正数,但计算结果为负数,表明有溢出发生,出错数据向前有进位,符号位向前无进位0溢出逻辑表达式为,V=Cf C0(其中 Cf为符号位产生的进位,C0为最高有效位产生的进位)2009年 7月 27日 8时 35分 12年 月 日 时 分溢出的原因:之所以发生错误,是因为运算结果产生了溢出。两个正数相加,结果大于机器所能表示的最大正数,称为 上溢 。而两个负数相加,结果小于机器所能表示的最小负数,称为 下溢 。为了判断,溢出,是否发生,可采用两种检测的方法。第一种方法是采用双符号位法,这称为,变形补码,或,模 4补码,。从而可使模 2补码所能表示的数的范围扩大一倍。2009年 7月 27日 8时 35分 13年 月 日 时 分定点运算器 ―― 定点加减法采用双符号位的判断方法每个操作数的补码符号用两个二进制数表示,称为交形补码,用,00”表示正数,,11”表示负数,左边第一位叫第一符号位,右边第一位称为第二符号位,两个符号位同时参加运算,如果运算结果两符号位相同,则没有溢出发生。如果运算结果两符号位不同,则表明产生了溢出。,10”表示负溢出(下溢出),说明运算结果为负数,,01”表示正溢出(上溢出),说明运算结果为正数。2009年 7月 27日 8时 35分 14年 月 日 时 分定点运算器 ―― 定点加减法采用双符号位的判断方法高符号位 低符号位 结果0 0 正0 1 上溢1 0 下溢1 1 负2009年 7月 27日 8时 35分 15年 月 日 时 分定点运算器 ―― 定点加减法利用进位值的判断方法两补码数进行加减运算时,若最高数值位产生向符号的进位而符号位不产生进位时,发生正溢出,若最高数值位无进位而符号位有进位时,发生负溢出 。2009年 7月 27日 8时 35分 16年 月 日 时 分例,X= +0.1100 Y= +0.1000,求 X+Y=?解,[X]补 =00,1100[Y]补 =00,1000+01.0100正数太大了,向前有进位,而符号位向前无进位;两个符号位,01,表示溢出2009年 7月 27日 8时 35分 17年 月 日 时 分例,X= -0.1100 Y= -0.1000,求 X+Y=?解,[X]补 =11,0100[Y]补 =11,1000+10.1100负数绝对值太大了对应的补码小,向前无进位,而符号位向前有进位;两个符号位,10,表示溢出溢出逻辑表达式为,V=Sf1 Sf2(其中 Sf1为最高符号位,Sf2为第二符号位)2009年 7月 27日 8时 35分 18年 月 日 时 分由此可以得出如下结论:1,当以模 4补码运算,运算结果的二符号位相异时,表示溢出;相同时,表示未溢出。2,模 4补码相加的结果,不论溢出与否,最高符号位始终指示正确的符号。2009年 7月 27日 8时 35分 19年 月 日 时 分三、基本的加法 /减法器1、一位全加器FAAi BiCiCi+1Si向高位进位本位输出结果输入 输出Ai Bi Ci Si Ci+10 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1表 2.2 一位全加器真值表两个输出端的逻辑表达式:Si= Ai Bi CiCi+ 1= AiBi+ BiCi+ CiAi2009年 7月 27日 8时 35分 20年 月 日 时 分Si= Ai Bi CiCi+ 1= AiBi+ BiCi+ CiAi按此表达式组成的一位全加器示图:Ci+1=(Ai
Bi)Ci AiBi2009年 7月 27日 8时 35分 21年 月 日 时 分n个 1位的全加器 (FA)可级联成一个 n位的行波进位加减器。M为方式控制输入线,当 M= 0时,作加法 (A+ B)运算;当 M= 1时,作减法 (A- B)运算,在后一种情况下,A- B运算转化成 [A]补 + [- B]补 运算,求补过程由 B+ 1来实现。2009年 7月 27日 8时 35分 22年 月 日 时 分单符号位判溢出 双符号正溢出0.1+ 0.01.1负溢出1.1+ 1.0011 + 11.001110.02009年 7月 27日 8时 35分 23年 月 日 时 分十进制加法器N位数字的行波进位 BCD加法器一位 BCD加法器单元的逻辑结构2009年 7月 27日 8时 35分 24年 月 日 时 分2009年 7月 27日 8时 35分 25年 月 日 时 分定点运算器 ―― 定点乘法定点原码一位乘法设被乘数 [X]原 =Xf.Xn-1Xn-2…… X1X0乘 数 [Y]原 =Yf.Yn-1Yn-2… Y1Y0乘 积 [Z]原 =Zf.Z2n-1Z2n-2…… Z1Z0=(XfY f)+ (0.Xn- 1… X1X0)(0.Yn- 1… Y1Y0)运算原则:同号相乘为正,异号相乘为负,符号可按:异或运算得到,数值部分的运算方法与普通的十进制乘数相类似 。2009年 7月 27日 8时 35分 26年 月 日 时 分定点运算器 ―― 定点乘法手工算法0,1 1 0 10,1 0 1 1×1 1 0 11 1 0 10 0 0 01 1 0 1+1 0 0 0 1 1 1 10.l 两个 n位数相乘,其积为 2n位,则需要 2n位长的加法器,这不适用于定点机的形式。l 机器一次只能进行两个数的相加,不能进行多个数据的加法。l 手工计算中,乘数的每一位是 0还是 1都可直接看见,而在计算机中,采用放乘数的寄存器的每一位直接决定本次相加数是被乘数还是 0是很不方便的,若采用该寄存器的最低一位来执行这种判断就简便了。2009年 7月 27日 8时 35分 27年 月 日 时 分定点运算器 ―― 定点乘法运算法则,计算机中执行乘法时,积的符号位由被乘数和乘数的符号位通过一个半加器实现。数值部分的运算规则是:从最低位 Y0开始,当乘数 Yi为 1时,将上次部分积加上被乘数的绝对值,然后右移一位,得到新的部分积;当 Yi为0时,则写下全 0。然后再对乘数 Y的高一位进行类似乘法运算。重复,加 ― 右移,操作 N次,可得到最后的乘积。2009年 7月 27日 8时 35分 28年 月 日 时 分定点运算器 ―― 定点乘法例,X=0.1101,Y=0.1011,求 X*Y=?解,|X|=00.1101 |Y|=00.1011部分积 乘数 说明0 0,0 0 0 00 0,1 1 0 1+ Yf 1 0 1 10 0,1 1 0 10 0,0 1 1 00 0,1 1 0 1→+0 1,0 0 1 10 0,1 0 0 10 0,0 0 0 0+0 0,1 0 0 10 0,0 1 0 00 0,1 1 0 10 1,0 0 0 10 0,1 0 0 0→→+→1 Yf 1 0 11 1 Yf 1 01 1 1 Yf 11 1 1 1 YfZ0=0Y0=1,+XY1=1,+XY2=0,+0Y3=1,+X右移,得 Z1右移,得 Z2右移,得 Z3右移,得 Z4=X*Y2009年 7月 27日 8时 35分 29年 月 日 时 分定点运算器 ―― 定点乘法结果:计算,X=-0.1101 Y=0.0110,用原码阵列乘法器求 X*Y?X*Y=0.X*Y=1,2009年 7月 27日 8时 35分 30年 月 日 时 分原码并行乘法不带符号的阵列乘法器 P382009年 7月 27日 8时 35分 31年 月 日 时 分设有两个不带符号的二进制整数:A= am- 1…a1a0B= bn- 1…b1b0它们的数值分别为 a和 b,即在二进制乘法中,被乘数 A与乘数 B相乘,产生 m+ n位乘积 P:P= pm+ n- 1…p1p0乘积 P 的数值为m- 1 n- 1a = ∑ai2i b = ∑bj2ji= 0 j= 02009年 7月 27日 8时 35分 32年 月 日 时 分实现这个乘法过程所需要的操作和人们的习惯方法非常类似:2009年 7月 27日 8时 35分 33年 月 日 时 分2009年 7月 27日 8时 35分 34年 月 日 时 分原码并行乘法带符号的阵列乘法器 P40( 1)对 2求补电路2009年 7月 27日 8时 35分 35年 月 日 时 分(2) 带符号的阵列乘法器2009年 7月 27日 8时 35分 36年 月 日 时 分设 A=anan-1…a1a0和 B=bnbn-1…b1b0均为用定点表示的 (n+ 1)位带符号整数。在必要的求补操作以后,A和 B的码值输送给 n× n位不带符号的阵列乘法器,并由此产生 2n位真值乘积,A·B= P= p2n- 1… p1p0p2n= an bn其中 P2n为符号位。原码乘法:算前、算后求补器 不做 求补操作。补码乘法:算前、算后求补器 做 求补操作例 17 P41例 18 P422009年 7月 27日 8时 35分 37年 月 日 时 分直接补码并行乘法补码与真值的转换公式[N]补 = an- 1an- 2…a1a0 其中 an- 1为符号位,则补码数 [N]补 和真值 N的关系可以表示成:n- 2+ ∑ai2i 当 an- 1 = 0([N]补 为正 )时i= 0n- 2- [1+ ∑(1- ai)2i] 当 an- 1 = 1([N]补 为负 )时i= 0可化为,n- 2N = - an- 12n- 1+ ∑ai2ii=0N=(2.29)2009年 7月 27日 8时 35分 38年 月 日 时 分补码与真值的转换公式又 [-N]补 = an-1an-2…a1a0+1,其中,ai=1-ai所以 [-N]补 可以表示为:n- 2- N = - (1-an- 1)2n- 1+ ∑(1-ai)2i +1i= 0(2.30)[例 19] 已知,[N]补 = 01101,[- N]补 = 10011,求 [N]补,[- N]补 具有的数值。2009年 7月 27日 8时 35分 39年 月 日 时 分类型 逻辑符号 操作0类加法器XY+ ) ZCS1类加法器XY+ )- ZC(- S)2类加法器- X- Y+ ) Z(- C)S3类加法器- X- Y+ ) - Z(- C)(- S)2009年 7月 27日 8时 35分 40年 月 日 时 分对 0类,3类全加器而言有:S= XYZ+ XYZ+ XYZ+ XYZC= XY+ YZ+ ZX对 1类,2类全加器,则有S= XYZ+ XYZ+ XYZ+ XYZC= XY+ XZ+ YZ2009年 7月 27日 8时 35分 41年 月 日 时 分直接补码阵列乘法器利用混合型的全加器就可以构成直接补码数阵列乘法器。设被乘数 A和乘数 B是两个 5位的二进制补码数,即其A= (a4)a3a2a1a0B= (b4)a3a2a1a0它们具有带负权的符号位 a4和 b4,并用括号标注。2009年 7月 27日 8时 35分 42年 月 日 时 分直接补码阵列乘法器(a4) a3 a2 a1 a0 = A× ) (b4) b3 b2 b1 b0 = B(a4b0) a3b0 a1b0 a1b0 a0b0(a4b1) a3b1 a2b1 a1b1 a0b1(a4b2) a3b2 a2b2 a1b2 a0b2(a4b3) a3b3 a2b3 a1b3 a0b3+ ) a4b4 (a3b4) (a2b4) (a1b4) (a0b4)p9 p8 p7 p6 p5 p4 p3 p2 p1 p0 = P2009年 7月 27日 8时 35分 43年 月 日 时 分2009年 7月 27日 8时 35分 44年 月 日 时 分定点运算器 ―― 定点除法定点 原码 一位除法在定点计算机中,完成两个原码表示的数相除时,商的符号由两数的符号位和原码乘法运算方法一样,用模 2求和得到,而商的数值部分则是两个正数相除得到 。设被除数 [X]原 =Xf.X1X2… Xn除 数 [Y]原 =Yf.Y1Y2… Yn则商 [Q]原 =( Xf + Yf),( X1X2… Xn/Y1Y2… Yn)2009年 7月 27日 8时 35分 45年 月 日 时 分定点运算器 ―― 定点除法计算机中执行除法时,商的符号位由被除数和除数的符号位通过一个半加器实现;对于数值部分,由于定点小数的绝对值小于 1,如果被除数大于或等于除数,则商就大于或等于 1,因而会产生溢出,这是不允许的。因此在执行除法以前,先要判别是否溢出,不溢出时才执行除法运算。判别溢出的方法是被除数减去除数,若差为正,就表示溢出。2009年 7月 27日 8时 35分 46年 月 日 时 分定点运算器 ―― 定点除法手工计算除法的方法:设被除数为 X=0.1001,Y=0.1011,求 X/Y=?2009年 7月 27日 8时 35分 47年 月 日 时 分定点运算器 ―― 定点除法0.1 1 0 1 1 1 01 1 0 11 0 0 1 01 1 0 11 0 1 0 01 1 0 10 1 1 1X/Y=0.1101余数 =0.2009年 7月 27日 8时 35分 48年 月 日 时 分恢复余数法恢复余数法的运算规则,计算机中进行除法时,是模仿十进制除法笔算的过程,但又不能完全照搬 。在机器中判断是否够减,必须先做减法,若余数为正,表示够减;若余数为负,表示不够减,不够减时,必须恢复原来的余数,以便再继续往下运算,这种方法称为 恢复余数法 。要恢复原来的余数,只要当前的余数加上除数即可 。2009年 7月 27日 8时 35分 49年 月 日 时 分定点运算器 ― 定点除法例,X=0.1001,Y=0.1011,用恢复余数法求 X/Y=?解,[X]原 =[X]补 =0.1001[Y]补 =0.1011[-Y]补 =1.01012009年 7月 27日 8时 35分 50年 月 日 时 分解,被除数 /余数 商数 q 说明商 0移入 q,r0’ 左移商 1移入 q,r1 左移商 1移入 q,r2左移商 0移入 q,r3’ 左移0 0,1 0 0 11 1,0 1 0 11 1,1 1 1 00 0,1 0 1 10 0,1 0 0 10 0,0 1 1 10 1,0 0 1 01 1,0 1 0 10 0,1 1 1 01 1,0 1 0 10 0,0 0 1 10 0,0 1 1 01 1,0 1 0 11 1,1 0 1 10 0,1 0 1 10 0,0 1 1 00 0,1 1 0 01 1,0 1 0 10 0,0 0 0 10 0,0 0 0 1+[-Y]补+[Y]补+[-Y]补+[-Y]补+[-Y]补+[Y]补+[-Y]补←←←←00.10.110.1100.1101X减 Y余数 r0&0,商,0”恢复余数r0’减 Y余数 r1&0,商,1”减 Y余数 r4&0,商,1”减 Y余数 r3&0,商,0”恢复余数r3’=2r2减 Y商 1移入 q,r4不左移余数 r2> 0,商,1”2009年 7月 27日 8时 35分 51年 月 日 时 分定点运算器 ― 定点除法[Q]原 =0.1101[R]原 =0.0001,R=2-4*0.0001结果,2009年 7月 27日 8时 35分 52年 月 日 时 分定点运算器 ― 定点除法恢复余数法的缺点,当某一次 -Y的差值为负时,要多一次+Y恢复余数的操作,降低了执行速度,又使控制线路变得复杂,因此在计算机中很少采用。2009年 7月 27日 8时 35分 53年 月 日 时 分定点运算器 ― 定点除法在恢复余数除法中,若第 i-1次求商的余数为 +Ri-1时,下一次求商用的方法是Ri=2Ri-1-Y当 Ri< 0时,第 i位的商上 0,而恢复余数的操作结果应为 Ri+Y,下一次,即第 i+1次求商的减法操作是Ri+1=2( Ri +Y) -Y=2 Ri +Y上述公式表明,当某一次求商,其减得的差值为负,即 Ri < 0时,本次上商为 0,继续求下一位商时,可以不必恢复余数,而是直接将负的差值左移一位后(得 2Ri ),再采用加上除数的方法来完成。2009年 7月 27日 8时 35分 54年 月 日 时 分定点运算器 ― 定点除法加减交替法的规则:首先作 X-Y,余数为正,表明产生溢出,应终止除法运算;余数为负,上商为 0(作为商的符号位),然后重复下述操作 n次,可得商的 n位数值a,余数左移一位。b,余数为正时,减除数;余数为负时,加除数。c,所得的新余数为正时,上商为 1;为负时,上商为 0。由于运算中余数共左移了 n次,相当于乘 2n,故最后得余数应乘上 2-n才是真正的正确余数。2009年 7月 27日 8时 35分 55年 月 日 时 分定点运算器 ― 定点除法例,X=0.1001,Y=0.1011,求 X/Y解,[X]补 =0.1001[Y]补 =0.1011[-Y]补 =1.01012009年 7月 27日 8时 35分 56年 月 日 时 分解,[X]原 =[X]补 =X=0.1001,[Y]补 =0.1011,[-Y]补 =1.0101被除数 X/余数 r 商数 q 说明+[-Y]补0 0,1 0 0 11 1,0 1 0 11 1,1 1 1 01 1,1 1 0 00 0,1 0 1 10 0,0 1 1 10 0,1 1 1 01 1,0 1 0 10 0,0 0 1 10 0,0 1 1 01 1,0 1 0 11 1,1 0 1 11 1,0 1 1 00 0,1 0 1 10 0,0 0 0 1+[-Y]补+[Y]补+[-Y]补+[Y]补←←←←00.10.110.1100.1101X减 Y余数 r0为负余数 r1为正余数 r2为正余数 r3为负余数 r4为正商 0,r和 q左移一位商 1,r和 q左移一位商 1,r和 q左移一位商 0,r和 q左移一位加 Y减 Y减 Y加 Y商 1,仅 q左移一位2009年 7月 27日 8时 35分 57年 月 日 时 分Q=0.1101R=2-4*0.0001结果,2009年 7月 27日 8时 35分 58年 月 日 时 分并行除法器1.可控加法 /减法 (CAS)单元可控加法 /减法 (CAS)单元,它将用于并行除法流水逻辑阵列中,它有四个输出端和四个输入端。当输入线 P= 0时,CAS作加法运算;当 P= 1时,CAS作减法运算2009年 7月 27日 8时 35分 59年 月 日 时 分可控加法 /减法 (CAS)单元CAS单元的输入与输出的关系Si= Ai (Bi P) CiCi+ 1= (Ai+ Ci)·(Bi P)+ AiCi2009年 7月 27日 8时 35分 60年 月 日 时 分2009年 7月 27日 8时 35分 61年 月 日 时 分2009年 7月 27日 8时 35分 62年 月 日 时 分不恢复余数的阵列除法器被除数 x = 0.x 1x 2x 3x 4x 5x 6 (双倍长 )除数 y = 0.y 1y 2y 3商数 q = 0.q1q2q3余数 r = 0.00r3r4r5r6字长 n+ 1= 42009年 7月 27日 8时 35分 63年 月 日 时 分例 20 x = 0.101001,y = 0.111,求 x ÷ y 。解,[-y ]补 = 1.001被除数 x 0.1 0 1 0 0 1+[- y] 1.0 0 1余数为负 1.1 1 0 0 0 1 < 0 q0= 0+[ y]补 - -& 0.0 1 1 1余数为正 0.0 0 1 1 0 1 > 0 q1= 1+[- y]补 - -& 1.1 1 0 0 1余数为负 1.1 1 1 1 1 1 < 0 q2= 0+[ y]补 - -& 0.0 0 0 1 1 1余数为正 0.0 0 0 1 1 0 > 0 q3= 1故得商 q= q0.q1q2q3= 0.101余数 r= (0.00r3r4r5r6)= 0.0001102009年 7月 27日 8时 35分 64年 月 日 时 分2.5.1 逻辑运算计算机中除了进行加、减、乘、除等基本算术运算外,还可对两个或一个逻辑数进行逻辑运算。所谓逻辑数,是指不带符号的二进制数。利用逻辑运算可以进行两个数的比较,或者从某个数中选取某几位等操作。计算机中的逻辑运算,主要是指 逻辑非,逻辑加,逻辑乘,逻辑异 四种基本运算。2009年 7月 27日 8时 35分 65年 月 日 时 分1.逻辑非运算 逻辑非也称 求反 。如:x 1= ,x 2= ,求 x 1,x 2。x 1= x 2= 2.逻辑加运算 按位求它们的“或”x= ,y= ,求x ∨ y。1 0 1 0 0 0 0 1 x∨ 1 0 0 1 1 0 1 1 y1 0 1 1 1 0 1 1 z3.逻辑乘运算 按位求它们的“与”x= ,y= ,求x ∧ y。1 0 1 1 1 0 0 1 x∧ 1 1 1 1 0 0 1 1 y1 0 1 1 0 0 0 1 z2009年 7月 27日 8时 35分 66年 月 日 时 分4.逻辑异运算 按位求它们的模 2和x = ,y = ,求 x
y 。[解,]1 0 1 0 1 0 1 1 x 1 1 0 0 1 1 0 0 y0 1 1 0 0 1 1 1 z即 x
y = 2009年 7月 27日 8时 35分 67年 月 日 时 分定点运算器的组成运算器主要由算术逻辑部件,通用寄存器和状态寄存器组成。算术逻辑部件 ALU( Arithmetic and Logic Unit),主要完成对二进制信息的定点运算,如:加、减、乘、除、与、或、非、异或、逻辑移位、算术移位等。通用寄存器,主要用来保存参加运算的操作数和运算的结果。状态寄存器,用来记录算术、逻辑运算或测试操作的状态结果。一般有零标志位,负标志位,溢出标志位、进位或借位标志位等。2009年 7月 27日 8时 35分 68年 月 日 时 分定点运算器的组成 ―― 多功能算术 /逻辑运算单元基本思想一位全加器( FA)的逻辑表达式为:Fi=Ai Bi CiCi+1=AiBi+BiCi+CiAi为了将全加器的功能进行扩展以完成多种算术逻辑运算,先不将输入 Ai和 Bi和下一位的进位 Ci直接进行全加,而是将 Ai和 Bi先组合由 S0,S1,S2,S3控制的组合函数 Xi和 Yi,然后再将 Xi,Yi和下一位进位数通过全加器进行全加,这样,不同的控制参数可以得到不同的组合函数,以能够实现多种算术运算和逻辑运算。2009年 7月 27日 8时 35分 69年 月 日 时 分定点运算器的组成 ―― 多功能算术 /逻辑运算单元S1全加器函数发生器FiC n+i+1 Cn+iXi YiAi BiS0S2S3S0 S1 Yi S2 S3 Xi0 0 Ai 0 0 10 1 AiBi 0 1 Ai+Bi1 0 AiBi 1 0 Ai+Bi1 1 0 1 1 AiXi,Yi与控制参数和输入量的关系2009年 7月 27日 8时 35分 70年 月 日 时 分定点运算器的组成 ―― 多功能算术 /逻辑运算单元ALU的某一位逻辑表达式如下:Xi=S3AiBi+S2AiBiYi=Ai+S0Bi+S1BiFi=Yi+Xi+Cn+iCn+i+1=Yi+XiCn+iALU四位之间采用先行进位2009年 7月 27日 8时 35分 71年 月 日 时 分定点运算器的组成 ―― 多功能算术 /逻辑运算单元每一位的进位公式可递推如下:C n+1=Y0+X0CnC n+2=Y1+X1Cn+1= Y1+ Y0X1+X0X1CnC n+3=Y2+X2Cn+2 =Y2 +X2 Y1+ Y0X1 X2 +X0X1 X2 CnC n+4=Y3+X3Cn+3=Y3+X3 Y2 +X2 X3 Y1+ Y0X1 X2 X3 +X0X1 X2 X3 Cn2009年 7月 27日 8时 35分 72年 月 日 时 分定点运算器的组成 ―― 多功能算术 /逻辑运算单元设,该式表明,第 0位的进位输入可以直接传送到最高进位位上去,因而可以实现高速运算。G= Y3+X3 Y2 +X2 X3 Y1+ Y0X1 X2 X3P= X0X1 X2 X3则:C n+4=G+PCn其中,G称为进位发生输出P称为进位传送输出用负逻辑表示的 4位算术 /逻辑运算单元 (ALU)的逻辑电路图如下,它是根据上面的原始推导公式用 TTL电路实现的。这个期间的商业标号为 74181ALU。2009年 7月 27日 8时 35分 74年 月 日 时 分2009年 7月 27日 8时 35分 75年 月 日 时 分两级先行进位如何实现 16位 ALU?片间串行进位,片内先行进位如何改进??2009年 7月 27日 8时 35分 76年 月 日 时 分两级先行进位74181ALU设置了 P和 G两个本组先行进位输出端。如果将四片 74181的 P,G输出端送入到 74182先行进位部件( CLA),又可实现第二级的先行进位,即组与组之间的先行进位。2009年 7月 27日 8时 35分 77年 月 日 时 分先行进位部件 74182CLA所提供的进位逻辑关系如下:Cn+ x = G0+ P0CnCn+ y = G1+ P1Cn+ x = G1+ G0P1+ P0P1CnCn+ z = G2+ P2Cn+ y = G2+ G1P2+ G0P1P2+ P0P1P2CnCn+ 4 = G3+ P3Cn+ z = G3+ G2P3+ G1P1P2+ G0P1P2P3+ P0P1P2P3Cn= G*+ P*Cn其中P*= P0P1P2P3G*= G3+ G2P3+ G1P1P2+ G0P1P2P3其中 G*称为 成组进位发生输出,P*称为 成组进位传送输出 。2009年 7月 27日 8时 35分 78年 月 日 时 分2009年 7月 27日 8时 35分 79年 月 日 时 分并行进位 741822009年 7月 27日 8时 35分 80年 月 日 时 分 74182C0C4C8C12C1674181 ------ 4片74182 ------ 1片16位二级并行进位 ALU2009年 7月 27日 8时 35分 81年 月 日 时 分32位 ALU2009年 7月 27日 8时 35分 82年 月 日 时 分64位 3级先行进位 ALU74181-----16片 74182---------5片C0181 18174182C642009年 7月 27日 8时 35分 83年 月 日 时 分定点运算器的 基本结构运算器包括 ALU、阵列乘除器、寄存器、多路开关、三态缓冲器、数据总线等逻辑部件。计算机的运算器的结构一般有三种。2009年 7月 27日 8时 35分 84年 月 日 时 分定点运算器的基本结构A BALU通 用寄存器特 殊寄存器单总线结构的运算器 输入数据和操作结构需要三次串行的选通操作,但它并不会对每种指令都增加很多执行时间。由于只控制一条总线,所以控制电路比较简单。通 用寄存器特 殊寄存器特 殊寄存器ALU 缓冲器总线 1总线 2两个操作数同时加到 ALU进行运算,只需要一次操作控制,而且马上得到运算结果。ALU的输出不能直接加到总线上去,这是因为,当形成操作结构的输出时,两条总线都被输入数据占据,因而必须在 ALU的输出端设置缓冲器。双总线结构的运算器定点运算器的基本结构2009年 7月 27日 8时 35分 86年 月 日 时 分定点运算器的基本结构通 用寄存器ALU 特 殊寄存器总 线旁路器总线 1总线 2总线 3ALU的两个输入端分别由总线提供,而 ALU的输出则与第三条总线相连。这样,算术逻辑操作就可以在一步的控制之内完成。设置一个总线旁路器,如果一个操作数不需要修改,而直接从总线 2传送到总线 3,那么可以通过控制总线旁路器把数据传出。2009年 7月 27日 8时 35分 87年 月 日 时 分2.6 浮点运算器 ―― 浮点运算方法浮点数的加法、减法运算设有两个浮点数的分别为 X=Mx*2Ex,Y=My*2Ey,实现浮点加减法算的基本步骤分为四步完成:⑴ 0操作数检查,用来判断两个操作数中是否有一个为 0.⑵ 对阶操作,即比较两个浮点数的阶码值的大小,求 E=Ex-Ey,然后将小阶对大阶。⑶ 尾数进行加或减运算,实现尾数的加减运算,执行两个完成对阶后的浮点数的求和(差)的过程⑷ 规格化,若得到的结果不满足规格化规则,就必须把它变成规格化的数。(5)舍入处理,在执行对阶或右规操作时,会使位数低位上的一位或若干位的数值被移掉,使数值精度受到影响,可以把移掉的几个高位的值保存起来供舍入使用 。(6)溢出处理,阶码上溢、阶码下溢、尾数上溢、尾数下溢2009年 7月 27日 8时 35分 88年 月 日 时 分浮点运算器 ―― 浮点运算方法取指定位数舍入处理阶码减 1尾数左移 1位尾数加法(带符号)小阶加 1尾数右移 1位加法 减法Y变符号X=0?Y=0?z← y z← x z← 另一数 z← 0 报告上溢 报告下溢阶码相同?尾数 =0? 尾数 =0?阶码加 1尾数右移 1位阶码上溢 阶码下溢尾数上溢 已是 1.M0操作检查 对阶操作 尾数加减 结果规格化结束是是是是 是 是 是是否 否否否否 否否否2009年 7月 27日 8时 35分 89年 月 日 时 分浮点运算器 ―― 浮点运算方法例,设 X=11011,Y=2100*( -0.),求 X+Y。 (假设两数均以补码表示,阶码采用双符号位,尾数采用单符号位,)2009年 7月 27日 8时 35分 90年 月 日 时 分浮点运算器 ―― 浮点运算方法解,浮点表示为,[X]浮 = 00 010,0,[Y]浮 = 00 100,1,( 1 ) 对阶E=Ex-Ey==11110即 △ E为 -2,X的阶码小,应使 Mx右移两位,Ex加 2,得,[X]浮 =10110(11)2009年 7月 27日 8时 35分 91年 月 日 时 分浮点运算器 ―― 浮点运算方法+(2).尾数求和0.00110110(11)1.010101001.10001010(11)2009年 7月 27日 8时 35分 92年 月 日 时 分浮点运算器 ―― 浮点运算方法(3).规格化结果的符号位与最高符号数值位相同,应执行左规处理,所谓左规格化的规则,就是尾数左移 1位,阶码减 1,所以结果为 1.),阶码为 00 011(4)舍入处理采用 0舍 1入法处理,则有1,0 0 0 1 0 1 0 1+ 11,0 0 0 1 0 1 1 02009年 7月 27日 8时 35分 93年 月 日 时 分浮点运算器 ―― 浮点运算方法(5).判溢出阶码的符号位为 00,不溢出 。 所以最终的结果为X+Y=2011*( -0.)2009年 7月 27日 8时 35分 94年 月 日 时 分浮点运算器 ―― 浮点运算方法例,设 X=2001*( -0.111),Y=,求 X-Y.(假设两数均以补码表示,阶码采用3位,尾数采用 4位,均包括符号位,)2009年 7月 27日 8时 35分 95年 月 日 时 分浮点运算器 ―― 浮点运算方法解,浮点表示为,[X]浮 =001,1,001[Y]浮 =010,0,101( 1 ) 对阶[△ E]补 =[Ex]补 -[Ey]补 =001+110=111即 △ E为 -1,X的阶码小,应使 Mx右移 1位,Ex加 1,得,[X]浮 =010,1.100( 1)2009年 7月 27日 8时 35分 96年 月 日 时 分浮点运算器 ―― 浮点运算方法+(2).尾数求差,[-Y]补 =1.0111 1,1 0 0 ( 1)1 1,0 1 11 0,1 1 1 (1)丢失1符号位为 10,说明产生了下溢但是在浮点数的运算中,只有当阶码产生溢出时,才是溢出。此时只是说明尾数的结果为不规格化数,应进行右规。(建议采用变形补码运算)2009年 7月 27日 8时 35分 97年 月 日 时 分浮点运算器 ―― 浮点运算方法(3).规格化由于结果产生了溢出,应执行右规处理,所谓右规格化的规则,就是尾数右移 1位,阶码加 1,所以结果为1.011(1),阶码为 011(4)舍入处理采用恒舍法处理,则有尾数为 1.0112009年 7月 27日 8时 35分 98年 月 日 时 分浮点运算器 ―― 浮点运算方法(5).判溢出阶码不溢出 。 所以最终的结果为X+Y=2011*( -0.101)2009年 7月 27日 8时 35分 99年 月 日 时 分浮点运算器 ―― 浮点运算法浮点数的乘除法:设有两个浮点数的分别为 X=Mx*2Ex,Y=My*2Ey,则浮点数乘法运算规则:X*Y=2( EX+EY) *( MX*MY)设有两个浮点数的分别为 X=Mx*2Ex,Y=My*2Ey,则浮点除法运算规则:X/Y=2( EX-EY) *( MX÷ MY)2009年 7月 27日 8时 35分 100年 月 日 时 分浮点运算器 ―― 浮点运算法浮点乘、除法的运算步骤:1) 0操作数检查,若是除法操作还应当做尾数调整,使 |mx|&|my|2) 阶码做加 /减操作3) 尾数做乘 /除操作4) 结果规格化及舍入处理2009年 7月 27日 8时 35分 101年 月 日 时 分浮点运算器 ―― 浮点运算法1,浮点数的阶码运算阶码通常用补码和移码形式表示。对于移码来说:[X+Y]移 =[X]移 +[Y]补[X-Y]移 =[X]移 +[-Y]补双符号位移码:正数,01 上溢,10负数,00 下溢,11在用双符号位移码进行计算时,判断溢出的条件是当结果的最高符号位为 1时,则产生了溢出。2009年 7月 27日 8时 35分 102年 月 日 时 分浮点运算器 ―― 浮点运算方法例 26,x=+011,y=+110,求 [x+y]移 和 [x-y]移,并判断是否溢出。2009年 7月 27日 8时 35分 103年 月 日 时 分浮点运算器 ―― 浮点运算法2,浮点数的尾数处理第一种方法:无条件地丢掉正常尾数最低位之后的全部数值,这种方法称为截断处理。第二种方法:运算过程中保留右移中移出的若干高位的值,最后按某种规则用这些位上的值修正尾数,这种处理称为舍入处理。2009年 7月 27日 8时 35分 104年 月 日 时 分舍入处理:原码:C 0舍 1入法:C 置 1法:补码00…0,不舍入100..0或 0xxxx( xxxx不全为 0),舍弃1xxxx( xxxx不全为 0 ),尾数最低位+ 12009年 7月 27日 8时 35分 105年 月 日 时 分例 27:设 [x1]补 =11.[x1]补 =11.[x1]补 =11.[x1]补 =11.求:执行只保留小数点后 4位有效数字的舍入操作值。2009年 7月 27日 8时 35分 106年 月 日 时 分例 28:设有浮点数 x=2-5× 0.0110011,y=23× (-0.1110010),阶码用 4位移码表示,尾数(含符号位)用 8位补码表示,求[x× y]浮 。要求用补码完成尾数乘法运算,运算结果尾数保留高 8位(含符号位),并用尾数低位字长的值处理舍入操作。2009年 7月 27日 8时 35分 107年 月 日 时 分浮点运算流水线流水线原理,假定作业 T 被分成 k 个子任务,可表达为T= {T1,T2,··,Tk}2009年 7月 27日 8时 35分 108年 月 日 时 分时空图2009年 7月 27日 8时 35分 109年 月 日 时 分设过程段 Si所需的时间为 τ i,缓冲寄存器的延时为 τ l,线性流水线的时钟周期定义为τ= max{τi}+ τl= τm+ τlk 级过程段的流水线处理 n 个任务需要的时钟周期数为,Tk= k+ (n- 1)如果用非流水线的硬件来处理这 n个任务,时间上只能串行进行,则所需时钟周期数为 TL= n·k我们将 TL和 Tk的比值定义为 k级线性流水线的加速比,Ck= TL/ Tk=n*k/(k+(n-1))当 n&&k 时,Ck- &k2009年 7月 27日 8时 35分 110年 月 日 时 分例 29:假设有一个 4级流水浮点 加法器每个过程段所需的时间为,0操作数检查 τ1= 70ns,对阶 τ2= 60ns,相加 τ3= 90ns,规格化 τ4= 80ns,缓冲寄存器 L的延时为 tl= 10ns,( 1)求 4 级流水线加法器的加速比为多少? (2)如果每个过程段的时间相同,即都为75ns,(包括缓冲寄存器时间 ),加速比是多少? (3)画出时空图。2009年 7月 27日 8时 35分 111年 月 日 时 分[解,](1)加法器的流水线时钟周期至少为τ= 90ns+ 10ns= 100ns如果采用同样的逻辑电路,但不是流水线方式,则浮点加法所需的时间为τ1+ τ2+ τ3+ τ4 = 300ns因此,4级流水线加法器的加速比为Ck= TL/ Tk=300*n/(400+(n-1)*100) =300/ τ=300/100= 3 (n&&4)(2) 当每个过程段的时间都是 75ns时,加速比为Ck= 300/75= 42009年 7月 27日 8时 35分 112年 月 日 时 分作业题教材,
课件名称:课件分类:计算机课件类型:教学课件文件大小:12.35MB下载次数:51评论次数:9用户评分:6.7
1. 2. 3. 4. 5. 6. 7. 8. 9.

我要回帖

更多关于 运算溢出 的文章

 

随机推荐