一、程序查询方式
CPU不断轮询检查I/O控制器中“状态寄存器”,检测到状态为“已完成”之后,再从数据寄存器取出输入数据。
过程:
1.CPU执行初始化程序,并预置传送参数;设置计数器、设置数据首地址。
2. 向I/O接口发送命令字,启动I/O设备
3.CPU从接口读取设备状态信息
4.CPU不断查询I/O设备状态,直到外设准备就绪
5.传送一次数据,一般为一个字
6.修改传送参数,修改地址和计数器参数
⭐CPU一旦启动I/O必须停止现行程序的运行,并在现行程序中插入一段程序。
主要特点:CPU有“踏步”等待的现象,CPU与I/O串行工作。
二、程序中断方式
1.中断的概念
程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。
2.中断的工作流程
中断请求→中断响应→中断处理
(1)中断请求
中断源向CPU发送中断请求信号。
(2)中断响应
响应中断的条件。
中断判优:多个中断源同时提出中断请求的话需要进行中断判优。
(3)中断处理
中断隐指令。
中断服务程序。
3.中断请求标志
为了记录中断事件并区分不同的中断源,中断系统需要对每个中断源设置中断请求标记触发器INTR。
CPU响应中断的时间,是在每条指令执行阶段的结束时刻。
4.中断判优优先级设置
5.中断处理过程
5.1 隐指令
中断隐指令,不是一条具体的指令,而是CPU检测到中断请求时自动完成的一系列动作。
主要任务:
(1)关中断
(2)保存断点
(3)引出中断服务程序
5.2 向量地址
确定中断服务程序它的入口地址的方法有两个:硬件向量法、软件查询法
(1)硬件向量法
第一步:得到中断类型号
首先,根据某个中断请求信号通过硬件,得到对应的中断向量的保存地址。
(中断向量,把指向中断服务程序起始地址的地址信息称为中断向量)
第二步:得到中断服务程序的入口地址
向量地址对应的主存里保存了JMP无条件转移指令,这个无条件转移指令指明了当前中断请求对应的中断服务程序的入口地址 。
5.3 中断服务程序
(1)保护现场
(2)中断服务
(3)恢复现场
(4)中断返回
6.多重中断
6.1 中断屏蔽字
“1” 表示屏蔽该中断的源的请求,即继续执行当前正在执行的中断。
“0” 表示正常申请,停止当前程序去执行新的中断程序。
三、DMA方式