SlideShare ist ein Scribd-Unternehmen logo
1 von 47
系 统 总 线 存储器  运算器  控制器  接口与通信  输入 / 输出设备 林楠 办公室: 408 办公电话: 0371-63887293 电子邮件: [email_address] 《 计算机组成原理 》 第六章 计算机的运算方法
4 、定点除法运算 4.1 、原码一位除法 4.2 、补码一位除法 4.3 、阵列除法器 5 、浮点四则运算 5.1 、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2 、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法
原码一位除法基本上是从手算演变过来, 符号位单独处理 。 两个原码表示的数相除运算规则: 商的符号位 :两数的 符号 相 异或 商的数值部分: 两作数的 绝对值相除 。 运算方法与普通的十进制小数除法相类似, 设  n  位被乘数 X  和 乘数 Y  用 定点小数 表示(定点整数同样) 被除数:   [X] 原  =  X f   . X n-1   … X 1  X 0 除数:   [Y] 原  =  Y f  . Y n-1   … Y 1  Y 0 商  [ Q ] 原 = ( X f  ⊕ Y f  ) + (0.X n-1  … X 1  X 0 ) / (0.Y n-1  … Y 1  Y 0 ) 于是原码与原码相除就变成如何进行 两个正数相除 的问题了。 两种除法:  恢复余数法 不恢复余数法(加减交替法) 4.1 、原码一位除法
人会心算,一看就知道够不够减。但机器不会,必须先作减法。 若余数为正,才知道够减;若余数为负,才知道不够减 。 不够减时,必须恢复原来的余数, 顾名思义 恢复余数法 。 被除数  X=0.1011   除数 Y=0.1101   求  X/Y 。商精确到小数点后四位。 手算方法计算步骤如下: 4.1 、原码一位除法 0.1101 0.1101   0 . 1011 -  0 . 1101  + 0.1101 0 . 10110   -  0 .   0 1101   0 . 010010   -  0 .   00 1101   0 . 0001010   -  0 .   000 1101  + 0.0001101   0 . 00010100   -  0 .   0000 1101   0 . 00000111   - Y 不够减, + Y , 整数位商 0 , X 低位补 0 - 2 -1 Y 够减,商 1 , X 低位补 0   - 2 -2 Y 够减,商 1 , X 低位补 0   - 2 -3 Y 不够减,  + 2 -3 Y , 商 0 , X 低位补 0 - 2 -4 Y 够减,商 1
4.1 、原码一位除法 1 )恢复余数法 1 、符号单独处理,  Q  f  = ( X f  ⊕ Y f  )   ,取绝对值相除; 2 、作减法,若不溢出,运算开始; 3 、  -Y , 若余数  R  为正(够减),商  1  ,左移一位 ; -Y , 若余数  R  为负(不够减),商  0  ,恢复余数,左移一位; 4 、重复  n  步; 5 、最后一步余数为负(不够减),应恢复为正余数( +[Y] 补 )。 右移除数 ,可以通过 左移被除数 ( 余数 ) 来替代, 左移出界的被除数 (  余数  )  的高位都是无用的零, 对运算不会产生任何影响。 如果, 余数 一共被 左移 了四次,需要校正。 最终的余数 再右移四次 ,即  × 2 -4 。得: R = R 4  × 2 -4  = 0.0111 ×  2 -4  = 0.00000111
寄存器 A 存放  被除数  X = 0.1011   寄存器 B 存放  除数  Y = 0.1101   寄存器 C 中存放 商  X / Y   另外设置计数器 CR 控制循环次数。 -Y  用  [-Y] 补 取代;  [Y] 补 = 0.1101  [-Y] 补 = 1.0011 4.1 、原码一位除法 被除数 X = 0.1011 除数 Y = 0.1101
被除数 X (余数)  商   操作 0. 1011   0 0 0 0 0 +  1. 0011   - Y  ( + [-Y] 补 ) 1. 1110  0 0 0 0  0   负数: 不够减, 商 0 +  0. 1101   +Y   恢复余数, ( + [Y] 补 ) 0. 1011  0 0 0 0  0  余数和商同时 左移一位 1. 0110  0 0 0  0  0  +  1. 0011   - Y  ( + [-Y] 补 ) 0. 1001  0 0 0  0 1   正数: 够减, 商 1 1. 0010  0 0  0   1  0  余数和商同时 左移一位 +  1. 0011   - Y  ( + [-Y] 补 ) 0. 0101  0 0  0 1 1   正数: 够减, 商 1 0. 1010  0  0 1 1  0  余数和商同时 左移一位 +  1. 0011   - Y  ( + [-Y] 补 ) 1. 1101  0  0 1 1 0   负数: 不够减, 商 0 +  0. 1101   + Y  恢复余数, ( + [Y] 补 )  0. 1010  0  0 1 1 0   余数和商同时 左移一位 1. 0100  0 1 1 0  0 +  1. 0011   - Y  ( + [-Y] 补 ) 0.   0111   0 1 1 0 1   正数: 够减, 商 1 余数再右移四位得正确结果。 被除数 X = 0.1011 除数 Y = 0.1101   商 0.1101  余 0.0111* 2 -4
2 )加减交替法 加减交替法是对恢复余数除法的一种修正。 当余数为负时,不恢复,继续求下一位商, 但 用加上除数  (+Y)  的办法来取代  (-Y)  操作 ,其他操作不变。  加减交替法的规则如下: 余数为正,商 1 ,左移一位,减去除数 ; 余数为负,商 0 ,左移一位,加上除数 。 此方法不用恢复余数,所以又叫 不恢复余数法 。 但若最后一次上商为 0 ,则仍需恢复余数 。 4.1 、原码一位除法
被除数(余数)  商   操作 0. 1011   0 0 0 0 0 +  1. 0011   - Y  ( + [-Y] 补 ) 1. 1110  0 0 0 0  0   负数: 商 0 1. 1100  0 0 0  0  0  余数和商同时左移一位 +  0. 1101   + Y 0. 1001  0 0 0  0 1   正数: 商 1 1. 0010  0 0  0   1  0  余数和商同时左移一位 +  1. 0011   - Y  ( + [-Y] 补 ) 0. 0101  0 0  0 1 1   正数: 商 1 0. 1010  0  0 1 1  0  余数和商同时左移一位 +  1. 0011   - Y  ( + [-Y] 补 ) 1. 1101  0  0 1 1 0   负数: 商 0 1. 1010  0 1 1 0  0  被除数和商同时左移一位 +  0. 1101   + Y  0.   0111   0 1 1 0 1   正数: 商 1 4.1 、原码一位除法 余数再右移四位得正确结果。 被除数 X = 0.1011 除数 Y = 0.1101   商 0.1101  余 0.0111* 2 -4
4 、定点除法运算 4.1 、原码一位除法 4.2 、补码一位除法 4.3 、阵列除法器 5 、浮点四则运算 5.1 、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2 、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法
4.2 、补码一位除法 补码加减交替法 ,  法则如下:  ( [ R i ] 补 为余数,数值部分共 n 位 ) 1) 比较  2) 上商  3) 求新余数 1) 比较  2) 上商  3) 求新余数 由上式化简 2 [ R i ] 补 -  [Y] 补 2 [ R i ] 补 + [Y] 补 1 0 同号 ( 不够减 ) 异号 ( 够减 ) [X] 补 +[Y] 补 1 异号 2 [ R i ] 补 -  [Y] 补 2 [ R i ] 补 + [Y] 补 1 0 同号 ( 够减 ) 异号 ( 不够减 ) [X] 补 -[Y] 补 0 同号 求新余数 ( 共 n 步 ) 上商 [R] 补 ,[Y] 补 符号 求余数 [R] 补 商符 [X] 补 [Y[] 补 符号 2 [ R i ] 补  + [Y] 补 0 异号 2 [ R i ] 补  + [-Y] 补 1 同号 求新余数 ( 共 n 步 ) 上商 [R] 补 ,[Y] 补 符号
4 )商的符号 两种常见的做法: 方法一: 第一步比较 XY 同号做 [X] 补 – [Y] 补 ;异号做 [X] 补 +[Y] 补 ; 方法二: 一开始就将被除数 X 当作初始余数 R 0 , R 0 与 Y 同号商 1 ,异号商 0 ,得的假商 最后求反 进行校正。 //  由于方法一开始比较被除数与除数,后来比较余数与除数, 控制部署不一样。所以采用方法二,全部是比较余数与除数, 便于计算机控制。 5 )商的校正 对于 方法一 , 商符正确,商末位恒置 1 。  对于 方法二 , 商符取反,商末位恒置 1 。 4.2 、补码一位除法
4.2 、补码一位除法 被除数 X (余数 R )  商 Q   操作 0. 1011   0 0 0 0 0 +  1. 0011   X Y  同号: + [-Y] 补 1. 1110  0 0 0 0  0   R Y  异号: 商 0 1. 1100  0 0 0  0  0  余数 R 和商同时 左移一位 +  0. 1101   + [Y] 补 0. 1001  0 0 0  0 1   R Y  同号: 商 1 1. 0010  0 0  0   1  0  余数 R 和商同时 左移一位 +  1. 0011   + [-Y] 补 0. 0101  0 0  0 1 1   R Y  同号: 商 1 0. 1010  0  0 1 1  0  余数 R 和商同时 左移一位 +  1. 0011   + [-Y] 补 1. 1101  0  0 1 1 0   R Y  异号: 商 0 1. 1010  0 1 1 0  0  余数 R 和商同时 左移一位 +  0. 1101   + [Y] 补 0.   0111   0 1 1 0 1   商的末位恒置 1 使用方法一:   [X] 补 =0.1011  [Y] 补 =0.1101  [-Y] 补 =1.0011 余数再右移四位得正确结果。 被除数 X = 0.1011 除数 Y = 0.1101   商 0.1101  余 0.0111* 2 -4
4.2 、补码一位除法 被除数 X (余数 R )  商 Q   操作 0. 1011   0 0 0 0  1   R Y  同号: 商 1   1. 0110  0 0 0  1  0  余数 R 和商同时 左移一位 +  1. 0011   + [-Y] 补 0. 1001  0 0 0  1   1   R Y  同号: 商 1 1. 0010  0 0  1   1  0  余数 R 和商同时 左移一位 +  1. 0011   + [-Y] 补 0. 0101  0 0  1 1 1   R Y  同号: 商 1 0. 1010  0  1 1 1  0  余数 R 和商同时 左移一位 +  1. 0011   + [-Y] 补 1. 1101  0  1 1 1 0   R Y  异号: 商 0 1. 1010  1 1 1 0  0  余数 R 和商同时 左移一位 +  0. 1101   + [Y] 补 0.   0111   1 1 1   0  0 0  1 1 0 1  校正:商符取反,商末位置 1 使用方法二:   [X] 补 =0.1011  [Y] 补 =0.1101  [-Y] 补 =1.0011 余数再右移四位得正确结果。 被除数 X = 0.1011 除数 Y = 0.1101   商 0.1101  余 0.0111* 2 -4
4.2 、补码一位除法 被除数 X (余数 R )  商 Q   操作 0. 0100   0 0 0 0  0   R Y  异号: 商 0   0. 1000  0 0 0  0  0  余数 R 和商同时 左移一位 +  1. 1000   + [Y] 补 0. 0000  0 0 0  0   0   R Y  异号: 商 0 0. 0000  0 0  0   0  0  余数 R 和商同时 左移一位 +  1. 1000   + [Y] 补 1. 1000  0 0  0 0 1   R Y  同号: 商 1 1. 0000  0  0 0 1  0  余数 R 和商同时 左移一位 +  0. 1000   + [-Y] 补 1. 1000  0  0 0 1 1   R Y  同号: 商 1 1. 0000  0 0 1 1  0  余数 R 和商同时 左移一位 +  0. 1000   + [-Y] 补 1.   1000   0 0 1   1  0 1  0 1 1 1  校正:商符取反,商末位置 1 使用方法二:   [X] 补 =0. 0100  [Y] 补 = 1.1000  [-Y] 补 = 0.1000 余数再右移四位得正确结果。 被除数 X = 0. 0100 除数 Y = 1.1000   商 1.0111  余 11.1000* 2 -4
4 、定点除法运算 4.1 、原码一位除法 4.2 、补码一位除法 4.3 、阵列除法器 5 、浮点四则运算 5.1 、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2 、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法
和阵列乘法器相比, 阵列除法器 也是一种 并行运算 部件,采用大规模集成电路制造。它比早期的串行除法器的控制线路少,并提供较高的运算速度。 4.3 、阵列除法器  P297 可控加法 / 减法单元  (CAS) 0.1101 0.1101   0 . 1011 0   -  0 .   0 1101   0 . 010010   -  0 .   00 1101   0 . 0001010   -  0 .   000 1101   0 . 00010100   -  0 .   0000 1101   0 . 00000111
4 、定点除法运算 4.1 、原码一位除法 4.2 、补码一位除法 4.3 、阵列除法器 5 、浮点四则运算 5.1 、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2 、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法
浮点数的表示形式 ( 以 2 为底 ) : X = S · 2  j S  尾数 ,绝对值小于 1 的 规格化 二进制 小数, 决定数的有效精度 。 j  阶码 ,用 移码 或 补码 表示的 整数 , 决定数的表示范围 。 2  基数 例如: A = 104 = 01101000 = 0.1101000 * 2 7 B = 40  = 0.101000 * 2 6 浮点数的表示: A =  0 0 111   1101000  B =  0 0 110  101000 5 、浮点四则运算 所以,阶码相同,尾数才能运算, 等于先把小数点对齐,对大阶!
IEEE754  国际标准: 阶码 j  用移码、基为 2 、尾数 S 用原码。   符号位数  阶码  j  位数  尾数 S 位数  总位数 短浮点数 1   8 23 32 长浮点数 1   11 52 64 临时浮点数 1   15 64 80 通常计算机中, 尾数 用 补码 表示, 阶码 用 补码或移码 表示。 移码:[ X ] 补 的符号位取反,即得[ X ] 移 。 例:   X=+1011 [ X ] 补 =01011 [ X ] 移 =11011 X=-1011  [ X ] 补 =10101 [ X ] 移 =00101 5 、浮点四则运算
移码具有以下特点: 1 ) 最高位符号位, 1 表示正号 , 0 表示负号 。 如果是双符号位,最高位保持 0 : 01 正数, 00 负数 。 溢出判断: 最高位为 1 , 10 上溢, 11 下溢。 2 )在计算机中,移码 只执行加减法 运算,且运算结果 +2 n 修正 ; 即对 结果的符号位取反 ,得到[ X ] 移 。 例如: X=+1010  Y=+0011,  则[ X ] 移 =1.1010 [ Y ] 移 =1.0011 [ X ] 移 + [ Y ] 移 =1.1010+1.0011 =  0 1101,  修正: [ X+Y ] 移 =  0 1101+ 10000  = 1 1101 3 )数据 0 有唯一的编码,即[ +0 ] 移 = [ -0 ] 移 =1000…0 。 [ X + Y ] 移  =   [ X ] 移 + [ Y ] 补 [ X  - Y ] 移  =   [ X ] 移 + [ -Y ] 补 5 、浮点四则运算
浮点数的阶码为什么用移码表示呢? 1 ) 正数的移码大于负数的移码: [X] 移   > [-X] 移 原码、补码、反码都不具备。 2 ) 如果: X > Y  则  [X] 移   > [Y] 移 所以,在浮点运算中,可以方便地通过比较移码的大小来实现阶码 真值大小的比较,其他三种码都不具备这一特性。 5 、浮点四则运算
4 、定点除法运算 4.1 、原码一位除法 4.2 、补码一位除法 4.3 、阵列除法器 5 、浮点四则运算 5.1 、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2 、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法
设有两浮点数 X , Y ,其中: X = S X  * 2  j X  Y = S Y  * 2  j Y X±Y 运算执行以下五步: 1) “ 对大阶”操作 对大阶 :使两数的阶码值相等。 求阶码差 Δj , Δj≠0 时,小阶码的尾数右移 Δj 位:阶码  +Δj , 2)  尾数的加 / 减运算  两尾数进行加 / 减运算。 3)  规格化操作 尾数符号  01  或  10 :尾数溢出 。 右规: 尾数右移 1 位,阶码 +1 尾数符号  00  或  11 :尾数不溢出 。 但如最高数值位与符号位相同 :  00  0   或  11  1 左规: 尾数连续左移直到最高数值位与符号位不同为止 ( 00 1 , 11 0 ) 同时从阶码中减去移位的位数。 5.1 、浮点加减运算
4)  舍入(处理多余位) 在执行右规或对阶时,尾数低位上的数值会移掉,使数值的精度 受到影响,常用 “ 0” 舍“ 1” 入 法。  (三种舍去法:恒舍去,末位恒置  1 , 0 舍 1 入; 取其精度受影响最小的方法) 5)  检查阶码是否溢出 在规格化和舍入时都可能发生溢出, 若 阶码符号 10  为下溢 ,置运算结果为零, 若 阶码符号 01  为上溢 ,置溢出标志。 5.1 、浮点加减运算
X =  0111  00.1101000 j X   S X Y =  0110   00.1010000 j Y   S Y S Y j Y  + 1 S X j X  + 1 S X j X  + 1 No No Yes j X   = j Y   ? S X  +- S Y  S X j X  (or j Y )  j X X f1 ⊕X f2   = 1 X f1 X f2   X 1 +  X f1 X f2  X 1 = 1 ? S X j X  - 1 输出 Yes Yes No 3 )规格化处理 00.1101000  S X + 00.0101000  S Y 01. 0 010000 右规: 1000 00.10010000 左规 右规 2 )尾数运算 1 )阶码对齐 4 )舍入处理 5 )溢出判断 j X  > j Y   ? No Yes
例 :   已知  X = 0.11011011 * 2 010 , Y = - 0.10101100 * 2 100   求  X + Y 解 :  ①  对大阶: [ j X ] 补  = 00 0010  [  j Y ] 补  = 00 0100  [ - j Y ] 补  = 11 1100 求阶差 Δj= [ j X ] 补 + [ - j Y ] 补  = 00 0010 + 11 1100 = 11 1110  ( -2 ) X  的阶码小: X 阶码  + 2  ( [ j X ] 补   =  [  j Y ] 补  =  00 0100  )  X 的尾数右移 2 位,前面补符号位 [ S X ] 补 =  00 00110110 11 (此时保留右移数据,不丢不舍) ②  尾数相加 [ S X ] 补  = [ S X ] 补  + [ S Y ] 补  =  00 00110110 11 +  11 01010100 =  11   1 0001010   11   ③  规格化操作: 左规 :  数值位左移 1 位  =  11   0 0010101 1 阶码  - 1 ([ j X ] 补 =  00 0011 ) ④  舍入  舍去的附加位最高位为 1 ,结果最低位 +1 : [ S x ] 补 = 11  00010110   S= - 0.11101010 ⑤  判溢出  阶码符号为 00 ,不溢出。  最终结果为: X+Y = - 0.11101010 * 2 011 实际运算时,先确定位数。假设机器字长 16 位,采用浮点表示数, 其中阶符 2 位,阶码 4 位,尾符 2 位,尾数 8 位,都用补码表示。
4 、定点除法运算 4.1 、原码一位除法 4.2 、补码一位除法 4.3 、阵列除法器 5 、浮点四则运算 5.1 、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2 、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法
 X =  S X   · 2  j X   Y =  S Y  · 2  j Y  X * Y =  (  S X  * S Y   )  2  j X  + j Y   X / Y =  (  S X  / S Y   )  2  j X  - j Y   5.2 、浮点乘除运算 1 )阶码加减: 乘法: j X  + j Y   ,除法:  j X  - j Y   2 )尾数乘除: 乘法:  S X  * S Y   ,除法:  S X  / S Y   3 )规格化处理; 4 )舍入操作: 有可能带来又一次规格化; 5 )判溢出: 检查阶码上下溢出。
