




已阅读5页,还剩91页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章机器数的运算方法及运算器 下一页 目录 4 1机器数的加减运算及其实现4 2定点乘法及其实现4 3定点除法及其实现4 4浮点数的算术运算4 5运算器的组成和结构 下一页 上一页 4 1机器数的加减运算及其实现 4 1 1原码加法4 1 2补码加法4 1 3减法运算4 1 4补码加减运算线路的实现 上一页 下一页 4 1 1原码加法 1 符号相同的两个原码相加 符号相同的两个原码相加 只要两个数的数值相加即可 其符号不变 例4 1 设X 10001 Y 01011 求Z X Y解 即 Z 11100 例4 2 设X 10001 Y 01011 求Z X Y解 即 Z 11100 上一页 下一页 2 符号相异的两个原码相加 先比较两数的绝对值大小 用绝对值大的数减去绝对值小的数 结果的符号是绝对值大的数的符号 例4 3 设X 10101 Y 01010 求Z X Y解 先比较X与Y的绝对值 本题 X Y 所以做减法 X Y 结果是Z 01011 例4 2 设X 01010 Y 10111 求Z X Y解 先比较X与Y的绝对值 本题 Y X 所以做减法 Y X 结果是Z 01101 上一页 4 1 1原码加法 下一页 用原码进行符号不同的两个数相加时有以下三步运算 比较两个数的绝对值的大小 绝对值大的数的绝对值减去绝对值小的数的绝对值 结果赋以绝对值大的那个数的符号 上一页 4 1 1原码加法 下一页 4 1 2补码加法 1 定点补码运算性质性质1两数之和的补码等于两数补码之和 X Y 补 X 补 Y 补 例4 5 设X 11010 Y 10101 用补码的加法求Z X Y解 加数和被加数的数值位都是5位 在数值位之前加1位符号位 这样 X 补 011010 Y 补 101011 X Y 补 X 补 Y 补 011010 101011 000101所以 X Y 00101 注意 在运算中 数值位和符号位有进位 本例采用单符号位 以2为模 进位的1就丢掉了 上一页 下一页 例4 6 设X 10101 Y 11010 用补码加法求Z X Y解 X 补 010101 Y 补 100110 X Y 补 X 补 Y 补 010101 100110 111011所以 X Y 00101 上一页 下一页 性质2一个负数的补码的补码就是这个负数的原码 X 补 补 X 原 例4 7 设有两个定点小数X 0 10011 Y 0 11001 求这两个负数补码的补码 解 X 原 1 10011 Y 原 1 11001 X 补 1 01101 Y 补 1 00111 X 补 补 1 10011 X 原 Y 补 补 1 11001 Y 原 上一页 下一页 计算机中计算结果的补码均可化成该数的原码 例4 8 设有两个定点小数X 0 1101 Y 0 0111 1 X Y 0 求这两数之和 解 X 补 1 0011 Y 补 0 0111 X 补 Y 补 1 0011 0 0111 1 1010 X Y 原 X 补 Y 补 补 1 1010 补 1 0110所以 X Y 0 0110用真值进行运算 X Y 0 1101 0 0111 0 0110结果相同 用补码做加法是数值位连同符号位一起参加运算的 但是在有溢出的情况下 用一般的补码加法就得不到正确的结果 再看下面的例子 上一页 下一页 例4 9 设有两个定点小数X 0 10111 Y 0 10001 用补码的加法求Z X Y解 X 补 0 10111 Y 补 0 10001 X Y 补 X 补 Y 补 0 10111 0 10001 1 01000Z X Y 0 11000两个大于0 5的正数相加 结果就为负值 结果显然是错误的 例4 10 设X 0 10111 Y 0 10001 用补码的加法求Z X Y解 X 补 1 01001 Y 补 1 01111 X Y 补 X 补 Y 补 1 01001 1 01111 0 11000Z X Y 0 11000两个绝对值大于0 5的负数相加 结果为正值 这也是错误的 它们的和超出了机器数所能表示的最大范围 即产生了溢出 在有溢出的情况下 用一般补码加法就无法得到正确结果 上一页 下一页 例4 11 设有两个定点小数X 0 10111 Y 0 10001 用补码的加法求Z X Y解 X 补 0 10111 Y 补 1 01111 X Y 补 X 补 Y 补 0 10111 1 01111 0 00110所以 Z 0 00110 没有发生溢出 结果是正确的 上一页 下一页 例4 12 设有两个定点小数X 0 10111 Y 0 10001 用补码的加法求Z X Y解 X 补 1 01001 Y 补 0 10001 X Y 补 X 补 Y 补 1 01001 0 10001 1 11010 X Y 补 补 1 00110Z X Y 0 00110所以 Z 0 00110 没有发生溢出 结果也是正确的 上一页 下一页 2 变形补码加法 变形补码是符号位用两位来表示的补码 变形补码的定义为 对于变形补码 补码的加法性质公式同样适用 即 X Y 变形补 X 变形补 Y 变形补 X 变形补 变形补 X 原用双符号位进行判断 若和的两个符号位相同 00或11 不发生溢出 若和的两个符号位相异 01或10 就说明发生了溢出 遇到溢出 就要停机进行如下处理 选取一个合理的比例因子H 2i 对每个加数都除以H 然后相加 其结果再乘以H 即得所求 上一页 下一页 下面我们对例4 9和例4 10用变形补码加法来求结果 例4 13 设X 10111 Y 10001 用变形补码的加法求Z X Y解 设比例因子H 2 则有所以 X Y 101000 上一页 下一页 例4 14 设X 10111 Y 10001 用变形补码的加法求Z X Y解 设比例因子H 2 则有 所以 X Y 101000 上一页 下一页 说明 舍入处理在变形补码运算中 加数除以H 2i 是通过把 X 补右移I位得到的 在移位时 末几位可能超出机器的最末位而丢失 造成误差 为了减少误差 通常要进行舍入处理 一般有两种方法 恒置1 即移位后机器末位总是1 上面的例子就是用的恒置1的方法 0舍1入 即移出去的数是0则抹去 移出去的数是1则进1到末位 符号位扩展补码在右移时 要注意符号位要一起移 且最左边一位要补上原符号位的值 这就叫做符号位扩展 即把符号位扩展到为3位 总结以上 得出补码相加的规则 若两数符号不同 相加的结果即为和的补码 若两数符号相同 相加后若其和的符号不变 则结果是和的补码 若两数符号相同 相加后若其和的符号改变 则表示发生了溢出 两个正数相加 结果的符号为 01 表示发生正溢出 两个负数相加 结果的符号为 10 表示发生负溢出 上一页 下一页 4 1 3减法运算 性质3两数之差的补码等于被减数的补码与负的减数补码之和 X Y 补 X 补 Y 补由性质1推导得 X Y 补 X Y 补 X 补 Y 补 例4 15 两个正数相减 被减数大于减数的例子 设X 11001 Y 10001 求Z X Y 解 X 补 00 11001 Y 补 11 01111 X Y 补 X 补 Y 补 00 11001 11 01111 00 01000X Y 01000所以 Z 01000 上一页 下一页 例4 16 两个正数相减 被减数小于减数的例子 设X 10011 Y 11001 求Z X Y 解 X 补 00 10011 Y 补 11 00111 X Y 补 X 补 Y 补 00 10011 11 00111 11 11010X Y 00110所以 Z 00110 上一页 下一页 例4 17 两负数相减 被减数大于减数的例子 设X 10011 Y 11001 求Z X Y 解 X 补 11 01101 Y 补 00 11001 X Y 补 X 补 Y 补 11 01101 00 11001 00 00110X Y 00110所以 Z 00110 上一页 下一页 例4 18 两负数相减 被减数小于减数的例子 设X 11001 Y 10011 求Z X Y 解 X 补 11 00111 Y 补 00 10011 X Y 补 X 补 Y 补 11 00111 00 10011 11 11010X Y 00110所以 Z 00110 上一页 下一页 4 1 4补码加减运算线路的实现 在线路实现上 若已有 Y 补 求 Y 补可用把 Y 补每一位 包括符号位和数值位 取反 再在最低位加1来实现 实现补码加减运算的逻辑电路如右图所示 下一页 上一页 4 1 4补码加减运算线路的实现 图中各个部件的名称和功能是 F表示多位并行加法器 它的功能是接收参加运算的两个数X和Y 实现加法运算 并在输出端给出本次运算结果 加法器的最低一位可以接收一个进位信号1 F X和Y临时存放参加运算数据的两个寄存器 X还用来保存运算的结果 A 与 门 功能是控制寄存器X输出的内容是否送到加法器F的左输入端 用X F信号控制 C 与 门 功能是控制加法器F的运算结果是否写回寄存器X 用F X信号控制 B 与或 门 功能是通过控制信号Y F和 F分别把Y寄存器中的内容是原数据送加法器F还是各位取反后送加法器F 下一页 上一页 运算原理如下 参加运算的两个数被送到寄存器X和Y 以补码的形式保存 要实现 X Y 补 X 需给出X F Y F两个控制信号 就可以把 X 补和 Y 补送入加法器F的两个输入端 加法器再完成两个补码 X 补和 Y 补的相加 加法完成之后 再通过F X命令 把相加结果送入寄存器X 若要完成 X Y 补 X 与 门A送出的还是 X 补 但 与或 门B送出的应是Y每一位的取反值 并在加法器的最低位加进位信号1 F 这样就得到 Y 补 通过加法器F相加 就实现了 X 补 Y 补 也就是 X Y 补 再通过F X命令 把 X Y 补送入寄存器X 上一页 下一页 4 2定点乘法及其实现 4 2 1原码一位乘法及其实现4 2 2定点补码一位乘法及其实现4 2 3原码两位乘法4 2 4补码两位乘法 上一页 下一页 4 2 1原码一位乘法及其实现 在定点计算机中 用两个原码表示的数相乘 其乘积的符号由两数的符号位异或得到 乘积的数值部分是两数的绝对值相乘之积 例如 有两个数X和Y X 原 XsX1X2 Xn Y 原 YsY1Y2 Yn则 X Y 原 X 原 Y 原 乘积的符号位为 Xs Ys乘积的数值部分为 X1X2 Xn Y1Y2 Yn 上一页 下一页 在计算机中其运算规则是 根据乘数Y绝对值每个数位上的值Yi是 1 还是 0 从最低位Y0开始 决定本次部分积是加上被乘数X的绝对值 还是加上全 0 得到的新部分积右移一位 再重复上面的动作 直到乘法做完为止 例4 19 X 11010 Y 10110 求Z X Y解 X 原 0 11010 Y 原 0 10110乘积的符号位Z0 0 0 0乘积的数值部分是两数的绝对值相乘 开始时 部分积为全 0 上一页 下一页 所得结果Z 0 1000111100 有时部分积的符号位出现 1 并不是出现了负数 而是部分积的值超出了 1 右移时符号位应补 0 上一页 下一页 要实现原码一位乘法 乘积的符号可以用异或门实现 异或门的两个输入为相乘两数的符号 输出即为乘积的符号 下图给出了实现原码一位乘法的逻辑电路框图 以实现对相乘两数的数值位相乘 上一页 下一页 实现原码一位乘法的逻辑电路框图 主要组成部件有 寄存器A 存放计算的部分积Z 具有自动移位功能 寄存器B 存放被乘数X 寄存器C 存放乘数Y 具有自动移位功能 加法器F 进行部分积和被乘数相加 计数器i 用来控制逐位相乘的次数 控制信号A F B F分别通过与门控制部分积 被乘数送入加法器F进行相加 控制信号A 2 A C 2 C分别控制寄存器A C自行右移一位 下一页 上一页 4 2 2定点补码一位乘法及其实现 两个补码数相乘 其结果应直接得到乘积的补码 X 补 Y 补 X Y 补 当被乘数X的符号为任意 乘数Y的符号为正 因为Y 0 Y 补 Y 则 X 补 Y 补 X 补 Y X Y 补这种情况 可以由两个补码数直接相乘得到正确的结果 运算过程中的加 移位等操作均按补码规则进行 上一页 下一页 当被乘数X的符号为任意 乘数Y的符号为负 因为Y 0 Y 补 2n Y 则 X 补 Y 补 X 补 2n Y X 补 2n X 补 Y而正确的乘积应为 X 补 Y 这种情况 结果应该进行修正 把 X 补 2n作为修正值 这就是修正法补码乘法 总结修正法补码乘法的运算规则是 符号位参加运算 结果的符号由运算结果得出 重复执行n步右移操作进行相加 当乘数为负时 需进行n 1步操作 进行修正 上一页 下一页 当被乘数X和乘数Y的符号都任意时 应该用比较法补码乘法 比较法又叫BOOTH法 是由修正法导出的用两个补码直接相乘后就得到正确结果的方法 乘数Y 2n Y 补 2n Y0Y1Y2 Yn 1 2n Y0 2n 1 Y1 2n 2 Y3 2n 3 Yn 1 20 2n Y0 Y0 2n 1 Y1 2n 2 Yn 1 20 2n 1 Y0 Y1 2n 2 Y2 2n 3 Yn 2 21 Yn 1 20 上式中 2n乘以Y0 该公式仍然正确 将上式提出2n 则有 Y 2 1 Y0 Y1 2 2 Y2 2 3 Yn 2 2 n 1 Yn 1 2 n 2n 2 1 Y1 Y0 2 2 Y2 Y1 2 3 Y3 Y2 2 n 1 Yn 1 Yn 2 2 n Yn Yn 1 2n 上一页 下一页 得 X 补 Y 2 1 Y1 Y0 X 补 2 2 Y2 Y1 X 补 2 3 Y3 Y2 X 补 2 n 1 Yn 1 Yn 2 X 补 2 n Yn Yn 1 X 补 2n也即 X 补 Y 2 1 Y1 Y0 X 补 2n 2 1 Y2 Y1 X 补 2n 2 1 Y3 Y2 X 补 2n 2 1 Yn 1 Yn 2 X 补 2n 2 1 Yn Yn 1 X 补 2n 写成递推公式 Z0 补 2 1 Yn Yn 1 X 补 2n Z1 补 2 1 Z0 补 Yn 1 Yn 2 X 补 2n Z2 补 2 1 Z1 补 Yn 2 Yn 3 X 补 2n Zi 补 2 1 Zi 1 补 Yn i 1 Yn i 2 X 补 2n Zn 1 补 2 1 Zn 2 补 Y1 Y0 X 补 2n 最后乘积为 Zn 1 补式中 Yn为附加位 在Yn 1以后 Yn 0 上一页 下一页 由此 可以总结出比较法补码乘法的规则 在作补码一位乘法时 在乘数的最末位后面再加一位附加位yn 开始时 yn 0 第一步运算是根据yn 1yn这两位的值判断后决定 然后再根据yn 2yn 1这两位的值判断第二步该作什么运算 再根据yn 3yn 2这两位的值判断第三步该作什么运算 如此等等 因为每进行一步 乘数都要右移一位 yn 2yn 1就移到yn 1yn位置上 作第三步时 原来的yn 3yn 2移到了yn 2yn 1位置上 所以每次只要判断yn 1yn这两位的值就行 判断规则如表4 1所示 上一页 下一页 补码一位比较乘法规则 上一页 下一页 比较法计算用流程图表示 上一页 下一页 例4 20 利用补码一位乘法计算Z X Y 其中X 0 1101 Y 0 1011 解 X 补 11 0011 Y 补 0 1011 X 补 00 1101乘积的数值部分是两数的绝对值相乘 开始时 部分积为全 0 所以 X Y 补 11 01110001 结果Z X Y 0 10001111 上一页 下一页 实现一位补码乘法的逻辑原理图如图4 4所示 它与一位原码乘法的逻辑原理图有些相似 不同的地方有以下几点 被乘数和乘数的符号位参加运算 乘数寄存器C有附加位Yn 其初始状态为 0 当乘数和部分积每次右移时 部分积最低位移入寄存器C的首位位置 所以寄存器C必须是具有右移功能的寄存器 被乘数寄存器B的每一位用原码或反码 可用触发器的Q端或端输出 经多路开关传送到加法器对应位的一个输入端 而多路开关的控制信号由Yn 1 Yn的输出译码器产生 当Yn 1Yn 01时 送 X 补 当Yn 1Yn 10时 送 X 补 即送寄存器B内容的反码且在加法器末位加1 寄存器A用来保存部分积 该寄存器也应具有右移的功能 其符号位与加法器的符号位始终一致 当计数器i n 1时 封锁A 2 A C 2 C控制信号 使最后一步不移位 上一页 下一页 补码一位乘法逻辑原理图 上一页 下一页 4 2 3原码两位乘法 定点原码两位乘法是根据乘数中相邻两位数码的值来确定乘法的每一步作什么运算 两位乘法的判别位是2位 即ynyn 1 共有4种可能 即00 01 10 11 其操作方法如下表所列 下一页 上一页 例4 21 设X 1101 Y 1001 用原码两位乘法求Z X Y解 以X为被乘数 Y为乘数 其判别位Y1Y0 01 Y3Y2 10 其两位乘法的运算过程如下 上一页 下一页 所得结果Z 1110101 例4 22 用原码两位乘法求Z X Y 其中X 101011 Y 001001 解 以X为被乘数 Y为乘数 其判别位Y1Y0 01 Y3Y2 10 Y5Y4 00 其两位乘法的运算过程如下 上一页 下一页 所得结果Z 110000011 说明 部分积减去被乘数X 是用补码进行运算 即用 X 补的方法实现 部分积减去被乘数所得结果一般为负数 这是因为部分积要右移2位 所以总是小于被乘数的缘故 当判别位为11时 要用上次部分积减被乘数 右移2位 再在下一个判别位上加1 其原因是判别位为11 即3 应加上3倍的被乘数 两种方法是等效的 符号位扩展的实质是采用几位加法器的问题 若采用n 2位加法器 符号位扩展2位 若采用n 3位加法器 则符号位应扩展3位 下一页 上一页 4 2 4补码两位乘法 进行定点补码两位乘法 要有3位判别位 3位判别位的组合关系为 2Yi Yi 1 Yi 2它们的组合值与相应的加法操作 如下表所示 下一页 上一页 判别位 在乘数的最低位后增加一位附加位 乘数的符号位要视数值部分的位数来决定 若数值部分的位数为偶数 则必须采用2位符号位 否则 就采用1位符号位 加法操作的次数 定点补码两位乘法运算所做加法操作的次数为乘数的位数 包括符号位 除以2的值 被乘数的符号位 可采用2位符号位或3位符号位 视情况而定 符号位扩展 在进行定点补码两位乘法运算中 在进行右移2位操作时 要注意符号位的扩展 即右移时符号要一起移 空出的符号位以符号的原值填充 最后一步的移位 视乘数的符号位而定 若符号位为2位 则不用移位 若符号位为1位 则要进行右移1位的操作 下一页 进行定点补码两位乘法运算需注意如下问题 上一页 例4 23 设X 1101 Y 0101 用补码的两位乘法求Z X Y解 X 补 11 0011 X 补 00 1101 Y 补 11 1011采用2位符号位 X Y 补的补码两位乘法运算过程如下 下一页 故运算结果为 X Y 补 00 01000001 所以Z X Y 1000001 上一页 4 3定点除法及其实现 4 3 1定点原码除法4 3 2定点补码除法 下一页 上一页 4 3 1定点原码除法 恢复余数法恢复余数法的运算规则如下 从被除数减去2n 1倍除数 如果第一次余数为正 则除法溢出 停止运算 如果第一次余数为负 表示除法不溢出 当余数为负时 将2n 1倍除数加到余数上 以恢复原来余数 然后减去2n 2倍的除数 如果余数为正 表示够减 商为 1 如果余数为负 表示不够减 商为 0 并需要恢复余数 重复第 步 一直做到余数减去20为止 计算结束 下一页 上一页 例4 24 设X 1011 Y 1101 用恢复余数法求Z X Y解 Y 补 110011 除法过程如右 所以 结果是 商D 0 1101 余数R 0 0111 下一页 上一页 加减交替法 运算规则如下 商的符号位单独处理 由ZS XS YS求得 被除数与除数同符号 被除数减去除数 被除数与除数异号 被除数加上除数 余数与除数同符号 上商 1 余数左移一位 下次减除数 得到新的余数 余数与除数异号 上商 0 余数左移一位 下次加除数 得到新的余数 重复第 步 共做n次 n为除数的位数 除法结束 上一页 下一页 加减交替法求两定点原码数的除法 例4 25 设X 1011 Y 1101 用加减交替法求Z X Y解 加减交替法中经常要加除数 减除数 减除数Y 就是加 Y 补 Y 补 110011 运算过程如下 得到同样结果 D 0 1101 余数R 0 0111 说明 如果最末一位商为0 则要在负余数上加上除数才是真正的余数 本题中 商到第3位时 商为0 此时真正的余数应为111101 1101 即1 010 下一页 上一页 例4 26 设X 00101011 Y 0110 用加减交替法求Z X Y解 Y 补 11010 运算过程如下 结果是 商D 0 0111 余数R 0 0001 上一页 下一页 实现原码加减交替除法的逻辑结构框图表示于下图中 上一页 下一页 4 3 2定点补码除法 用 X 补 Y 补直接求得 X Y 补 补码除法的运算规则如下 如果被除数与除数同号 求商时 用被除数减去除数 若两数异号 则用被除数加上除数的办法处理 若余数与除数同号 上商1 左移一位后下次作余数减除数操作 若余数与除数异号 上商0 左移一位后下次作余数加除数操作 商的符号是在第一次试算时求出的 若定点除不溢出 得到的就是正确的符号位的值 商的修正问题 在对精度不高时 将商的最低一位恒置1 此时最大误差为 2 n 若对商的精度要求较高时 可对n位数求商n 1次 按得到的不同结果对商进行修正 当商为负时 要在商的最低一位加1 从反码的结果得到商的正确的补码值 上一页 下一页 补码除法运算实例 例4 27 设X 1001 Y 1101 用补码除法求Z X Y 解 X 补 110111 Y 补 001101 Y 补 110011 运算过程如下 运算结果 商的补码 q 补 110101 余数的补码 r 补 110010 商q 1011 余数为R 1110 下一页 上一页 例4 28 设X 1011 Y 1101 用补码加减交替除法求Z X Y 解 X 补 001011 Y 补 001101 Y 补 110011 运算过程如下 运算结果 商的补码 q 补 001101 余数的补码 r 补 000111 商q 1101 余数为r 0111 上一页 下一页 4 4浮点数的算术运算 4 4 1浮点数的补码加法运算4 4 2浮点数的乘法运算4 4 3浮点数的除法运算 下一页 上一页 4 4 1浮点数的补码加法运算 完成浮点数加减运算的步骤 对阶 方法是 小阶向大阶看齐 阶码较小的数的尾数每向右移1位 该数阶码便加1 直到两数的阶码相同为止 对阶时要进行舍入处理 尾数求和 尾数连同符号相加 规格化 若进行右规 还需要进行舍入处理 下一页 上一页 例4 29 有两个浮点数A 210 0 110100 B 2100 0 101011 求A B 解 对阶 先把A B两数用补码表示 A 补 00 010 11 001100 B 补 00 100 00 101011可以看出 A 补的阶码小 应向 B 补阶码看齐 A 补阶码增2 尾数向右移2位 A 补 00 100 11 110011 B 补 00 100 00 101011 尾数求和 11110011 00101011100 011110 下一页 上一页 规格化上述结果为 A B 2100 0 011110 这是一个非规格化的数 对上述结果规格化 即进行左规 尾数向左移1位 阶码减1 得到最后结果 A B 2011 0 111100 舍入处理舍入处理不是对每一个题目都是必须的 主要看在对阶和右规格化尾数向右移位时 尾数的低位部分有否被丢掉 常用的舍入方法有两种 一种是 0舍1入 法 即如果右移时被丢掉的数位的最高位为0 则舍去 反之则将尾数的末位加 1 另一种是 恒置1 法 即只要有数位被移掉 就在尾数的末位恒置 1 下一页 上一页 4 4 2浮点数的乘法运算 浮点数乘法的运算规则是 乘积的尾数是相乘两数的尾数之积 乘积的阶码是相乘两数的阶码之和 结果也要进行规格化和舍入处理 如有两个浮点数X和Y X 2ex SxY 2ey S则Z X Y 2 ex ey Sx Sy 在具体实现中 两数阶码的求和运算可在阶码加法器中进行 两个尾数的乘法运算 就是定点数的乘法运算 下一页 上一页 4 4 3浮点数的除法运算 浮点数除法的运算规则是 商的尾数是相除两数的尾数之商 商的阶码是相除两数的阶码之差 结果也要进行规格化和舍入处理 如有两个浮点数X和Y X 2ex SxY 2ey Sy则Z X Y 2 ex ey Sx Sy 综上所述 浮点数的算术运算比定点数的算术运算要复杂许多 从运算器的结构来说 不但要有尾数运算器 而且还要有阶码运算器 阶码运算器用来求阶差 修改阶码等等 一般只进行加减运算 而尾数运算器不但要有加法器用以求和 还应有左移和右移的功能 以实现对阶操作和规格化操作 关于浮点运算器的一般结构 将在本章的最后小节进行介绍 下一页 上一页 4 5运算器的组成和结构 4 5 1算术逻辑单元ALU4 5 2通用寄存器组4 5 3状态寄存器4 5 4数据通路4 5 5运算器的基本结构4 5 6运算器组成实例 下一页 上一页 4 5 1算术逻辑单元ALU ALU的主要功能是对二进制数据进行算术运算 逻辑运算和各种移位操作 算术运算包括定点加 减 乘和除的运算 逻辑运算主要有逻辑与 逻辑或 逻辑异或和逻辑非操作 移位操作主要完成逻辑左移 逻辑右移 算术左移 算术右移及其它一些移位操作 74181是一种典型的4位ALU器件 下页图是74181的电路图 及用正逻辑和负逻辑表示的4位ALU74181的方框图 和74181的运算功能表 上一页 下一页 74181ALU的方框图 下一页 上一页 74181ALU的方框图 下一页 上一页 74181的运算功能表 下一页 上一页 4 5 2通用寄存器组 通用寄存器用来保存参加运算的操作数和运算的结果 寄存器是计算机中存取速度最快的存储器件 同时还可以兼作某些指令的专用寄存器 例如 IBMPC系列微型计算机中 其CPU有8个16位的通用寄存器 其结构如下图所示 下一页 上一页 4 5 3状态寄存器 记录运算结果状态 一般设置下面几种标志状态位 Z 零标志位 当运算结果为零时 Z位置1 结果非零时 Z位清0 N 符号标志位 当运算结果为负时 N位置1 结果为正时 N位清0 V 溢出标志位 当运算结果有溢出发生时 V位置1 无溢出时 V位清0 C 进位或借位标志位 当作加法时 如果运算中最高有效位向前有进位 C位置1 否则C位清0 当作减法运算时 如果不够减 最高位向前有借位时 C位置1 否则C位清0 下一页 上一页 4 5 4数据通路 通常把从一个功能部件向另一个功能部件传送数据所经过的功能部件 总线等称为数据通路 数据通路是个很重要的概念 正确理解数据通路 能帮助我们理解指令执行过程 理解计算机总体运行过程 在上面图所示的右半部分运算器中 MUX1 MUX2分别是两个多路数据选择器 用它们来选择当前哪两组数据送到ALU中 MUX1数据有三个来源 通用寄存器的输出 指令中的相对位移量和常数 0 MUX2数据也有三个来源 通用寄存器的输出 程序计数器的输出和数据寄存器的输出 ALU的输出信息通过内部数据总线送到通用寄存器中 下一页 上一页 假设这个通用寄存器组有两个输出端口RA和RB 有一个输入端口RI 寄存器中的数据以补码表示 并假设寄存器组中的寄存器1用R1表示 寄存器2用R2表示 寄存器3用R3表示 运算之前 R1 0110 R2 1100 Z N C V标志位全为0 第一种操作 R1加R2 结果送R3其操作过程如下 R1的内容通过端口RA输出 MUX1选择RA的内容送到ALU的A输入端 R2的内容通过端口RB输出 MUX2选择RB的内容送入ALU的B输入端 令ALU作A B算术加法操作 从Y输出端输出加的结果 并存入R3寄存器中 下一页 上一页 第二种操作 0减R1 结果送R3 即求与R1相补的数 其操作过程如下 R1的内容从RB输出 经过MUX2选择 送到ALU的B输入端 在MUX1处选择常数 0 送入ALU的A输入端 在ALU中选择A B的算术运算功能 由于运算器要进行的是补码运算 A B功能是通过 A 补 B 补来完成的 第三种操作 利用运算器计算操作数地址或转移地址假设当前执行转移指令 转移地址由程序计数器的值加上相对位移量得出 运算器计算转移地址的过程是 MUX2选择程序计数器PC的内容送往ALU的B输入端 MUX1选择指令字中的相对位移量到ALU的A输入端 令ALU做A B算术加运算 从Y输出的内容送往程序计数器PC中 这时PC中就为转移地址了 下次执行指令就从转移地址开始执行 下一页 上一页 第四种操作 关于移位操作为简单起见 我们以4位二进制数 最左边一位为符号位 为例 来说明移位操作的规则和操作结果 下一页 上一页 下一页 上一页 下一页 上一页 下一页 上一页 4 5 5运算器的基本结构 单总线结构的运算器运算器所有部件都接到同一条总线上的运算器结构是单总线结构的运算器 下一页 例如要执行一次加法操作 需要先把第一个操作数放入A缓冲器 然后再把第二个操作数放入B缓冲器 只有当这两个操作数同时出现在ALU的两个输入端 ALU才能执行加法操作 这种结构的运算器主要缺点是操作速度较慢 上一页 双总线结构的运算器 双总线结构的运算器如下图所示 在这种结构中 两个操作数同时加到ALU进行运算 只需要一次操作控制 而且马上可以得到运算结果 ALU的输出不能直接加到总线上 必须在ALU的输出端设置一个缓冲寄存器 整个操作分两步完成 第一步 在ALU的两个输入端输入操作数 形成结果并送入缓冲寄存器 第二步 把结果送入目的寄存器 下一页 上一页 三总线结构的运算器 三总线结构的运算器如下图所示 在三总线结构运算器中 ALU的两个输入端分别由两条总线供给 而ALU的输出则与第三条总线相连 三总线结构的运算器的特点是操作时间快 下一页 上一页 4 5 6运算器组成实例 最简单的运算器下图示出的一个运算器只有三个逻辑部件 算术逻辑运算单元ALU 累加寄存器AC和数据缓冲寄存器DR 是最简单的运算器 上一页 下一页 一台小型机的运算器 下页图示出了一台小型机的运算器逻辑方框图 该运算器的基本功能包括 两数的加减运算 一个数的加1运算 两数的逻辑加运算 一个数的变补 变反传送 以及数码的左移 右移 直送和字节交换等操作 该运算器由以下几部分组成 算术逻辑运算单元ALU 由4片74181ALU芯片和1片74182CLA Carrylookaheadadder 先行进位加法器 芯片组成16位字长的运算部件 因而具有两级先行进位 锁存器 在ALU的两个输入端上有两个锁存器A和B 用来暂存来自外部设备或存储器 经数据总线 的数据 或者暂存来自通用寄存器 R0 R7 和源寄存器 暂存寄存器中的数据 一旦数据放入锁存器 不管其外部的数据如何变化 ALU将依据锁存器A和B中的数据进行运算 上一页 下一页 上一页 下一页 移位器将ALU的输出进行左移 右移 直送 半字交换 因此这里的移位器也是一个4选1的多路开关 每次只能从4路输入中选择1路进行输出 寄存器组寄存器组包括8个可由程序编址的通用寄存器 R0 R7 和两个程序不能访问的工作寄存器 源寄存器SR和暂存寄存器DR 状态寄存器运算器中设有一个状态寄存器 运算过程中产生的 进位 溢出 零 负 等状态标志可以保存在这个寄存器中 以供程序判断之用 状态寄存器的状态数据也可经由数据总线送到存储器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025中级消防国考试题及答案
- 黑龙江高考试卷及答案
- 河南历年高考试卷及答案
- 北师大版八年级上学期数学第二章实数第2节二次根式练习题(含答案)
- 2025国考承德市国际合作岗位行测题库含答案
- 2025国考本溪市六外交外事类申论高频考点及答案
- 2025国考沧州市外交业务岗位申论必刷题及答案
- 2025国考廊坊市环境监察岗位申论题库含答案
- 2025国考运城市政务公开岗位行测预测卷及答案
- 2025国考发改委行测题库含答案
- 六年级道德与法治上册 (公民意味着什么)新课件
- 短视频创作PPT完整全套教学课件
- 2023年中国出版集团公司集团总部招聘考试题库及答案
- 民用航空航行情报工作规则
- 初中物理-初三物理模拟试卷讲评课教学课件设计
- 电力监控系统安全分区一览表及安全防护总体逻辑结构示意图
- GB 16325-2005干果食品卫生标准
- FZ/T 73001-2016袜子
- 曾奇峰精神分析初级50讲讲义
- 卡尔曼(Kalman)滤波课件
- 非居民金融账户涉税信息尽职调查管理办法专题培训广州课件
评论
0/150
提交评论