概述
发展
- 早期阶段(程序查询方式,即完全通过 CPU)
- 接口模块和 DMA 阶段(中断方式和 DMA 方式)
- 具有通道结构的阶段
- 具有 I/O 处理器的阶段
组成
- 软件:I/O 指令,通道指令(通道指令存放在主存里面,属于通道不属于 CPU)
- 硬件:I/O 接口,设备控制器,通道
联络方式
编制方式:统一编址(和内存的指令共用),不统一编址(有专门的I/O指令)
传送方式:串行,并行
联络方式:立即响应,异步工作采用应答信号(注意串行的时候需要标记起始位和终止位),同步工作采用同步时标
连接方式
- 辐射式连接:每台设备都配有一套控制线路和一组信号线,不便于增删设备(单独设计电路,如果想要删除就必须重新设计电路)
- 总线连接:便于增删设备(USB 就是总线连接)
控制方式
程序查询方式
在进行 I/O 的时候,CPU 也需要停下来等待。CPU会不断检查 I/O 的状态,造成效率非常的低。
程序中断方式
当 I/O 自己在准备的时候,CPU 不会检查输入输出设备的状态。只有在开始信息交换的时候,那么输入输出设备就会请求中断,CPU 执行中断后,执行 I/O 操作。
DMA 方式
主存和 I/O 之间可以直接进行数据的交换,无需 CPU 的参与。DMA 会窃取一个或若干个存取周期,进行主存和 I/O 的数据传输。但是这个时候,CPU 不能使用主线,但好在 CPU 有缓存,我们仍然可以利用缓存中指令和数据继续执行程序。
I/O 设备
I/O 接口
功能和组成
- 设备选择线:选择所用到的设备
- 数据线:传送数据
- 命令线:判断是读还是写
- 状态线:判断是否在忙
功能 | 组成 |
---|---|
选址功能 | 设备选择电路 |
传送命令的功能 | 命令寄存器、命令译码器 |
传送数据的功能 | 数据缓冲寄存器 |
反映设备状态的功能 | 设备状态标记(完成触发器,工作触发器,中断请求触发器,屏蔽触发器) |
接口类型
程序查询方式
接口电路
其中工作寄存器是 B, 完成寄存器是 D。在 (1) 的时候,D=1,B=0表示设备在工作,但是数据仍然没有准备好。当设备工作完成后,执行 (4) ,使得 D=1,B=0,说明数据准备好了。在此期间,CPU 会一直检查 D,一但 D 为1,CPU 就把 DBR 中的数据取出。
程序中断方式
I/O 中断的例子
接口电路
- 配置中断请求触发器和中断屏蔽触发器(可能有优先级高的中断,所以需要屏蔽)。如下图,中断请求触发器的值取决于完成触发器和屏蔽触发器的值。
- 排队器(对于高速设备,肯定是要优先级高一些的,因为不及时处理就会丢失数据),下图链式排队器,越靠左优先级越高。
- 中断向量地址形成部件:由硬件产生向量地址,再由向量地址找到中断服务程序入口地址。
- 程序中断方式接口电路的基本组成:其实就是在原来程序查询方式的接口电路基础上,加上了 INTR 和 MASK,以及排队器和中断向量的编码器。设备编码器是将排队器输出转换为中断向量。
中断服务程序流程
保护现场 -> 中断服务 -> 恢复现场 -> 中断返回
保护现场需要保护程序的断点,也需要保护一些通用的寄存器(进栈)。
单重中断和多重中断:
- 单重中断:不允许中断现行的中断服务程序
- 多重中断:允许级别更高的中断源中断现行的中断服务程序
DMA 方式
DMA 与主存交换数据的方式
停止 CPU 访问主存
在DMA工作的过程中,如果缓存里面没有执行的程序,CPU 则会停下来。
周期挪用
DMA 访问主存有三种可能
- CPU 此时不访存
- CPU 正在访存
- CPU 与 DMA 同时请求访存:此时 CPU 将总线控制权让给 DMA
DMA 与 CPU 交替访问
不需要申请建立和归还总线的使用权,但实际上没什么实用价值(因为有些时候 DMA 不需要这么多时间)
功能和组成
DMA 需要的功能如下:
- 向 CPU 申请 DMA 传送
- 处理总线控制权的转交
- 管理系统总线、控制数据传送
- 确定数据传送的首地址和长度,修正传送过程中的数据地址和长度
- DMA 传送结束时,给出操作完成信号
DMA 接口组成:
AR 是地址寄存器,WC 是传输的数据数量, DAR 是设备地址寄存器,BR 是数据缓冲器(Buffer)。
DREQ,DACK 是设备的请求和确认信号,HRQ 是接管总线的请求信号,HLDA 是允许接管总线的应答信号。
DMA 的工作过程
右图是数据传送的一个过程。
首先设备向 DMA 发出请求 DREQ,然后 DMA 请求占用总线 HRQ,如果可以的话,CPU 会给出应答信号 HLDA,然后设置AR为要访问的内存单元起始地址,然后执行 DACK 表示设备已经准备好数据传输了,然后进行数据的传输。直到 WC 不断加到溢出后(一开始 WC 为负数,溢出为000...),然后执行中断。然后中断程序执行后处理:
- 校验送入主存的数是否正确
- 是否继续用 DMA
- 测试传送过程是否正确,错则转诊断程序
- 由中断服务程序完成
DMA 接口与系统的连接方式
具有公共请求线的 DMA 请求(同链式访问,越近优先级越大)
独立的 DMA 请求:(同总线的独立请求方式)
DMA 方式与程序中断方式的比较
中断方式 | DMA 方式 | |
---|---|---|
数据传送 | 程序 | 硬件 |
响应时间 | 指令执行结束 | 存取周期结束 |
处理异常情况 | 能 | 不能 |
中断请求目的 | 传送数据 | 后处理 |
优先级 | 低 | 高(直接交换,一般都是高速设备) |