例如: 求 X*Y , X = 0.0110011   *   2  -5 Y = - 0.1110010  *  2  3 阶码(含符号位)用 4 位移码表示,采用单符号位。 尾数(含符号位)用 8 位补码表示,采用单符号位。 [j X ] 补 = 1 011  [j X ] 移 = 0 011 [j Y ] 补 = 0 011  [j Y ] 移 = 1 011 [S X ] 补 = 0.0110011 [-S X ] 补 =1.1001101 [S Y ] 补 =1.0001110 [X] 浮   = 0 011 ,  0.0110011 [Y] 浮   = 1 011 ,  1.0001110 5.2 、浮点乘除运算
1 )阶码相加: [ j X  + j Y  ] 移   = [ j X  ] 移   + [ j Y  ] 补 = 0 011 + 0 011 = 0 110 2 )尾数相乘:   [S X ] 补   * [S Y ] 补 = 0.0110011 * 1.0001110 = 1.10100101001010 [XY] 浮   = 0 110,  1.1 0100101001010 3 )规格化处理 : 符号位与最高数值位相同,需要规格化(尾数左移一位,阶码 -1 ) [XY] 浮   = 0.101, 1.0100101 0010100 4 )舍入操作: 尾数设 8 位, 0 舍 1 入,则   [XY] 浮   = 0 101, 1.0100101 5 )判溢出: 阶码两符号位相同,不溢出。 5.2 、浮点乘除运算
浮点运算器 浮点运算器 由 阶码 定点 运算器 和 尾数 定点 运算器 组成。 阶码 部分仅执行 加减法 运算。 尾数 部分则执行 加减乘除 运算,左规时有时需要左移多位。
6 、定点运算器的基本结构   6.1 、单总线结构的运算器 6.2 、双总线结构的运算器 6.3 、三总线结构的运算器 第六章 计算机的运算方法
定点运算器 是数据的加工处理部件, 是 CPU 的重要组成部分。 包括: ALU 算术 / 逻辑单元 , 阵列乘除器, 数据寄存器, 累加器, 多路转换器, 数据总线(内部总线) 等逻辑构成。 6 、定点运算器的基本结构 移位门 ALU 选择门  A 选择门  B 通用 寄存器组 数据总线 数据总线 运算器结构框图
定点运算部件框图
A , B , C 寄存器的作用  5 、定点运算器的基本结构 商 除数 被除数 余数 除法 乘数,乘积低位 被乘数 部分积 乘积高位 乘法 无用 减数 被减数 运算结果 减法 无用 加数 被加数 运算结果 加法 C B  A 运算
ALU 74181  逻辑电路图  P281  P299 S 是状态控制端, S=1, 执行逻辑运算 S=0, 执行算术运算 F 3 ~ F 0 是运算结果 S 0 ~S 3 是运算选择控制端, 决定电路执行哪种算术运算 或哪种逻辑运算。 C n 是 ALU 的最低位进位输入 A 3 ~A 0 , B 3 ~ B 0 是 参加运算的两个数
1.2 、算术逻辑单元 S 是状态控制端, S=1, 执行逻辑运算 S=0, 执行算术运算 S 0 ~S 3 是运算选择控制端, 决定电路执行哪种算术运算 或哪种逻辑运算。 C n 是 ALU 的最低位进位输入 A 3 ~A 0 , B 3 ~ B 0 是 参加运算的两个数 ALU 74181  算术 / 逻辑运算功能表  P281  P299 A· B (A·B) 减 1 A·B 1 1 1 0 A 减 B A 减 B 减 1 A  B 0 1 1 0 (A·B) 加 (A+B) 加 1 (A·B) 加 (A+B) B 1 0 1 0 A 加 (A·B) 加 1 A 加 (A·B) A·B 0 0 1 0 “ 0” 减 1 “ 0” 1 1 0 0 (A+B) 加 1 A+B A·B 0 1 0 0 (A+B) 加 1 A+B A+B 1 0 0 0 A+1 A A 0 0 0 0 C n =0 C n =1 S=0  算术运算 S=1 逻辑运算 正  逻  辑 S 0 S 1 S 2 S 3
用 四片 4 位 ALU 电路可组成 16 位 ALU 。( 1110 1101 0101 0001 ) 片内进位是并行快速的,但片间进位是串行慢速的,计算时间长。 把 16 位 ALU 中的每四位作为一组,用类似四位超前进位加法器 “ 位间快速进位 ” 的方法来实现 16 位 ALU 的 “ 组间快速进位 ”   。 16 位快速 ALU Review:  算术逻辑单元
运算器的设计 主要是围绕 ALU 和 寄存器 之间,怎样通过 数据总线 传送 操作数和运算结果进行的。 在决定设计方案时,需要考虑数据传送的方便性和操作速度, 在微型机和单片机中还要考虑在硅片上制作总线的工艺。 运算器 大体有 单总线 、 双总线 、 三总线 三种结构形式。 根据总线所在位置, 总线 分为 内部总线 和 外部总线 两类。 内部总线 是指 CPU 内, 各部件的连线。( 本章讲的是内部总线 ) 外部总线 是指 系统总线, 即 CPU  与 存储器 、 I/O 系统 之间的连线。       6 、定点运算器的基本结构
6 、定点运算器的基本结构   6.1 、单总线结构的运算器 6.2 、双总线结构的运算器 6.3 、三总线结构的运算器 第六章 计算机的运算方法
CPU 内部所有部件都接到同一总线上。 数据可以在任何两个寄存器之间,或任一个寄存器和 ALU 之间传送。 如果有阵列乘法器或除法器,它们所处的位置应与 ALU 相当。 同一时刻,只能有一个操作数放在总线上, 不能同时传送两个数据 。 结构特点: 操作速度较慢,控制电路比较简单。 6.1  单总线结构的运算器
6 、定点运算器的基本结构   6.1 、单总线结构的运算器 6.2 、双总线结构的运算器 6.3 、三总线结构的运算器 第六章 计算机的运算方法
这种结构有两条总线:总线 1 、总线 2 。 两个操作数可以同时加到 ALU 中进行运算,只需一次操作控制,而把运算结果送到缓冲器,缓冲器的数据可以送到任意一条总线上,两条总线的数据通过通用寄存器组来存储。 优点: 速度比单总线结构快。 6.2  双总线结构的运算器
6 、定点运算器的基本结构   6.1 、单总线结构的运算器 6.2 、双总线结构的运算器 6.3 、三总线结构的运算器 第六章 计算机的运算方法
有三条总线:   两端接 ALU 的输入: 输入总线 1 ,输入总线 2   一端接 ALU 的输出: 输出总线 3 这样一步就可以控制两个数的运算,速度可以大大提高, 通过通用寄存器把总线 3 的数据送到总线 1 与总线 2 。 6.3  双总线结构的运算器
复习与作业 复习章节:  第 6 章  计算机的运算方法 6.3 定点运算 6.3.1  移位运算 6.3.4  除法运算 6.4  浮点四则运算 作业: P291   6.21  6.26  6.29

