| IO 方式 | Polling | Interrupt | DMA |
|---|---|---|---|
| 优点 | 设计简单,硬件量少 | ||
| 缺点 | 主机外设串行工作,效率低 |
程序查询方式 Polling
中断方式 Interrupt
DMA 方式
| DMA 方式 | 停止访存 | 周期挪用 | 交替访存 |
|---|---|---|---|
| 工作方式 | 1. DMA 请求 2. CPU 放弃总线控制权,停止访存 3. DMA 传数据 4. 归还总线控制权 |
CPU 在访存时才发请求 同时请求则 DMA 优先 |
存取周期分片 一半给 CPU 一半给 DMA |
| 优点 | 控制简单 | 折中 | 传送速率高 |
| 缺点 | DMA 访存时 CPU 阻塞 | 控制权建立归还机制复杂 | 硬件逻辑复杂 |
| 适用 | 高传输速率设备の成组传输 |
为什么周期挪用 DMA 优先
防止数据丢失
流程
- 预处理
- 初始化
- 寄存器
- 传输方向
- 测试启动设备
- 外设发出 DMA 请求
- 初始化
- 数据传输 循环实现,完全由 DMA 硬件实现
- 后处理
- DMA 控制器发中断请求做后处理
- 数据校验
- …
- DMA 控制器发中断请求做后处理
注意
- 【DMA 请求】
- DMA 请求: 外设 $\to$ DMAC
- 总线请求: DMAC $\to$ CPU
- 总线请求请求的是总线控制权
- 总线请求的
- 响应时机是 机器周期/存取周期/总线周期/流水线段长 末
- 处理时机是挪用 CPU 的 存取周期
Warning
- CPU 用于 DMA I/O 的时间
- 不包括传输时间,因为传输由 DMA 硬件线路负责
- 只计算预处理+后处理
DMA vs. 中断
| IO 方式 | DMA | 中断 |
|---|---|---|
| 现场保护 | ❌ 不需要 | ✅ 需要 |
| CPU 介入 | ❌ 无 CPU 介入,完全 DMA 硬件完成 | ✅ 需要 CPU 介入 |
| 请求响应时机 | 总线周期末 | EX 末 |
| 请求优先级 | 高 | 低 |
| 传输方式 | 硬件传输 | 软件传输 |