程序中断方式属于I/O控制方式的一种,用于控制I/O设备输入输出数据。
这种方式的大致步骤是(以输入设备为例):当CPU通过I/O指令的地址码选中某设备后,由CPU向I/O接口发出启动I/O设备命令(B=1,D=0),此后CPU继续它的工作。I/O接口收到命令后启动相应设备,输入设备将数据送入数据缓冲寄存器,此时输入设备向接口发出设备工作结束信号(D=1,B=0),标志设备就绪。当D=1且MASK=0(设备未被屏蔽)时,在指令执行阶段结束时刻,由CPU发出中断查询信号。这时,设备中断请求触发器INTR=1,标志设备向CPU提出中断请求。与此同时,INTR送至排队器进行中断判优。若CPU允许中断(EINT=1),设备又被排队器选中,此时进入中断响应阶段,由CPU执行中断隐指令保护断点(PC和PSW内容),由中断响应信号INTA将排队器输出送至编码器形成向量地址。这条向量地址实际上是一条无条件转移地址,被送至PC执行后,将跳转至中断服务程序入口地址,进行中断服务(通过输入指令将数据缓冲寄存器的输入数据送至CPU寄存器再存入主存)。中断服务程序最后一条指令将返回原程序断点处。至此,一个完整的程序中断处理过程结束(中断周期结束)。
中断处理过程可概括为中断请求,中断判优,中断响应,中断服务,中断返回。
一、中断请求
中断请求触发器(INTR):每台外部设备配置一个,用来向CPU提出中断请求。它的输出取决于中断屏蔽触发器(MASK)、完成触发器(D)和中断查询信号。
二、中断判优
当多个中断源同时向CPU提出中断请求,CPU需要对高优先级I/O进行响应(通过硬件方式如排队器,或软件方式)。
三、中断响应
CPU响应中断的条件是:①中断源有中断请求(INTR=1);②CPU开中断(CPU的允许中断触发器EINT=1;该触发器的值可由开/关中断指令设置);③一条指令执行完毕,且没有更紧迫的任务。
在CPU执行中断服务程序之前,需要先执行中断隐指令。这条指令负责①关中断②保存断点(PC和PSWR)③引出中断服务程序
CPU的中断响应信号连同INTP信号一起作为中断向量地址形成部件的输入,产生中断向量地址。这个地址的内容确定了中断服务程序的入口地址。
此处需要区分中断向量地址和中断服务程序入口地址(中断向量)这两个概念!
四、中断服务
保护现场(用户可见的工作寄存器内容)和屏蔽字(由各个屏蔽触发器MASK组合而成的屏蔽字寄存器的内容)
在执行中断服务程序的设备服务代码之前,根据是否允许中断嵌套,有以下不同:
这里的开中断允许更高级的中断请求响应。
1.CPU干预的时间段:
2.数据传送单位:每次读写一个字
3.数据流向:A.读:外部输入—I/O设备—CPU—主存
B.写:主存—CPU—I/O设备