Weitere ähnliche Inhalte

Mehr von Huaijin Chen

05 计算机的运算方法02
05 计算机的运算方法0205 计算机的运算方法02
05 计算机的运算方法02Huaijin Chen
 
03 计算机的逻辑部件02
03 计算机的逻辑部件0203 计算机的逻辑部件02
03 计算机的逻辑部件02Huaijin Chen
 
02 计算机的逻辑部件01
02 计算机的逻辑部件0102 计算机的逻辑部件01
02 计算机的逻辑部件01Huaijin Chen
 
01 课程介绍与计算机系统概述
01 课程介绍与计算机系统概述01 课程介绍与计算机系统概述
01 课程介绍与计算机系统概述Huaijin Chen
 

Mehr von Huaijin Chen (11)

20 cpu04
20 cpu0420 cpu04
20 cpu04
 
19 cpu03
19 cpu0319 cpu03
19 cpu03
 
18 cpu02
18 cpu0218 cpu02
18 cpu02
 
17 cpu01
17 cpu0117 cpu01
17 cpu01
 
10 存储系统02
10 存储系统0210 存储系统02
10 存储系统02
 
09 存储系统01
09 存储系统0109 存储系统01
09 存储系统01
 
05 计算机的运算方法02
05 计算机的运算方法0205 计算机的运算方法02
05 计算机的运算方法02
 
