DMA概述

DMA即直接存储器存取(Direct Memory Access).用DMA传输数据时,在高速I/O设备与存储器之间直接开辟数据传输通道,此时CPU不再直接参与数据交换,而是通过DMA控制器来管理。
DMA数据传输示意如下:
在这里插入图片描述

传送原理

DMA传输的过程为:

  1. 首先由CPU向DMA控制器布置数据传输任务,并启动外设,外设准备好数据后通过I/O接口向DMA控制器发送DRQ信号,表示外设已经准备好数据,请求进行数据传输。
  2. DMA控制器收到DRQ信号后进行优先级的判别和屏蔽位的检测,若外设的DRQ请求获得允许,DMA控制器向CPU发送HRQ信号,请求使用总线。
  3. CPU在当前指令执行完后向DMA控制器发送HLDA信号,同时CPU让出总线。
  4. DMA控制器收到HLDA信号后通过接口向发送DRQ请求信号的外设发送DACK信号,表示其DMA请求已经获得允许。
  5. 外设收到DACK信号后,开始数据的传输,并以中断的方式通知CPU,传输结果由CPU负责处理。
    传输示意图如下:

在这里插入图片描述

工作方式

根据DMA控制器对总线的控制方式不同,其数据传送一般有以下四种方式:

  • 单字节传送:每次DMA请求只传送一个字节数据,每传送完一个字节,DMA控制器中的字节计数寄存器的值减1,当前地址寄存器加1或减1,然后撤除DMA控制器对CPU的请求信号,释放总线返回给CPU,这样CPU至少可以获得一个总线周期。
  • 数据块传送:每次DMA请求获得CPU响应后,DMA控制器就连续占用多个总线周期,传送一个数据块,等到规定长度的数据块传完后或外部作用要求强行结束DMA传送时,才撤除DMA请求信号,释放总线。
  • 请求传送:请求传送方式和数据块传送方式类似,每次传送也可以传送多个字节,但是在每传送完一个字节后,DMA控制器都要检测由I/O接口发出的DMA请求信号是否有效,一旦DMA请求无效就释放总线;如果一组数据没传送完毕,释放总线后,DMA控制器仍然继续检测DMA请求端,一旦DMA请求有效,马上恢复DMA传送。
  • 级联传送:从片DMA控制器的总线请求信号与主片的DMA请求信号DREQ相连,从片的总线请求允许信号HLDA与主片的DMA请求允许信号DACK相连,主片的总线请求信号与CPU的HOLD相连,主片总线请求允许信号HLDA与CPU的HLDA相连。

DMA控制器的功能如下:

  1. 响应外设的请求,向CPU发出总线请求信号。
  2. CPU放弃对总线的控制时,DMA控制器应能接管总线控制权。
  3. 获得总线控制权后,要往地址总线发送地址信号。
  4. DMA期间,应能发出读写控制信号。
  5. 决定本次传送的字节数,判断本次DMA传送是否结束。
  6. DMA过程结束时,将总线控制权归还给CPU。

其结构如下:
在这里插入图片描述

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值