1、 第三章 CPU子系统 运算部件 寄存器 寄存器 控制部件 运算器 控制器 本章主要讨论: 运算器 控制器 数据通路结构 与外部的连接 指令的执行过程 CPU组成 CPU工作原理 CPU组成原理 CPU工作机制( 设计模型机 ) CPU子系统 运算器 组成和运算方法 控制器原理 定点乘法 定点除法 浮点运算 组合逻辑控制器 微程序控制器 基本思想 控制器组成 工作过程 主机和外设的信息交换 连接方式 传送控制方式 查询 中断 DMA 基本思想 控制器组成 工作过程 时序控制 本章知识架构: 第一节 运算器组织 3.1.1 运算器的硬件组成 运算器 移位器 ALU输入选择器 ALU部件 寄存器
2、并行加法器 加法器输入选择器 全加器 进位链 串行 并行 分组 选择操作数来源 选择操作数组合 独立结构 小型存储 器结构 单口 双口 寄存器组 独立 R、双口 RAM用 多路选择器 作为 ALU的输入逻辑, 单口 RAM用 锁存器 作为 ALU的输入逻辑。 3.1.2 运算器的组织结构 1. 带多路选择器的运算器 移位器 ALU 多路选择器 多路选择器 R0 Rn R0. . . Rn R0. . . Rn 内部总线(单向) 特点: R各自独立; 可同时向 ALU提供两个操作数; 采用单向内总线。 2. 带输入锁存器的运算器 特点: 单口 RAM不能同时向 ALU提供两个操作数; 用锁存器暂
3、存操作数; 采用双向内总线。 移位器 ALU 锁存器 锁存器 内部总线(双向) R0 Rn 通用寄存器组(小型存储器) 3. 位片式运算器 特点: 用双口 RAM(两地址端、两数据端)作通用寄存器组,可同时提供数据; 用多路选择器作输入逻辑,不需暂存操作数; ALU增加乘、除功能,用乘商寄存器存放乘数、乘积或商。 例 . 4位片运算器粗框 移位器 ALU 多路选择器 多路选择器 DO RAM Di B 地址 A 地址 Cn DB DA G、 P 控制信息 Cn+4 乘商寄存器 4 4 4 4 4 4 4 4 4 4 4 4 第二节 运算方法 3.2.1.1 补码加减法 数用补码表示,符号位参加
4、运算。 实际操作能否只取决于操作码 ? 结果需不需修正? 如何将减法转换为加法? 3.2.1 定点加减运算 1. 基本关系式 ( X + Y )补 = X补 + Y补 ( 1) ( X - Y )补 = X补 + (-Y)补 ( 2) 式( 1): 操作码为“ 加 ”时,两数直接相加。 3) X= 3 Y= 2 X补 =0 0011 Y补 =1 1110 0 0001 ( +1补码) 2) X= 3 Y= 2 X补 =1 1101 Y补 =1 1110 1 1011 ( 5补码) 1) X=3 Y=2 X补 =0 0011 Y补 =0 0010 0 0101 ( +5补码) 4) X= 3 Y
5、= 2 X补 =1 1101 Y补 =0 0010 1 1111 ( 1补码) 例 . 求 (X+Y)补 ( X + Y )补 = X补 + Y补 ( 1) ( X - Y )补 = X补 + (-Y)补 ( 2) 式( 2): 操作码为“ 减 ”时,将减转换为加。 1) X= 4 Y= 5 X补 =0 0100 Y补 =1 1011 (-Y)补 =0 0101 0 1001 ( +9补码) 2) X= 4 Y= 5 X补 =1 1100 Y补 =0 0101 (-Y)补 =1 1011 1 0111 ( 9补码) 例 . 求 (X Y)补 Y补 (Y)补 : 将 Y补 变补 不管 Y补 为正
6、或负,将其符号连同尾数一起各位变反,末位加 1。 即将减数变补后与被减数相加。 补补补补注意:某数的 补码表示 与某数 变补 的区别。 例 . 1 0101原 1 1011 补码表示 1 0011补 0 1101 变补 0 0101原 0 0101 补码表示 符号位不变; 负数尾数改变,正数尾数不变。 0 0011补 1 1101 变补 符号位改变, 尾数改变。 补码的机器负数 2. 算法流程 操作数用补码表示,符号位参加运算 结果为补码表示,符号位指示结果正负 X补 +Y补 X补 +(-Y)补 ADD SUB 3. 逻辑实现 A(X补 ) B(Y补 ) +A A B B +B +B +1 C
7、PA A ( 1) 控制信号 加法器输入端: +A:打开控制门,将 A送 。 +B:打开控制门,将 B送 。 +1:控制末位加 1 。 +B:打开控制门,将 B送 。 加法器输出端: A: 打开控制门,将结 果送 A输入端。 CPA:将结果打入 A。 ( 2) 补码加减运算器粗框 3.2.1.2 溢出判断 在什么情况下可能产生溢出? 例 .数 A有 4位尾数, 1位符号 SA 数 B有 4位尾数, 1位符号 SB 符号位参加运算 结果符号 Sf 符号位进位 Cf 尾数最高位进位 C 正确 0 0011 0 0010 ( 1) A=3 B=2 3+2: 0 0101 ( 2) A=10 B=7
8、10+7: 0 1010 0 0111 1 0001 正溢 正确 负溢 正确 正确 ( 3) A= -3 B= -2 -3+(-2): 1 1011 1 1101 1 1110 ( 4) A= -10 B= -7 -10+(-7): 0 1111 1 0110 1 1001 ( 5) A=6 B= -4 6+(-4): 0 0010 0 0110 1 1100 ( 6) A= -6 B=4 -6+4: 1 1110 1 1010 0 0100 ( 2) A=10 B=7 10+7 : 0 1010 0 0111 1 0001 ( 4) A= -10 B= -7 -10+(-7): 0 1111
9、 1 0110 1 1001 1. 硬件判断逻辑一 ( SA、 SB与 Sf的关系) 溢出 = SA SB Sf SA Sf SB 2. 硬件判断逻辑二 ( Cf与 C的关系) 正确 0 0011 0 0010 ( 1) A=3 B=2 3+2: 0 0101 ( 2) A=10 B=7 10+7: 0 1010 0 0111 1 0001 正溢 正确 负溢 正确 正确 ( 3) A= -3 B= -2 -3+(-2): 1 1011 1 1101 1 1110 ( 4) A= -10 B= -7 -10+(-7): 0 1111 1 0110 1 1001 ( 5) A=6 B= -4 6+
10、(-4): 0 0010 0 0110 1 1100 ( 6) A= -6 B=4 -6+4: 1 1110 1 1010 0 0100 Cf=0 C =0 Cf=0 C =1 Cf=1 C =1 Cf=1 C =0 Cf=1 C =1 Cf=0 C =0 1 1 1 1 1 1 ( 2) A=10 B=7 10+7 : 0 1010 0 0111 1 0001 ( 4) A= -10 B= -7 -10+(-7): 0 1111 1 0110 1 1001 1. 硬件判断逻辑一 ( SA、 SB与 Sf的关系) 溢出 = SA SB Sf SA Sf SB 2. 硬件判断逻辑二 ( Cf与
11、C的关系) 溢出 = Cf C 3. 硬件判断逻辑三 (双符号位 ) ( 1) 3+2: 正确 00 0011 00 0010 00 0101 ( 2) 10+7: 00 1010 00 0111 01 0001 正溢 正确 负溢 正确 正确 ( 3) -3+(-2): 11 0111 11 1101 11 1110 ( 4) -10+(-7): 10 1111 11 0110 11 1001 ( 5) 6+(-4): 00 0010 00 0110 11 1100 ( 6) -6+4: 11 1110 11 1010 00 0100 第一符号位 Sf1 第二符号位 Sf2 溢出 = Sf1
12、Sf2 ( 2) A=10 B=7 10+7 : 0 1010 0 0111 1 0001 ( 4) A= -10 B= -7 -10+(-7): 0 1111 1 0110 1 1001 1. 硬件判断逻辑一 ( SA、 SB与 Sf的关系) 溢出 = SA SB Sf SA Sf SB 2. 硬件判断逻辑二 ( Cf与 C的关系) 溢出 = Cf C 3. 硬件判断逻辑三 (双符号位 ) 3.2.1.3 移位操作 逻辑移位 :数码位置变化,数值 不变 。 1. 移位类型 算术移位 1 0 0 0 1 1 1 1 循环左移: 0 :数码位置变化,数值 变化 , 符号位不变。 1 0 0 1
13、1 1 1 算术左移: 1 0 0 1 1 1 1 1 0 1 1 1 1 0 (-15) (-30) ( 1)单符号位 : 0 0111 0 1110 ( 2)双符号位: 00 1110 00 0111 2.正数补码移位规则 ( 3)移位规则 左移 右移 右移 0 0111 0 0011 左移 左移 右移 右移 01 1100 00 1110 00 0111 数符不变 (单:符号位不变;双:第一符号位不变)。 空位补 0 (右移时第二符号位移至尾数最高位)。 ( 1)单符号位 : 1 1011 1 0110 ( 2)双符号位: 10 1100 11 0110 3.负数补码移位规则 ( 3)移
14、位规则 左移 右移 右移 1 1011 1 1101 左移 右移 右移 11 0110 11 1011 数符不变 (单:符号位不变;双:第一符号位不变)。 左移空位补 0 (第二符号位移至尾数最高位)。 右移空位补 1 3.2.1.4 舍入方法 1. 0舍 1入(原码、补码) 0 00100原 1 00101原 1 11011补 2. 末位恒置 1(原码、补码) 0 00100原 1 11011补 1 00101原 0 0010原 1 0011原 1 1110补 0 0011原 1 0011原 1 1101补 1 001 原1 1101补例 . 保留 4位尾数: 例 . 保留 4位尾数: 3.
15、2.2 定点乘法运算 3.2.2.1 原码一位乘法 每次用一位乘数去乘被乘数。 1.算法分析 乘法 部分积累加、移位。 例 . 0.1101 1.1011 乘积 P = X Y 积符 SP= SX SY X原 Y原 ( 1)手算 0.1101 0.1011 1101 1101 0000 1101 0.10001111 上符号: 1.10001111 部分积 问题: 1)加数增多(由乘数位数决定)。 2)加数的位数增多(与被乘数、乘 数位数有关)。 改进:将一次相加改为分步累加。 ( 2)分步乘法 每次将一位乘数所对应的部分积与 原部分积的累加和相加,并移位。 设置寄存器: A:存放 部分积累加
16、和 、 乘积高位 B:存放 被乘数 C:存放 乘数 、 乘积低位 设置初值: A = 00.0000 B = X = 00.1101 C = Y = .1011 步数 条件 操作 A C 00.0000 .1011 1) Cn=1 +B Cn + 00.1101 00.1101 0.1101 0.1011 1101 1101 0000 1101 0.10001111 B C 00.0110 1.101 2) Cn=1 +B + 00.1101 01.0011 00.1001 11.10 113) Cn=0 +0 + 00.0000 00.1001 00.0100 111.1 4) Cn=1 +B + 00.1101 01.0001 00.1000 1111 X原 Y原 = 1.10001111 2.算法流程 0 A、 X B、 Y C、 0 CR Cn = 1 ? CR = n ? 1/2( A+B) A, C 1/2( A+0) A, C CR + 1 CR Y Y N N Sx + Sy SA