计算机系统组成与结构PPT第8章.ppt
《计算机系统组成与结构PPT第8章.ppt》由会员分享,可在线阅读,更多相关《计算机系统组成与结构PPT第8章.ppt(91页珍藏版)》请在三一办公上搜索。
1、计算机组成与结构,湖南大学计算机与通信学院,8-1,第 八 章 运 算 方 法,计算机组成与结构,湖南大学计算机与通信学院,8-2,本章我们详细说明几种常用数据格式的算术运算算法和它们的硬件实现。包括定点数表示及其加、减、乘、除过程和硬件实现,二十进制(或BCD)码的格式和操作。,接下来讨论一些提高算术操作性能的专用硬件,包括流水线、查找表、华莱士树。,最后介绍浮点数的格式和它们的算术操作。包括浮点数的格式,性质,以及加、减、乘、除过程和硬件实现,还有IEEE 754 浮点数标准。,执行算术和逻辑运算的指令以及微操作是任何CPU的一个必不可少的重要部分。,计算机组成与结构,湖南大学计算机与通信
2、学院,8-3,8.1 无专门符号位表示法,本节讨论二进制数无专门符号位表示法的加、减、乘、除的基本算法以及实现这些算法的硬件。这些算法同时也是二进制数带专门符号位表示法、BCD码和浮点表示法的算术运算基础。,非负数码:表示0或一个正数。n位非负数码的数值范围为0(所有位都为0)到2n-1(所有位都为1)。,2的补码(简称补码):既能表示正数又能表示负数。n位数的数值范围为-2n-1到2n-1-1。当最高位为1时表示负数,最高位为0时表示正数(包括0)。正数(包括0)的补码与非负数码相同,负数的补码为其绝对值的2的补码,等于它的绝对值按位取反(该数的1的补码,简称为反码),加1。,有两种常用的无
3、专门符号位表示法:,计算机组成与结构,湖南大学计算机与通信学院,8-4,例如,求-5的4位补码表示,首先求出它的绝对值5(0101),产生反码值1010,再加1得补码1011。下表列出了8位二进制数的非负数码和补码表示的数值。,表8.1 无符号表示的数值,计算机组成与结构,湖南大学计算机与通信学院,8-5,8.1.1 加法和减法,加法直接采用二进制加法实现,硬件中通过使用一个并行加法器来实现,如下图所示。,X和Y是8位寄存器,该电路实现微操作 ADD:XX+Y。,只要结果在正常范围内(对非负数码而言为0到2n-1,对2的补码而言为-2n-1到2n-1-1),该电路就能得到正确的结果。,图8.1
4、 微操作XX+Y的实现,计算机组成与结构,湖南大学计算机与通信学院,8-6,当结果不能表示为一个8位数值时就会导致溢出:,例如,非负数码加法255+1,即1111 1111+0000 0001,直接加得 1 0000 0000,有9位,不能存于8位寄存器中。,并行加法器产生额外的进位输出,它用来标志算术溢出。在非负数码中,这个进位能置溢出标志,它提示系统产生了溢出,所得结果不完全正确,系统应进行相应的结果修复处理或错误处理。,在补码中,判断溢出不但要检查进位输出,还要检查结果最高位的进位输入。如果这两者相等,那么不产生溢出,否则产生溢出。见下图:,计算机组成与结构,湖南大学计算机与通信学院,8
5、-7,图8.2 补码加法的溢出产生,在(a)和(c)中最高位的进位输入和进位输出相等,不产生溢出;而在(b)和(d)中两者不等,产生溢出。,计算机组成与结构,湖南大学计算机与通信学院,8-8,减法可以转换成加法,即X Y通过执行X+(-Y)来实现。首先将Y转换成 Y的补码,再将 Y的补码与X的补码相加即可得X Y的补码:X Y补=X补+-Y补,左图给出了执行微操作SUB:XXY的一种硬件实现。,图8.3 微操作XXY的实现,计算机组成与结构,湖南大学计算机与通信学院,8-9,对于非负数码,减法的结果不会比2n-1大,但可能比0小。例如,12执行为0000 0001+1111 1110=1111
6、 1111,即255。,图中(b)和(d)溢出,而(a)和(c)没有溢出。,图8.4 非负数码减法的溢出产生,同样,补码减法也将XY转换成X+(Y)来执行,而判断溢出的条件与补码加法相同。,此时,如果减法(通过补码加法实现)产生了进位输出0而不是1时,则发生了溢出。,计算机组成与结构,湖南大学计算机与通信学院,8-10,8.1.2 乘法,乘法可以看成加法的重复。一个数乘以n与n个该数相加的结果相同。可以用下列算法来实现乘法xy。z=0;FOR i=1 TO y DO z=z+x,这种算法不理想,原因是速度慢、计算xy的时间不确定。我们希望不论x、y取何值,执行乘法的时间相同。,x=2 7 y=
7、2 5 3 8 1 1 3 5 5 4 6 8 3 1,考虑人工计算:,首先,27乘以乘数y 的最低位3。接着,27乘以乘数y 的次低位5,结果放在前一个积的左边一位处,因为乘数5在3的左一位上。然后,27乘以2,结果进一步左移一位。最后,将所有值加在一起。,8.1.2.1 移位相加算法(非负数码乘法),计算机组成与结构,湖南大学计算机与通信学院,8-11,这个过程被称为移位相加乘法。首先计算每个部分积并左移到正确位置,然后再将所有的部分积相加。对这个算法稍做修改,使得硬件实现更为简单,就可得到无符号非负数码的乘法基本算法。,第一个修改是每求出一个部分积后就计算和:,x=2 7 y=2 5 3
8、 8 1 1 3 5 1 4 3 1 计算的和 5 4 6 8 3 1 最终计算的和,因为硬件上,二输入加法器很容易实现,而三输入或多输入的加法器则变得非常复杂。,任何时候都没有多于两个数的加。,注意:每一个部分积都逐次左移一位,因此排列的位置不同。在当前和与部分积的相加中,某些位的运算不必要。,计算机组成与结构,湖南大学计算机与通信学院,8-12,第二个修改用右移当前和代替左移部分积:,x=27 y=253 81 右移一位 81 1被右移出,故不参加加法运算 135 1431 右移一位 1431 3 1被右移出,故不参加加法运算 54 6831 最后右移一位 6831,每次都是相同的三列数字
9、进行加法。已经右移到这三列右边的数字只是简单的写下,不进行加法。,计算机组成与结构,湖南大学计算机与通信学院,8-13,若用二进制,被乘数不是乘以0就是乘以1,因此部分积不是0(X0=0)就是被乘数的值(X1=X)。,下面算法实现两个n位寄存器的值X和Y的移位相加乘法,结果保存在两个n位寄存器U和V中,其中U保存结果的高n位,V保存结果的低n位。C是一位寄存器,用来保存执行加法时的进位。,U=0;FOR i=1 TO n DO IF Y0=1 THEN CU=U+X;线性右移 CUV;循环右移 Y,计算机组成与结构,湖南大学计算机与通信学院,8-14,算法的RTL代码如下所示。注意:当i=0时
10、,Z=1;而1,2,3是连续的状态,即算法是由状态1到2再到3的。,1:U0,in Y02:CUU+X 2:ii-1 3:shr(CUV),cir(Y)Z3:GOTO 2 Z 3:FINISH1,表8.3列出了1311的RTL代码的执行步骤。同样初始化X=1101,Y=1011。除了在每个周期增加了满足的条件和执行的微操作外,表8.3同表8.2一样。,计算机组成与结构,湖南大学计算机与通信学院,8-15,表8.3 移位相加乘法RTL代码的执行轨迹,计算机组成与结构,湖南大学计算机与通信学院,8-16,图8.5 移位相加乘法算法的硬件实现,计算机组成与结构,湖南大学计算机与通信学院,8-17,如
11、果不要求保存原值,则可以进一步优化算法,使硬件实现更简单。特别是如果Y值不要求保存,可将其值保存在V寄存器中,则乘法转换为UVX V。每次检查V的最低位V0,若为1,执行加法。下一步执行右移时,该位将丢弃,因为它不再需要使用。修改后的RTL代码为:1:U0,in V02:CUU+X 2:ii-1 3:shr(CUV)Z3:GOTO 2 Z 3:FINISH1,与前面的代码有两处不同:一是CUU+X的条件由Y02改为V02;二是减少了cir(Y)的操作。,除了C和U的LD信号改为V02,以及去掉了寄存器Y之外,该代码的硬件实现与图8.5的相同。,计算机组成与结构,湖南大学计算机与通信学院,8-1
12、8,移位相加乘法改进算法的硬件实现,计算机组成与结构,湖南大学计算机与通信学院,8-19,8.1.2.1 布斯算法(补码乘法),对于无专门符号位的补码数据,上面的算法并不总能得出正确的结果。上一个例子(13 11)中,1101 和1011的补码表示分别为3和-5,它们的积应是+15;而上面的算法将得出结果1000 1111,即 113,显然是错的。原因是该算法仅能处理两个正数相乘,当有一个或两个操作数为负数时,通过执行下面的程序,上面的算法仍然可以使用:,IF 被乘数 0 THEN 被乘数-被乘数;IF 乘数 0 THEN 乘数-乘数;用非负数乘法进行乘法运算;恢复被乘数和乘数的原值;IF 被
13、乘数和乘数中有一个为负数,并且另一个非零,THEN 结果-结果,计算机组成与结构,湖南大学计算机与通信学院,8-20,这个算法很麻烦,而booths算法比它简单。该算法直接对补码数据进行运算,不需进行正数和负数之间的转换。booths算法也检查乘数的每一位,并把当前和右移一位。不同的是,并不是乘数的每个1都执行加法;而是对于一串1的第一个1执行减法,对于一串1的最后一个1执行加法。,U=0;Y-1=0;FOR i=1 TO n DO IF Y0Y-1=10 THEN U=U X;IF Y0Y-1=01 THEN U=U+X;算术右移 UV;循环右移 Y并将Y0复制给Y-1,booths乘法UV
14、XY,U、V、X、Y为n位值,Y-1为1位值:,计算机组成与结构,湖南大学计算机与通信学院,8-21,检查Y的一串1的关键是要保留上一次Y的最低位。如果Y的最低位Y0和最后移出的位为:10,则该1开始了一串1,执行减法;01,则该0结束了一串1,执行加法;11,则在一串1中,不做任何操作。00,则该算法既不需要加法又不需要减法。为了检查这两位,用一个1位寄存器Y-1来保存最后移出的位。它被初始化为0,以保证Y的第一串1能被检查到。如果乘数的最高位为1,则最后一个循环中不可能出现加法。,计算机组成与结构,湖南大学计算机与通信学院,8-22,该算法的RTL代码。信号START和一位寄存器FINIS
15、H用于初始化和终止算法。算法中U、V、X、Y为n位值,Y-1为一位值。循环计数器i为递减计数器,由n递减到0。1:U0,Y-1 0,in Y0Y-1 2:UU+X+1 Y0Y-1 2:UU+X 2:ii-1 3:ashr(UV),cir(Y),Y-1 Y0 Z3:GOTO 2 Z 3:FINISH1 注意,条件Y0Y-1对应于一串1的开始,执行减法;Y0Y-1对应于一串1的结尾,执行加法。加、减法语句可合并一起:(Y0Y-1)2:UU+(XY0)+Y0,计算机组成与结构,湖南大学计算机与通信学院,8-23,合并后的RTL代码的硬件实现如图所示。,图8.6 booths算法的硬件实现,计算机组成
16、与结构,湖南大学计算机与通信学院,8-24,8.1.3 除法,除法也可以看成减法的重复,z=xy可以这样实现:Z0;WHILE xy DO zz1;xxy 此算法效率低、执行时间随着z的最终值的不同而改变。,可采用移位相减算法减少执行时间,例:,096 71 6827 639 437 426 11,注意第一步操作是比较除数71和被除数的前两位68。由于71大于68,故该位商0。这在计算机的除法运算中是很重要的一步,它被用来检测商是否溢出。,8.1.3.1 非负数码除法,计算机组成与结构,湖南大学计算机与通信学院,8-25,将被除数左移,使得每次相减的结果总是送到同一位置上。,096 71 68
17、27 00 68 除以71 商0 682 取出下一位 682 左移一位 639 682 除以71 商9 0437 取出下一位 0437 左移一位 426 437 除以71 商6 11 余数,左移出的位不参加减法计算,第一步检查68是否大于等于71,这是一个溢出检测,计算机组成与结构,湖南大学计算机与通信学院,8-26,采用二进制更简单,商只可能为0或1。当被除数大于等于除数时,商1;否则商0。下面的算法实现了两个二进制值的移位相减除法。被除数在初始化时加载到UV,其中U保存高n位,V保存低n位。除数和商分别保存在n位值X和Y中。余数保存在U中。C为1位值,用来保存U的移出位。,U X THEN
18、 产生溢出并终止算法;Y=0;C=0;FOR i=1 TO n DO 线性左移 CUV;线性左移 Y;IF CU X THEN Y0=1,U=CU X,考虑第一步就终止的情况。如1127,若n=4,则UV=0111 0000,X=0111。由于UX,均为0111,将终止算法。如果继续执行,将产生商16(1 0000)和余数0。但值1 0000不能保存在4位的Y中,产生溢出。,计算机组成与结构,湖南大学计算机与通信学院,8-27,下表列出了该算法执行14713的步骤。初始化时,U=1001,V=0011,X=1101,n=4。,表8.7 移位相减算法的执行步骤,计算机组成与结构,湖南大学计算机与
19、通信学院,8-28,算法的RTL代码。其中X、U、V、Y为n位值,C和OVERFLOW为1位值。当i=0时,Z=1;当UX时,G=1。FINISHI置1则算法结束。1,2,3,4是连续的状态。,G 1:FINISH1,OVERFLOW1 2:Y0,C0,OVERFLOW0,in 3:shl(CUV),shl(Y),ii-1(C+G)4:Y0 1,UU+X+1 Z4:GOTO 3 Z 4:FINISH1,大部分的RTL语句由算法直接转换而成,注意条件 CUX等价于条件 UX(G)或(C=1),即(C+G);补码加法:U U+X+1实现算法中的U=CU X。,1.不恢复余数算法,计算机组成与结构,
20、湖南大学计算机与通信学院,8-29,图8.7 移位相减除法的硬件实现,计算机组成与结构,湖南大学计算机与通信学院,8-30,课堂练习:P270 习题13,改进的RTL代码:G 1:FINISH11:Y0,C0,in,OVERFLOWG2:shl(CUV),shl(Y),ii-1(C+G)3:Y01,UU+X+1Z3:goto 2Z 3:FINISH1,计算机组成与结构,湖南大学计算机与通信学院,8-31,图8.7 移位相减除法的改进硬件实现,计算机组成与结构,湖南大学计算机与通信学院,8-32,被除数初始化时保存在UV中,除数保存在X中,商保存在Y中,余数最后保存在U中。U、V、X、Y都是n位
21、值,C是1位值。,CU=U+X+1;U=U+X,IF C=1 THEN 产生溢出并终止算法;Y=0;FOR i=1 TO n DO 线性左移 CUV;线性左移 Y;IF C=1 THEN U=U+X+1 ELSE CU=U+X+1 IF C=1 THEN Y0=1 ELSE U=U+X,第一步为CU与X的比较,判溢出,做减法(CUX)以判断CUX?(若成立,C置1),决定商,若上商0恢复余数,2.恢复余数算法,计算机组成与结构,湖南大学计算机与通信学院,8-33,CU与X的比较。操作C U=U+X+1实际上实现了两个功能:显式的功能是减法U=U X,而隐含的功能是U和X的比较。如果U X,该操
22、作将C置1,否则将C置0。,在(a)和(b)中,C置1,表示U X;在(c)中,C置0,表示U X。,图8.8 在计算C U=U+X+1的同时比较了U和X:(a)正结果,(b)零结果,(c)负结果,计算机组成与结构,湖南大学计算机与通信学院,8-34,恢复余数除法的算法:它采用的值与不恢复余数算法中采用的值基本相同。,恢复余数法电路是6状态机。,11:CUU+X+1;12:UU+X C 12:FINISH1,OVERFLOW1 2:Y0,OVERFLOW0,in 3:shl(CUV),shl(Y),ii-1 C 41:UU+X+1 C41:CUU+X+1 C 42:Y0 1 C42:UU+X
23、Z 42:FINISH1 Z42:GOTO 3,计算机组成与结构,湖南大学计算机与通信学院,8-35,减少了产生G的比较器,但并行加法器的输入更加复杂。因为此时要求它进行两种操作U+X或U X。同时,由于有6个状态,状态计数器和译码器要稍微大一些。,图8.9 恢复余数除法的硬件实现,计算机组成与结构,湖南大学计算机与通信学院,8-36,8.1.3.2 补码相除 补码相除没有一种通用的算法。一般是通过对正负数值进行转换来实现补码相除。该算法如下所示。除法可以使用恢复余数的硬件实现或不恢复余数的硬件实现。,IF 被除数 0 THEN 被除数-被除数;IF 除数 0 THEN 除数-除数;使用恢复余
24、数或不恢复余数的硬件实现除法运算;IF 被除数和除数中有一个为负数 THEN 结果-结果,计算机组成与结构,湖南大学计算机与通信学院,8-37,8.2 带专门符号位表示法,无专门符号位表示法中的非负数码和补码是带专门符号位表示法中的符号幅值表示法(signed_magnitude notation)和符号补码表示法(signed_twos complement notation)的基础。稍做修改,无专门符号位表示法的运算算法也可以作为带专门符号位表示法的运算算法。,8.2.1 符号幅值表示法(signed_magnitude notation),包括两个部分:符号部分为1位,0表示正数(或0)
25、,1表示负数;幅值部分为n位,以非负数码的形式表示数的绝对值。,用XsX 表示符号幅值表示法,其中Xs为1位的符号值,X为n位幅值。,例如:+3和-3有相同的幅值3,仅仅符号不同。在二进制中,+3表示为0(符号)0011,而-3表示为1(符号)0011。,计算机组成与结构,湖南大学计算机与通信学院,8-38,8.2.1.1 加法和减法,比非负数码的要复杂。由于两个操作数均可能为正或为负,因此它们的符号和相对幅值决定了操作如何执行。,操作UsUXsXYsY,定义AS为形式上的计算操作符。AS=0表示加,=1表示减。还定义PM=XsASYs,为实际上的计算操作。Xs、AS和Ys共有8种可能的组合。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机系统 组成 结构 PPT
链接地址:https://www.31ppt.com/p-6606614.html