CPU的结构和功能
指令周期
- 复习回顾
- MAR
- 用于存放将被访问的存储单元的地址
- MDR
- 用于存放欲存入存储器中的数据或最近从存储器中读出的数据
- PC
- 用于存放现行指令的地址,通常具有计数功能
- IR
- 用于存放当前欲执行的指令
- CU
- 控制器,发出读写指令,并控制PC的内容加1等等
- MAR
- 指令周期
- 取指周期
- 间址周期
- 执行周期
- 中断周期
指令流水
- 将指令的处理过程细分
- 流水线的性能
- 吞吐率
- 加速比
- 效率
- 吞吐率
- 举个栗子
中断系统
- 引起中断的各种因素
- 人为设置的中断 如 转管指令
- 程序性事故 溢出、操作码不能识别、除法非法
- 硬件故障
- I/O 设备
- 外部事件 用 键盘中断 现行程序
- 中断系统需解决的问题
- 1 各中断源如何向CPU提出请求 ?
- 一个请求源 一个INTR中断请求标记触发器
- 当 INTR状态为1时 表明中断源有请求
- 一个请求源 一个INTR中断请求标记触发器
- 2 各中断源同时提出请求怎么办 ?
- 中断判优逻辑 各中断源的优先顺序是根据该中断源若得不到及时响应,致使机器工作出错的严重程度而定的
- 硬件排队
- 链式排队器
- 软件排队
- 程序实现
- 硬件排队
- 中断判优逻辑 各中断源的优先顺序是根据该中断源若得不到及时响应,致使机器工作出错的严重程度而定的
- 3 CPU什么条件、什么时间、以什么方式响应中断?
- CPU响应I/O中断的条件是允许中断触发器EINT为“1”
- 当EINT=1,且有中断请求(即INTR=1),CPU可以响应中断
- CPU总是在指令执行周期结束后,响应任何请求源的请求。若有中断,则进入中断周期;若无中断,则进入下一条指令的取指周期
- CPU会在执行周期结束后,统一向所有请求源发出中断查询信号。此时,CPU才能获知哪个中断源有请求
- CPU响应I/O中断的条件是允许中断触发器EINT为“1”
- 4 如何保护现场?
- 断点 中断隐指令完成 程序断点(或者说PC的内容)存于特定地址(0号地址),即断点进栈
- 寄存器内容 中断服务程序完成
- 5 如何寻找入口地址?
- 不同中断源对应不同的中断服务程序,故准确找到服务程序的入口地址是中断处理的核心问题
- 硬件向量法
- 利用硬件产生向量地址(排队器的输出作为硬件的输入),再由向量地址找到中断服务程序的入口地址
- 向量地址–>PC
- 软件查询法
- 程序实现
- 中断识别程序入口地址M–>PC
- 6 如何恢复现场,如何返回?
- 恢复现场由 中断服务程序完成
- 7 处理中断的过程中又出现新的中断怎么办? 硬件+软件
- 提前设置开中断指令
- 优先级别高 的中断源 有权中断优先级别低 的中断源
- 8 保护断点 寻找入口地址 关中断 都是中断周期内由一条中断隐指令完成的
- 关中断实际上就是 中断屏蔽
- 1 各中断源如何向CPU提出请求 ?
- 中断屏蔽技术
- 在不改变CPU响应中断的次序下,通过改变屏蔽字可以改变CPU处理中断的次序
- 举个栗子
- 假设CPU中断源的优先级为 A->B->C->D降序排列,现在改变屏蔽字,即改变了处理次序