03 计算机的逻辑部件02
03 计算机的逻辑部件0203 计算机的逻辑部件02
03 计算机的逻辑部件02
 
02 计算机的逻辑部件01
02 计算机的逻辑部件0102 计算机的逻辑部件01
02 计算机的逻辑部件01
 
01 课程介绍与计算机系统概述
01 课程介绍与计算机系统概述01 课程介绍与计算机系统概述
01 课程介绍与计算机系统概述
 
21 总线
21 总线21 总线
21 总线
 

Kürzlich hochgeladen

啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptxbusinesshealthwise
 
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade SixMath Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six611002610
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个michaelell902
 
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdftaibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdfjhujyunjhang
 
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂PUAXINYEEMoe
 
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习PUAXINYEEMoe
 
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...微信 tytyqqww业务接单
 
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdftaibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdfjhujyunjhang
 
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...微信 tytyqqww业务接单
 
永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样
永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样
永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样yuhpu
 

Kürzlich hochgeladen (10)

啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
啟思中國語文 - 中二 單元一 - 孟嘗君列傳 - 記敍的方法和人稱1.pptx
 
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade SixMath Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
Math Chapter3-教學PPT第03單元形體關係、體積與表面積Grade Six
 
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
法国蒙彼利埃国家高等建筑学院毕业证制作/德语歌德B1证书/加拿大新斯科舍省农业学院文凭加急制作一个
 
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdftaibif_資料標準概念介紹_20240509_20240509_20340509.pdf
taibif_資料標準概念介紹_20240509_20240509_20340509.pdf
 
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
1.1.3急救你必须懂四年级设计与工艺练习活页练习单元一四年级设计与工艺急救你必须懂
 
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
10.2.1 马来西亚各州名称的由来六年级历史单元练习马来西亚各州名称的由来练习
 
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
1.🎉“黑客”如何修改成绩?🤔🎉 在这个信息爆炸的时代,我们经常会看到各种作弊手段。但是你知道吗?有一种作弊方式可能比你想象中更巧妙:它就是——黑客![单...
 
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdftaibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
taibif_開放資料流程-清理資料01-通則_20240509_20240509.pdf
 
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
1.🎉成绩单,你的成绩! 💡🔥每个人都有自己的成绩单,它记录着我们努力的成果。但有时候,看着这些数字,却发现它们好像在嘲笑我?别担心,让我来告诉你们怎么改...
 
永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样
永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样
永久可查英国北安普顿大学毕业证(uom学位证书)电子版学位证书留服认证原版一模一样
 

07 计算机的运算方法04

  • 1. 系 统 总 线 存储器 运算器 控制器 接口与通信 输入 / 输出设备 林楠 办公室: 408 办公电话: 0371-63887293 电子邮件: [email_address] 《 计算机组成原理 》 第六章 计算机的运算方法
  • 2. 4 、定点除法运算 4.1 、原码一位除法 4.2 、补码一位除法 4.3 、阵列除法器 5 、浮点四则运算 5.1 、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2 、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法
  • 3. 原码一位除法基本上是从手算演变过来, 符号位单独处理 。 两个原码表示的数相除运算规则: 商的符号位 :两数的 符号 相 异或 商的数值部分: 两作数的 绝对值相除 。 运算方法与普通的十进制小数除法相类似, 设 n 位被乘数 X 和 乘数 Y 用 定点小数 表示(定点整数同样) 被除数: [X] 原 = X f . X n-1 … X 1 X 0 除数: [Y] 原 = Y f . Y n-1 … Y 1 Y 0 商 [ Q ] 原 = ( X f ⊕ Y f ) + (0.X n-1 … X 1 X 0 ) / (0.Y n-1 … Y 1 Y 0 ) 于是原码与原码相除就变成如何进行 两个正数相除 的问题了。 两种除法: 恢复余数法 不恢复余数法(加减交替法) 4.1 、原码一位除法
  • 4. 人会心算,一看就知道够不够减。但机器不会,必须先作减法。 若余数为正,才知道够减;若余数为负,才知道不够减 。 不够减时,必须恢复原来的余数, 顾名思义 恢复余数法 。 被除数 X=0.1011 除数 Y=0.1101 求 X/Y 。商精确到小数点后四位。 手算方法计算步骤如下: 4.1 、原码一位除法 0.1101 0.1101 0 . 1011 - 0 . 1101 + 0.1101 0 . 10110 - 0 . 0 1101 0 . 010010 - 0 . 00 1101 0 . 0001010 - 0 . 000 1101 + 0.0001101 0 . 00010100 - 0 . 0000 1101 0 . 00000111 - Y 不够减, + Y , 整数位商 0 , X 低位补 0 - 2 -1 Y 够减,商 1 , X 低位补 0 - 2 -2 Y 够减,商 1 , X 低位补 0 - 2 -3 Y 不够减, + 2 -3 Y , 商 0 , X 低位补 0 - 2 -4 Y 够减,商 1
  • 5. 4.1 、原码一位除法 1 )恢复余数法 1 、符号单独处理, Q f = ( X f ⊕ Y f ) ,取绝对值相除; 2 、作减法,若不溢出,运算开始; 3 、 -Y , 若余数 R 为正(够减),商 1 ,左移一位 ; -Y , 若余数 R 为负(不够减),商 0 ,恢复余数,左移一位; 4 、重复 n 步; 5 、最后一步余数为负(不够减),应恢复为正余数( +[Y] 补 )。 右移除数 ,可以通过 左移被除数 ( 余数 ) 来替代, 左移出界的被除数 ( 余数 ) 的高位都是无用的零, 对运算不会产生任何影响。 如果, 余数 一共被 左移 了四次,需要校正。 最终的余数 再右移四次 ,即 × 2 -4 。得: R = R 4 × 2 -4 = 0.0111 × 2 -4 = 0.00000111
  • 6. 寄存器 A 存放 被除数 X = 0.1011 寄存器 B 存放 除数 Y = 0.1101 寄存器 C 中存放 商 X / Y 另外设置计数器 CR 控制循环次数。 -Y 用 [-Y] 补 取代; [Y] 补 = 0.1101 [-Y] 补 = 1.0011 4.1 、原码一位除法 被除数 X = 0.1011 除数 Y = 0.1101
  • 7. 被除数 X (余数) 商 操作 0. 1011 0 0 0 0 0 + 1. 0011 - Y ( + [-Y] 补 ) 1. 1110 0 0 0 0 0 负数: 不够减, 商 0 + 0. 1101 +Y 恢复余数, ( + [Y] 补 ) 0. 1011 0 0 0 0 0 余数和商同时 左移一位 1. 0110 0 0 0 0 0 + 1. 0011 - Y ( + [-Y] 补 ) 0. 1001 0 0 0 0 1 正数: 够减, 商 1 1. 0010 0 0 0 1 0 余数和商同时 左移一位 + 1. 0011 - Y ( + [-Y] 补 ) 0. 0101 0 0 0 1 1 正数: 够减, 商 1 0. 1010 0 0 1 1 0 余数和商同时 左移一位 + 1. 0011 - Y ( + [-Y] 补 ) 1. 1101 0 0 1 1 0 负数: 不够减, 商 0 + 0. 1101 + Y 恢复余数, ( + [Y] 补 ) 0. 1010 0 0 1 1 0 余数和商同时 左移一位 1. 0100 0 1 1 0 0 + 1. 0011 - Y ( + [-Y] 补 ) 0. 0111 0 1 1 0 1 正数: 够减, 商 1 余数再右移四位得正确结果。 被除数 X = 0.1011 除数 Y = 0.1101 商 0.1101 余 0.0111* 2 -4
  • 8. 2 )加减交替法 加减交替法是对恢复余数除法的一种修正。 当余数为负时,不恢复,继续求下一位商, 但 用加上除数 (+Y) 的办法来取代 (-Y) 操作 ,其他操作不变。 加减交替法的规则如下: 余数为正,商 1 ,左移一位,减去除数 ; 余数为负,商 0 ,左移一位,加上除数 。 此方法不用恢复余数,所以又叫 不恢复余数法 。 但若最后一次上商为 0 ,则仍需恢复余数 。 4.1 、原码一位除法
  • 9. 被除数(余数) 商 操作 0. 1011 0 0 0 0 0 + 1. 0011 - Y ( + [-Y] 补 ) 1. 1110 0 0 0 0 0 负数: 商 0 1. 1100 0 0 0 0 0 余数和商同时左移一位 + 0. 1101 + Y 0. 1001 0 0 0 0 1 正数: 商 1 1. 0010 0 0 0 1 0 余数和商同时左移一位 + 1. 0011 - Y ( + [-Y] 补 ) 0. 0101 0 0 0 1 1 正数: 商 1 0. 1010 0 0 1 1 0 余数和商同时左移一位 + 1. 0011 - Y ( + [-Y] 补 ) 1. 1101 0 0 1 1 0 负数: 商 0 1. 1010 0 1 1 0 0 被除数和商同时左移一位 + 0. 1101 + Y 0. 0111 0 1 1 0 1 正数: 商 1 4.1 、原码一位除法 余数再右移四位得正确结果。 被除数 X = 0.1011 除数 Y = 0.1101 商 0.1101 余 0.0111* 2 -4
  • 10. 4 、定点除法运算 4.1 、原码一位除法 4.2 、补码一位除法 4.3 、阵列除法器 5 、浮点四则运算 5.1 、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2 、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法
  • 11. 4.2 、补码一位除法 补码加减交替法 , 法则如下: ( [ R i ] 补 为余数,数值部分共 n 位 ) 1) 比较 2) 上商 3) 求新余数 1) 比较 2) 上商 3) 求新余数 由上式化简 2 [ R i ] 补 - [Y] 补 2 [ R i ] 补 + [Y] 补 1 0 同号 ( 不够减 ) 异号 ( 够减 ) [X] 补 +[Y] 补 1 异号 2 [ R i ] 补 - [Y] 补 2 [ R i ] 补 + [Y] 补 1 0 同号 ( 够减 ) 异号 ( 不够减 ) [X] 补 -[Y] 补 0 同号 求新余数 ( 共 n 步 ) 上商 [R] 补 ,[Y] 补 符号 求余数 [R] 补 商符 [X] 补 [Y[] 补 符号 2 [ R i ] 补 + [Y] 补 0 异号 2 [ R i ] 补 + [-Y] 补 1 同号 求新余数 ( 共 n 步 ) 上商 [R] 补 ,[Y] 补 符号
  • 12. 4 )商的符号 两种常见的做法: 方法一: 第一步比较 XY 同号做 [X] 补 – [Y] 补 ;异号做 [X] 补 +[Y] 补 ; 方法二: 一开始就将被除数 X 当作初始余数 R 0 , R 0 与 Y 同号商 1 ,异号商 0 ,得的假商 最后求反 进行校正。 // 由于方法一开始比较被除数与除数,后来比较余数与除数, 控制部署不一样。所以采用方法二,全部是比较余数与除数, 便于计算机控制。 5 )商的校正 对于 方法一 , 商符正确,商末位恒置 1 。 对于 方法二 , 商符取反,商末位恒置 1 。 4.2 、补码一位除法
  • 13. 4.2 、补码一位除法 被除数 X (余数 R ) 商 Q 操作 0. 1011 0 0 0 0 0 + 1. 0011 X Y 同号: + [-Y] 补 1. 1110 0 0 0 0 0 R Y 异号: 商 0 1. 1100 0 0 0 0 0 余数 R 和商同时 左移一位 + 0. 1101 + [Y] 补 0. 1001 0 0 0 0 1 R Y 同号: 商 1 1. 0010 0 0 0 1 0 余数 R 和商同时 左移一位 + 1. 0011 + [-Y] 补 0. 0101 0 0 0 1 1 R Y 同号: 商 1 0. 1010 0 0 1 1 0 余数 R 和商同时 左移一位 + 1. 0011 + [-Y] 补 1. 1101 0 0 1 1 0 R Y 异号: 商 0 1. 1010 0 1 1 0 0 余数 R 和商同时 左移一位 + 0. 1101 + [Y] 补 0. 0111 0 1 1 0 1 商的末位恒置 1 使用方法一: [X] 补 =0.1011 [Y] 补 =0.1101 [-Y] 补 =1.0011 余数再右移四位得正确结果。 被除数 X = 0.1011 除数 Y = 0.1101 商 0.1101 余 0.0111* 2 -4
  • 14. 4.2 、补码一位除法 被除数 X (余数 R ) 商 Q 操作 0. 1011 0 0 0 0 1 R Y 同号: 商 1 1. 0110 0 0 0 1 0 余数 R 和商同时 左移一位 + 1. 0011 + [-Y] 补 0. 1001 0 0 0 1 1 R Y 同号: 商 1 1. 0010 0 0 1 1 0 余数 R 和商同时 左移一位 + 1. 0011 + [-Y] 补 0. 0101 0 0 1 1 1 R Y 同号: 商 1 0. 1010 0 1 1 1 0 余数 R 和商同时 左移一位 + 1. 0011 + [-Y] 补 1. 1101 0 1 1 1 0 R Y 异号: 商 0 1. 1010 1 1 1 0 0 余数 R 和商同时 左移一位 + 0. 1101 + [Y] 补 0. 0111 1 1 1 0 0 0 1 1 0 1 校正:商符取反,商末位置 1 使用方法二: [X] 补 =0.1011 [Y] 补 =0.1101 [-Y] 补 =1.0011 余数再右移四位得正确结果。 被除数 X = 0.1011 除数 Y = 0.1101 商 0.1101 余 0.0111* 2 -4
  • 15. 4.2 、补码一位除法 被除数 X (余数 R ) 商 Q 操作 0. 0100 0 0 0 0 0 R Y 异号: 商 0 0. 1000 0 0 0 0 0 余数 R 和商同时 左移一位 + 1. 1000 + [Y] 补 0. 0000 0 0 0 0 0 R Y 异号: 商 0 0. 0000 0 0 0 0 0 余数 R 和商同时 左移一位 + 1. 1000 + [Y] 补 1. 1000 0 0 0 0 1 R Y 同号: 商 1 1. 0000 0 0 0 1 0 余数 R 和商同时 左移一位 + 0. 1000 + [-Y] 补 1. 1000 0 0 0 1 1 R Y 同号: 商 1 1. 0000 0 0 1 1 0 余数 R 和商同时 左移一位 + 0. 1000 + [-Y] 补 1. 1000 0 0 1 1 0 1 0 1 1 1 校正:商符取反,商末位置 1 使用方法二: [X] 补 =0. 0100 [Y] 补 = 1.1000 [-Y] 补 = 0.1000 余数再右移四位得正确结果。 被除数 X = 0. 0100 除数 Y = 1.1000 商 1.0111 余 11.1000* 2 -4
  • 16. 4 、定点除法运算 4.1 、原码一位除法 4.2 、补码一位除法 4.3 、阵列除法器 5 、浮点四则运算 5.1 、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2 、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法
  • 17. 和阵列乘法器相比, 阵列除法器 也是一种 并行运算 部件,采用大规模集成电路制造。它比早期的串行除法器的控制线路少,并提供较高的运算速度。 4.3 、阵列除法器 P297 可控加法 / 减法单元 (CAS) 0.1101 0.1101 0 . 1011 0 - 0 . 0 1101 0 . 010010 - 0 . 00 1101 0 . 0001010 - 0 . 000 1101 0 . 00010100 - 0 . 0000 1101 0 . 00000111
  • 18. 4 、定点除法运算 4.1 、原码一位除法 4.2 、补码一位除法 4.3 、阵列除法器 5 、浮点四则运算 5.1 、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2 、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法
  • 19. 浮点数的表示形式 ( 以 2 为底 ) : X = S · 2 j S 尾数 ,绝对值小于 1 的 规格化 二进制 小数, 决定数的有效精度 。 j 阶码 ,用 移码 或 补码 表示的 整数 , 决定数的表示范围 。 2 基数 例如: A = 104 = 01101000 = 0.1101000 * 2 7 B = 40 = 0.101000 * 2 6 浮点数的表示: A = 0 0 111 1101000 B = 0 0 110 101000 5 、浮点四则运算 所以,阶码相同,尾数才能运算, 等于先把小数点对齐,对大阶!
  • 20. IEEE754 国际标准: 阶码 j 用移码、基为 2 、尾数 S 用原码。 符号位数 阶码 j 位数 尾数 S 位数 总位数 短浮点数 1 8 23 32 长浮点数 1 11 52 64 临时浮点数 1 15 64 80 通常计算机中, 尾数 用 补码 表示, 阶码 用 补码或移码 表示。 移码:[ X ] 补 的符号位取反,即得[ X ] 移 。 例: X=+1011 [ X ] 补 =01011 [ X ] 移 =11011 X=-1011 [ X ] 补 =10101 [ X ] 移 =00101 5 、浮点四则运算
  • 21. 移码具有以下特点: 1 ) 最高位符号位, 1 表示正号 , 0 表示负号 。 如果是双符号位,最高位保持 0 : 01 正数, 00 负数 。 溢出判断: 最高位为 1 , 10 上溢, 11 下溢。 2 )在计算机中,移码 只执行加减法 运算,且运算结果 +2 n 修正 ; 即对 结果的符号位取反 ,得到[ X ] 移 。 例如: X=+1010 Y=+0011, 则[ X ] 移 =1.1010 [ Y ] 移 =1.0011 [ X ] 移 + [ Y ] 移 =1.1010+1.0011 = 0 1101, 修正: [ X+Y ] 移 = 0 1101+ 10000 = 1 1101 3 )数据 0 有唯一的编码,即[ +0 ] 移 = [ -0 ] 移 =1000…0 。 [ X + Y ] 移 = [ X ] 移 + [ Y ] 补 [ X - Y ] 移 = [ X ] 移 + [ -Y ] 补 5 、浮点四则运算
  • 22. 浮点数的阶码为什么用移码表示呢? 1 ) 正数的移码大于负数的移码: [X] 移 > [-X] 移 原码、补码、反码都不具备。 2 ) 如果: X > Y 则 [X] 移 > [Y] 移 所以,在浮点运算中,可以方便地通过比较移码的大小来实现阶码 真值大小的比较,其他三种码都不具备这一特性。 5 、浮点四则运算
  • 23. 4 、定点除法运算 4.1 、原码一位除法 4.2 、补码一位除法 4.3 、阵列除法器 5 、浮点四则运算 5.1 、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2 、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法
  • 24. 设有两浮点数 X , Y ,其中: X = S X * 2 j X Y = S Y * 2 j Y X±Y 运算执行以下五步: 1) “ 对大阶”操作 对大阶 :使两数的阶码值相等。 求阶码差 Δj , Δj≠0 时,小阶码的尾数右移 Δj 位:阶码 +Δj , 2) 尾数的加 / 减运算  两尾数进行加 / 减运算。 3) 规格化操作 尾数符号 01 或 10 :尾数溢出 。 右规: 尾数右移 1 位,阶码 +1 尾数符号 00 或 11 :尾数不溢出 。 但如最高数值位与符号位相同 : 00 0 或 11 1 左规: 尾数连续左移直到最高数值位与符号位不同为止 ( 00 1 , 11 0 ) 同时从阶码中减去移位的位数。 5.1 、浮点加减运算
  • 25. 4) 舍入(处理多余位) 在执行右规或对阶时,尾数低位上的数值会移掉,使数值的精度 受到影响,常用 “ 0” 舍“ 1” 入 法。 (三种舍去法:恒舍去,末位恒置 1 , 0 舍 1 入; 取其精度受影响最小的方法) 5) 检查阶码是否溢出 在规格化和舍入时都可能发生溢出, 若 阶码符号 10 为下溢 ,置运算结果为零, 若 阶码符号 01 为上溢 ,置溢出标志。 5.1 、浮点加减运算
  • 26. X = 0111 00.1101000 j X S X Y = 0110 00.1010000 j Y S Y S Y j Y + 1 S X j X + 1 S X j X + 1 No No Yes j X = j Y ? S X +- S Y S X j X (or j Y ) j X X f1 ⊕X f2 = 1 X f1 X f2 X 1 + X f1 X f2 X 1 = 1 ? S X j X - 1 输出 Yes Yes No 3 )规格化处理 00.1101000 S X + 00.0101000 S Y 01. 0 010000 右规: 1000 00.10010000 左规 右规 2 )尾数运算 1 )阶码对齐 4 )舍入处理 5 )溢出判断 j X > j Y ? No Yes
  • 27. 例 : 已知 X = 0.11011011 * 2 010 , Y = - 0.10101100 * 2 100 求 X + Y 解 : ① 对大阶: [ j X ] 补 = 00 0010 [ j Y ] 补 = 00 0100 [ - j Y ] 补 = 11 1100 求阶差 Δj= [ j X ] 补 + [ - j Y ] 补 = 00 0010 + 11 1100 = 11 1110 ( -2 ) X 的阶码小: X 阶码 + 2 ( [ j X ] 补 = [ j Y ] 补 = 00 0100 )  X 的尾数右移 2 位,前面补符号位 [ S X ] 补 = 00 00110110 11 (此时保留右移数据,不丢不舍) ② 尾数相加 [ S X ] 补 = [ S X ] 补 + [ S Y ] 补 = 00 00110110 11 + 11 01010100 = 11 1 0001010 11  ③ 规格化操作: 左规 : 数值位左移 1 位 = 11 0 0010101 1 阶码 - 1 ([ j X ] 补 = 00 0011 ) ④ 舍入 舍去的附加位最高位为 1 ,结果最低位 +1 : [ S x ] 补 = 11 00010110 S= - 0.11101010 ⑤ 判溢出 阶码符号为 00 ,不溢出。 最终结果为: X+Y = - 0.11101010 * 2 011 实际运算时,先确定位数。假设机器字长 16 位,采用浮点表示数, 其中阶符 2 位,阶码 4 位,尾符 2 位,尾数 8 位,都用补码表示。
  • 28. 4 、定点除法运算 4.1 、原码一位除法 4.2 、补码一位除法 4.3 、阵列除法器 5 、浮点四则运算 5.1 、浮点加减运算 对阶、执行加减、规格化、舍入、判溢出 5.2 、浮点乘除运算 阶码加减、尾数乘除、规格化、舍入、判溢出 第六章 计算机的运算方法
  • 29.  X = S X · 2 j X Y = S Y · 2 j Y  X * Y = ( S X * S Y ) 2 j X + j Y X / Y = ( S X / S Y ) 2 j X - j Y 5.2 、浮点乘除运算 1 )阶码加减: 乘法: j X + j Y ,除法: j X - j Y 2 )尾数乘除: 乘法: S X * S Y ,除法: S X / S Y 3 )规格化处理; 4 )舍入操作: 有可能带来又一次规格化; 5 )判溢出: 检查阶码上下溢出。
  • 30. 例如: 求 X*Y , X = 0.0110011 * 2 -5 Y = - 0.1110010 * 2 3 阶码(含符号位)用 4 位移码表示,采用单符号位。 尾数(含符号位)用 8 位补码表示,采用单符号位。 [j X ] 补 = 1 011 [j X ] 移 = 0 011 [j Y ] 补 = 0 011 [j Y ] 移 = 1 011 [S X ] 补 = 0.0110011 [-S X ] 补 =1.1001101 [S Y ] 补 =1.0001110 [X] 浮 = 0 011 , 0.0110011 [Y] 浮 = 1 011 , 1.0001110 5.2 、浮点乘除运算
  • 31. 1 )阶码相加: [ j X + j Y ] 移 = [ j X ] 移 + [ j Y ] 补 = 0 011 + 0 011 = 0 110 2 )尾数相乘: [S X ] 补 * [S Y ] 补 = 0.0110011 * 1.0001110 = 1.10100101001010 [XY] 浮 = 0 110, 1.1 0100101001010 3 )规格化处理 : 符号位与最高数值位相同,需要规格化(尾数左移一位,阶码 -1 ) [XY] 浮 = 0.101, 1.0100101 0010100 4 )舍入操作: 尾数设 8 位, 0 舍 1 入,则 [XY] 浮 = 0 101, 1.0100101 5 )判溢出: 阶码两符号位相同,不溢出。 5.2 、浮点乘除运算
  • 32. 浮点运算器 浮点运算器 由 阶码 定点 运算器 和 尾数 定点 运算器 组成。 阶码 部分仅执行 加减法 运算。 尾数 部分则执行 加减乘除 运算,左规时有时需要左移多位。
  • 33. 6 、定点运算器的基本结构 6.1 、单总线结构的运算器 6.2 、双总线结构的运算器 6.3 、三总线结构的运算器 第六章 计算机的运算方法
  • 34. 定点运算器 是数据的加工处理部件, 是 CPU 的重要组成部分。 包括: ALU 算术 / 逻辑单元 , 阵列乘除器, 数据寄存器, 累加器, 多路转换器, 数据总线(内部总线) 等逻辑构成。 6 、定点运算器的基本结构 移位门 ALU 选择门 A 选择门 B 通用 寄存器组 数据总线 数据总线 运算器结构框图
  • 36. A , B , C 寄存器的作用 5 、定点运算器的基本结构 商 除数 被除数 余数 除法 乘数,乘积低位 被乘数 部分积 乘积高位 乘法 无用 减数 被减数 运算结果 减法 无用 加数 被加数 运算结果 加法 C B  A 运算
  • 37. ALU 74181 逻辑电路图 P281 P299 S 是状态控制端, S=1, 执行逻辑运算 S=0, 执行算术运算 F 3 ~ F 0 是运算结果 S 0 ~S 3 是运算选择控制端, 决定电路执行哪种算术运算 或哪种逻辑运算。 C n 是 ALU 的最低位进位输入 A 3 ~A 0 , B 3 ~ B 0 是 参加运算的两个数
  • 38. 1.2 、算术逻辑单元 S 是状态控制端, S=1, 执行逻辑运算 S=0, 执行算术运算 S 0 ~S 3 是运算选择控制端, 决定电路执行哪种算术运算 或哪种逻辑运算。 C n 是 ALU 的最低位进位输入 A 3 ~A 0 , B 3 ~ B 0 是 参加运算的两个数 ALU 74181 算术 / 逻辑运算功能表 P281 P299 A· B (A·B) 减 1 A·B 1 1 1 0 A 减 B A 减 B 减 1 A  B 0 1 1 0 (A·B) 加 (A+B) 加 1 (A·B) 加 (A+B) B 1 0 1 0 A 加 (A·B) 加 1 A 加 (A·B) A·B 0 0 1 0 “ 0” 减 1 “ 0” 1 1 0 0 (A+B) 加 1 A+B A·B 0 1 0 0 (A+B) 加 1 A+B A+B 1 0 0 0 A+1 A A 0 0 0 0 C n =0 C n =1 S=0 算术运算 S=1 逻辑运算 正 逻 辑 S 0 S 1 S 2 S 3
  • 39. 用 四片 4 位 ALU 电路可组成 16 位 ALU 。( 1110 1101 0101 0001 ) 片内进位是并行快速的,但片间进位是串行慢速的,计算时间长。 把 16 位 ALU 中的每四位作为一组,用类似四位超前进位加法器 “ 位间快速进位 ” 的方法来实现 16 位 ALU 的 “ 组间快速进位 ” 。 16 位快速 ALU Review: 算术逻辑单元
  • 40. 运算器的设计 主要是围绕 ALU 和 寄存器 之间,怎样通过 数据总线 传送 操作数和运算结果进行的。 在决定设计方案时,需要考虑数据传送的方便性和操作速度, 在微型机和单片机中还要考虑在硅片上制作总线的工艺。 运算器 大体有 单总线 、 双总线 、 三总线 三种结构形式。 根据总线所在位置, 总线 分为 内部总线 和 外部总线 两类。 内部总线 是指 CPU 内, 各部件的连线。( 本章讲的是内部总线 ) 外部总线 是指 系统总线, 即 CPU 与 存储器 、 I/O 系统 之间的连线。       6 、定点运算器的基本结构
  • 41. 6 、定点运算器的基本结构 6.1 、单总线结构的运算器 6.2 、双总线结构的运算器 6.3 、三总线结构的运算器 第六章 计算机的运算方法
  • 42. CPU 内部所有部件都接到同一总线上。 数据可以在任何两个寄存器之间,或任一个寄存器和 ALU 之间传送。 如果有阵列乘法器或除法器,它们所处的位置应与 ALU 相当。 同一时刻,只能有一个操作数放在总线上, 不能同时传送两个数据 。 结构特点: 操作速度较慢,控制电路比较简单。 6.1 单总线结构的运算器
  • 43. 6 、定点运算器的基本结构 6.1 、单总线结构的运算器 6.2 、双总线结构的运算器 6.3 、三总线结构的运算器 第六章 计算机的运算方法
  • 44. 这种结构有两条总线:总线 1 、总线 2 。 两个操作数可以同时加到 ALU 中进行运算,只需一次操作控制,而把运算结果送到缓冲器,缓冲器的数据可以送到任意一条总线上,两条总线的数据通过通用寄存器组来存储。 优点: 速度比单总线结构快。 6.2 双总线结构的运算器
  • 45. 6 、定点运算器的基本结构 6.1 、单总线结构的运算器 6.2 、双总线结构的运算器 6.3 、三总线结构的运算器 第六章 计算机的运算方法
  • 46. 有三条总线: 两端接 ALU 的输入: 输入总线 1 ,输入总线 2 一端接 ALU 的输出: 输出总线 3 这样一步就可以控制两个数的运算,速度可以大大提高, 通过通用寄存器把总线 3 的数据送到总线 1 与总线 2 。 6.3 双总线结构的运算器
  • 47. 复习与作业 复习章节: 第 6 章 计算机的运算方法 6.3 定点运算 6.3.1 移位运算 6.3.4 除法运算 6.4 浮点四则运算 作业: P291 6.21 6.26 6.29