资源预览内容
第1页 / 共77页
第2页 / 共77页
第3页 / 共77页
第4页 / 共77页
第5页 / 共77页
第6页 / 共77页
第7页 / 共77页
第8页 / 共77页
第9页 / 共77页
第10页 / 共77页
亲,该文档总共77页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第三章第三章 CPUCPU子系统子系统运运算算部部件件 寄寄存存器器 寄寄存存器器控控制制部部件件运算器运算器控制器控制器本章主要讨论:本章主要讨论:运算器运算器 控制器控制器数据通路结构数据通路结构与外部的连接与外部的连接指令的执行过程指令的执行过程CPUCPU组成组成CPUCPU工作原理工作原理3.1 CPU3.1 CPU的基本组成的基本组成运算部件运算部件寄存器组寄存器组微命令产微命令产生部件生部件时序系统时序系统传统运算器传统运算器传统控制器传统控制器1. 1. 运算部件运算部件输出逻辑输出逻辑ALU输入逻辑输入逻辑输入逻辑输入逻辑 操作数操作数 操作数操作数 运算结果运算结果(1) (1) 输入逻辑输入逻辑(2) (2) 算术逻辑运算部件算术逻辑运算部件ALUALU(3) (3) 输出逻辑输出逻辑选择两个操作数,可以是选择两个操作数,可以是选择器或暂存器选择器或暂存器核心部件,完成具体运算。核心部件,完成具体运算。求和、进位传递求和、进位传递具有移位功能,通过斜位具有移位功能,通过斜位传送可实现左移、右移或传送可实现左移、右移或字节交换字节交换移位器移位器ALU多路选择器多路选择器多路选择器多路选择器+1PSWR0R1R2R3IRPCMARMDRMEMORYR0R3R0R3C,D,PC,SPC,D,MDR,PSWR RR MM MDC地址寄存器地址寄存器数据寄存器数据寄存器C,D暂暂存器存器计算机的运算功能分为计算机的运算功能分为四种档次四种档次1 1)普通微处理器:)普通微处理器:只设置一个只设置一个ALUALU,软件实现,软件实现乘除、浮点运算乘除、浮点运算2 2)高档微处理机:)高档微处理机:设置一个设置一个ALUALU,并且配合时,并且配合时序控制,硬件实现定点数乘除,浮点运算由软序控制,硬件实现定点数乘除,浮点运算由软件(子程序)或硬件完成(浮点协处理器)件(子程序)或硬件完成(浮点协处理器)3 3)小、中型机:)小、中型机:只设置一个只设置一个ALUALU,且将定点乘,且将定点乘除部件和浮点部件作为基本配置,硬件实现除部件和浮点部件作为基本配置,硬件实现4 4)大、巨型机:)大、巨型机:设置多种运算部件设置多种运算部件,如标量运,如标量运算、浮点运算和向量运算算、浮点运算和向量运算2.2.寄存器组寄存器组(1)(1)通用寄存器组通用寄存器组,具有,具有2 2种以上功能种以上功能1)1)用于提供数据信息,提供处理对象的寄存器用于提供数据信息,提供处理对象的寄存器包括累加器、地址寄存器、计数器和移位器,设计时,包括累加器、地址寄存器、计数器和移位器,设计时,只有发送和接收功能,其余操作靠辅助线路完成只有发送和接收功能,其余操作靠辅助线路完成移位器移位器ALU多路选择器多路选择器多路选择器多路选择器+1移位移位( (左斜、右斜左斜、右斜) )计数器计数器累加器累加器寄存器寄存器D D触发器触发器SRAMSRAM寄存器组(中寄存器组(中小规模的存储单元)小规模的存储单元)同时同时I/O,集成集成度低度低单元单元/寄存器,寄存器,单双口单双口Ram(2 2)暂存器)暂存器暂存器不能被暂存器不能被CPUCPU直接编程访问,设置的目的直接编程访问,设置的目的是为了暂存某些中间过程所产生的信息,避免是为了暂存某些中间过程所产生的信息,避免破坏通用寄存器的内容。破坏通用寄存器的内容。移位器移位器ALU多路选择器多路选择器多路选择器多路选择器+1PSWR0R1R2R3IRPCMARMDRMEMORYR0R3R0R3C,D,PC,SP C,D,MBR,PSWR RR MM MX=X+YX=X+YMOV R0, YMOV R0, YADD X, R0ADD X, R0(MDR)+(R0) MDR(MDR)+(R0) MDRADD X , YADD X , Y(C)+(MDR) MDR(C)+(MDR) MDR有暂存器,如前页图有暂存器,如前页图2 2). .用于控制的寄存器用于控制的寄存器(1 1)IRIR( (指令寄存器指令寄存器) )存放现行指令,直至本条指令结束存放现行指令,直至本条指令结束(2 2)PCPC( (程序寄存器程序寄存器) )(3 3)PSWPSW( (程序状态字程序状态字) )存放下条指令存放下条指令(+n)(+n)的地址,提供读取指令的的地址,提供读取指令的地址,控制执行指令序列的流向地址,控制执行指令序列的流向存放前次运算结果状态存放前次运算结果状态NZVCPSW负负 零零 溢出溢出 进位进位状态位:状态位:C,V,Z,N,PC,V,Z,N,P控制位:控制位:IF,TF,DFIF,TF,DF为衔接与流水:指令寄存器为衔接与流水:指令寄存器扩充成指令队列(或指令栈)扩充成指令队列(或指令栈)提速提速:IR MDR跟踪(陷阱)跟踪(陷阱)TFTF,编程设定断点;,编程设定断点;允许中断允许中断IFIF,编程设定,编程设定,IF=1IF=1时允许响应外部时允许响应外部终端请求终端请求半进位半进位AFAF、单步位、单步位TFTF、方向标志、方向标志DFDF(地址由低(地址由低到高,还是由高到低)到高,还是由高到低)程序优先级程序优先级程序运行过程中,可能有外部中断请求,可以程序运行过程中,可能有外部中断请求,可以根据优先级来决定根据优先级来决定CPUCPU执行哪一部分。执行哪一部分。工作方式:工作方式:用户态、管态用户态、管态其它信息:其它信息:不同计算机,不同计算机,PSWPSW内容相差很大内容相差很大如:如:IBM360IBM360的的PSWPSW包括系统屏蔽、保护键、包括系统屏蔽、保护键、AMWPAMWP字(工作方式)、字(工作方式)、中断码、指令长度、条件码、程序屏蔽、指令地址等。中断码、指令长度、条件码、程序屏蔽、指令地址等。3 3). .用作主存接口的寄存器(对用户透明)用作主存接口的寄存器(对用户透明)(1 1)地址寄存器:)地址寄存器:MARMAR(2 2)数据寄存器:)数据寄存器:MDR(MDR(双向双向) )取指:取指:PCPC内容内容 MARMAR存取操作数:地址计算结果存取操作数:地址计算结果 MARMAR写入:数据一般先送至写入:数据一般先送至MDRMDR,再经总线送往主存,再经总线送往主存读出:读出:数据现有总线送入数据现有总线送入MDRMDR,再经,再经CPUCPU内部总线内部总线送入指定的寄存器送入指定的寄存器3.3.总线总线数据通路结构数据通路结构总线:一组为多个部件分时共享的公共信总线:一组为多个部件分时共享的公共信息传送线路,可以分时接收(同时发送)息传送线路,可以分时接收(同时发送)和分配信息和分配信息1 1)CPUCPU内部总线内部总线ALUALU总线,连接寄存器与总线,连接寄存器与ALUALU(一条或多条)(一条或多条)可能还有地址总线可能还有地址总线2)2)部件间总线部件间总线设备控制器、智能型接口等部件:微处理器设备控制器、智能型接口等部件:微处理器 、LMLM(地址线,数据线)(地址线,数据线)3 3)系统总线)系统总线系统内各大组成部件间(如系统内各大组成部件间(如CPUCPU、M M、I/O)I/O)总线总线地址总线:地址总线: CPUCPU、DMACDMAC提供地址提供地址数据总线:双向数据总线:双向控制总线:复位、请求、应答、读控制总线:复位、请求、应答、读/ /写、写、总线仲裁、控制权转移总线仲裁、控制权转移4 4)系统外总线)系统外总线一台计算机系统与其他设备、或几台计算机系一台计算机系统与其他设备、或几台计算机系统相连统相连总线实体:总线实体:狭义:指一组传送线狭义:指一组传送线广义:包含一组传送线及相应的控制逻辑广义:包含一组传送线及相应的控制逻辑DMA控制器控制器5.5.时序系统时序系统时序发生器(时序系统):产生周期节拍、时序发生器(时序系统):产生周期节拍、脉冲源(主振荡器):脉冲源(主振荡器):外接晶体振荡器外接晶体振荡器一组一组计数分频逻辑计数分频逻辑: :产生所需的周期(节拍)产生所需的周期(节拍)脉冲等时序信号的部件脉冲等时序信号的部件4.4.微操作命令产生部件微操作命令产生部件在在CPUCPU中设置微命令产生部件,根据控制信息产中设置微命令产生部件,根据控制信息产生微命令序列,对指令功能所要求的数据传送进生微命令序列,对指令功能所要求的数据传送进行控制,且在数据传送至运算部件时控制完成运行控制,且在数据传送至运算部件时控制完成运算处理。算处理。6.CPU内部数据通路结构内部数据通路结构1)单组内总线、分立寄存器结构)单组内总线、分立寄存器结构例:例:NOVA-1200分立寄存器,一组单向分立寄存器,一组单向特点:特点:数据总线,以数据总线,以ALU为内部为内部数据传送通路的中枢数据传送通路的中枢独立结构独立结构小型存储小型存储器结构器结构单口单口双口双口寄存器组寄存器组独立独立R R、双口双口RAMRAM用多路用多路选择器选择器作为作为ALUALU的的输入逻辑,输入逻辑,单口单口RAMRAM用用锁存器锁存器作为作为ALUALU的输入逻辑。的输入逻辑。带多路选择器的运算器带多路选择器的运算器移位器移位器ALU多路选择器多路选择器多路选择器多路选择器R0RnR0. . . Rn R0. . . Rn 内部总线(单向)内部总线(单向)特点:特点:R R各自独立;各自独立;可同时向可同时向ALUALU提供两个操作数;提供两个操作数;采用单向内总线。采用单向内总线。例:例:要实现要实现 R0 R1 R0 R1 :(R0) ALU R1(R0) ALU R12)单组内总线、集成寄存器结构)单组内总线、集成寄存器结构集成化寄存器组集成化寄存器组(SRAM),一组双,一组双特点:特点:例:例:要实现要实现 R0 R1 R0 R1 :(R0) (R0) 暂存器暂存器 R1R1向数据总线,向数据总线,ALUALU输入端设暂存器输入端设暂存器带输入锁存器的运算器带输入锁存器的运算器特点:特点:单口单口RAMRAM不能同时向不能同时向ALUALU提提供两个操作数;供两个操作数;用锁存器暂存操作数;用锁存器暂存操作数;采用双向内总线。采用双向内总线。移位器移位器ALU锁存器锁存器锁存器锁存器内部总线(双向)内部总线(双向)R0Rn通用寄存器组(小型存储器)通用寄存器组(小型存储器)3)多组内总线)多组内总线数据总线(数据总线(ALU):):连接连接ALUALU与寄存器组,双工数据收发器,系统数与寄存器组,双工数据收发器,系统数据总线据总线地址总线:地址总线:指令部件、指令部件、ALUALU部件、段地址处理部件、页地址部件、段地址处理部件、页地址处理部件、地址驱动处理部件、地址驱动指令总线:指令总线:收发器、指令队列、指令预译码、译码、控制收发器、指令队列、指令预译码、译码、控制ROMROM内部控制总线:内部控制总线:控制控制ROMROM,控制,控制ALUALU及各有关部件及各有关部件 位片式运算器位片式运算器特点:特点:用双口用双口RAMRAM(两地址两地址端、两数据端)作通端、两数据端)作通用寄存器组,可同时用寄存器组,可同时提供数据;提供数据;用多路选择器作输入用多路选择器作输入逻辑,不需暂存操作逻辑,不需暂存操作数;数;ALUALU增加乘、除功能,增加乘、除功能,用乘商寄存器存放乘用乘商寄存器存放乘数、乘积或商。数、乘积或商。例例. . 4 4位片运算器粗框位片运算器粗框移位器移位器ALU多路选择器多路选择器多路选择器多路选择器DO RAMDi B 地址地址 A 地址地址 CnDBDAG、P控制信息控制信息Cn+4乘商寄存器乘商寄存器444444444444G,P小组进位产生、传小组进位产生、传递函数;递函数;Cn+4组间串行组间串行进位,进位,Cn初始进位初始进位组内并行,组间并行组内并行,组间并行 第二节第二节 运算方法运算方法3.2.1.1 补码加减法补码加减法数用补码表示,符号位参加运算。数用补码表示,符号位参加运算。实际操作能否只取决于操作码实际操作能否只取决于操作码?结果需不需修正?结果需不需修正?如何将减法转换为加法?如何将减法转换为加法? 3.2.1 定点加减运算定点加减运算1. 基本关系式基本关系式 ( X + Y )补补 = X补补 + Y补补 (1) ( X - Y )补补 = X补补 + (-Y)补补 (2)式(式(1):):操作码为操作码为“加加”时,两数直接相加。时,两数直接相加。3) X= 3 Y= 2 X补补=0 0011 Y补补=1 11100 0001(+1+1补码补码)2) X= 3 Y= 2 X补补=1 1101 Y补补=1 11101 1011 (5 5补码补码)1) X=3 Y=2 X补补=0 0011 Y补补=0 00100 0101(+5+5补码补码)4) X= 3 Y= 2 X补补=1 1101 Y补补=0 00101 1111 (1 1补码补码)例例. 求求(X+Y)补补 ( X + Y )补补 = X补补 + Y补补 (1) ( X - Y )补补 = X补补 + (-Y)补补 (2)式(式(2):):操作码为操作码为“减减”时,将减转换为加。时,将减转换为加。 1) X= 4 Y= 5 X补补=0 0100 Y补补=1 1011(-Y)补补=0 01010 1001(+9+9补码补码)2) X= 4 Y= 5 X补补=1 1100 Y补补=0 0101(-Y)补补=1 10111 0111 (9 9补码补码)例例. 求求(X Y)补补Y补补 (Y)补补:将将Y Y补补变补变补不管不管Y Y补补为正或负,将其符号连同为正或负,将其符号连同尾数一起各位变反,末位加尾数一起各位变反,末位加1 1。即即将减数变补后与被减数相加将减数变补后与被减数相加。 X补补=0 0100 Y补补=1 1011 X补补=1 1100 Y补补=0 0101注意:某数的补码表示与某数变补的区别。注意:某数的补码表示与某数变补的区别。例例. 1 0101. 1 0101原原 1 10111 1011补码表示补码表示1 00111 0011补补 0 11010 1101变补变补 0 01010 0101原原 0 01010 0101补码表示补码表示符号位不变;符号位不变;负数尾数改变,负数尾数改变,正数尾数不变。正数尾数不变。0 00110 0011补补 1 11011 1101变补变补符号位改变,符号位改变,尾数改变。尾数改变。补码的机器负数补码的机器负数2. 算法流程算法流程操作数用补码表示,操作数用补码表示,符号位参加运算符号位参加运算结果为补码表示,符结果为补码表示,符号位指示结果正负号位指示结果正负X补补+Y补补X补补+(-Y)补补ADDSUB3. 逻辑实现逻辑实现A(X补补)B(Y补补)+AABB+B+B+1CPA A(1)控制信号控制信号加法器输入端:加法器输入端:+A+A:打开控制门,将打开控制门,将A A送送。+B+B:打开控制门,将打开控制门,将B B送送。+1+1:控制末位加控制末位加 1 1 。+B+B:打开控制门,将打开控制门,将B B送送。加法器输出端:加法器输出端: A:打开控制门,将结打开控制门,将结 果送果送A输入端。输入端。CPCPA A:将结果打入将结果打入A A。(2)补码加减运算器粗框补码加减运算器粗框3.2.1.2 溢出判断溢出判断在什么情况下可能产生溢出?在什么情况下可能产生溢出?例例. .数数A A有有4 4位尾数,位尾数,1 1位符号位符号S SA A 数数B B有有4 4位尾数,位尾数,1 1位符号位符号S SB B 符号位参符号位参加运算加运算 结果符号结果符号S Sf f符号位进位符号位进位C Cf f尾数最高位进位尾数最高位进位C C正确正确0 00110 0010(1)A=3 B=2 3+2:0 0101 (2)A=10 B=7 10+7: 0 10100 01111 0001 正溢正溢正确正确负溢负溢正确正确正确正确(3)A= -3 B= -2-3+(-2):1 1011 1 11011 1110(4)A= -10 B= -7 -10+(-7):0 1111 1 01101 1001(5)A=6 B= -4 6+(-4):0 0010 0 01101 1100(6)A= -6 B=4 -6+4:1 1110 1 10100 01000 0111(2)A=10 B=7 10+7 :0 1010 1 0001 (4)A= -10 B= -7 -10+(-7):0 1111 1 01101 10011. 硬件判断逻辑一硬件判断逻辑一(SA、SB与与Sf的关系)的关系)溢出溢出= = S SA AS SB BS Sf fS SA AS Sf fS SB B2. 硬件判断逻辑二硬件判断逻辑二(Cf与与C的关系)的关系)正确正确0 00110 0010(1)A=3 B=2 3+2:0 0101 (2)A=10 B=7 10+7: 0 10100 01111 0001 正溢正溢正确正确负溢负溢正确正确正确正确(3)A= -3 B= -2-3+(-2):1 1011 1 11011 1110(4)A= -10 B= -7 -10+(-7):0 1111 1 01101 1001(5)A=6 B= -4 6+(-4):0 0010 0 01101 1100(6)A= -6 B=4 -6+4:1 1110 1 10100 0100CfCf=0=0C =0C =0CfCf=0=0C =1C =1CfCf=1=1C =1C =1CfCf=1=1C =0C =0CfCf=1=1C =1C =1CfCf=0=0C =0C =0111111(2)A=10 B=7 10+7 : 0 1010 0 01111 0001 (4)A= -10 B= -7 -10+(-7):0 1111 1 01101 10011. 硬件判断逻辑一硬件判断逻辑一(SA、SB与与Sf的关系)的关系)溢出溢出= = S SA AS SB BS Sf fS SA AS Sf fS SB B2. 硬件判断逻辑二硬件判断逻辑二(Cf与与C的关系)的关系)溢出溢出= = C Cf f C C3. 硬件判断逻辑三硬件判断逻辑三(双符号位(双符号位)(1)3+2:正确正确00 001100 001000 0101 (2)10+7:00 101000 011101 0001 正溢正溢正确正确负溢负溢正确正确正确正确(3)-3+(-2):11 0111 11 110111 1110(4)-10+(-7):10 1111 11 011011 1001(5)6+(-4):00 0010 00 011011 1100(6)-6+4:11 1110 11 101000 0100第一符号位第一符号位Sf1第二符号位第二符号位Sf2溢出溢出= = S Sf1f1 S Sf2f2(2)A=10 B=7 10+7 : 0 1010 0 01111 0001 (4)A= -10 B= -7 -10+(-7):0 1111 1 01101 10011. 硬件判断逻辑一硬件判断逻辑一(SA、SB与与Sf的关系)的关系)溢出溢出= = S SA AS SB BS Sf fS SA AS Sf fS SB B2. 硬件判断逻辑二硬件判断逻辑二(Cf与与C的关系)的关系)溢出溢出= = C Cf f C C3. 硬件判断逻辑三硬件判断逻辑三(双符号位(双符号位)3.2.1.3 移位操作移位操作逻辑移位逻辑移位 :数码位置变化,数值数码位置变化,数值不变不变。1. 移位类型移位类型算术移位算术移位 1 0 0 0 1 1 1 1循环左移:循环左移:0 :数码位置变化,数值:数码位置变化,数值变化变化,符号位符号位不变不变。1 0 0 1 1 1 1 算术左移:算术左移:1 0 0 1 1 1 1 10 1 1 1 1 0 (-15)(-30)(1)单符号位)单符号位 : 0 01110 1110 (2)双符号位)双符号位:00 1110 00 01112.正数补码移位规则正数补码移位规则(3 3)移位规则)移位规则左移左移右移右移右移右移0 0111 0 0011 左移左移左移左移右移右移右移右移01 1100 00 1110 00 0111 数符不变数符不变(单:符号位不变;双:第一符号(单:符号位不变;双:第一符号位不变)。位不变)。空位补空位补0(右移时第二符号位移至尾数最高位)。(右移时第二符号位移至尾数最高位)。(1)单符号位)单符号位 : 1 10111 0110 (2)双符号位)双符号位:10 1100 11 01103.负数补码移位规则负数补码移位规则(3 3)移位规则)移位规则左移左移右移右移右移右移1 1011 1 1101 左移左移右移右移右移右移11 0110 11 1011 数符不变数符不变(单:符号位不变;双:第一符号(单:符号位不变;双:第一符号位不变)。位不变)。左移空位补左移空位补0(第二符号位移至尾数最高位)(第二符号位移至尾数最高位)右移空位补右移空位补13.2.1.4 舍入方法舍入方法1. 0 0舍舍1 1入(原码、补码)入(原码、补码)0 00100原原 1 00101原原 1 11011补补 2. 末位恒置末位恒置1 1(原码、补码)(原码、补码)0 00100原原 1 11011补补 1 00101原原 0 0010原原 1 0011原原 1 1110补补 0 0011原原 1 0011原原 1 1101补补 例例. 保留保留4位尾数:位尾数: 例例. 保留保留4位尾数:位尾数: 3.2.2 定点乘法运算定点乘法运算3.2.2.1 原码一位乘法原码一位乘法 每次用一位乘数去乘被乘数。每次用一位乘数去乘被乘数。 1.1.算法分析算法分析乘法乘法 部分积累加、移位。部分积累加、移位。例例. 0.11011.10111.1011乘积乘积 P = X YP = X Y积符积符 S SP P= S= SX X S SY YX原原Y原原(1 1)手算)手算 0.11010.1101 0.1011 0.1011 1101 1101 1101 1101 0000 0000 1101 1101 0.100011110.10001111上符号:上符号:1.100011111.10001111部分积部分积问题:问题:1 1)加数增多(由乘数位数决定)。)加数增多(由乘数位数决定)。 2 2)加数的位数增多(与被乘数、乘)加数的位数增多(与被乘数、乘 数位数有关)。数位数有关)。改进:将一次相加改为分步累加。改进:将一次相加改为分步累加。(2 2)分步乘法)分步乘法每次将一位乘数所对应的部分积与每次将一位乘数所对应的部分积与原部分积的累加和相加,并移位。原部分积的累加和相加,并移位。设置寄存器:设置寄存器: A A:存放存放部分积累加和、乘积高位部分积累加和、乘积高位 B B:存放存放被乘数被乘数 C C:存放存放乘数、乘积低位乘数、乘积低位 设置初值:设置初值: A = 00.0000A = 00.0000 B = X = 00.1101 B = X = 00.1101 C = Y = .1011 C = Y = .1011 0.11010.1101 0.1011 0.1011 1101 1101 1101 1101 0000 0000 1101 1101 0.100011110.10001111BC步数步数 条件条件 操作操作 A C A C 00.0000 .1011 00.0000 .1011 1 1)C Cn n=1=1+B+BC Cn n+ 00.1101+ 00.110100.11000.1101 100.011000.01101 1.101.1012 2)C Cn n=1=1+B+B+ 00.1101+ 00.110101.00101.0011 100.100100.10011 11.101.103 3)C Cn n=0=0+0+0+ 00.0000+ 00.000000.10000.1001 100.010000.01001 111.111.14 4)C Cn n=1=1+B+B+ 00.1101+ 00.110101.00001.0001 100.100000.10001 1111111X X原原YY原原 = 1.10001111= 1.10001111 2. .算法流程算法流程0 A0 A、X BX B、Y CY C、0 CR0 CRC Cn n = 1 = 1 ?CR = n CR = n ?1/21/2(A+BA+B) A A,C C1/21/2(A+0A+0) A A,C C CR + 1 CR CR + 1 CRYYNN SxSx + + SySy S SA A 3.3.运算规则运算规则(1 1)操作数、结果用)操作数、结果用原码原码表示;表示;(2 2)绝对值运算,)绝对值运算,符号符号单独处理;单独处理;(3 3)被乘数)被乘数(B)(B)、累加和累加和(A)(A)取取双符号位双符号位;(4 4)乘数末位)乘数末位( (C Cn n) )为为判断位判断位,其状态决定,其状态决定 下步操作;下步操作;(5 5)作)作n n次循环(累加、右移)。次循环(累加、右移)。3.2.2.2 补码一位乘法补码一位乘法算法规则算法规则校正法校正法l只要乘数只要乘数Y Y补补为正,则可像原码乘法一样为正,则可像原码乘法一样进行运算,其结果不需校正。进行运算,其结果不需校正。l如果乘数如果乘数Y Y补补为负,则先按原码乘法运算,为负,则先按原码乘法运算,结果再加一个校正量结果再加一个校正量-X-X补补。校正法校正法算法规则算法规则比较法比较法l校正法的两种情况统一,演变为比较法,校正法的两种情况统一,演变为比较法,又称又称BoothBooth算法。算法。3.2.2.2 补码一位乘法补码一位乘法 1.1.算法分析算法分析 X X补补 = X= X0 0.X.X1 1X X2 2X Xn n(1 1)Y Y为正:为正:Y Y补补 = 0.Y= 0.Y1 1Y Y2 2Y Yn n (XY)(XY)补补 = X= X补补(0.Y(0.Y1 1Y Y2 2Y Yn n) )(2 2)Y Y为负:为负:Y Y补补 = 1.Y= 1.Y1 1Y Y2 2Y Yn n (XY)(XY)补补 = X= X补补(0.Y(0.Y1 1Y Y2 2Y Yn n)+(-X)+(-X)补补(3 3)Y Y符号任意:符号任意: (XY)(XY)补补 = X= X补补(0.Y(0.Y1 1Y Y2 2Y Yn n)+(-X)+(-X)补补Y Y0 0符号位符号位 = X= X补补 (Y(Y1 1-Y-Y0 0)+2 (Y)+2 (Y2 2-Y-Y1 1)+2 (Y)+2 (Y3 3-Y-Y2 2)+)+-1 -2-1 -2 = X= X补补 ( (Y Y1 1-Y-Y0 0)+2 ()+2 (Y Y2 2-Y-Y1 1)+2 (Y)+2 (Y3 3-Y-Y2 2)+)+-1 -2-1 -2(4 4)展开为部分积的累加和形式:展开为部分积的累加和形式:(XY)(XY)补补 = X= X补补(0.Y(0.Y1 1Y Y2 2Y Yn n)+(-X)+(-X)补补Y Y0 0 = X= X补补(0.Y(0.Y1 1Y Y2 2Y Yn n)-X)-X补补Y Y0 0 = X= X补补(-Y(-Y0 0+ +2 2 Y Y1 1+ +2 2 Y Y2 2+2 2 Y Yn n) )-1 -2 -n-1 -2 -n = X= X补补 (-Y(-Y0 0+(+(Y Y1 1-2-2 Y Y1 1)+()+(2 2 Y Y2 2-2-2 Y Y2 2)+)+ -1 -1 -1-1 -2 -2-(n-1) -n -(n-1) -n +(+(2 Y2 Yn n-2 -2 Y Yn n) +2 (0 -+2 (0 -Y Yn n) )-n-n +2 (0 -+2 (0 -Y Yn n) )-n-nY Yn+1n+1 +2 (0 -+2 (0 -Y Yn n) )-n-nY Yn+1n+1比较法:用相邻两位乘数比较的结果决定比较法:用相邻两位乘数比较的结果决定 +X+X补补、-X-X补补或或+0+0。 2.2.比较法比较法算法算法Y Yn n( (高位高位) ) Y Yn+1n+1( (低位低位) ) 操作操作(A(A补补为部分积累加和为部分积累加和) ) 0 00 00 10 11 01 01 1 1 1 1/2A1/2A补补 1/2(A1/2(A补补+X+X补补) ) 1/2(A 1/2(A补补-X-X补补) ) 1/2A 1/2A补补( 0 )( 0 )( 1 )( 1 )(-1 )(-1 )( 0 )( 0 )3.3.运算实例运算实例X=-0.1101,Y=-0.1011,X=-0.1101,Y=-0.1011,求求(XY)(XY)补补。初值:初值:A=00.0000,B=XA=00.0000,B=X补补=11.0011,=11.0011, -B=(-X) -B=(-X)补补=00=00.1101,C =Y.1101,C =Y补补=1=1.0101.0101步数步数 条件条件 操作操作 A C A C 00.0000 1.01000.0000 1.0101 1 1 1)1 01 0-B-BC Cn n+ 00.1101+ 00.110100.00.1101110100.00.011001101 11.011.0101012 2)0 10 1+B+B+ 11.0011+ 11.001111.11.1001100111.11.1100110011111.01.010103 3)1 01 0-B-B+ 00.1101+ 00.110100.00.1001100100.00.010001001111111.1.01014 4)0 10 1+B+B+ 11.0011+ 11.001111.11.0111011111.11.10111011111111111.01.00 0 C Cn+1n+1C Cn nC Cn+1n+15 5)1 01 0-B-B+ 00.1101+ 00.1101(XY)(XY)补补 = 0.10001111= 0.100011114 4)0 10 1+B+B+ 11.0011+ 11.001111.11.0111011111.11.10111011111111111.01.05 5)1 01 0-B-B+ 00.1101+ 00.110100.00.1000100011111111修正修正(1)A(1)A、B B取双符号位,符号参加运算;取双符号位,符号参加运算;(2)C(2)C取单符号位,符号参加移位,以决定最后是否取单符号位,符号参加移位,以决定最后是否 修正;修正;(3)C(3)C末位设置附加位末位设置附加位C Cn+n+1 1,初值为初值为0 0,C Cn nC Cn+n+1 1组成判组成判 断位,决定运算操作断位,决定运算操作;(4)(4)作作n n步循环步循环, ,若需作第若需作第n+1n+1步步, ,则不移位则不移位, ,仅修正。仅修正。 4.4.运算规则运算规则1.0 : -B修正修正0.1 : +B修正修正0.0 : 不修正不修正1.1 : 不修正不修正 5 3.2.3 定点除法运算定点除法运算除法除法 若干余数与除数加减、移位。若干余数与除数加减、移位。例例. 0.101100.11111. 0.101100.111110.101100.10110 110111010.0.0 01 1 11111111110.111110.111110 00 00 01 1 1111111111 10101101010 01 1 1111111111 101110110 00 0.00000000000.0.商:商: 0.101100.10110余数:余数:0.1011020.101102实现除法的关键:实现除法的关键:比较余数、除数比较余数、除数绝对值大小,以绝对值大小,以决定上商。决定上商。3.2.3.1 原码恢复余数法原码恢复余数法1.1.算法算法 比较两数大小可用减法试探。比较两数大小可用减法试探。22余数余数- -除数除数= =新余数新余数为正为正: :够减够减, ,商商1 1。为负为负: :不够减不够减, ,商商0,0,恢复原余数。恢复原余数。2.2.实例实例X=-0.10110X=-0.10110,Y=0.11111Y=0.11111,求,求X/YX/Y,给出商给出商Q Q和余数和余数R R设置:设置:A A:被除数、余数,被除数、余数,B B:除数,除数,C C:商:商初值:初值:A= X = 00.10110A= X = 00.10110 B= Y = 00.11111 B= Y = 00.11111 C= Q = 0.00000 C= Q = 0.00000 -B= 11.00001 -B= 11.00001步数步数 条件条件 操作操作 A C A C 00.10110 0.00000 00.10110 0.00000 1 1)0 0-B-B 01.0110001.01100+11.00001+11.0000100.0110100.011010.00000.00001 12 2)1 1 -B-B00.1101000.11010+11.00001+11.0000111.1101111.110110.0000.00010103 3)恢复余数恢复余数+B+B+00.11111+00.1111100.1101000.1101001.1010001.101000.000.001011014 4)0 0-B-B +11.00001+11.0000100.1010100.10101C Cn nS SA AQ Q1 1 Q Q2 2 Q Q3 3 r r0 02r2r0 0r r1 12r2r1 1r r22r r2 22r2r2 2r r3 3步数步数 条件条件 操作操作 A C A C 00.10101 0.0000.10101 0.00101101 5 5)0 0-B-B 01.0101001.01010+11.00001+11.0000100.0101100.010110.00.0101110116 6)1 1 -B-B00.1011000.10110+11.00001+11.0000111.1011111.101110.0.10110101107 7)恢复余数恢复余数+B+B+00.11111+00.1111100.1011000.10110Q= -0.10110Q= -0.10110C Cn nQ Q4 4 Q Q5 5 Q Q3 3 r r3 32r2r3 3r r4 42r2r4 4r r55r r5 5R= 0.10110R= 0.1011022-5-5X/Y=-0.10110+X/Y=-0.10110+-0.10110-0.1011022-5-5 0.11111 0.111113.3.说明说明(1 1)A A、B B双符号位,双符号位,X X、Y Y绝对值,绝对值,X X 小于小于 Y Y 。(2 2)运算结束后,余数乘以运算结束后,余数乘以2 2 ,与被除数同号。,与被除数同号。-n3.2.3.2 原码不恢复余数法原码不恢复余数法(加减交替法)(加减交替法)1.1.算法分析算法分析第二步第二步: :2 2r r1 1-B=-B=r r2 200第三步第三步: :r r2 2+B=+B=r r2(2(恢复余数恢复余数) )第四步第四步: :2 2r r2 2-B=-B=r r3 32 2r r2 2-B=2(-B=2(r r2 2+B)-B+B)-B =2 =2r r2 2+B=+B=r r3 3 第二步第二步: :2 2r r1 1-B=-B=r r2 200第三步第三步:2:2r r2 2+B=+B=r r3 3 ( (不恢复余数不恢复余数) )2.2.算法算法 r ri+1i+1=2=2r ri i+(1-2Q+(1-2Qi i)Y)Yr ri i为正,则为正,则Q Qi i为为1 1,第,第i+1i+1步作步作2 2r ri i-Y-Y;r ri i为负,则为负,则Q Qi i为为0 0,第,第i+1i+1步作步作2 2r ri i+Y+Y。3.3.实例实例X=0.10110X=0.10110,Y=-0.11111Y=-0.11111,求,求X/YX/Y,给出商给出商Q Q和余数和余数R R。初值:初值:A= X = 00.10110A= X = 00.10110 B= Y = 00.11111 B= Y = 00.11111 C= Q = 0.00000 C= Q = 0.00000 -B=11.00001 -B=11.00001步数步数 条件条件 操作操作 A C A C 00.10110 0.00000 00.10110 0.00000 1 1)为正为正-B-B 01.0110001.01100+11.00001+11.0000100.0110100.011010.00000.00001 12 2)为负为负 -B-B00.1101000.11010+11.00001+11.0000111.1101111.110110.0000.00010103 3)+B+B+00.11111+00.1111111.1011011.101100.000.00101101为正为正00.1010100.10101C Cn n r rQ Q1 1 Q Q2 2 Q Q3 3 r r0 02r2r0 0r r1 12r2r1 1r r2 22r2r2 2r r3 34 4)为正为正-B-B 01.0101001.01010+11.00001+11.0000100.0101100.010110.00.010111011Q Q4 4 2r2r3 3r r4 4步数步数 条件条件 操作操作 A C A C 00.01011 0.000.01011 0.010111011 6 6)为负为负 恢复余数恢复余数+B+B+00.11111+00.1111100.1011000.10110Q= -0.10110Q= -0.10110C Cn nQ Q4 4 r r4 45 5)为正为正-B-B 00.1011000.10110+11.00001+11.0000111.1011111.101110.0.1011010110Q Q5 5 2r2r4 4r r55r r5 5R= 0.10110R= 0.1011022-5-5X/Y=-0.10110+X/Y=-0.10110+ 0.101100.1011022-5-5 -0.11111 -0.11111 4.4.运算规则运算规则(1 1)A A、B B取双符号位,取双符号位,X X、Y Y取绝对值运算,取绝对值运算,X Y X Y 。(2 2)根据余数的正负决定商值及下一步操作。根据余数的正负决定商值及下一步操作。(3 3)求)求n n位商,作位商,作n n步操作;若第步操作;若第n n步余数为步余数为负,则第负,则第n+1n+1步恢复余数,不移位。步恢复余数,不移位。3.2.3.3 补码不恢复余数法补码不恢复余数法(加减交替法)(加减交替法)如何判断是否够减?如何判断是否够减? 如何上商?如何上商? 如何确定商符?如何确定商符? 补码除法法则补码除法法则X X补补Y Y补补数符数符商商符符第一步第一步操作操作r r补补Y Y补补数符数符上上商商下一步操作下一步操作同号同号0 0减减同号(够减)同号(够减)异号(不够减)异号(不够减)1 10 02r2ri i 补补-Y-Y补补2r2ri i 补补+Y+Y补补异号异号1 1加加同号(不够减)同号(不够减)异号(够减)异号(够减)1 10 02r2ri i 补补-Y-Y补补2r2ri i 补补+Y+Y补补4 74 71 17 47 4-4 -7-4 -7-7 -4-7 -40 01 10 0-4-43 3-7-7-3-3-(-4)-(-4)-3-33.2.3.3 补码不恢复余数法(加减交替法)补码不恢复余数法(加减交替法)如何判断是否够减?如何判断是否够减? 如何上商?如何上商? 如何确定商符?如何确定商符? 1.1.判够减判够减(1)(1)同号相除同号相除 减减-4 7-4 7-7 4-7 44 -74 -77 -47 -4-(-7)-(-7)3 3够减够减不够减不够减够减够减不够减不够减够减:够减:r r与与X X、Y Y同号;同号; 不够减:不够减:r r与与X X、Y Y异号。异号。(2)(2)异号相除异号相除 加加 0 01 1 0 0 1 1+(-4)+(-4) 3 3+(-7)+(-7)-3-3 +4+4-3-3 +7+7 3 3够减够减够减够减不够减不够减不够减不够减够减:够减:r r与与X X同号同号, ,与与Y Y异号;异号; 不够减:不够减:r r与与X X异号异号, ,与与Y Y同号。同号。(3 3)判断规则)判断规则同号:作同号:作X X补补-Y-Y补补X X补补Y Y补补够减够减:r r补补与与Y Y补补同号同号不够减不够减:r r补补与与Y Y补补异号异号异号:作异号:作X X补补+Y+Y补补够减够减:r r补补与与Y Y补补异号异号不够减不够减:r r补补与与Y Y补补同号同号2.2.求商值求商值X X补补Y Y补补同号:商为正同号:商为正异号:商为负异号:商为负够减商够减商1 1不够减商不够减商0 0够减商够减商0 0不够减商不够减商1 1( (r r、Y Y同号同号) )( (r r、Y Y异号异号) )( (r r、Y Y异号异号) )( (r r、Y Y同号同号) )上商规则:上商规则:Q Qi i=Sr=Sri iS SY Y余数与除数同号商余数与除数同号商1 1,异号商,异号商0 0。3.3.算法算法 ( (r ri+1i+1) )补补=2=2r ri i补补+(1-2Q+(1-2Qi i补补)Y)Y补补r ri i补补与与Y Y补补同号同号,则则Q Qi i补补为为1 1,第,第i+1i+1步作步作2 2r ri i补补-Y-Y补补;r ri i补补与与Y Y补补异号异号,则,则Q Qi i补补为为0 0,第,第i+1i+1步作步作2 2r ri i补补+Y+Y补补。4.4.求商符求商符令令X X补补 = = r r0 0补补r r0 0补补与与Y Y补补同号:同号:Q Q0 0补补=1=1异号:异号:Q Q0 0补补=0=0与实际商与实际商符相反符相反商符商符5.5.商的校正商的校正X X补补Y Y补补=( 1+2 + 2 =( 1+2 + 2 QiQi补补)+ )+ 2 2 r rn n补补Y Y补补-n-in-1i=0-n商商余数余数真商真商= =假商假商+1.00001+1.00001=Q=Q0 0.Q.Q1 1Q Q2 2QQn-1n-1求求n-1n-1位商位商( (假商假商) )X X补补Y Y补补=( 1+2 + 2 =( 1+2 + 2 QiQi补补)+ )+ 2 2 r rn n补补Y Y补补-n-in-1i=0-n商商余数余数(1) 2 (1) 2 QiQi补补n-1i=0-i(2)2(2)2-n第第n n位商位商( (末位商末位商) )恒置恒置1 1(3)+1(3)+1商符变反商符变反n位位(4)(4)余数求至余数求至rnrn6.6.实例实例X=0.10110X=0.10110,Y=-0.11111Y=-0.11111,求,求X/YX/Y,给出商给出商Q Q和余数和余数R R。初值:初值:A =XA =X补补=00.10110=00.10110 B =YB =Y补补=11.00001 =11.00001 C =QC =Q补补=0.00000=0.00000 -B =00.11111 -B =00.11111步数步数 条件条件 操作操作 A C A C 00.10110 0.00000.10110 0.0000 0 1 1)异号异号+B+B 01.0110001.01100+11.00001+11.0000100.0110100.01101 0.000.0000002 2)同号同号 +B+B00.1101000.11010+11.00001+11.0000111.1101111.11011 0.00.0001001C Cn n-1-1r r、Y YQ Q1 1 Q Q2 2 r r0 02r2r0 0r r1 12r2r1 1r r2 2求商符求商符Q Q0 0 异号异号0 0 5 5)+B+B+11.00001+11.0000100.1011000.1011011.1011111.10111步数步数 条件条件 操作操作 A C A C 11.11011 0.011.11011 0.0001001 3 3)异号异号-B-B 11.1011011.10110+00.11111+00.1111100.1010100.10101 0.0.001000104 4)异号异号 +B+B01.0101001.01010+11.00001+11.0000100.0101100.01011 0.01000.0100C Cn n-1-1r r、Y YQ Q3 3 Q Q2 2 r r2 22r2r2 2r r3 32r2r3 3r r4 42r2r4 4r r5 5假商假商=0.0100=0.0100Q Q4 4 真商真商=0.0100+1.00001=1.01001=0.0100+1.00001=1.01001Q= -0.10111 R= -0.010012Q= -0.10111 R= -0.010012X/Y=-0.10111+X/Y=-0.10111+-0.01001-0.010012 2-5-5 -0.11111 -0.11111- -5 5 7.7.运算规则运算规则(1 1)A A、B B取双符号位,符号参加运算,并且取双符号位,符号参加运算,并且 X Y X BBE E,则,则B BE E+1 B+1 BE E,B BM M,直到直到B BE E=A=AE E1.10101.1010(2) 0.0101(2) 0.0101 +0.1101 +0.11014.4.结果规格化结果规格化 M 1/2 M 1 M 1应应左移规格化左移规格化应应右移规格化右移规格化A AE E-1 A-1 AE E若若 A Af1f1A Af2f2=1,=1,则右规:则右规:(1) 11.0001(1) 11.0001 +00.1001 +00.100111.111.1010010(2) 00.0101(2) 00.0101 +00.1101 +00.11010101.0010.0010(-1/2(-1/2除外除外) )A Af1f1A Af2 f2 A A1 1A AM MA Af1f1A Af2 f2 A AM MA AE E+1 A+1 AE E若若 A Af1f1A Af2f2A A1 1+A+Af1f1A Af2f2A A1 1=1,=1,则左规:则左规:3.2.4.2 浮点乘法运算浮点乘法运算步骤:步骤:1.1.检测操作数是否为检测操作数是否为0 0。2.2.阶码相加。阶码相加。若阶码用移码表示,相加后要修正。若阶码用移码表示,相加后要修正。浮点乘浮点乘 定点加、定点乘定点加、定点乘3.3.尾数相乘。尾数相乘。 相乘前相乘前不需对阶不需对阶。设设A=2A=2 A AM M,B=2 B=2 B BM M A AE EB BE EA AE E+B+BE EA AB=2 B=2 ( (A AM MB BM M) ) 4.4.结果规格化。结果规格化。一般一般左规左规。3.2.4.3 浮点除法运算浮点除法运算步骤:步骤:1.1.检测操作数是否为检测操作数是否为0 0。2. A2. AM M B BM M ? ?浮点除浮点除 定点减、定点除定点减、定点除4.4.尾数相除。尾数相除。相除前不需对阶相除前不需对阶。设设A=2A=2 A AM M,B=2 B=2 B BM M A AE EB BE E5.5.结果不再规格化。结果不再规格化。A AE-E-B BE EA AB=2 B=2 ( (A AM MB BM M) ) 3.3.阶码相减。阶码相减。若阶码用移码表示,相减后要修正。若阶码用移码表示,相减后要修正。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号