《运算器和运算方法》PPT课件.ppt

上传人:sh****n 文档编号:12760385 上传时间:2020-05-22 格式:PPT 页数:44 大小:1.54MB
返回 下载 相关 举报
《运算器和运算方法》PPT课件.ppt_第1页
第1页 / 共44页
《运算器和运算方法》PPT课件.ppt_第2页
第2页 / 共44页
《运算器和运算方法》PPT课件.ppt_第3页
第3页 / 共44页
点击查看更多>>
资源描述
第3章运算器和运算方法,3.1定点运算器的组成和结构3.2算术逻辑运算的基本电路3.3定点加/减法运算,3.1定点运算器的组成和结构,定点运算器由算术逻辑运算单元(ALU)、输入数据选择电路、通用寄存器组、输出数据分配电路组成,如下页图所示。其中算术逻辑运算单元的核心部件是加法器,而加法器的逻辑组成包括加法单元与进位传递逻辑单元。,CPU的结构,3.1.1算术逻辑运算单元(ALU),运算器中完成数据算术与逻辑运算的部件称为算术逻辑运算单元(ArithmeticandLogicUnit,ALU)。如CPU结构图所示,ALU是运算器的核心,通常表示为两个输入端口,一个输出端口和多个功能控制信号端的一个逻辑符号。ALU处理数据的位数与机器的字长有关。,3.1.2通用寄存器组,现代计算机的中央处理器中都有一组通用寄存器,主要用于保存参加运算的操作数和运算结果。之所以在现代计算机中加入通用寄存器是因为它的存取速度要远远高于内存储器的速度。通用寄存器的数量越多,对提高运算器性能和程序执行速度越有利。通用寄存器组是对用户开放的,可以通过指令去使用这些寄存器。,如上图所示,8086微处理器有14个16位寄存器,包括8个通用寄存器,1个指令指针寄存器,1个标志寄存器,4个段寄存器。它们都有名称,编程时使用其名称代表其保存的内容。,3.1.3状态寄存器,状态寄存器主要用于记录一些运算结果的状态。通常情况下,状态寄存器由以下几种标志状态位组成:V(溢出标志位):当运算结果有溢出时,该位被置位;当运算结果没有溢出时,该位被清0。Z(零标志位):当运算结果为0时,该位被置位;当运算结果不为0时,该位被清0。C(进位或借位标志位):当作加法时如果最高位向前有进位,或当作减法时最高位向前无借位,该标志位被置位;当作加法时如果最高位向前无进位,或当作减法时最高位向前有借位,该标志位被清0。N(符号标志位):当运算结果为负数时,该位被置位;当运算结果为正数时,该位被清0。,3.1.4数据通路,从一个功能部件向另一个功能部件传送数据所经过的功能部件、总线等称为数据通路。下面以CPU结构图所示的CPU的各功能部件的右半部分运算器为例,解释其数据通路,进而说明运算器的工作过程。,在图中,MUX1和MUX2分别是两个多路数据选择器,用来选择当前哪两组数据送到ALU中。MUX1数据有两个来源:通用寄存器的输出和指令中的相对位移量。MUX2数据有3个来源:通用寄存器的输出、数据寄存器的输出和程序计数器的输出。ALU的输出信息通过内部数据总线送到通用寄存器中。如果通用寄存器有两个输出端口RA和RB,有一个输入端口RL。寄存器中的数据用补码表示。并且寄存器1用R1表示,寄存器2用R2表示,寄存器3用R3表示。运算之前R1=1100,R2=0110,V、Z、C、N标志位都为0。进行下面的操作后,请问标志位V、Z、C、N和R3的值如何变化?,1R1+R2,结果送到R3中操作过程:R1的内容通过端口RA输出,MUX1将RA的内容送入ALU的A输入端;R2的内容通过端口RB输出,MUX2将RB的内容送入ALU的B输入端。ALU进行A+B操作,从Y输出端输出结果,并存入R2寄存器中。ALU中的运算:1100+011010010送往进位位所以R3=0010,标志位C由0变为1,其他标志位不变。,2求与R1相补的数操作过程:R1的内容通过端口RB输出,经过MUX2的选择,将RB的内容送入ALU的B输入端。在MUX1处选择常数“0”送入ALU的A输入端,ALU进行A-B操作,从Y输出端输出结果,并存入R3寄存器中。由于运算器要进行的是补码运算,A-B的功能是通过A补+-B补来完成的。ALU中的运算:A补0000+-B补01000-B补0100所以R3=0100,结果为负,N标志位由0变为1,其他标志位不变。,3利用运算器计算操作数地址或转移地址如果当前执行转移指令,转移地址由程序计数器的值加上相对位移量得出。操作过程:MUX1选择指令寄存器中的相对位移量送入ALU的A输入端,MUX2选择程序计数器PC的内容送入ALU的B输入端,ALU进行A+B运算,从Y输出端输出结果,并存入PC中,即为转移地址。下次执行指令就从转移地址开始执行。,4关于移位操作这里以4位二进制数最左边一位为符号位为例,来说明移位操作的规则和操作结果。(1)算术左移SAL原数X3X2X1X0算术左移一位之后变为可见,算术左移时,最高位被移出,用0来补充最低位。移位后的结果(如果没有溢出发生)是原数的2倍。在没有溢出的情况下,如果左移n位,则移位后的结果是原数的2n倍;若有溢出情况发生,则移位后的结果数据不定。,(2)算术右移SAR原数X3X2X1X0算术右移一位之后变为可见,算术右移时,最低位被移出,最高位保持不变。移位后的结果(如果没有溢出发生)是原数的1/2。在没有溢出的情况下,如果右移n位,则移位后的结果是原数的1/2n;若有溢出情况发生,则移位后的结果数据不定。,(3)逻辑左移SHL原数X3X2X1X0逻辑左移一位之后变为可见,逻辑左移时,最高位被移出,用0来补充最低位,结果与算术左移相同。(4)逻辑右移SHR原数X3X2X1X0逻辑右移一位之后变为可见,逻辑右移时,最低位被移出,最高位用0补充,结果与算术右移不同。,(5)循环左移ROL原数X3X2X1X0循环左移一位之后变为可见,循环左移时,所有的位顺序向左移一位,最低位由最高位循环移入。(6)循环右移ROR原数X3X2X1X0循环右移一位之后变为可见,循环右移时,所有的位顺序向右移一位,最高位由最低位循环移入。,(7)带进位的循环左移RCL原数X3X2X1X0循环左移一位之后变为(8)带进位的循环右移RCR原数X3X2X1X0循环右移一位之后变为,3.1.5定点运算器的基本结构,定点运算器包括ALU、阵列乘除器、寄存器、多路开关、缓冲器、数据总线等逻辑部件。定点运算器大体有如下3种结构形式。,1.单总线结构的运算器如图(a)所示。由于所有部件都要接到同一单总线上,为了把两个操作数输入到ALU,需要分两次来做,而且还需要A和B两个缓冲寄存器。只有当这两个操作数同时出现在ALU的两个输入端时,ALU才能执行加法。当加法结果出现在单总线上时,由于输入数据已保存在缓冲寄存器中,它并不会对输入数据产生影响。然后,再由第3个传送命令把加法的“和”传送到目的寄存器中。由此可见,这种结构的主要缺点是操作速度较慢。,2.双总线结构的运算器如图(b)所示。在这种运算器中,两个操作数同时送到ALU进行运算,只需要一次操作数控制,而且马上就可以得到运算结果。从图中可以看出,两条总线各自把其数据送至ALU的输入端。特殊寄存器分成两组,它们分别与一条总线交换数据。这样,通用寄存器中的数就可以进入到任一组特殊寄存器中去,从而使数据传送更为灵活。3.三总线结构的运算器如图(c)所示。在三总线结构中,ALU的两个输入端分别由两条总线供给,而ALU的输出则与第3条总线相连。这样,算术逻辑操作就可以在一步的控制之内完成。由于ALU本身有时间延迟,所以,打入输出结果的选通脉冲必须考虑到包括这个延迟。另外,设置了一个总线旁路器。如果一个操作数不需要修改,而直接从总线2传送到总线3,那么可以通过控制总线旁路器把数据传出;如果一个操作数传送时需要修改,那么就借助于ALU。很显然,三总线结构的运算器的特点是操作速度快。,3.2算术逻辑运算的基本电路,3.2.1半加器,有两个输入端,以供两个代表数字(A0、B0)的电位输入;有两个输出端,用以输出总和S0和进位C0。这样的电路可能出现的状态可用左图表示。,从下图中可以看出这分别是“与”和“异或”的关系,可以用“与门”和“异或门”组成半加器,如(a)图。在电子技术中常把基本元件的电路图简化成符号,如图(b)所示就是半加器的符号。,3.2.2全加器,全加器有3个输入端,即Ai、Bi和Ci,有两个输出端,即Si和Ci+1。其真值表和电路图如下图所示。,由此图分析可知,其总和Si可用“异或门”来实现,而其进位Ci+1可用3个“与门”和1个“异或门”来实现。可见全加器可以处理低位进位,如果多个一位全加器按进位方向串联起来,就可以实现多位全加。全加器的电路如下图所示。,3.3定点加/减法运算,数据在计算机中可以采用原码、反码和补码表示,但是对于计算机来讲,原码加减法运算规则比较复杂,实际上机器中很少采用原码表示数的加减法运算,而用补码来表示,其运算结果也是用补码表示的。若结果的符号为0,表示正数,得到的补码即是原码,只需在数值部分前面加上“+”号,即为真值。若结果的符号为1,表示负数,得到的是补码,这时需要对得到的补码再求补码,得到原码,然后在数值部分前面加上“-”号才为真值。,3.3.1定点补码的加法运算,规则:X补+Y补=X+Y补(mod2n)现根据X、Y的符号及绝对值的大小分4种情况进行讨论。(1)X0,Y0,X+Y0。相加两数都是正数,故其和也一定是正数。正数的补码和原码是一样的,可得:X补+Y补=X+Y=X+Y补(mod2n),例3-1:已知X=+00010100B,Y=+00000101B,进行补码加法运算,求X补+Y补。X补=00010100(+20的补码)+)Y补=00000101(+5的补码)X+Y补=00011001(+25的补码)符号位,(2)X0,Y0,且|X|Y|,即0X+Y0,Y|X|,即2n-1X+Y0由补码定义可知:X补=XY补=2n+YX+Y补=2n+(X+Y)X补+Y补=X+2n+Y=2n+(X+Y)=X+Y补(mod2n)结果得到的是一个负数的补码形式。,例3-3:已知X=+00000011B,Y=-01101001B,进行补码加法运算,求X补+Y补。X补=00000011(+3的补码)+)Y补=11101001(-23的补码)X+Y补=11101100(-20的补码)符号位,(4)X0,Y0,X+YY,则XY无借位,差值为正,XY补=X补+Y补之和必大于2n,最高位有进位,得到的和即是XY的原码。例3-7:已知X=+0100100B,Y=+0000011B,进行补码减法运算,求X-Y。X补=X原=0100100Y补=Y原=0000011Y补=11111101X补=00100100(+36的补码)+)Y补=11111101(-3的补码)X-Y补=100100001(+33的补码)丢失,有进位表示无借位,结果为正数结果为XY=+0100001B。,(2)若XY,则XY有借位,差值为负,XY补=X补+Y补之和必小于2n,最高位无进位,得到的和即是(XY)=(YX)的补码。例3-8:已知X=+0001010B,Y=+0100000B,进行补码减法运算,求XY。X补=X原=00001010Y补=Y原=00100000Y补=11100000X补=00001010(+10的补码)+)Y补=11100000(32的补码)X+Y补=11101010(22的补码)无进位,表示有借位,结果为负数结果为XY=1101010B。,3.3.4溢出,采用补码运算时,若结果的数值超出了补码能表示的范围,计算结果错误,我们把这种情况称为溢出。注意:溢出与进位的性质是不同的,溢出主要用于判断带符号数的运算结果是否超过数的表示范围,而进位是指运算结果的最高位向更高位进位或借位。例如:01101001(+105)+00110010(+50)10011011符号位按照补码规定10011011为101D,这显然是错误的,因为105D+50D=155D超过了8位有符号数所能表示范围的最大值+127D,使数值部分占据了符号位的位置,导致了运算错误。,下面研究一下判断溢出的方法。常用的判断溢出的方法有多种,这里重点对利用双进位时位的状态判断溢出作介绍。该方法主要是利用字节的最高位(符号位)和次高位(数值部分的最高位)的进位状态来判断结果是否发生溢出。为了说明这种方法,引入两个符号CS和CS+1,其中CS表示两数值中次高位向符号位进位时的状态,有进位,则CS=1,否则为0;CS+1表示两个符号位向更高位进位时的状态,有进位,则CS+1=1,否则为0。并且,参加运算的两个数X、Y的绝对值小于2n1,只有当两个数同时为正或同时为负,其和X+Y超过允许的表示范围时,才会发生溢出。,(1)X和Y均为正数,当X+Y2n1时,不会发生溢出。例3-9:已知X=+0101101B,Y=+0101110B,求X+Y。CS+1Cs进位位001011进位00101101+45补+00101110+46补X+Y补=01011011由于X+Y2n1,CS=0,X和Y均为正,其符号位均为0,所以CS+1=0,由此可知,当CS+1CS=00时,不会发生溢出。当X+Y2n1时,CS=1,X和Y均为正,其符号位均为0,所以CS+1=0,由此可知,当CS+1CS=01时,会发生溢出。,(2)X和Y均为负数,当-2n1X+Y0时,不会发生溢出。例3-11:已知X=-0000101B,Y=-0000010B,求X+Y。CS+1CS进位位11111110进位111110115补+111111102补X+Y补=11111001当CS+1CS=11时,不会发生溢出。当X+Y-2n1时,会发生溢出。当CS+1CS=10时,会发生溢出。综上所述,当CS+1CS=00或CS+1CS=11时不会产生溢出;但当CS+1CS=10或CS+1CS=01时则产生溢出。换言之,CS+1和CS相异时产生溢出。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!