资源预览内容
第1页 / 共91页
第2页 / 共91页
第3页 / 共91页
第4页 / 共91页
第5页 / 共91页
第6页 / 共91页
第7页 / 共91页
第8页 / 共91页
第9页 / 共91页
第10页 / 共91页
亲,该文档总共91页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第三章第三章 运算方法与运算器运算方法与运算器本章主要内容:本章主要内容:运算方法运算方法: 定点和浮点数的四则运算方法和逻辑运算方法定点和浮点数的四则运算方法和逻辑运算方法运算器的基本原理与设计:运算器的基本原理与设计: 快速进位原理快速进位原理运算器的扩充运算器的扩充1、定点小数补码加法、定点小数补码加法 X补补+Y补补=X+Y补补 mod 2该公式隐含的条件是:该公式隐含的条件是: |X|1 |Y|1 |X+Y|0,Y0 则则X+Y0 ,由补码的定义有由补码的定义有: X补补=X Y补补=Y X+Y补补=X+Y 所以所以: X补补+Y补补=X+Y补补 mod 2一、定点数的加法、减法运算一、定点数的加法、减法运算 X补补=X Y补补=2+Y X补补+ Y补补=2+Y+X 若若X+Y0, 则则 2+X+Y2 所以所以: X补补+ Y补补=2+Y+X =X+Y = X+Y补补 mod 2若若X+Y0,Y0,Y0 证明方法同证明方法同(2) (4) X0,Y0 则则X+Y0,由补码的定义知由补码的定义知: X补补=2+X Y补补=2+Y X补补+ Y补补=2+2+Y+X 因为因为:X+Y0, 所以所以02+X+Y2 所以所以:2+ 2+X+Y=2+X+Y mod 2 = X+Y补补 mod 2 所以所以: X补补+ Y补补=2+Y+X = X+Y补补 综上所述综上所述: X补补+Y补补=X+Y补补 topolgy已知已知 X=+0.1011 Y=-0.0101 求求X+Y解解: X补补=0.1011 Y补补=1.1011 X+Y补补=X补补+Y补补=0.1011+1.1011 =0.0110 所以所以: X+Y=+0.01102、补码加法举例、补码加法举例 X-Y补补=X补补+ Y补补= X补补 Y补补 证明:证明:X-Y补补=X+(-Y)补补=X补补+-Y补补 -Y补补=X-Y补补- X补补 .(1) 又又 X+Y补补=X补补+Y补补 Y补补=X+Y补补-X补补 .(2) (1)+(2)得得 Y补补+-Y补补=X+Y补补+X-Y补补-X补补 -X补补 =X+Y+X-Y补补 - X补补 X补补 =X补补+ X补补- X补补 X补补 =0 -Y补补=-Y补补 原命题成立原命题成立 3、补码的减法、补码的减法例例1 已知已知 Y补补 =1.1011 求求 Y补补 解法解法1 : Y补补 =1.1011 Y= 0.0101 -Y=0.0101 -Y补补=0.0101补补=0.01014、补码减法举例、补码减法举例解法解法2: 由由 - Y补补 = - Y补补 (!) 求求 Y补补 可直接对可直接对Y补补 连同符号位在内连同符号位在内,求反然后求反然后在在 最低位加最低位加1实现实现 - Y补补 = 0.0101 -X补补= + 2 -n例例2 若若X补补 = X0.X1X2X3Xn , 则则-X补补 = ?例例3 已知已知X= + 0.1011 Y= + 0.0110 求求 X-Y 解解: X补补=0.1011 Y补补=0.0110 -Y补补=1.1010 X-Y补补=X补补 + -Y补补 = 0.1011 + 1.1010 = 0.0111 X-Y = 0.0111topolgy1)溢出的概念溢出的概念 运算的结果超出了某种数据表示的范围。运算的结果超出了某种数据表示的范围。2) 举例举例 例例1 已知已知X= + 0.1011 Y= + 0.1001 求求 X + Y 解解: X补补=0.1011 Y补补=0.1001 X + Y补补=X补补 + Y补补 = 0.1011 + 0.1001 = 1.0100 X-Y = -0.1100 两个正数之和为负数两个正数之和为负数5、溢出与溢出检测方法、溢出与溢出检测方法例例2 已知已知X= 0.1101 Y= 0.1011 求求 X + Y 解解: X补补=1.0011 Y补补=1.0101 X + Y补补=X补补 + Y补补 = 1.0011 + 1.0101 = 0.1000 X + Y = 0.1000 两个负数之和为正数两个负数之和为正数上面两个例子的异常都是由上面两个例子的异常都是由于发生了溢出的缘故,其中于发生了溢出的缘故,其中例例1是发生了是发生了上溢上溢、例例2是发是发生了生了下溢下溢。溢出溢出 ?运算的结果超出了某种数据运算的结果超出了某种数据类型能够表示的数据范围的类型能够表示的数据范围的现象。现象。3)溢出的检测与判断溢出的检测与判断(重要内容重要内容) 溢出只可能发生在同符号的数相加时溢出只可能发生在同符号的数相加时(1)方法方法1:对操作数和运算结果的符号位进行检测:对操作数和运算结果的符号位进行检测溢出发生的条件:溢出发生的条件: 结果的符号位与操作数的符号不相同结果的符号位与操作数的符号不相同溢出判断方法溢出判断方法 (设设X0 ,Y0 为为参加运算数的符号位,参加运算数的符号位, S0 为结果的符号位为结果的符号位) V = X0Y0S0 + X0Y0S0当当V=1时,表示运算结果溢出。时,表示运算结果溢出。根据上述表达式可以画出相应电路根据上述表达式可以画出相应电路该图为该图为具有加具有加/减法控制,能进行溢出检测的运算部件。减法控制,能进行溢出检测的运算部件。当当V取值为取值为1时,表示发生了溢出。时,表示发生了溢出。P:加:加/减操作控制减操作控制 P=0 加法运算加法运算11011 0000011011P=1 减法运算减法运算11011 1111100100(2)对最高有效进位和符号进位进行检测对最高有效进位和符号进位进行检测设运算时最高有效数据位产生的进位信号为设运算时最高有效数据位产生的进位信号为C1,符号位产生符号位产生的进位信号为的进位信号为C0,检测电路为:检测电路为: V= C0 C 1直观理解:直观理解: a)当参加运算的两个数均为正数,则当参加运算的两个数均为正数,则C0 =0(且符号位和为且符号位和为0) ,此时若此时若C1 =1, 则会改变结果的符号,发生了溢出。则会改变结果的符号,发生了溢出。 b)当参加运算的是两负数,则当参加运算的是两负数,则 C0=1(且符号位和为且符号位和为0), 此时此时若若C1 = 0,则会改变运算结果的符号,发生了溢出。则会改变运算结果的符号,发生了溢出。根据上述表达式可以设计溢出检测电路。根据上述表达式可以设计溢出检测电路。V= C0 C 1 a. 变形补码变形补码 X补补=X 2 X 0 4+X 0 X 2 mod 4此时此时 X补补=Xf1Xf2.X1X2X3Xnb. 溢出的检测溢出的检测上溢:双符号位为上溢:双符号位为 01下溢:下溢: 双符号位为双符号位为10 溢出的判断溢出的判断: V= Xf1 Xf2最高符号位为结果的真实符号最高符号位为结果的真实符号(3)方法方法3 :采用变形补码的双符号:采用变形补码的双符号位位topolgy例例3 已知已知X= + 0.1011 Y= + 0.1001 用变形补码求用变形补码求 X + Y 解解: X补补=00.1011 Y补补=00.1001 X + Y补补=X补补 + Y补补 = 00.1011 + 00.1001 = 01.0100 发生了上溢发生了上溢例例4 已知已知X= 0.1101 Y= 0.1011 求求 X + Y 解解: X补补=11.0011 Y补补=11.0101 X + Y补补=X补补 + Y补补 = 11.0011 + 11.0101 = 10.1000 发生了下溢发生了下溢(4)溢出检测的实现溢出检测的实现 方式方式 CPU设计者必须决定如何处理算数运算时发生的溢出:设计者必须决定如何处理算数运算时发生的溢出: 部分程序设计语言部分程序设计语言(C)将此类异常交给硬件设计者完成将此类异常交给硬件设计者完成; 另外一些程序设计语言另外一些程序设计语言(Ada Fortran等等)要求发生此类异常要求发生此类异常时通知相应程序,并由程序员或编译系统确定如何处理。时通知相应程序,并由程序员或编译系统确定如何处理。 1、构成运算器的基本算术、构成运算器的基本算术/逻辑运算单元逻辑运算单元二、运算器及其数据通路设计二、运算器及其数据通路设计sabc与与或或非非多多路路选选择择器器if (s= = 0,c = a ; else c=b )0101abcsFA本位和及进位表示式:本位和及进位表示式:Si = A i B i C i-1 Ci+1=A iB i+ ( B i+A i ) Ci-1topolgy2、具有简单算术、具有简单算术/逻辑运算功能的逻辑运算功能的ALU设计设计S1S0= 00且且 S3S2= 0时时 ,F=ab ;S1S0= 01且且 S3S2= 0时时 F=a+b ;S1S0= 10且且 S3S2= 0时时, 执行全加器功能执行全加器功能,输出为从输出为从F和和Cout;S1S0= 10且且 S3S2= 0 ,Cin=1时,执行时,执行a减减b的功能;的功能;S1S0= 00且且 S3S2= 1时时 , F=a+bS1S0= 01且且 S3S2= 1时时 ,F=ab逻辑符号逻辑符号3、串行运算器、串行运算器FAB2A2F2FAB3A3F3 FAB1A1F1FAB0A0F0C0C1 C2 C3 C3 C1= A 0B 0+ ( B0+A0 ) C0Ci+1= A iB i+ ( B i+A i ) Ci-1C2= A 1B 1+ ( B1+A1 ) C1C 3= A 2B 2+ ( B2+A2 ) C2C 4= A 3B 3+ ( B3+A3 ) C3串串行行进进位位、并行运算器、并行运算器C1= A 0B 0+ ( B0+A0 ) C0C2= A 1B 1+ ( B1+A1 ) C1C3= A 2B 2+ ( B2+A2 ) C2C4= A 3B 3+ ( B3+A3 ) C3= A 1B 1+ (A1+ B1 )A 0B 0 + ( A1+B1 ) ( A0+B0 ) C0= A2B2+(B2+A2)(A 1B 1+ ( B1+A1 ) A 0B 0 + ( A1+B1 ) ( A0+B0 ) C0 )= A2B2+(A2+B2)(A1B1+ (A1+B1) A0B0) + (A2+B2)( A1+B1 ) (A0+B0 ) C0 = A3B3+(A3+B3)(A2B2+(A2+B2)(A 1B 1+ (A1+B1 ) A 0B 0 ) + (B3+A3) (B2+A2)( A1+B1 ) ( A0+B0 ) C0 先行进位或并行进位先行进位或并行进位FAB2A2F2FAB3A3F3 FAB1A1F1FAB0A0F0C0C1 C2 C3 C A 1B 1+ (A1+ B1 )A 0B 0 + ( A1+B1 ) ( A0+B0 ) C0 A2B2+(A2+B2)(A1B1+ (A1+B1) A0B0) + (A2+B2)( A1+B1 ) (A0+B0 ) C0 A 0B 0+ (A0+B0 )C0 A3B3+(A3+B3)(A2B2+(A2+B2)(A 1B 1+ (A1+B1 ) A 0B 0 ) + (B3+A3) (B2+A2)( A1+B1 ) ( A0+B0 ) C0 令令G = A3B3+(A3+B3)(A2B2+(A2+B2)(A 1B 1+ (A1+B1 ) A 0B 0 ) 为进位产生函数为进位产生函数令令P = (B3+A3) (B2+A2)( A1+B1 ) ( A0+B0 ) C0 为进位传递函数为进位传递函数5. 多功能算术逻辑运算单元多功能算术逻辑运算单元74181的设计的设计FAYiCn+iCn+i+1XiFiS0S1S2S3函数发生器函数发生器AiBiFA的逻辑表达式:的逻辑表达式: Fi = Xi Yi C n + iC n+ i+1=XiYi+ YiC n+i+XiC n + I . (1)修改后的修改后的FA的逻辑表达式:的逻辑表达式:Fi = Ai Bi Cn+i C n+i+1=AiBi+ BiCn+i+Cn+iAitopolgy(1) 逻辑表达式逻辑表达式S0 S1 YiS2 S3 Xi0 0 Ai0 010 1AiBi0 1Ai+Bi1 0Ai Bi1 0Ai+Bi1 101 1AiXi=S2S3+S2S3(Ai+Bi)+S2S3(Ai+Bi)+S2S3Ai Yi=S0S1A i+S0S1AiBi+S0S1AiBi 进一步化简:进一步化简:Xi=S3AiBi+S2AiBi Yi=A i+S0Bi+S1Bi将将Xi 、Yi 代入公式代入公式(1)的进位位,并化简得:的进位位,并化简得:C n+i+1=Yi+ Cn+iXi由经过修改后的由经过修改后的FA构成的某一位逻辑表达式为:构成的某一位逻辑表达式为:Yi=A i+S0Bi+S1BiXi=S3AiBi+S2AiBi Fi = Xi Yi Cn+i C n+i+1=Yi+ Cn+iXi(2)FAY3C4X3F3C3 FAY1X1F1FAY0X0F0C0C1FAX2Y2C2F2C n+1 = Y0+ X0C0C n+2 = Y1+ Y0 X1 + X0X1C0C n+3 = Y2+ Y1 X2 + Y0 X1 X2 + X0X1X2C0C n+4 = Y3+ Y2 X3 + Y1 X2 X3+ Y0 X1 X2 X3+ X0X1X2 X3 C0C n+1C n+2C n+3C n+4(2)74181是一个是一个4位算术逻辑运算单元位算术逻辑运算单元,四位之间采用先行进四位之间采用先行进位位GP与与C n+1有关有关与与C n+2有关有关与与C n+3有关有关与与C n+4有关有关(3)74181的内部电路的内部电路(4)功功能能表表topolgy 输输 入入 输出输出 F3F2F1F0S3S2S1S0A4A3A2A1B4B3B2B1当当M=1时时当当M=0、 CN=0时时当当M=0、 CN=1时时000010100101111110111010000110100101000000001111001010100101010110111010001110100101000000001111010011110001111011101101010111110001111011101101011011110001111011101101011111110001111011101101100011111111111111111110100111111111111111111110101011111111111111111110101111111111111111111110110001011111111110111010110101011111010101010100111001011111111110111010111101011111010101010100(5)对对74181的几点说明的几点说明有正逻辑和负逻辑两种工作方有正逻辑和负逻辑两种工作方式,它们的逻辑功能等效式,它们的逻辑功能等效有有16 种算术运算和逻辑运算种算术运算和逻辑运算选择功能,受选择功能,受S0S3 的控制的控制 M是运算选择符,是运算选择符,M=H时逻辑运算,时逻辑运算, M=L 时算术运算时算术运算(并非全部并非全部)加、减表示算术运算,加、减表示算术运算,+ 表示逻辑运算表示逻辑运算算术运算结果和过程均用补码表示算术运算结果和过程均用补码表示减法时减数的反码由电路内部产生,故得到的结果为减法时减数的反码由电路内部产生,故得到的结果为A减减B 减减1,要得到要得到A减减B 的结果,则应该在最低位加的结果,则应该在最低位加1;此时,对于负逻辑;此时,对于负逻辑而言而言 Cn=H,对于正逻辑而言对于正逻辑而言 Cn=L (因为进位输入是求反输入因为进位输入是求反输入)(6)两级先行进位的两级先行进位的ALUa. 问题的提出问题的提出 大于大于4位的两个数运算,如何实现并行进位?位的两个数运算,如何实现并行进位?b.解决问题的可能方法解决问题的可能方法 改变原来改变原来ALU的结构的结构,实现多位间的并行进位实现多位间的并行进位 设计设计ALU外部的并行进位部件外部的并行进位部件, 不改变原不改变原ALU内部结构内部结构c. 设计思想设计思想 利用原来利用原来74181提供的进位传输输出提供的进位传输输出P 和和 进位发生输出进位发生输出G(7)两级先行进位电路的两级先行进位电路的设计设计设设4片片74181的先行进位输出分别为的先行进位输出分别为 P0 、G0、 P1、 G1、 P2、 G2、 P3、 G3。则四片间的串行进位关系为则四片间的串行进位关系为C n+x=G0+ CnP0C n+y=G1+ Cn+xP1C n+z=G2+ Cn+yP2C n+4=G3+ Cn+zP3= G1+ (G0+ CnP0)P1 = G1+ G0 P1 + P0P1Cn = G2+ G1 P1 + G0 P1 P2 + P0P1P2Cn = G3+ G2 P3 + G1 P2 P3+ G0 P1 P2 P3+ P0P1P2 P3 Cn此即为此即为74182内部电路所采用的逻辑表达式内部电路所采用的逻辑表达式若若令:令:G* = G3+ G2 P3 + G1 P2 P3+ G0 P1 P2 P3 P *= P0P1P2 P3则:则:C n+4=G*+ CnP*其中其中 P*称为称为成组成组进位传输输出、进位传输输出、G *称为称为成组成组进位发生输出。进位发生输出。增加这两个输出的目的是为了实现更多位之间的先行进位。增加这两个输出的目的是为了实现更多位之间的先行进位。74182的内部结构如下图所示的内部结构如下图所示:C n+4= G3+ G2 P3 + G1 P2 P3+ G0 P1 P2 P3+ P0P1P2 P3 CnCn+y =G1+ G0 P1 + P0P1CnCn+z = G2+ G1 P1 + G0 P1 P2 + P0P1P2Cn(8) 74181和和74182的应用的应用例例1: 用用74181构成构成16位行波进位的位行波进位的ALUA3A0B3B0C074181F3F0741817418174181A7A4B11B8A15A12B7B4A11A8B15B12C15F7F4F11F8F15F12例例2、利用、利用74181和和74182设计设计16位并行进位的位并行进位的ALU7418274181741817418174181GGGGPPPPP0P2P3P1G0G1G3G2Cn+zCn+yCn+xCnC n+x=G0+ CnP0Cn+y =G1+ G0 P1 + P0P1CnCn+z = G2+ G1 P1 + G0 P1 P2 + P0P1P2Cn例例3、用、用74181和和74182构造两级行波进位的构造两级行波进位的32位位ALU ,要求低要求低16位和高位和高16位之间是行波进位,而位之间是行波进位,而16内部是并行进位。内部是并行进位。P0G0G1G3G274182GPP2P3P1Cn+zCn+yCn+x74181741817418174181CnP0G0G1G3G274182GPP2P3P1Cn+zCn+yCn+x74181741817418174181例例4、用用74181和和74182构造构造32位并行进位的位并行进位的ALU。P0G0G1G3G274182GPP2P3P1Cn+zCn+yCn+x74181741817418174181CnP0G0G1G3G274182GPP2P3P1Cn+zCn+yCn+x74181741817418174181G374182P0P2P3P1G0G1G2Cn+zCn+yCn+x本题为三级先行进位,且最大可实现本题为三级先行进位,且最大可实现64位间并行进位的位间并行进位的ALU(9) 具有不同字长和结构的具有不同字长和结构的ALU的加法时间和电路片数的加法时间和电路片数 字长字长(位数位数)ALU的结构的结构总总加法时间加法时间 (ns)集成电路片数集成电路片数74181741824单片单片ALU21108行波行波CLA362016行波行波CLA604016两级两级CLA364132行波行波CLA1108032两级行波两级行波CLA6282命题:命题:“不用不用74182能构成能构成32位的位的ALU” 成立吗?成立吗? 命题:命题:“不用不用74182能构成能构成32两级行波位的两级行波位的ALU” 成立吗成立吗? (10) ALU的进位采用分级机制的优点的进位采用分级机制的优点 便于组合成位数可变的便于组合成位数可变的,并行进位的并行进位的ALU 突破集成电路扇入和扇出系数的限制突破集成电路扇入和扇出系数的限制 以以C15的计算为例说明的计算为例说明 采用三级先行进位时:采用三级先行进位时: C15 = Cn+x = G*+ CnP*,需要需要一个与门,一个或门且与门、一个与门,一个或门且与门、或门均只需要或门均只需要2个输入端。个输入端。 当不分级直接实现先行进位时:当不分级直接实现先行进位时: C15 = G*+ CnP* = G3+ G2 P3 + G1 P2 P3+ G0 P1 P2 P3 + P0P1P2 P3Cn 再依次将再依次将P0、P1、P2 、P3、 G0、 G1、 G2、 G3等代入上等代入上式,式, 最后,最多的一个最后,最多的一个“与与”门电路需要门电路需要17个输入端,显然超过了善入系个输入端,显然超过了善入系数数6.定点运算器的结构定点运算器的结构1)单总线结构运算器6.定点运算器的结构定点运算器的结构2) 双总线运算器的结构形式6.定点运算器的结构定点运算器的结构3) 三总线运算器的结构形式运算控制信号运算控制信号C_OPIB 3ALUIB2IB1总线旁总线旁路器路器IB2 IB3GRIB3RiRiIB1RiIB2三、定点数的乘法运算三、定点数的乘法运算1、二进制乘法的手工过程:、二进制乘法的手工过程:0. 0 1 0 0 .0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 + 0 0 0 0 0 .0 0 0 1 1 0a. 说明乘法可由循环加法实现说明乘法可由循环加法实现b. 存在的问题:存在的问题:需要长度为需要长度为2n的积寄存器的积寄存器每步每步左移次数不同,不便于控制左移次数不同,不便于控制前面的内容说明,加前面的内容说明,加/减运算可以利用减运算可以利用ALU实现,下面将研实现,下面将研究究ALU能否实现乘法能否实现乘法/除法运算。除法运算。topolgy2.原码一位乘法原码一位乘法1)移位操作移位操作C0算术左移算术左移算术右移算术右移111011101101110011111011111101110C0逻辑左移逻辑左移逻辑右移逻辑右移01110111111011101110111011011100相当于乘相当于乘2相当于除相当于除2CC0无大小无大小之分之分小循环小循环CCCC大循环大循环符号位单独参加运算,数据位取绝对值参加运算。符号位单独参加运算,数据位取绝对值参加运算。运算法则:运算法则: 设:设: X原原=X0.X1X2Xn Y原原=Y0. Y1Y2Yn 则:则:P0 = X0 Y0 |P| = |X| |Y|参照手工运算的基本方法,每次循环累加的是参照手工运算的基本方法,每次循环累加的是|X|或或0。不同于手工方法的是,计算机中每次将部分积右移一位不同于手工方法的是,计算机中每次将部分积右移一位2)原码乘法的思想原码乘法的思想例例5 已知已知 X = 0.110 Y= - 0.101 计算计算X原原 Y原原解;解;X原原 = 0.110 Y原原 = 1.101 部分积部分积 乘数乘数 / 判断位判断位 说明说明00.000 Y0.101 Y3 =1 部分积部分积 + |X| + 00.110 00.110 每次运算结果右移每次运算结果右移1位位 00.011 0 Y0.10 Y3 =0 部分积部分积 + 0+ 00.000 00.011 00.001 10 Y0.1 Y3 =1 部分积部分积 + |X|+ 00.110 00.11100.011 110 Y0 X原原 Y原原 = X0 Y0.011110 =1.0111103)原码一位乘法逻辑结构原码一位乘法逻辑结构ALU计数器计数器ALUAAY移位控制移位控制X0AALUYnYn算术右移控制算术右移控制3. 补码一位乘法运算方法补码一位乘法运算方法设设X补补 = X0.X1X2X3Xn Y补补 = Y0.Y1Y2Y3Yn 1)当当 X为任意数,为任意数,Y为正数时:为正数时: X补补 = 2 + X = 2 n+1 +X Y补补 = YX补补Y补补= ( 2 n+1 +X ) Y = 2 n+1 Y + X Y = 2 (Y0Y1Y2Y3Yn ) + X Y = 2 + XY = XY补补即:即: XY补补 = X补补Y = X补补 (0.Y1Y2Y3Yn ) .(1) X补补 = X0.X1X2X3Xn Y补补 = 2 + Y = 1.Y1Y2Y3Yn (为(为负数负数Y的补码形式)的补码形式) Y = 1.Y1Y2Y3Yn - 2 = 1 + 0 .Y1Y2Y3Yn - 1 1 = 0 .Y1Y2Y3Yn - 1 XY = ( 0 .Y1Y2Y3Yn - 1 ) X XY补补= X( 0.Y1Y2Y3Yn )补补 - X补补 = X 补补( 0.Y1Y2Y3Yn ) - X补补 (第第1种情况的结论可得种情况的结论可得) =X补补( 0.Y1Y2Y3Yn ) Y0 X补补 .(2)2)当当 X为任意数,为任意数,Y为负数时:为负数时:3)补码乘法一般公式的推导补码乘法一般公式的推导XY补补 = X补补( 0.Y1Y2Y3Yn ) Y0 X补补 .(2)式中当式中当Y0=0时即为公式时即为公式(1),这就是乘法的一般公式。,这就是乘法的一般公式。下面将推导更一般的规律:下面将推导更一般的规律:由公式由公式(2)可知:可知: XY补补 = X补补 0.Y1Y2Y3Yn Y0 = X补补Y0 +2-1 Y1 + 2-2 Y2+ 2-3 Y3+ 2-n Yn = X补补Y0 +(Y1 - 2-1 Y1) + (2-1 Y2 - 2-2 Y2)+ (2-2 Y3 - 2-3 Y3)+ (2-(n-1) Yn - 2-n Yn= X补补(Y1Y0 )+ 2-1 (Y2 -Y1) + 2-2 (Y3 -Y2)+ + 2-(n-1) (Yn Yn-1 - 2-n Yn X Y补补= (Y i+1 Yi ) X补补 2-i (累加移位累加移位求和)求和)i=ni=0算法描述:算法描述:在在Y补补 后添加一个后添加一个0作为作为Y n+1,令部分积为令部分积为0 如果如果 Yn+1 = Yn 部分积部分积 + 0 , 并将结果右移并将结果右移一位一位如果如果 Yn+1 Yn 部分积部分积 +X补补 , 并将结果右移并将结果右移一位一位= X补补(Y1Y0 )+ 2-1 (Y2 -Y1) + 2-2 (Y3 -Y2)+ + 2-(n-1) (Yn Yn-1 )+ 2-n ( 0- Yn ) 例例6 已知已知X= +0.1101 Y=+0.1011 用补码一位乘法求用补码一位乘法求 X Y解:解: X补补=0.1101 Y补补=0.1011 X补补=1.0011 部分积部分积 乘数乘数 说明说明 00.0000 0.10110 Yn+1 Yn 部分积部分积 +X补补+ 00.1101 00.10014)应用举例应用举例 部分积部分积 乘数乘数 说明说明 00.0100 111.010 将结果右移将结果右移一位一位, Yn+1 Yn 部分积部分积 +X补补+ 00.1101 00.1000XY补补=0.10001111XY=0.100011115)补码一位乘法的逻辑原理图补码一位乘法的逻辑原理图1)原码一位除法原码一位除法法则:设法则:设X原原=Xf.X1X2X3Xn , Y原原=Yf.Y1Y2Y3Yn , 用用原原码一位除法求码一位除法求Q=Q0.Q1Q2Q3Qn = X/Y 则:则: Qf =Xf Yf Q原原=(Xf Yf)+(0.X1X2X3Xn/0.Y1Y2Y3Yn) 该法则隐含有下列条件:该法则隐含有下列条件: |X|1 |Y|11、定点数的除法运算规则、定点数的除法运算规则|X|0 ,则够除则够除;反之不够反之不够除除(2)将手工每次右移除数将手工每次右移除数,改为左移被除数改为左移被除数. 重复重复(1)和和 (2)(3)最后的余数需要右移最后的余数需要右移(2)中左移的次数中左移的次数.4)对手工算法的改进对手工算法的改进- 计算机中采取的方法计算机中采取的方法topolgy 试商通过试商通过X Y实现,当试商结果实现,当试商结果 0时时, 试商操作试商操作 可以作可以作为除法的一步有效操作为除法的一步有效操作(除法通过减法实现除法通过减法实现),商上商上“1” 当试商的结果当试商的结果 0则则 将进行下列操作:将进行下列操作: 2ri y若此时若此时 2 ri y 0 (即新余数小于即新余数小于0),则恢复余数:,则恢复余数: ( 2ri y )+ y =2 ri恢复余数后,左移恢复余数后,左移 并并 y 得到下次的余数得到下次的余数 2( 2ri) y = 4ri y (1)2( 2 ri - y) + y = 4ri y (2) 比较比较(1) (2) , 发现它们相同,这就是加减交替法发现它们相同,这就是加减交替法 若当发现若当发现 2ri y 0 , 商上商上1,左移,左移 下次减除数下次减除数 (同恢复余数法同恢复余数法) (2) 余数余数 0 , 商上商上0 ,左移,左移 下次加除数下次加除数 ( 新的方法新的方法 )举例:举例:已知已知 X=0.1001 Y= - 0.1011 用原码恢复余数法求用原码恢复余数法求X/Y解:解:X原原= 0 .1001 |X|补补=0.1001 Y原原= 1.1011 |Y| 补补=0.1011 -|Y|补补 =1.010100.1001+ -|Y|补补 11.0101 被除数被除数 / 余数余数 商商 说明说明11.1110 r 0 商上商上1 00.1110 01 左移左移 减除数减除数+ -|Y|补补 11.0101 -y 00.0011 r 0 商上商上1 00.0110 011 左移左移 减除数减除数+ -|Y|补补 11.0101 - y11.1011topolgy 被除数被除数 / 余数余数 商商 说明说明11.1011 r 0 商上商上1 0.1101 移商移商 Q原原=1.1101r原原=0.0001 2 4该方法的改进之处:该方法的改进之处: 运算步数固定,仅与字长有关!运算步数固定,仅与字长有关!topolgy2、补码一位除法、补码一位除法 - 加减交替法加减交替法(1) 符号位参加运算符号位参加运算(2)试商方法不同于原码一位除法试商方法不同于原码一位除法 回顾原码一位除法的试商回顾原码一位除法的试商-减法实现减法实现 若采用原码试商方法存在的问题若采用原码试商方法存在的问题(为什么不能直接减来试商为什么不能直接减来试商)(3)补码一位除法的试商方法补码一位除法的试商方法j被除数与除数被除数与除数同号同号,被除数,被除数减减除数;反之加除数除数;反之加除数,该步不上商该步不上商。k余数与除数余数与除数同号同号,商上,商上1,余数左移一位,下次,余数左移一位,下次减减除数;除数;反之反之 商上商上0,余数左移一位,下次,余数左移一位,下次加加除数除数重复重复,包括符号位在内共做,包括符号位在内共做n + 1次,且最后只移商次,且最后只移商(4)补码一位除法举例补码一位除法举例例例: 已知已知 x = - 0.1001 y = + 0.1101 用补码一位除法求用补码一位除法求 x / y解:解:x补补= 1.0111 y补补=0.1101 -y补补=1.0011 被除数被除数/余数余数 商商 说明说明11.0111 被除数与除数异号被除数与除数异号 被除数加除数被除数加除数+ y补补 00.110100.0100 余数与除数同号余数与除数同号,商上商上1 ,左移左移 余数余数减减除数除数 00.1000 1 + -y补补 11.001111.1011 余数与除数异号余数与除数异号, 商上商上0, 左移左移, 余数余数加加除数除数 11.0110 1.0+ y补补 00.1101 00.0011 余数与除数同号余数与除数同号,商上商上1 ,左移左移 余数余数减减除数除数 00.0110 1.01 + -y补补 11.001111.100111. 1001 余数与除数异号余数与除数异号, 商上商上0 , 左移左移,加加除数除数余数余数/被除数被除数 商商 说明说明 11. 0010 1.010+ y补补 00. 110111. 1111 余数与除数异号余数与除数异号, 商上商上0, 移商移商 1.0100x /y补补 = 1.0100x /y = - 0.1100余数余数= - 0.00000001topolgy3、商的校正、商的校正(1)商需要校正的原因商需要校正的原因 补码一位除法公式是在商的末位恒置补码一位除法公式是在商的末位恒置“1”的条件的条件 下推导的下推导的,商商为为负负数时得到的是反码数时得到的是反码, 和补码之间在最低位相差和补码之间在最低位相差“1”(2) 商的校正法则商的校正法则 能除尽时能除尽时,若若除数除数 0,不校正不校正; 除数除数 0 ,不校正不校正 ;商商 0 , 加加2 n 校正校正 (3) 校正举例校正举例 上例中上例中,不能除尽不能除尽,且且 商商 1(定点运算中称发生了溢出定点运算中称发生了溢出),此时此时, 需要右移规格化需要右移规格化: 即将尾数向右即将尾数向右移动移动 一位一位, 阶码加阶码加 1 ,尾数形式即为尾数形式即为00.1 或或 11.0 topolgy (5) 舍入舍入由于在右移规格化时由于在右移规格化时,可能会丢失一些低位的数值位可能会丢失一些低位的数值位, 为了为了提高精确度提高精确度, 可采取舍入的方法可采取舍入的方法.舍入的方法很多舍入的方法很多, 下面介绍一种简单的操作方法下面介绍一种简单的操作方法:0 舍舍 1 入入 : 如果向右移出的是如果向右移出的是1则在最低位加则在最低位加1, 否则否则,不处理不处理;恒置恒置 1 : 只要数字位只要数字位1被移掉被移掉,就将最后一位恒置成就将最后一位恒置成1 (6) 溢出处理溢出处理 浮点数的溢出标志:浮点数的溢出标志:阶码阶码溢出溢出 阶码上阶码上溢溢 : 阶码的符号位为阶码的符号位为 01 阶码下阶码下溢溢 : 阶码的符号位为阶码的符号位为 10topolgy当运算的结果超出了浮点数能表示的范围时,就发生了溢当运算的结果超出了浮点数能表示的范围时,就发生了溢出。如下图所示:出。如下图所示:(7)浮点数的溢出处理浮点数的溢出处理负上负上溢溢正上正上溢溢下下溢溢区区0-(2-2-23) 2128-2-1272-127(2-2-23) 2128浮点浮点表示的零是一个区间表示的零是一个区间,称为机器零称为机器零(阶码和尾数为全阶码和尾数为全0时代时代表的表的0值值 )浮点数的溢出以浮点数的溢出以阶码阶码的溢出作为判断标志的溢出作为判断标志.当采用当采用754标准表示时,考察标准表示时,考察0对应的阶码和尾数的值对应的阶码和尾数的值(绝对值绝对值) 0(1) 00000000 00000000000000000000000(754标准)标准)3) 浮点数加浮点数加/减运算应用举例减运算应用举例例例 设设 x = 2 010 0.11011011 y = 2 100 (- 0.10101100) 求求 x+y 解:先用补码的形式表示解:先用补码的形式表示x 和和 y X补补 = 00 010 , 00.11011011 Y补补 = 00 100 ,11.01010100 (1) 对阶对阶 E补补 =Ex补补 + - Ey补补 = 00010 + 11100 = 11 110 E = 2 x 的阶码的阶码 小于小于 y 的阶码的阶码 将将x 的尾数向右移动的尾数向右移动2位,同时阶码加位,同时阶码加 2 ,对阶后的,对阶后的 x 为:为: X补补 = 00 100 , 00.001101101100.00110110 112)尾数的运算:尾数的运算:+ 11.01010100 11.10001010113) 尾数规格化处理尾数规格化处理 尾数的形式为尾数的形式为 11.1,故要向左规格化,故要向左规格化 , 即将结果的尾即将结果的尾数数向左移动一位,同时,将结果的阶码减向左移动一位,同时,将结果的阶码减 1。规格化后的结果为:。规格化后的结果为:X+ Y补补= 00 011 ,11 . 0001010114) 舍入舍入采用采用 0 舍舍 1入的方法入的方法,故在结果尾数的最低位加故在结果尾数的最低位加1。最后的结果为最后的结果为 X+ Y补补= 00 011 ,11 . 00010110 X+Y = 0.11101010 2 011 例例2 设设 x = 2 010 0.11011011 y = 2 100 (- 0.10101100) 求求 x+y 解:先用补码的形式表示解:先用补码的形式表示x 和和 y X补补 = 11 110 , 00.11011011 Y补补 = 11 100 ,11.01010100 (1) 对阶对阶 E补补 =Ex补补 + - Ey补补 = 11110 + 00100 = 00 010 E 补补 = 2 x 的阶码的阶码 大于大于 y 的阶码的阶码 将将y 的尾数向右移动的尾数向右移动2位,同时阶码加位,同时阶码加 2 ,对阶后的,对阶后的 y 为:为: y补补 = 11 110 , 11.11010101002)尾数的运算尾数的运算00.11011011+ 11.11010101 00.10110000 3) 尾数规格化处理尾数规格化处理 尾数的形式为尾数的形式为 00.1,已是规格化数,已是规格化数.4) 舍入舍入最后丢掉了最后丢掉了0 , 不需要进行不需要进行 舍入处理。舍入处理。最后的结果为:最后的结果为: X+ Y补补= 11 110 ,00 . 10110000 X+Y = 0.10110000 2 010 (5) 溢出判断溢出判断 阶码的符号位为阶码的符号位为11,没有发生溢出,没有发生溢出 2、浮点数的乘、浮点数的乘 / 除运算除运算1) 乘法法则乘法法则 设设 x = 2 Ex Mx y = 2 Ey My 则:则: x y = 2 Ex + Ey (Mx My ) 其中:其中: 阶码的运算采用阶码的运算采用补码的加法补码的加法法则;法则; 尾数的运算采用尾数的运算采用补码的乘法补码的乘法法则。法则。2) 除法法则除法法则 设设 x = 2 Ex Mx y = 2 Ey My 则:则: x / y = 2 Ex Ey (Mx / My ) 其中:其中: 阶码的运算采用阶码的运算采用补码的减法补码的减法法则;法则; 尾数的运算采用尾数的运算采用补码的除法补码的除法法则。法则。topolgy 2、浮点数的乘、浮点数的乘 / 除运算除运算1) 乘法法则乘法法则 设设 x = 2 Ex Mx y = 2 Ey My 则:则: x y = 2 Ex + Ey (Mx My ) 其中:其中: 阶码的运算采用阶码的运算采用补码的加法补码的加法法则;法则; 尾数的运算采用尾数的运算采用补码的乘法补码的乘法法则。法则。2) 除法法则除法法则 设设 x = 2 Ex Mx y = 2 Ey My 则:则: x / y = 2 Ex Ey (Mx / My ) 其中:其中: 阶码的运算采用阶码的运算采用补码的减法补码的减法法则;法则; 尾数的运算采用尾数的运算采用补码的除法补码的除法法则。法则。topolgy六、运算方法总结六、运算方法总结定点数加法可以直接由多位定点数加法可以直接由多位FA构成的加法器实现构成的加法器实现定点数的减法可以直接由多位定点数的减法可以直接由多位FA构成的加法器实现,但需构成的加法器实现,但需要在要在FA的加的加(减减)数输入端增加电路,对负数求补数输入端增加电路,对负数求补定点数的乘法可以通过循环累加实现,因此,也可以由多定点数的乘法可以通过循环累加实现,因此,也可以由多位位FA构成的加法器实现构成的加法器实现定点数的除法,可以通过循环累加实现定点数的除法,可以通过循环累加实现 浮点数的加浮点数的加(减减)可通过对阶码的加可通过对阶码的加(减减),尾数的加,尾数的加(减减)实实现现浮点数的乘浮点数的乘(除除)可分别对阶码的加可分别对阶码的加(减减),尾数的乘,尾数的乘(除除)实实现,而尾数的乘现,而尾数的乘(除除)最终也可以通过加实现最终也可以通过加实现结论:结论: 由由FA构成的多位加法电路可以实现加、减、乘、除构成的多位加法电路可以实现加、减、乘、除七、七、 阵列乘法器阵列乘法器1、使用阵列乘法器的原因、使用阵列乘法器的原因 乘法运算大约占全部算术运算的乘法运算大约占全部算术运算的1/3 采用循环加法实现乘法,运算速度慢采用循环加法实现乘法,运算速度慢 大量应用场合需要高速运算大量应用场合需要高速运算 符合符合Amdahl定理的应用条件定理的应用条件 (系统结构中的概念系统结构中的概念)2、原码阵列乘法器、原码阵列乘法器 1)不带符号的原码阵列乘法器不带符号的原码阵列乘法器设有两个不带符号的二进制整数:设有两个不带符号的二进制整数:Aam1a1a0Bbn1b1b0手工实现乘法手工实现乘法的过程为:的过程为:如果其中的每步都采用硬件直接实现,即不采用循环累加如果其中的每步都采用硬件直接实现,即不采用循环累加,则可大则可大大提高运算速度大提高运算速度其中:其中:可以实现可以实现与项与项( aibj)的硬件是:的硬件是:与门与门可以实现加法的硬件是可以实现加法的硬件是 :FA由由大量与大量与门和门和FA构成的并行阵列乘法器构成的并行阵列乘法器2)带)带求补求补电路的原码带符号阵列乘法器电路电路的原码带符号阵列乘法器电路虽然能处理带符号数,但核虽然能处理带符号数,但核心部件仍然采用原码不带符号心部件仍然采用原码不带符号乘法器乘法器两个算前求补两个算前求补电路的作用是电路的作用是将采用补码表示的乘数和被将采用补码表示的乘数和被乘数变成无符号数,以便利乘数变成无符号数,以便利用原码阵列乘法核心部件用原码阵列乘法核心部件算后求补算后求补电路的作用是当电路的作用是当两数异号时,将核心部件两数异号时,将核心部件输出的结果变成有符号数,输出的结果变成有符号数,并以补码的方式输出并以补码的方式输出应用举例应用举例X=+15 y= -13X补补=0 1111 Y补补=1 0011X = 1111 Y= 1101xy补补=1 00111101八、阵列除法器八、阵列除法器- 不恢复余数法阵列除法器不恢复余数法阵列除法器可控可控加法加法/减法减法(CAS)单元单元逻辑功能为:逻辑功能为:P=0时实现加法功能时实现加法功能P=1时实现减法功能时实现减法功能(全减全减)44不恢复余数阵列乘法器逻辑结构不恢复余数阵列乘法器逻辑结构注意连接关系和输入输出关系注意连接关系和输入输出关系使用使用原码原码不恢复余数法。不恢复余数法。第一步一定是减法,故第一步一定是减法,故P=1,以后各步做加还是减以后各步做加还是减取决于前取决于前一步的商一步的商?最左边最左边CAS的进位输出是商,的进位输出是商,且本位商决定下一步是执行加且本位商决定下一步是执行加操作还是减操作操作还是减操作(根据除法规则根据除法规则) 每执行完一步除法,就将除数每执行完一步除法,就将除数右移右移一位一位(同手工除法同手工除法)1说明为什么最左边的进位位就是商说明为什么最左边的进位位就是商 本本章章小结小结定点数的加、减运算(用变形补码)定点数的加、减运算(用变形补码)定点数的乘、除运算定点数的乘、除运算(了解了解),补码不恢复余数法的思想,补码不恢复余数法的思想浮点数的加、减运算浮点数的加、减运算 ALU的设计思想、的设计思想、ALU的扩充的扩充先行进位先行进位(并行进位并行进位)阵列乘法与阵列除法的基本思想阵列乘法与阵列除法的基本思想
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号