I/O方式
程序查询方式
通过程序查询的方式调用IO
特点:主机执行IO程序,不停发送询问信号,根据返回信息决定自己操作
就是CPU执行IO程序不断查询IO状态,在这时候CPU就只专注于IO,等待IO准备完毕。
优点:接口设计简单、设备量少
缺点:CPU浪费太多时间等待。
程序中断方式
中断的主要功能
- 处理CPU和IO设备的并行工作(通过中断实现并行)
- 处理硬件故障和软件错误
- 实现人机交互,用户干预机器
- 实现多道程序分时操作
- 实时处理
- 管态(机器操作)和目态(用户态)的切换,软中断(在操作系统中详解)
- 多处理器系统中的处理器之间的通信
总结:只要是需要切换或者打断的操作都要用到中断
中断的优先级
使用硬件排队器实现判定优先级
- 不可屏蔽中断 > 内部异常 > 可屏蔽中断
- 内部异常中:硬件故障 > 软件中断
- DMA中断请求优先于IO设备传送的中断请求
- 在IO传送中断请求中:高速设备 > 低速设备,输入设备 > 输出设备, 实时设备 > 普通设备
CPU响应中断的条件
- 中断源有请求
- CPU允许中断(开中断),当然异常和不可屏蔽中断不受此限制
- 一条指令执行完毕(异常不受此限制),CPU只会在一条指令执行完后检查INTR或者NMI,如果是内部异常,就不用检查来自两条中断线的请求就能发现。
中断响应过程
先关中断,防止保存程序断点和现场信息的时候被打扰
然后保存断点,保留原程序的PC和PSW内容。
引出中断服务程序,识别中断源(硬件向量法和软件查询法),将中断处理程序的地址送入PC,执行。
中断向量
中断向量和中断向量表:
中断向量就是中断执行程序的入口地址
中断向量表就是储存类型号对应入口地址的一张表
CPU响应中断后,识别中断源获得类型号,计算出中断向量的地址,根据中断向量表中获得中断处理程序的地址。
中断执行过程
首先是响应中断,包括上述的三个过程,由隐指令(硬件自动)实现
然后执行中断服务程序:
4. 保存现场(用户可见的工作寄存器内容)和中断屏蔽字(该中断屏蔽什么别的中断)
注意:现场信息因为可用指令访问所以通常用中断程序(软件)将其保存,而断点信息CPU自动记录,也就是用硬件将其保存。
5. 开中断,这时候可以被打断了,允许更高优先级的中断打断
6. 执行具体中断服务程序
7. 关中断,要恢复现场不能打断
8. 恢复现场和屏蔽字
9. 开中断,中断返回,继续回去执行原本的程序
多重中断
相当于中断的时候还能执行别的中断
CPU必须满足以下条件:
- 必须提前设置开中断指令
- 优先级别高的中断源有权利中断优先级别低的
中断处理优先级是通过中断屏蔽技术实现的,也就是中断屏蔽字告知处理优先级。
DMA方式
DMA是完全由硬件组成的进行成组信息传送的控制方式,相当于直接在外设和内存中开辟出一条通道,不用CPU进行处理。所以成为直接存储器存取方式。硬件开销大,此时,中断仅用于故障和正常传送结束后CPU的介入处理。
DMA特点
- 主存既可以被CPU访问,也可以被外设访问
- 地址的确认和传送数据的计数均由硬件电路实现
- 主存要配合开辟专用缓冲区(通道的速度比不上主存内部的存取速度)
- CPU和外设能做到真正意义上的并行操作
- 传送开始前通过程序预处理,结束时调用中断后处理。
三个DMA传送方式
停止CPU访存:每次IO设备有DMA请求时,DMA控制器(DMA接口)给CPU一个停止信号,让CPU挂起停止访问主存,直到DMA传送数据结束,结束后DMA控制器通知CPU让CPU可以访问主存。
周期挪用:当IO设备有DMA请求的时候,会出现三种情况
- CPU不在访存,此时没有冲突
- CPU正在访存,等到访存完毕后让出总线
- CPU同时访存,出现冲突,CPU要暂时放弃,因为IO访存优先级高于CPU访存。IO挪用几个存取周期传点数然后释放。
交替访存:假如CPU工作周期大于存取周期,可以在工作周期中划分出一部分专供DMA访存,剩下一部分专供CPU访存。
DMA传送过程
- 预处理:CPU先执行一些IO指令测试IO设备,然后初始化DMA控制器。IO准备好数据,然后把相关信息传送给DMA控制器(发送请求给DMA控制器),然后IO外设发送DMA请求给DMA控制器,DMA控制器发送总线请求给CPU。DMA请求来自外设
- 数据传送:DMA开始传送数据,以单字节或者字或者数据块为单位。此阶段完全由DMA控制
- 后处理:DMA控制器向CPU发送中断请求,CPU执行中断服务程序做DMA结束处理。
DMA方式和中断方式的区别
DMA刚开始发送的请求有别于中断,是不用保存上下文的。
- 中断需要保护和恢复现场,DMA不中断现行程序,只有预处理和后处理才占用CPU资源
- 中断响应必须在指令执行完毕后(执行周期后),而DMA请求响应在机器周期结束后(取指、间址、执行周期后均可)就行。(我觉得可能是总线的存取周期有关,每次对总线的存取都需要检验总线请求)
- 中断传送需要CPU的干预,而DMA传送不需要CPU的干预,数据传输率高
- DMA请求优先级高于中断请求
- 中断方式能处理异常事件,DMA适合大批数据传送
- 中断方式靠程序传送,DMA靠硬件方式传送。
注意:DMA方式无需保存现场,哪怕在数据传送后执行中断
DMA方式不会修改通用寄存器,不用保存。