• 1. 第8章 CPU 的结构和功能8.1 CPU 的结构8.3 指令流水8.2 指令周期8.4 中断系统
  • 2. 8.1 CPU 的结构一、 CPU 的功能取指令分析指令执行指令,发出各种操作命令控制程序输入及结果的输出总线管理处理异常情况和特殊请求1. 控制器的功能2. 运算器的功能实现算术运算和逻辑运算指令控制操作控制时间控制数据加工处理中断
  • 3. 二、CPU 结构框图PC IR指令控制操作控制时间控制数据加工处理中断ALU 寄存器中断系统1. CPU 与系统总线CU 时序电路寄存器ALU 中断 系统CUCPU控制总线数据总线地址总线8.1
  • 4. 2. CPU 的内部结构8.1 算术和 布尔逻辑取反移位状态标志内部 数据总线寄存器CU中断 系统ALU控制信号…C P U
  • 5. 1. 用户可见寄存器(1) 通用寄存器三、 CPU 的寄存器存放操作数可作 某种寻址方式所需的 专用寄存器(2) 数据寄存器存放操作数(满足各种数据类型)两个寄存器拼接存放双倍字长数据(3) 地址寄存器存放地址,其位数应满足最大的地址范围用于特殊的寻址方式 段基值 栈指针(4) 条件码寄存器存放条件码,可作程序分支的依据如 正、负、零、溢出、进位等8.1
  • 6. 2. 控制和状态寄存器(1) 控制寄存器PC控制 CPU 操作(2) 状态寄存器状态寄存器其中 MAR、MDR、IR 用户不可见 存放条件码PSW 寄存器存放程序状态字 PC 用户可见 3. 举例Z8000 8086 MC 68000MARMMDRIR8.1
  • 7. 四、 控制单元 CU 和中断系统1. CU 产生全部指令的微操作命令序列组合逻辑设计微程序设计硬连线逻辑存储逻辑2. 中断系统参见 第4篇 五、ALU参见 8.4 节参见 第6章8.1
  • 8. 8.2 指 令 周 期一、 指令周期的基本概念1 . 指令周期取出并执行一条指令所需的全部时间完成一条指令执行取指、分析取指阶段取指周期执行阶段执行周期(取指、分析)(执行指令)指令周期取指周期执行周期
  • 9. 2. 每条指令的指令周期不同取指周期指令周期取指周期 执行周期指令周期NOPADD mem MUL mem8.2取指周期执行周期指令周期…
  • 10. 3. 具有间接寻址的指令周期4. 带有中断周期的指令周期取指周期间址周期指令周期执行周期取指周期间址周期指令周期执行周期中断周期8.2
  • 11. 5. 指令周期流程取指周期执行周期有间址吗?有中断吗?间址周期中断周期是是否否8.2
  • 12. 6. CPU 工作周期的标志CPU 访存有四种性质取 指令取 地址取 操作数存 程序断点取指周期间址周期执行周期中断周期FEDINDDINTDCLK1FE1IND1EX1INTEXDCPU 的 4个工作周期8.2
  • 13. 1. 取指周期数据流二、 指令周期的数据流MDRCUMARPCIR存储器CPU地址总线数据总线控制总线IR+1 8.2
  • 14. 2. 间址周期数据流MDRCUMARCPU地址总线数据总线控制总线PCIR存储器MDR8.2
  • 15. 3. 执行周期数据流4 . 中断周期数据流不同指令的执行周期数据流不同MDRCUMARCPU地址总线数据总线控制总线PC存储器8.2
  • 16. 8.3 指 令 流 水一、如何提高机器速度1. 提高访存速度2. 提高 I/O 和主机之间的传送速度 提高整机处理能力高速芯片Cache多体并行I/O 处理机DMA多总线通道高速器件改进系统结构 ,开发系统的并行性中断3. 提高运算器速度高速芯片改进算法快速进位链
  • 17. 二、系统的并行性时间上互相重叠2. 并行性的等级指令级(指令之间)    (指令内部)过程级(程序、进程)两个或两个以上事件在 同一时刻 发生两个或两个以上事件在 同一时间段 发生并行1. 并行的概念粗粒度软件实现细粒度硬件实现并发同时8.3
  • 18. 取指令 3执行指令 3三、指令流水原理2. 指令的二级流水1. 指令的串行执行取指令 取指令部件 完成总有一个部件 空闲指令预取若 取指 和 执行 阶段时间上 完全重叠指令周期 减半 速度提高 1 倍…执行指令 执行指令部件 完成取指令 1执行指令 1取指令 2执行指令 2取指令 3执行指令 3取指令 2执行指令 2取指令 1执行指令 18.3
  • 19. 必须等 上条 指令执行结束,才能确定 下条 指令的地址, 造成时间损失3. 影响指令流水效率加倍的因素(1) 执行时间 > 取指时间 (2) 条件转移指令 对指令流水的影响 解决办法 ?取指令 部件指令部件 缓冲区执行指令 部件猜测法8.3
  • 20. 4. 指令的六级流水六级流水14 个时间单位串行执行6 × 9 = 54 个时间单位完成 一条指令6 个时间单位COFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFI指令 1指令 2指令 3指令 4指令 5指令 6指令 7指令 8指令 9 1 2 3 4 5 6 7 8 9 10 11 12 13 14t8.3
  • 21. 指令 1 与指令 4 冲突指令 2 与指令 5 冲突指令1、指令3、指令 6 冲突…COFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFICOFOEIWODIFI指令 1指令 2指令 3指令 4指令 5指令 6指令 7指令 8指令 9 1 2 3 4 5 6 7 8 9 10 11 12 13 14t四、影响指令流水线性能的因素1. 结构相关8.3不同指令争用同一功能部件产生资源冲突程序的相近指令之间出现某种关联 使指令流水出现停顿,影响流水线效率解决办法• 停顿• 指令存储器和数据存储器分开• 指令预取技术 (适用于访存周期短的情况)
  • 22. 2. 数据相关不同指令因重叠操作,可能改变操作数的 读/写 访问顺序 采用 旁路技术解决办法8.3 写后读相关(RAW)SUB R1,R2,R3ADD R4,R5,R1;(R2) (R3) R1;(R5)+(R1) R4 读后写相关(WAR)STA M,R2ADD R2,R4,R5;(R2) M 存储单元;(R4)+(R5) R2 写后写相关(WAW) 后推法MUL R3,R2,R1SUB R3,R4,R5;(R2)× (R1) R3;(R4) (R5) R3
  • 23. 3. 控制相关8.3BNE 指令必须等 CPX 指令的结果 才能判断出 是转移 还是顺序执行LDA # 0LDX # 0INXCPX # NBNE MDIV # NSTA ANSADD X, DM由转移指令引起
  • 24. 3. 控制相关8.3WOEIFOCODIWOEIFODIFIFIDIFICOFIFOCODIFIWOEIFOCODIFIDIFOEIWOEIFOCOFIDICOWODIFICOFI指令 1指令 2指令 3指令 4指令 5指令 6指令 7指令15指令16 1 2 3 4 5 6 7 8 9 10 11 12 13 14转移损失t设 指令3 是转移指令
  • 25. 五、流水线性能 1. 吞吐率 单位时间内 流水线所完成指令 或 输出结果 的 数量8.3 最大吞吐率 实际吞吐率 连续处理 n 条指令的吞吐率为设 m 段的流水线各段时间为ΔtTpmax =Δ1tTp =m ·Δ + (n-1) · Δ ntt
  • 26. 2. 加速比 Sp 8.3 m 段的 流水线的速度 与等功能的 非流水线的速度 之比 设流水线各段时间为 Δt 完成 n 条指令在 m 段流水线上共需 T = m · + (n-1) · t t ΔΔ 完成 n 条指令在等效的非流水线上共需  T ′= nm ·t ΔSp = m · +(n-1) · nm ·=nmm + n -1 Δt ΔΔt t  则
  • 27. 由于流水线有 建立时间 和 排空时间 因此各功能段的 设备不可能 一直 处于 工作 状态 8.3流水线中各功能段的 利用率3. 效率 mΔt31245312453124531245… … …… … …… … …… … …n-1 nn-1 nn-1 nn-1 nT时间S空间空间S4S3S2S1(n-1) Δt
  • 28. 8.3m(m + n -1) Δt = mnΔt 流水线各段处于工作时间的时空区流水线中各段总的时空区 效率 = 3. 效率 mΔt31245312453124531245… … …… … …… … …… … …n-1 nn-1 nn-1 nn-1 nT时间S空间空间S4S3S2S1(n-1) Δt流水线中各功能段的 利用率
  • 29. 六、流水线的多发技术 1. 超标量技术 每个时钟周期内可 并发多条独立指令 不能调整 指令的 执行顺序配置多个功能部件 通过编译优化技术,把可并行执行的指令搭配起来8.3IF ID EX WR0 1 2 3 4 5 6 7 8 9 10 11 12 13时钟 周期指令序列
  • 30. 2. 超流水线技术 在 一个时钟周期 内 再分段 ( 3 段) 不能调整 指令的 执行顺序在一个时钟周期内 一个功能部件使用多次( 3 次)靠编译程序解决优化问题流水线速度是原来速度的 3 倍8.3IF ID EX WR0 1 2 3 4 5 6 7 8 9 10 11 12 13时钟周期指令序列
  • 31. 3. 超长指令字技术 采用 多个处理部件具有 多个操作码字段 的 超长指令字(可达几百位)由编译程序 挖掘 出指令间 潜在 的 并行性,将 多条 能 并行操作 的指令组合成 一条8.3IF ID EX WR0 1 2 3 4 5 6 7 8 9 10 11 12 13时钟周期指令序列
  • 32. 七、流水线结构1. 指令流水线结构完成一条指令分 7 段, 每段需一个时钟周期若 流水线不出现断流1 个时钟周期出 1 结果不采用流水技术7 个时钟周期出 1 结果理想情况下,7 级流水 的速度是不采用流水技术的 7 倍地址形成部件指令译码部件取操作数部件取指令部件操作执行部件回写结果部件修改指令指针部件锁存锁存锁存锁存锁存锁存8.3
  • 33. 2. 运算流水线完成 浮点加减 运算 可分 对阶、尾数求和、规格化 三段分段原则 每段 操作时间 尽量 一致锁存器对阶功能部件第一段尾数加部件锁存器第二段规格化部件锁存器第三段8.3
  • 34. 8.4 中断系统一、概述1. 引起中断的各种因素(1) 人为设置的中断(2) 程序性事故如 转管指令溢出、操作码不能识别、除法非法(5) 外部事件(4) I/O 设备(3) 硬件故障用 键盘中断 现行程序转管指令……管理程序
  • 35. 2. 中断系统需解决的问题(1) 各中断源 如何 向 CPU 提出请求 ?(2) 各中断源 同时 提出 请求 怎么办 ?(5) 如何 寻找入口地址 ?(4) 如何 保护现场 ?(3) CPU 什么 条件、什么 时间、以什么 方式 响应中断 ?(6) 如何 恢复现场,如何 返回 ?(7) 处理中断的过程中又 出现新的中断 怎么办 ?硬件 + 软件8.4
  • 36. 二、中断请求标记和中断判优逻辑1. 中断请求标记 INTR一个请求源 一个 INTR 中断请求标记触发器多个INTR 组成 中断请求标记寄存器INTR 分散 在各个中断源的 接口电路中INTR 集中 在 CPU 的中断系统 内12345n掉电过热阶上溢主存读写校验错非法除法键盘输入打印机输出8.4
  • 37. 2. 中断判优逻辑① 分散 在各个中断源的 接口电路中 链式排队器② 集中 在 CPU 内(1) 硬件实现(排队器) 1 1 1 & 1 & 1 &参见 第五章INTR1INTR2INTR3INTR4INTR1 、 INTR2 、 INTR3 、 INTR4 优先级 按 降序 排列 INTP1INTP2INTP3INTP48.4
  • 38. A、B、C 优先级按 降序 排列(2) 软件实现(程序查询)否…是否 A 请求?是否 B 请求?是否 C 请求?转 A 的服务程序 入口地址转 B 的服务程序 入口地址转 C 的服务程序 入口地址是是是否否8.4
  • 39. 三、中断服务程序入口地址的寻找1. 硬件向量法入口地址 200入口地址 300入口地址 40012 H13 H14 H主存12 H13 H14 HJMP 200JMP 300JMP 400主存向量地址 形成部件……中断向量排队器输出向量地址 12H、13H、14H 入口地址 200、 300、 4008.4
  • 40. 2. 软件查询法 M JMP 1# SR1# D = 1 转1# 服务程序 SKP DZ 2# JMP 2# SR2# D = 0 跳2# D = 1 转2# 服务程序 SKP DZ 8# JMP 8# SR8# D = 0 跳8# D = 1 转8# 服务程序八个中断源 1,2, 8 按 降序 排列……8.4 SKP DZ 1#1# D = 0 跳(D为完成触发器)中断识别程序(入口地址 M)地 址说 明指 令
  • 41. 四、中断响应1. 响应中断的 条件允许中断触发器 EINT = 12. 响应中断的 时间指令执行周期结束时刻由CPU 发查询信号 CPU 中断查询INTR1DQINTR2DQINTRnDQ中断源 1中断源 2中断源 n…至排队器8.4
  • 42. 3. 中断隐指令(1) 保护程序断点(2) 寻找服务程序入口地址(3) 硬件 关中断向量地址 形成部件INTSQREINTSQRPC 1 &≥1排队器……断点存于 特定地址( 0 号地址) 内断点 进栈INT 中断标记EINT 允许中断R – S 触发器8.4向量地址PC(硬件向量法)中断识别程序 入口地址MPC(软件查询法)
  • 43. 五、保护现场和恢复现场1. 保护现场2. 恢复现场寄存器 内容断点保护现场其它服务程序恢复现场中断返回PUSH视不同请求源而定POP中断服务程序 完成中 断 服 务 程 序中断隐指令 完成中断服务程序 完成8.4IRET
  • 44. 1. 多重中断的概念klmk +1l +1m +1第一次 中断第二次 中断第三次 中断程序断点 k+1 , l+1 , m+1六、中断屏蔽技术8.4
  • 45. 2. 实现多重中断的条件B、CA中断 请求主程序(2) 优先级别高 的中断源 有权中断优先级别低 的中断源(1) 提前 设置 开中断 指令ABCD中断服务程序( A、B、 C、 D 优先级按 降序 排列)D8.4
  • 46. &3. 屏蔽技术(1) 屏蔽触发器的作用MASK = 0(未屏蔽)INTR 能被置 “1” & & & & 1 1 1 1INTP1INTP2INTP3INTP4INTR1INTR2INTR3INTR4MASK1MASK2MASK3MASK4DQ 1 DINTR MASKQCPU 查询MASKi = 1 (屏蔽)INTPi = 0 (不能被排队选中)8.4
  • 47. (2) 屏蔽字8.4 优先级屏 蔽 字 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 0 1 1 1 1 1 1 1 1 1 1 1 1 1 10 0 0 1 1 1 1 1 1 1 1 1 1 1 1 10 0 0 0 1 1 1 1 1 1 1 1 1 1 1 10 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1…0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11234561516…16个中断源 1,2,3 , 16 按 降序 排列…
  • 48. (3) 屏蔽技术可改变处理优先等级响应优先级响应优先级 A→B→C→D 降序排列 8.4不可改变处理优先级可改变(通过重新设置屏蔽字)中断源原屏蔽字新屏蔽字A B C D 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 1 1 1 1 0 1 0 0 0 1 1 0 0 1 1 1 处理优先级 A→D→C→B 降序排列
  • 49. (3) 屏蔽技术可改变处理优先等级8.4服务程序B处理完C处理完D处理完A处理完t主程序A程序B程序C程序D程序A、B、C、D 同时请求中断CPU 执行程序轨迹(原屏蔽字)
  • 50. (3) 屏蔽技术可改变处理优先等级(4) 屏蔽技术的其他作用8.4便于程序控制可以 人为地屏蔽 某个中断源的请求服务程序D处理完C处理完B处理完A处理完t主程序A程序B程序C程序D程序A、B、C、D 同时请求中断CPU 执行程序轨迹(新屏蔽字)
  • 51. 8.4(5) 新屏蔽字的设置 保护现场 置屏蔽字 开中断 中断服务 关中断 恢复现场 恢复屏蔽字 开中断 中断返回 置屏蔽字 恢复屏蔽字 关中断 开中断
  • 52. (1) 断点进栈(2) 断点存入“ 0 ” 地址中断隐指令 完成中断周期命令存储器写0 MARPC MDR(MDR) 存入存储器三次中断,三个断点都存入 “ 0 ” 地址4. 多重中断的断点保护断点 MDR?如何保证断点不丢失?中断隐指令 完成8.4
  • 53. (3) 程序断点存入 “ 0 ” 地址的断点保护 ××××05JMP SERVE ××××SAVE ××××RETURNSTA SAVE…0 地址内容转存其他服务内容SERVELDA SAVEJMP @ RETURN存程序断点5 为向量地址…保护现场恢复现场间址返回存放 ACC 内容转存 0 地址内容开中断ENILDA 0STA RETURN置屏蔽字8.4地 址内 容说 明