NOTE
DMA
DMA 学习笔记,记录 CPU、DMA、I/O 设备与内存之间的数据传输过程。
这是历史学习笔记,可能存在过时或不完整的理解。
DMA

- CPU配置DMA传输
- CPU搞其他事去了
- DMA从I/O设备中读取数据
- DMA把数据传输到内存中
- DMA传输完成后以中断的形式通知CPU
在传统共享总线模型中,CPU和DMA通过总线仲裁共享总线。
CPU 和 DMA 轮流占有总线是为了在数据传输时提高效率,避免 CPU 独占总线。当 DMA 控制器需要进行数据传输时,它会向 CPU 发出请求,请求 CPU 暂时让出总线。CPU 完成当前的指令周期后,会释放总线,让 DMA 控制器执行数据传输。
- 请求总线: 当需要进行数据传输时,DMA 控制器会向 CPU 发出请求,请求占用总线。
- 释放总线: CPU 在完成当前的指令周期后,会释放总线,并将总线控制权交给 DMA 控制器。
- 执行数据传输: DMA 控制器获得总线控制权后,直接在内存和 I/O 设备之间进行数据传输,而无需 CPU 的干预。
- 归还总线: 数据传输完成后,DMA 控制器会释放总线,并将总线控制权归还给 CPU,允许 CPU 继续执行其他任务。 这种“轮流”模式允许 CPU 专注于处理计算任务,而将数据传输等高带宽的 I/O 操作交给 DMA 控制器,从而大大提高了系统的整体性能。
讨论
使用 GitHub 账号参与讨论,评论会保存在 GitHub Issues 中。在 GitHub 查看