1.CPU发送启动I/O设备的命令,将I/O接口中的B触发器置1,D触发器置O。
2.设备开始工作,需要向CPU传送数据时,将数据送入数据缓冲器中。
3.输入设备向I/O接口发出“设备工作结束”的信号,将D触发器置1,B触发器置0。标志着I/O设备已就绪。
4.CPU在每条指令执行即将结束时,发出中断查询信号。中断查询信号可以让那些接口中D触发器置1且中断屏蔽触发器(MASK)置0的设备的I/O接口中的中断请求触发器(INTR)置1。若该设备的I/O接口中的中断请求触发器(INTR)置1,则代表该设备正式向CPU提出中断请求。
5.一般来说,在同一个时间点存在多个设备同时提出中断请求,存在一个INTRi序列。而CPU每次只能处理一个中断请求,因此将INTRi序列送至排队器进行中断判优,速度越快的I/O设备优先级越高。
6.在中断允许触发器(EINT)置1的情况下,CPU对优先级最高的设备进行中断响应,首先将INTR发送到编码器形成向量地址。将向量地址至PC作为下一条指令的地址。
7.向量地址指向的主存的存储单元里存放的实际上是一条无条件转移指令(JMP),其中包含着中断服务程序的地址。执行完这条指令后,CPU就找到了中断服务程序的入口。
8.CPU进入中断服务程序阶段。进入中断服务阶段后,首先由硬件线路自动进行关中断将中断允许触发器(EINT)置0,避免其他中断源的请求打扰。
9.在提出中断请求的设备服务之前,CPU需要保存当前程序的断点和保存通用寄存器和状态寄存器中的有用的信息至主存储器或堆栈。前者是通过中断隐指令完成,后者是通过中断程序的指令完成。中断隐指令不是一条真实存在的机器指令,而是由硬件电路自动完成的一条指令。
10.保护好现场之后,CPU进入中断服务程序的主体部分,进行设备服务。此时CPU通过输入指令,将设备发送到数据缓冲器中的数据送至通用寄存器,最终送至主存储器的存储单元。之后再进行恢复现场。
11.完成设备服务等操作之后,CPU执行中断服务程序的最后一条指令返回原程序的断点。
12.CPU继续原程序的执行。