运算器和运算方法.ppt_第1页
运算器和运算方法.ppt_第2页
运算器和运算方法.ppt_第3页
运算器和运算方法.ppt_第4页
运算器和运算方法.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章 运算器和运算方法 3.1 定点运算器的组成和结 构 3.2 算术逻辑运算的基本电 路 3.3 定点加/减法运算 3.1 定点运算器的组成和结 构 定点运算器由算术逻辑运算单元( ALU)、输入数据选择电路、通用寄存器 组、输出数据分配电路组成,如下页图所 示。 其中算术逻辑运算单元的核心部件是 加法器,而加法器的逻辑组成包括加法单 元与进位传递逻辑单元。 CPU的结构 3.1.1 算术逻辑运算单元( ALU) 运算器中完成数据算术与逻辑运算的 部件称为算术逻辑运算单元(Arithmetic and Logic Unit,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 + 0110 10010 送往进位位 所以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补0100 0-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倍;若有溢出情 况发生,则移位后的结果数据不定。 X3 X2 X1 X0 X2 X1 X0 0 (2)算术右移SAR 原数X3X2X1X0 算术右移一位之后变为 可见,算术右移时,最低位被移出,最高位 保持不变。移位后的结果(如果没有溢出发生 )是原数的1/2。在没有溢出的情况下,如果右 移n位,则移位后的结果是原数的1/2n;若有溢 出情况发生,则移位后的结果数据不定。 X3 X2 X1 X0 X3 X3 X2 X1 (3)逻辑左移SHL 原数X3X2X1X0 逻辑左移一位之后变为 可见,逻辑左移时,最高位被移出,用0来补 充最低位,结果与算术左移相同。 (4)逻辑右移SHR 原数X3X2X1X0 逻辑右移一位之后变为 可见,逻辑右移时,最低位被移出,最高位 用0补充,结果与算术右移不同。 X3 X2 X1 X0 X2 X1 X0 0 X3 X2 X1 X0 0 X3 X2 X1 (5)循环左移ROL 原数X3X2X1X0 循环左移一位之后变为 可见,循环左移时,所有的位顺序向左移一 位,最低位由最高位循环移入。 (6)循环右移ROR 原数X3X2X1X0 循环右移一位之后变为 可见,循环右移时,所有的位顺序向右移一 位,最高位由最低位循环移入。 X3 X2 X1 X0 X3 X2 X1 X0 X2 X1 X0 X3 X0 X3 X2 X1 (7)带进位的循环左移RCL 原数X3X2X1X0 循环左移一位之后变为 (8)带进位的循环右移RCR 原数X3X2X1X0 循环右移一位之后变为 C X3 X2 X1 X0 0 C X3 X2 X1 C X3 X2 X1 X0 X3 X2 X1 X0 C 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补(mod 2n) 现根据X、Y的符号及绝对值的大小分 4种情况进行讨论。 (1)X0, Y0, X+Y0。相加两数都 是正数,故其和也一定是正数。正数的补 码和原码是一样的,可得: X补+Y补= X+Y=X+Y补(mod 2n) 例3-1:已知X= +00010100B,Y= +00000101B,进行补码加法运算,求X 补+Y补。 X补= 00010100 (+20的补码) +)Y补= 00000101 (+5的补码) X+Y补= 00011001 (+25的补码) 符号位 (2)X0, Y0, Y|X|,即2n- 1X+Y Y,则XY无借位,差值为正,XY补 =X补+Y补之和必大于2n,最高位有进位,得到的和即 是XY的原码。 例3-7:已知X= +0100100B,Y= +0000011B,进行 补码减法运算,求X-Y。 X补=X原=0100100 Y补=Y原=0000011 Y补=11111101 X补= 00100100 (+36的补码) +) Y补= 11111101 (-3的补码) X-Y补=100100001 (+33的补码) 丢失,有进位表示无借位,结果为正数 结果为XY= +0100001B。 (2)若XY,则XY有借位,差值为负,X Y补=X补+Y补之和必小于2n,最高位无进 位,得到的和即是(XY)= (YX)的补码。 例3-8:已知X= +0001010B,Y= +0100000B ,进行补码减法运算,求XY。 X补=X原=00001010 Y补= Y原=00100000 Y补= 11100000 X补= 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+1 Cs 进位位 0 01011 进位 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,由此可知

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论