4 程序中断方式
4.1中断的概念
cpu在执行程序的过程中如果发生意外或特殊事件,cpu要中断当前程序的执行,处理特殊时间,通过执行中断服务程序的方式进行处理,处理结束后要返回被中断程序的程序断点
4.2 中断的产生
4.3 程序中断方式的接口电路
一、配置中断请求触发器和中断屏蔽触发器
- 如果INTR输出端为1,表示有中断请求,并且可以通过中断请求线告诉cpu外部设备有中断请求
- MASK,Q输出为1表示这个中断会被屏蔽,为0不会被屏蔽掉
二、中断排队器
排队有硬件软件两种方式,硬件使用链式排队器
三、中断向量地址形成部件
由硬件产生向量地址,再用向量地址找到入口地址
中断号:中断的编号
中断向量:中断服务程序的入口地址,有时也指程序状态字
向量地址:存储中断向量的存储单元地址
四、程序中断方式接口电路基本组成
4.4 I/O中断处理过程
一、CPU相应中断的条件和时间
1、条件
- 允许中断触发器EINT = 1
- 用开中断指令将EINT置为 1
- 用关中断指令将EINT置 0 ,或硬件自动复位
2、时间
当D = 1且MASK = 0时,CPU不能随时相应中断中断,在每条指令执行阶段的结束前 cpu查询是否有中断请求,通过查询信号把每一个接口当中有中断请求的接口的中断请求触发器置 1
二、I/O中断处理过程
- CPU在执行主程序过程中执行到了输入指定,要求指定外部设备将数据输入主机当中,CPU通过这条指令在数据线上给出设备的地址送到接口电路当中后,利于设备选择电路进行比较,SEL信号有效,由CPU传来启动命令,或者对接口或设备的控制命令,经过译码之后,该命令和SEL同时有效时,触发器D和B被设置
- B置为1,设备开始工作,数据还没有准备好所以D为0,B用于启动设备
- 设备启动后,数据被送入接口当中的数据缓冲寄存器DBR
- 工作结束,把触发器D和B进行修改,数据已经准备好
- 如果接口提出的中断请求没有被屏蔽,CPU发出中断查询信号,把中断接口请求触发器INTR置为1,同时启动排队器进行排队,
- 经过排队器排队后,输出信号只有1个是1其他都是0,
- CPU发出中断响应信号
- 信号发出后会形成向量地址,向量地址经过数据线传给cpu传给pc,pc利用地址取出中断服务程序的入口地址或者跳转指令
- 设备编码器的地址会通过数据线传递给cpu。cpu利用地址找到中断服务程序的入口地址,找到中断服务程序,运行,并取走数据
4.5 中断服务程序流程
一、中断服务程序的流程
1、保护现场
- 程序断点的保护 中断隐指令完成
- 寄存器内容的保护 进栈指令
2、中断服务
对不同的IO设备具有不同内容的设备服务
3、回复现场
出栈指令
4、中断返回 中断返回指令
二、单重中断和多重中断
1、单重中断
不允许中断现行的中断服务程序
2、多重中断(中断嵌套)
允许级别更高的中断源中断现行的中断服务程序
三、单重中断和多重中断的服务程序流程
四、主程序和服务程序抢占CPU的示意图
宏观上CPU与IO并行工作
微观上CPU中断现行程序为IO服务