DMA传输
DMA传输
DMA工作原理
DMA:Direct Memory Access,
如英译,直接存储器访问,指外设和存储器,在DMA控制器的作用下,直接传输数据,不再通过CPU。
这样可以减轻CPU的负担,提高CPU工作效率,数据的传输速度也主要由存储器决定。
典型的例子,I/O口直接与存储器进行数据交换,提高了数据的输入/输出效率。
一、DMA的传输原理
一句话总结,DMA传输是将数据从1个地址空间复制到另1个地址空间。
1、DMA传送过程一般分为4个阶段:
- 申请阶段
- 响应阶段
- 数据传送阶段
- 传送结束阶段
2、DMA传送原理框图
3、DMA工作步骤
① 外部设备向DMA控制器发出DMA请求;
② DAM控制器向CPU发送请求信号HOLD,请求获得总线控制权;
③ CPU响应请求,返回总线响应信号HLDA,并释放总线控制权,暂停执行主程序,处于等待状态,此时DMA控制器获得总线控制权;
④ DMA控制器在收到总线响应信号后,向外部设备返回DMA响应;
⑤ 外部设备在接收到DMA响应后,直接由DMA控制器发出读/写命令,控制RAM与外部设备进行数据传出;
⑥ 数据传输结束,DMA控制器向CPU移交总线控制权,主程序从中断了的指令继续执行。
4、DMA方式与中断方式传输数据的区别
① DMA传送方式优先级高于中断
② DMA请求仅仅使CPU暂停一下,借用一点点CPU时间,由DMA控制器控制外设与内存之间的数据传输
③ 中断请求不断使CPU停下来,而且CPU还需执行中断服务程序,包括对断点和现场的处理,以及CPU与外设的传送,代价较高
④ CPU对DMA是立即响应,对中断时指令周期末尾响应
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!