I/O 控制方式是指 CPU 控制 I/O 设备与主机之间数据传送的方式,经历了从简单到复杂的发展过程。
1. 四种 I/O 控制方式
| 方式 | CPU 参与程度 | 数据传送单位 | 传送方向 |
| 程序查询方式 | 完全参与 | 字/字节 | CPU ↔ 设备 |
| 程序中断方式 | 部分参与 | 字/字节 | CPU ↔ 设备 |
| DMA 方式 | 很少参与 | 数据块 | 设备 ↔ 内存 |
| 通道方式 | 几乎不参与 | 数据块 | 设备 ↔ 内存 |
2. 程序查询方式(轮询)
- CPU 不断查询设备状态寄存器
- 设备就绪后,CPU 逐字/逐字节传送数据
- CPU 利用率极低,大量时间浪费在查询上
- 不能实现 CPU 与 I/O 的并行工作
CPU → 查询状态 → 未就绪 → 查询 → ... → 就绪 → 传送一个字 → 查询 → ...
3. 程序中断方式
- CPU 发出 I/O 命令后继续执行其他程序
- 设备完成操作后向 CPU 发中断请求
- CPU 响应中断,执行中断服务程序传送数据
- 每次中断传送一个字/字节,实现了 CPU 与 I/O 的部分并行
CPU → 启动设备 → 继续执行 → [中断] → 传送一个字 → 返回 → ... → [中断] → ...
优缺点优点:CPU 利用率提高;缺点:每次中断只传一个字,频繁中断开销大。
4. DMA 方式(直接内存访问)
- CPU 向 DMA 控制器发出命令后,由 DMA 控制器控制数据传送
- 数据直接在设备和内存之间传送,不经过 CPU
- 以数据块为单位传送;传送完成后 DMA 向 CPU 发中断
DMA 传送过程:① CPU 向 DMA 控制器设置参数(内存地址、数据量、传送方向);② DMA 控制器接管总线控制权;③ 数据在设备和内存之间直接传送;④ 传送完成,DMA 向 CPU 发中断。
DMA 与 CPU 的冲突解决:
| 方式 | 说明 |
| 停止 CPU 访存 | DMA 传送时 CPU 不能访存,CPU 利用率低 |
| 周期挪用 | DMA 在 CPU 不访存的周期插入传送 |
| 交替访问 | DMA 和 CPU 交替使用总线周期 |
5. 通道方式
- 通道是专用处理器,有自己的指令系统(通道指令)
- CPU 向通道发出I/O 指令,指定通道程序的起始地址
- 通道独立执行通道程序,控制多个设备;传送完成后向 CPU 发中断
| 类型 | 特点 |
| 字节多路通道 | 低速设备,按字节交叉传送 |
| 数组选择通道 | 高速设备,一次选择一个设备传送整个数据块 |
| 数组多路通道 | 高速设备,按数据块交叉传送 |
6. 四种方式对比总结
| 对比项 | 程序查询 | 程序中断 | DMA | 通道 |
| CPU 效率 | 最低 | 较低 | 较高 | 最高 |
| 并行性 | 无 | 部分并行 | 较好并行 | 完全并行 |
| 传送单位 | 字 | 字 | 块 | 块 |
| 复杂度 | 最简单 | 较简单 | 较复杂 | 最复杂 |
| 硬件开销 | 最小 | 较小 | 较大 | 最大 |