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 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了