DMA方式
# DMA方式
# DMA 方式的特点
DMA 和程序中断两种方式的数据通路
- 中断方式 CPU 必须中断当前正在运行的程序来完成数据输入输出操作
- 会降低 CPU 的效率
- DMA 方式
- 数据输入输出不再需要 CPU 作为中介
DMA 与主存交换数据的三种方式
- 停止 CPU 访问主存
- 控制简单
- CPU 处于不工作状态或保持状态
- 未充分发挥 CPU 对主存的利用率
示意图
- 周期挪用(周期窃取)
- DMA 访问主存有三种可能
- CPU 此时不访存
- CPU 正在访存
- DMA 不能抢占
- CPU 与 DMA 同时请求访存
- 此时 CPU 将总线控制权让给 DMA
- 分成一个或几个小周期进行 DMA 访存
- Memory Wall ⌛tag+todo
示意图
- DMA 访问主存有三种可能
- DMA 和 CPU 交替访问
专供 DMA 访存 专供 CPU 访存 - 不需要 申请建立和归还 总线的使用权
示意图
# DMA 接口的功能和组成
DMA 接口功能
- 向 CPU 申请 DMA 传送
- 处理总线 控制权的转交
- 管理 系统总线、控制 数据传送
- 确定 数据传送的 首地址和长度
- 修正 传送过程中的数据 地址 和 长度
- DMA 传送结束时,给出操作完成信号
DMA 接口的组成
- AR
- 地址
- WC
- 计数器,每传输一个数据,其加 1
- BR
- 数据缓冲区
- DAR
- 设备地址寄存器
- DREQ 设备请求
- DACK 应答信号
- HRQ 总线使用请求使用信号
- HLDA 应答信号
- 中断机构
- 由 CPU 作数据传输结束后的相关处理
# DMA 的工作过程
预处理
- 通过几条输入输出指令预置如下信息
- 通知 DMA 控制逻辑传送方向(入/出)
- 设备地址
DMA 的 DAR - 主存地址
DMA 的 AR - 传送字数
DMA 的 WC
数据传送示意图
传送过程示意
数据传送过程
后处理
- 校验送入主存的数是否正确
- 是否继续用 DMA
- 测试传送过程是否正确,错则转诊断程序
由中断服务程序完成
# DMA 接口与系统的连接方式
具有公共请求线的 DMA 请求
独立的 DMA 请求
# DMA 方式与程序中断方式的比较
# DMA 接口的类型
选择型
- 在物理上连接多个设备
- 在逻辑上只允许连接一个设备
示意图
多路型
- 在 物理上 连接 多个 设备
- 在 逻辑上 允许连接 多个 设备同时工作
多路型 DMA 接口的工作原理
- 速度越高的设备,优先级越高
编辑 (opens new window)