原理:数据传送不经过CPU,由DMA控制器实现内存和外设、外设和外设之间的直接快速传递
系统构成:
- DMA作为主设备之一
- DMA与IO接口集成
- DMA提供专门IO总线
DMA控制器(DMAC)
DMA的两种工作状态:被动态(未获得总线控制权,受CPU控制)、主动态(获得总线控制权)
工作过程:CPU分配总线使用权之后,在硬件DMA控制器(DMAC)的控制下完成存储器与高速外设之间的大量数据的传送
硬件要求:需要相应的DMA控制器及数据通路,电路结构复杂,硬件开销大
DMAC对数据传送的控制是建立在掌握系统总线的使用权基础上的
- 正常工作下,系统总线的使用权归CPU所有
- DMAC要控制DMA传送,必须要从CPU得到总线使用权
DMAC传送的过程
- 总线申请阶段
- 总线响应阶段
- 数据传送阶段
- 传送结束阶段
DMA操作类型:
数据传送:源地址数据传到目的地址
数据校验:不传输,只校验某数据块内部的每个字节
数据检索:不传输,只在制定内存区域内查找某个关键字或某几个数据位是否存在
DMA操作方式:
单字节传输模式:每次DMA操作传送一个字节
块传输模式:连续传送多个字节,每传输一个字节,当前字节计数器减1,当前地址寄存器加1或减1,直到所要求的字节数传输完(当前字节计数器减至0),然后释放总线
请求传输模式:DMA控制器询问外设,当外设请求信号无效时,暂停传输(不释放总线);再次有效再继续传输
级联传输模式:多个DMA级联,分布式
DMA传输模式:
停止CPU访问内存(连续方式):传输速率高的设备传输时有优势
周期挪用(单字节方式) :DMA挪用一个或几个内存周期。若此时CPU不需要访存则不冲突,若冲突则DMA优先
DMA与CPU交替访存(透明DMA方式):直接交替访存,不需要浪费时间
DMA方式和中断控制方式的区别:
区别 | DMA方式 | 中断控制方式 |
---|---|---|
数据传送实现方式 | 硬件实现 | 程序传送 |
CPU响应请求时间 | 一个总线周期结束 | 一个指令周期结束 |
请求的目的 | 总线的使用权 | CPU的服务 |
是否需要保护现场 | 不需要(CPU不参与数据传送) | 需要 |
对于不需要访存的现行程序的执行 | 无影响 | 延迟现行程序的执行 |