《算机组成原理与汇.ppt》由会员分享,可在线阅读,更多相关《算机组成原理与汇.ppt(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第2 2篇篇 计算机系统分层结构计算机系统分层结构 在在本本篇篇用用3章章分分三三个个层层次次,即即微微体体系系结结构构层层、指指令系统层和汇编语言层讨论计算机系统的组成。令系统层和汇编语言层讨论计算机系统的组成。微微体体系系结结构构层层是是具具体体的的硬硬件件层层次次,可可看看作作是是指指令令系系统的解释器。统的解释器。指指令令系系统统层层是是一一个个抽抽象象的的层层次次,其其指指令令系系统统是是一一种种硬件和编译器都可识别的机器语言。硬件和编译器都可识别的机器语言。汇汇编编语语言言层层提提供供的的语语言言,是是将将机机器器语语言言“符符号号化化”以以便于人们理解。便于人们理解。用用汇汇编
2、编语语言言编编写写的的程程序序先先由由汇汇编编器器翻翻译译成成机机器器语语言程序,再由微体系结构层解释执行。言程序,再由微体系结构层解释执行。第第3 3章章 微体系结构层微体系结构层CPUCPU组织组织 在在微微体体系系结结构构层层,是是从从寄寄存存器器级级分分析析CPU的的结结构和功能。本章主要内容:构和功能。本章主要内容:CPU的基本组成和功能的基本组成和功能 算术逻辑部件算术逻辑部件ALU和运算方法和运算方法 CPU模型机模型机 组合逻辑控制器原理组合逻辑控制器原理 微程序控制器原理微程序控制器原理 中中央央处处理理器器CPU的的主主要要功功能能是是从从主主存存储储器器中中取取出出指指令
3、令、分分析析指指令令和和执执行行指指令令,即即按按指指令令控控制制计计算算机各部件操作,并对数据进行处理。机各部件操作,并对数据进行处理。3.1 3.1 CPUCPU的组成和功能的组成和功能3.1.1 CPU3.1.1 CPU的组成的组成CPUCPU通常由以下几部分构成通常由以下几部分构成:控制器控制器;算术逻辑部件算术逻辑部件ALU;ALU;各种寄存器各种寄存器;CPUCPU内部总线。内部总线。CPU的基本组成框图 1 1ALUALU部件与寄存器部件与寄存器ALU框图(1 1)ALUALU部件部件 ALUALU的功能是实现数据的的功能是实现数据的算算术与逻辑运算术与逻辑运算。ALUALU的输
4、入有两个端口,分别接收参加运算的两个操作数,的输入有两个端口,分别接收参加运算的两个操作数,通常它们来自通常它们来自CPUCPU中的通用寄存器或中的通用寄存器或ALUALU总线。总线。ALUALU的输出取决于对其功能的控制,当控制功能选择加、的输出取决于对其功能的控制,当控制功能选择加、减、与、或等运算功能之一时,其输出结果将为对应的和、减、与、或等运算功能之一时,其输出结果将为对应的和、差、与值、或值等。差、与值、或值等。(2 2)寄存器)寄存器 CPU CPU 中的寄存器包括存放中的寄存器包括存放控制信息控制信息的寄存器,如的寄存器,如指令寄存指令寄存器器、程序计数器程序计数器和和状态字寄
5、存器状态字寄存器;以及存放所;以及存放所处理数据处理数据的寄的寄存器,如存器,如通用寄存器通用寄存器和和暂存器暂存器。通用寄存器通用寄存器 通常通常CPUCPU内部设置有一组寄存器,每个寄存器都可以承担多种内部设置有一组寄存器,每个寄存器都可以承担多种用途,因此习惯上称为通用寄存器。用途,因此习惯上称为通用寄存器。通用寄存器本身在逻辑上只具有接收信息、存储信息和发送信通用寄存器本身在逻辑上只具有接收信息、存储信息和发送信息的功能。但通过编程以及与息的功能。但通过编程以及与ALUALU的配合可以实现多种功能,如它的配合可以实现多种功能,如它们可为们可为ALUALU提供操作数并存放运算结果,也可用
6、作变址寄存器、地提供操作数并存放运算结果,也可用作变址寄存器、地址指针和计数器等。址指针和计数器等。暂存器 在在CPUCPU中一般要设置暂存器,主要是为了暂存从主存储器读出中一般要设置暂存器,主要是为了暂存从主存储器读出的数据的数据,暂存器没有寄存器号,因此不能直接编程访问它们。暂存器没有寄存器号,因此不能直接编程访问它们。指令寄存器寄存器IRIR(I Instruction nstruction R Registeregister)用来存放当前正在执行的一条指令。用来存放当前正在执行的一条指令。执行指令时,需根据执行指令时,需根据PC中中的指令地址从主存读取指令送到的指令地址从主存读取指令送
7、到IR中。中。程序计数器程序计数器PCPC(P Program rogram C Counterounter)用以存放当前或下一条用以存放当前或下一条指令指令在主存中的在主存中的地址地址,因此又称为指,因此又称为指令计数器或指令指针令计数器或指令指针IPIP(Instruction PointerInstruction Pointer)。)。状态寄存器状态寄存器 CPUCPU内部设置的状态寄存器,用来存放当前程序的内部设置的状态寄存器,用来存放当前程序的运行状态运行状态和和工作方式工作方式,其内容称为程序状态字,其内容称为程序状态字PSWPSW(Program State WordProgra
8、m State Word),),PSWPSW是参与控制程序执行的重要依据。是参与控制程序执行的重要依据。2 2总线总线 所谓总线是一组能为多个部件所谓总线是一组能为多个部件分时共享分时共享的公共信息传送线路,的公共信息传送线路,它分时接收各部件送来的信息,并发送信息到有关部件。它分时接收各部件送来的信息,并发送信息到有关部件。由于多个部件连接在一组公共总线上,可能会出现多个部件由于多个部件连接在一组公共总线上,可能会出现多个部件争争用用总线,因此需设置总线控制逻辑以解决总线控制权的有关问题。总线,因此需设置总线控制逻辑以解决总线控制权的有关问题。CPUCPU内部总线内部总线用来连接用来连接CP
9、UCPU内的各寄存器与内的各寄存器与ALUALU;总线分类:系统总线系统总线用来连接用来连接CPUCPU、主存储器与主存储器与I/OI/O接口,它通常包括接口,它通常包括三组:三组:数据数据总线、总线、地址地址总线和总线和控制控制总线。总线。按总线传送的方向可将总线分为按总线传送的方向可将总线分为单向单向总线和总线和双向双向总线。总线。3 3CPUCPU内部数据通路内部数据通路 CPUCPU内部寄存器及内部寄存器及ALUALU之间通常用总线方式传送数据信息。之间通常用总线方式传送数据信息。介绍两介绍两种常见的结构。种常见的结构。(1 1)单总线单总线数据通路结构数据通路结构采用单总线结构的采用
10、单总线结构的CPUCPU数据通路数据通路 CPUCPU数据通路结构只采用数据通路结构只采用一组内总线一组内总线,它是,它是双向双向总线。通用总线。通用寄存器组、其他寄存器和寄存器组、其他寄存器和ALUALU均连在这组内总线上。均连在这组内总线上。CPUCPU内各寄存器间的数据传送必须通过内总线进行,内各寄存器间的数据传送必须通过内总线进行,ALUALU通过内通过内总线得到操作数,其运算结果也经内总线输出。总线得到操作数,其运算结果也经内总线输出。(2 2)多组内总线结构)多组内总线结构采用三总线结构的采用三总线结构的CPUCPU数据通路数据通路 为了提高为了提高CPUCPU的工作速度,一种方法
11、是在的工作速度,一种方法是在CPUCPU内部设置多组内总内部设置多组内总线,使几个数据传送操作能够同时进行,即实现部分并行操作。线,使几个数据传送操作能够同时进行,即实现部分并行操作。3.1.2 3.1.2 指令执行过程指令执行过程 CPUCPU的主要功能就是的主要功能就是执行存放在存储器中的指令序列执行存放在存储器中的指令序列,即,即程序。程序。1 1指令的分段执行过程指令的分段执行过程 任何一条指令的执行都要经过任何一条指令的执行都要经过读取读取指令、指令、分析分析指令和指令和执行执行指指令令3 3个阶段。个阶段。执行阶段还可细分执行阶段还可细分为:(1 1)取指令)取指令(2 2)分析指
12、令)分析指令(3 3)执行指令)执行指令 取操作数取操作数 执行操作执行操作 形成下一条指令地址形成下一条指令地址 此外,此外,CPUCPU还应该对运行过程中出现的某些还应该对运行过程中出现的某些异常情况异常情况或或输入输入/输出请求输出请求进行处理进行处理 。2 2指令之间的衔接方式指令之间的衔接方式 指令之间的衔接方式有两种:指令之间的衔接方式有两种:串行串行的顺序安排方式与的顺序安排方式与并行并行的的重叠处理方式。重叠处理方式。3.1.3 3.1.3 时序控制方式时序控制方式 执行一条指令的过程可分为几个阶段,而每一阶段又分为若干执行一条指令的过程可分为几个阶段,而每一阶段又分为若干步基
13、本操作,每一步操作则由控制器产生一些相应的控制信号实现。步基本操作,每一步操作则由控制器产生一些相应的控制信号实现。因此,每条指令都可分解为一个控制信号序列,指令的执行过程就因此,每条指令都可分解为一个控制信号序列,指令的执行过程就是依次执行一个确定的是依次执行一个确定的控制信号序列控制信号序列的过程。的过程。时序控制方式时序控制方式就是指微操作与时序信号之间采取何种关系,就是指微操作与时序信号之间采取何种关系,它不仅直接决定时序信号的产生,也影响到控制器及其他部件的组它不仅直接决定时序信号的产生,也影响到控制器及其他部件的组成,以及指令的执行速度。成,以及指令的执行速度。1 1同步控制方式同
14、步控制方式 同步控制方式是指各项操作由同步控制方式是指各项操作由统一统一的时序信号进行同步控制。的时序信号进行同步控制。同步控制的基本特征是将操作时间分为若干长度相同的同步控制的基本特征是将操作时间分为若干长度相同的时钟时钟周期周期(也称为节拍),要求在一个或几个时钟周期内完成各个(也称为节拍),要求在一个或几个时钟周期内完成各个微微操作操作。在在CPUCPU内部通常是采用同步控制方式内部通常是采用同步控制方式。同步控制方式的优点是时序关系简单,结构上易于集中,相应同步控制方式的优点是时序关系简单,结构上易于集中,相应的设计和实现比较方便。的设计和实现比较方便。2 2同步控制方式的多级时序系统
15、同步控制方式的多级时序系统(1 1)多级时序的概念)多级时序的概念 在同步控制方式中,通常将时序信号划分为几级(其中包括指在同步控制方式中,通常将时序信号划分为几级(其中包括指令周期),称为多级时序。令周期),称为多级时序。机器周期机器周期 节拍节拍(时钟周期时钟周期)时钟脉冲信号时钟脉冲信号(2 2)多级时序信号之间的关系)多级时序信号之间的关系三级时序信号之间的关系三级时序信号之间的关系(3 3)时序系统的组成)时序系统的组成时序系统框图时序系统框图 3.1.4 3.1.4 指令流水线指令流水线 两段指令流水线两段指令流水线 为获得进一步的加速,流水线可以分成更多的阶段。为获得进一步的加速
16、,流水线可以分成更多的阶段。取指令取指令计算操作数地计算操作数地址址译码指令译码指令写操作数写操作数取操作数取操作数执行指令执行指令指令流水指令流水线线操作操作时时序序图图 影响流水线性能主要有以下几个因素:影响流水线性能主要有以下几个因素:(1)若各个阶段不全是相等的时间)若各个阶段不全是相等的时间(2)流水线中的相关问题)流水线中的相关问题(3)当遇到条件转移指令时)当遇到条件转移指令时(4)当)当I/O设备有中断请求或机器有故障时设备有中断请求或机器有故障时3.2 3.2 算术逻辑部件算术逻辑部件ALUALU和运算方法和运算方法 算术逻辑部件算术逻辑部件ALUALU主要完成对二进制代码的
17、定点主要完成对二进制代码的定点算术运算算术运算和和逻逻辑运算辑运算。3.2.1 3.2.1 算术逻辑部件算术逻辑部件ALUALU算术逻辑部件算术逻辑部件ALUALU的硬件实现涉及三个问题:的硬件实现涉及三个问题:(1 1)如何构成一位二进制加法单元,即全加器。)如何构成一位二进制加法单元,即全加器。(2 2)n n位全加器连同进位信号传送逻辑,构成一个位全加器连同进位信号传送逻辑,构成一个n n位并行加法器。位并行加法器。(3 3)以加法器为核心,通过输入选择逻辑扩展为具有多种算术和逻)以加法器为核心,通过输入选择逻辑扩展为具有多种算术和逻辑运算功能的辑运算功能的ALUALU。1 1全加器全加
18、器 用半加器构成的全加器用半加器构成的全加器 和和进位进位目前,广泛采用半加器构成全加器。目前,广泛采用半加器构成全加器。2 2并行加法器与进位链结构并行加法器与进位链结构 用用n n位全加器实现两个位全加器实现两个n n位操作数各位同时相加,这种加法器称位操作数各位同时相加,这种加法器称为并行加法器。并行加法器中全加器的位数与操作数的位数相同。为并行加法器。并行加法器中全加器的位数与操作数的位数相同。(1 1)基本进位公式)基本进位公式设相加的两个设相加的两个n n位操作数为位操作数为:进位信号的逻辑式 可以看出可以看出C C 由两部分组成:由两部分组成:我们定义两个辅助函数:我们定义两个辅
19、助函数:进位产进位产生函数生函数进位传进位传递函数递函数因此有:因此有:(2 2)并行加法器的串行进位)并行加法器的串行进位 采用串行进位的并行加法器,是将采用串行进位的并行加法器,是将n n个全加器串接起来,就可个全加器串接起来,就可进行两个进行两个n n位数相加。位数相加。由于串行进位的延迟时间较长,所以在由于串行进位的延迟时间较长,所以在ALUALU中很少采用纯串行中很少采用纯串行进位的方式。但这种方式可节省器件,成本低,在分组进位方式中进位的方式。但这种方式可节省器件,成本低,在分组进位方式中局部采用有时也是可取的。局部采用有时也是可取的。3 3并行进位(先行进位、同时进位)并行进位(
20、先行进位、同时进位)为了提高并行加法器的运算速度,就必须解决进位传递的问题。为了提高并行加法器的运算速度,就必须解决进位传递的问题。方法是让各级进位信号同时形成,而不是串行形成。方法是让各级进位信号同时形成,而不是串行形成。这种同时形成各位进位的方法称为这种同时形成各位进位的方法称为并行进位并行进位或或先行进位先行进位,又,又称为称为同时进位同时进位。虽然并行进位加法器的运算速度快,但这是以增加硬件逻辑线虽然并行进位加法器的运算速度快,但这是以增加硬件逻辑线路为代价的。两种常用的路为代价的。两种常用的分组进位分组进位结构是:结构是:组内并行、组间串行的进位链。组内并行、组间串行的进位链。组内并
21、行、组间并行的进位链。组内并行、组间并行的进位链。4 4ALUALU举例举例SN74181SN74181框图框图 (1 1)SN74181SN74181外外特性特性SN74181SN74181的一位单元的一位单元(2 2)SN74181SN74181内部结构内部结构S3S2XiS1S0Yi0 010 0Ai0 1Ai+0 1AiBi1 0Ai+Bi1 0Ai1 1Ai1 10表表3-1 一位一位ALU单元的输入选择逻辑单元的输入选择逻辑 工作方式选工作方式选择择S3S2S1S0逻辑运算逻辑运算M=1算术运算算术运算M=0工作方式选工作方式选择择S3S2S1S0逻辑运算逻辑运算M=1算术运算算术
22、运算M=00000A减减11000A加加(A+B)0001AB减减11001A加加B0010+BA 减减11010BAB加加(A+B)0011逻辑逻辑1全全11011A+BA+B0100A加加(A+B)1100逻辑逻辑0全全00101AB加加(A+B)1101AB加加A0110A加加B B1110ABAB加加A0111A+B1111AA(3 3)SN74181SN74181功能表功能表(4 4)用)用SN74181SN74181构成构成1616位并行进位位并行进位ALUALU3.2.2 3.2.2 定点数运算方法定点数运算方法 数值运算的核心是指加、减、乘、除四则算术。由于计算机中数值运算的核
23、心是指加、减、乘、除四则算术。由于计算机中的数有定点和浮点两种表示形式,因此相应有的数有定点和浮点两种表示形式,因此相应有定点数定点数的运算和的运算和浮浮点数点数的运算。的运算。1 1定点加减运算定点加减运算(1 1)原码加减运算)原码加减运算 例如,加法指令指示做(例如,加法指令指示做(+A+A)+(-B-B),),由于一个操作数为负,由于一个操作数为负,实际操作是做减法(实际操作是做减法(+A+A)-(+B+B),),结果符号与绝对值大的符号相结果符号与绝对值大的符号相同。同理,在减法指令中指示做(同。同理,在减法指令中指示做(+A+A)-(-B-B),),实际操作是做加实际操作是做加法(
24、法(+A+A)+(+B+B),),结果与被减数符号相同。结果与被减数符号相同。(2 2)补码加减运算)补码加减运算 补码加法运算补码加法运算 X X +Y Y =X X+Y Y 补码减法运算补码减法运算 X XY Y =X X+(-+(-Y Y)=)=X X +-+-Y Y 机器负数机器负数 补码运算规则补码运算规则 根据以上讨论,可将补码加减规则归纳根据以上讨论,可将补码加减规则归纳如下:如下:参加运算的操作数用补码表示。参加运算的操作数用补码表示。符号位参加运算。符号位参加运算。若指令操作码为加,则两数直接相加;若操作码为减,则将减数连同若指令操作码为加,则两数直接相加;若操作码为减,则将
25、减数连同符号位一起变反加符号位一起变反加1 1后再与被减数相加。后再与被减数相加。运算结果用补码表示。运算结果用补码表示。【例【例3-33-3】X X =00110110=00110110,Y Y =11001101=11001101,求,求 X X+Y Y ,X X-Y Y 。(3 3)溢出判别)溢出判别在什么情况下可能产生溢出在什么情况下可能产生溢出?例:设定点整数字长例:设定点整数字长8 8位,补码表示(最高位为位,补码表示(最高位为符号位),表示范围为符号位),表示范围为-128-128 127127,运算结果超,运算结果超出此范围就发生溢出。出此范围就发生溢出。0 00111110
26、0001101(1)31+13=44 0 0101100 (2)-31 +(-12)=-430 01111110 1000010(3)63+66=1291 0000001 1 10000011 0111110(4)-63+(-66)=-1290 1111111 正溢正溢负溢负溢1 11000011 11101001 1010101 采用一个符号位判断采用一个符号位判断溢出溢出=S+A B=S+A B 采用最高有效位的进位判断采用最高有效位的进位判断溢出溢出=C +C =C C=C +C =C C 采用变形补码判断采用变形补码判断(双符号位双符号位)用用S S 、S Sn n分别表示结果最高符号
27、位和第分别表示结果最高符号位和第2 2符号位符号位 溢出溢出=S S=S S 00 011111100 1000010(3)63+66=12901 0000001 11 100000111 0111110(4)-63+(-66)=-12910 1111111 根据两个符号位是否一致来判断是否发生溢出根据两个符号位是否一致来判断是否发生溢出双双符号位的含义:符号位的含义:00 00 结果为正,无溢出结果为正,无溢出01 01 结果正溢出结果正溢出10 10 结果负溢出结果负溢出11 11 结果为负,无溢出结果为负,无溢出2 2移位移位 移位操作按移位性质可分为移位操作按移位性质可分为3 3种类型
28、:种类型:逻辑移位逻辑移位、循环移位循环移位和和算术移位算术移位。移位示意图移位示意图 3 3定点数乘除运算定点数乘除运算(1 1)无符号整数一位乘法)无符号整数一位乘法 计算机中的乘法运算采用的方法是:将计算机中的乘法运算采用的方法是:将n位乘转换为位乘转换为n次次“累加累加与移位与移位”,即每一步只求一位乘数所对应的新部分积,并与原部分,即每一步只求一位乘数所对应的新部分积,并与原部分积作一次累加,然后右移一位。积作一次累加,然后右移一位。右图是无符号整数一位乘的算法右图是无符号整数一位乘的算法流程图。图中使用了流程图。图中使用了3个寄存器个寄存器A、B和和C。B用来存放被乘数;用来存放被
29、乘数;C存放乘数;存放乘数;A初值为初值为0,然后存放部分积,然后存放部分积,最后最后存放乘积高位存放乘积高位。由于乘数每乘一位该位代码就不再由于乘数每乘一位该位代码就不再使用,因此用使用,因此用A和和C寄存器联合右移以寄存器联合右移以存放逐次增加的部分积,并且使每次存放逐次增加的部分积,并且使每次操作依据的乘数位始终在操作依据的乘数位始终在C的最低位。的最低位。乘法完成时,乘法完成时,A与与C存放的是最后乘积,存放的是最后乘积,其中其中C的内容是乘积的低位部分的内容是乘积的低位部分。实现无符号整数一位乘法的硬件原理框图如下图所示。实现无符号整数一位乘法的硬件原理框图如下图所示。图中,用进位触
30、发器图中,用进位触发器Ca保存每次累加暂时产生的进位,它的初值为保存每次累加暂时产生的进位,它的初值为0。在被。在被乘数送入乘数送入B、乘数送入乘数送入C,A和和Ca被置被置0后,控制逻辑控制乘法进入第后,控制逻辑控制乘法进入第1个节拍,这个节拍,这时由乘数位时由乘数位C0产生产生“加加B/不加不加”(不加相当于加(不加相当于加0)信号,用以控制被乘数)信号,用以控制被乘数B是否是否与上次部分积相加产生本次部分积,然后与上次部分积相加产生本次部分积,然后Ca、A、C一起右移一位。重复一起右移一位。重复n个节拍个节拍的操作后所得到的乘积存放在的操作后所得到的乘积存放在A和和C中。中。【例例3-1
31、03-10】11011101 10111011的的运算过程如图所示。运算过程如图所示。(2 2)无符号整数一位除法)无符号整数一位除法 在在计计算算机机中中实实现现除除法法运运算算,着着重重要要解解决决如如何何判判断断够够减减与与否否的的问问题题,可以用以下两种办法:可以用以下两种办法:用用逻逻辑辑线线路路进进行行比比较较判判别别。将将被被除除数数或或余余数数减减去去除除数数,如如果果够够减减就就执执行行一一次次减减法法并并商商1 1,然然后后余余数数左左移移一一位位;如如果果不不够够减减就就商商0 0,同时余数左移一位。这种方法的缺点是增加硬件代价。同时余数左移一位。这种方法的缺点是增加硬件
32、代价。直接做减法试探,不论是否够减,都将被除数或余数减去除数。直接做减法试探,不论是否够减,都将被除数或余数减去除数。若所得余数符号位为若所得余数符号位为0(即正数)表明够减,上商(即正数)表明够减,上商1;若余数符号位;若余数符号位为为1(即负数)表明不够减,由于已做了减法,因此上商(即负数)表明不够减,由于已做了减法,因此上商0并加上除并加上除数(即恢复余数);然后余数左移一位再做下一步。这就是数(即恢复余数);然后余数左移一位再做下一步。这就是恢复余恢复余数法数法。通过分析恢复余数法可以发现:通过分析恢复余数法可以发现:当当余余数数A A为为正正时时,上上商商1 1,下下一一步步A A左
33、左移移一一位位再再减减除除数数B B,相相当当于于执执行行2 2A A-B B的的运运算;算;若若余余数数A A为为负负,上上商商0 0,并并加加除除数数以以恢恢复复余余数数即即A+BA+B,下下一一步步左左移移一一位位减减去去除除数数B B,这实际相当于执行这实际相当于执行 2 2(A+BA+B)-B=2A+BB=2A+B故故在在出出现现不不够够减减时时,并并不不需需要要恢恢复复余余数数,只只是是下下一一步步要要进进行行2 2A+BA+B的的操操作作,因因此此称称为为不不恢恢复复余余数数法法或或加加减减交交替替法法。其其算算法法流程如右图所示。流程如右图所示。图图中中使使用用3 3个个寄寄存
34、存器器A A、B B和和C C。运运算算开开始始时时,n n位位除除数数存存放放在在B B中中,2 2n n位位被被除除数数存存放放在在A A和和C C寄寄存存器器中中。除除法法完完成成后后商商放放在在C C寄存器中,余数放在寄存器中,余数放在A A寄存器中寄存器中。从图中可以看出,在重复从图中可以看出,在重复n-1次操作后,次操作后,如果如果A中的余数为负,需要恢复余数做中的余数为负,需要恢复余数做A+B。这一步是必需的,因为最后的寄这一步是必需的,因为最后的寄存器存器A中应获得正确的正余数。中应获得正确的正余数。【例例3-113-11】用不恢复余数法计算用不恢复余数法计算000010000
35、000100000110011。解:解:A A、C C:0000100000001000;B B:00110011;B+1B+1:11011101。其运算过程如右图。其运算过程如右图。3.2.3 3.2.3 浮点数运算方法浮点数运算方法1 1浮点数加减运算浮点数加减运算 设有两个浮点数:设有两个浮点数:X X=MxMx ,Y Y=MyMy 。要实现要实现X X+Y Y的运算,的运算,需要以下需要以下4 4个步骤才能完成。个步骤才能完成。对阶操作对阶操作 对阶的规则是对阶的规则是:阶码小的数向阶码大的数对齐阶码小的数向阶码大的数对齐 实现尾数的加(减)运算实现尾数的加(减)运算 结果规格化和判溢
36、出结果规格化和判溢出a左规左规 b右规右规 若运算结果是非规格化的数,例如尾若运算结果是非规格化的数,例如尾数是数是11.1x11.1xx x或或00.0 x00.0 xx x形式,就需形式,就需要将尾数左移,每左移一位,阶码减要将尾数左移,每左移一位,阶码减1 1,直至满足规格化条件为止(即尾,直至满足规格化条件为止(即尾数最高有效位的真值为数最高有效位的真值为1 1,或尾数符,或尾数符与最高有效位不等),这个过程称为与最高有效位不等),这个过程称为左规。在左规的同时应判断结果是否左规。在左规的同时应判断结果是否会下溢,即阶码小于所能表示的最小会下溢,即阶码小于所能表示的最小负数。负数。若运
37、算结果尾数发生溢出,例如尾数若运算结果尾数发生溢出,例如尾数为为10.xx10.xxx x或或01.xx01.xxx x形式,这并不形式,这并不表明浮点结果会溢出,此时需调整阶表明浮点结果会溢出,此时需调整阶码,将尾数右移一位,阶码加码,将尾数右移一位,阶码加1 1,称,称为右规。右规时,应判断结果是否会为右规。右规时,应判断结果是否会上溢,即阶码大于所能表示的最大正上溢,即阶码大于所能表示的最大正数。数。舍入操作舍入操作 下面举一个浮点加的实例。下面举一个浮点加的实例。【例例3-123-12】设有两个浮点数设有两个浮点数X X=2 =2 0.1101010.1101012 2,Y Y=2 =
38、2 (-(-0.101011)0.101011)2 2。阶码阶码 尾数尾数 X X 浮浮=11,110=11,110;00.11010100.110101 Y Y 浮浮=11,111=11,111;11.01010111.010101 对阶对阶 =11=11,111111;00.01101100.011011(用(用0 0舍舍1 1入法)入法)E E=EXEX+-+-EYEY =11110+00001=11111=11110+00001=11111,即,即 E E=-1=-1,将将MXMX右移一右移一位,其阶码加位,其阶码加1 1,得,得 尾数求和尾数求和 00.011011+11.01010
39、1 11.110000 规格化及判溢出规格化及判溢出 左规得X+Y浮浮=11110;11.10000 舍入舍入 由于是左规,结果不需要舍入。由于是左规,结果不需要舍入。最后运算结果的真值为最后运算结果的真值为X+Y=2 (-0.100000)2。2 2浮点数乘除运算浮点数乘除运算(1 1)浮点数乘法运算)浮点数乘法运算 阶码相加并判溢出阶码相加并判溢出 尾数相乘尾数相乘 规格化处理规格化处理 (2 2)浮点数除法运算)浮点数除法运算 求阶差求阶差 尾数相除尾数相除 预置预置 检测被除数是否为检测被除数是否为0 0,若为,若为0 0则置商为则置商为0 0。如果除数为。如果除数为0 0,则置则置0
40、 0除数标志,转中断处理。除数标志,转中断处理。尾数调整尾数调整 3.2.4 3.2.4 十进制数加减运算十进制数加减运算1 1进制转换进制转换2 2直接进行十进制数运算直接进行十进制数运算 机器内部所处理的十进制数采用二机器内部所处理的十进制数采用二-十进制数(十进制数(BCDBCD码)表码)表示形式,其运算由示形式,其运算由BCDBCD码运算指令完成。目前,计算机实现码运算指令完成。目前,计算机实现BCDBCD码运算的方法有两种:码运算的方法有两种:机器的指令系统中设有专用进行机器的指令系统中设有专用进行BCDBCD码加、减、乘、除的运算指令。码加、减、乘、除的运算指令。先用二进制数的加、减、乘、除指令进行运算,紧接着用先用二进制数的加、减、乘、除指令进行运算,紧接着用BCDBCD码校正指码校正指令对运算结果进行校正。令对运算结果进行校正。3 3BCDBCD码的加法运算码的加法运算 在在BCDBCD码中,每位十进制数与小于或等于码中,每位十进制数与小于或等于9 9的二进制数的二进制数相同,但求得的和可能大于相同,但求得的和可能大于9 9,因而需要校正。,因而需要校正。