核心概念
DMA (Direct Memory Access) 即直接存储器访问。它在主存与外设之间建立专用的数据通路。
- DMA 控制器 (DMAC): 一种特殊的接口装置, 能够接管总线控制权, 在没有 CPU 干预的情况下控制数据传输。
DMAC 的内部组成 重点
- 内存地址计数器: 存放主存缓冲区的首地址, 每传输一个单位数据自动加 1。
- 传输长度计数器: 存放需传输的总信息量, 每传输一个单位数据自动减 1。
- 数据缓冲寄存器: 暂存每次传输的数据。
- 中断机构: 传输结束后发出中断请求, 通知 CPU 进行善后处理。
DMA 与中断方式的区别 重点
| 特性 | 中断方式 | DMA 方式 |
|---|---|---|
| 响应时间 | 指令周期结束时响应 | 机器周期结束时即可响应 (更快) |
| 数据路径 | 经过 CPU 寄存器 | 不经过 CPU, 走专用数据通路 |
| CPU 介入 | 参与数据传输 (执行服务程序) | 仅参与初始化和善后, 传输过程不干预 |
| 优先级 | 较低 | 高于中断请求 |
| 主要目标 | 处理异常事件/低速 I/O | 高速主存与外设的数据交换 |
工作流程
- 预处理: CPU 执行程序设置 DMAC 参数 (地址、长度等)。
- 数据传输: 外设向 DMAC 发请求, DMAC 向 CPU 申请总线权, 随后控制主存与外设直接交换数据。
- 后处理: 传输完成后, DMAC 发出中断请求, CPU 接管总线并进行校验、结束处理。