- DMA与IO接口集成
- DMA提供专门IO总线
DMA的两种工作状态:被动态(未获得总线控制权,受CPU控制)、主动态(获得总线控制权)
传输步骤:
- 申请:一个设备接口试图通过总线向另一个设备发送数据,先向CPU发送DMA信号
- 响应:CPU收到DMA信号,当前总线周期结束后,按DMA信号优先级响应相应的DMA控制器
- 数据传送:DMA收到CPU响应,获得总线控制权,开始直接数据传送
- 传送结束:设备向CPU发送DMA结束信号,交换总线控制权
DMA操作类型:
- 数据传送:源地址数据传到目的地址
- 数据校验:不传输,只校验某数据块内部的每个字节
- 数据检索:不传输,只在制定内存区域内查找某个关键字或某几个数据位是否存在
DMA操作方式:
- 单字节传输模式:每次DMA操作传送一个字节
- 块传输模式:每次传送多个字节,有个当前字节计数器, 1 1 1
- 请求传输模式:DMA控制器询问外设,当外设请求信号无效时,暂停传输(不释放总线);再次有效再继续传输
- 级联传输模式:多个DMA级联,分布式
DMA传输模式:
- 停止CPU访问内存:传输速率高的设备传输时有优势
- 周期挪用:DMA挪用一个或几个内存周期。若此时CPU不需要访存则不冲突,若冲突则DMA优先
- DMA与CPU交替访存:直接交替访存,不需要浪费时间