前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DMA-Direct Memory Access

DMA-Direct Memory Access

作者头像
WindWant
发布2020-09-11 11:39:04
1.1K0
发布2020-09-11 11:39:04
举报
文章被收录于专栏:后端码事后端码事

什么是DMA?

DMA 首先它是一种数据的传输方式;其次传输包括从设备到内存、内存到存储、内存到内存等;最后,它是在不经过cpu的情况下实现数据传输。

DAM主要有共享缓存DMA,Scatter/Gather DMA,前者使用主内存的一块共享内存区域,后者则是用多个不同地址的内存块实现。

DMA 控制器,一种特殊的硬件,负责执行DMA操作,包括数据传输及裁决访问系统总线。DMA控制器连接着数据传输的两端,负责监控,跟踪传输的字节数,传输设置(I/O类型、内存类型、CPU执行状态和中断)

外部设备的数据传输触发DMA总线数据传输。例如键盘和鼠标输入。DMA控制器向cpu发送一个要求使用系统总线的DMA的请求信号,CPU在完成当前操作之后通过DMA确认信号让渡总线的控制权。如此,DMA控制器就可以像cpu(此时闲置)一样读写数据和控制信号。当数据传输完成,DMA控制器发送取消DMA传输的信号,cpu移除DMA确认信号并重新获取总线的控制权。

DMA集成在计算机总线架构上,用于加速计算机操作及支持多任务环境。通常来说,CPU会被读写操作完全占据,DMA使得读写数据只发生在内置存储,外部存储及外围设备不需要cpu参与,释放了cpu能力。DMA使得计算机内部操作流化,因为数据的内存读写计算机内部最常见的操作,因此释放与此相关的CPU处理,能够在很大程度上提升计算机的性能。

DMA主要应用在对实时操作完成要求比较高的实时计算任务应用上。流式处理是DM的另一重要应用,即数据的传输和处理同时进行。应用DMA的硬件主要包括:软盘,磁盘驱动控制器,显卡,网卡,声卡和GPU。

DMA实现?

Synchronous DMA:一次在系统内存和外部设备之间传输一个字节或者一个单词。每次传输完成,DMA要求IO端口在准备好下一次事务的时候进行通知,在这种设定下,这DMA和cpu共享总线时钟,DMA在任何情况下都能获取系统总线的控制权。

Burst Mode DMA:假定传输的两端都能够即时的收发数据。cpu设置控制器,当I/O信号触发,全部的数据就会被拷贝到目的地。DMA在数据传输时对系统总线具有唯一的控制权。Burst Mode 模式下DMA数据传输相对于同步DMA要快很多。

Flyby DMA(不是所有的controller都支持): 使用源和目的地地址,构造一个同时读写的环。因为读环和写环被压缩到了同一个环,所以数据传输非常快。Flyby DMA也支持burst和同步类型的事务。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-12-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是DMA?
  • DMA实现?
相关产品与服务
流计算 Oceanus
流计算 Oceanus 是大数据产品生态体系的实时化分析利器,是基于 Apache Flink 构建的企业级实时大数据分析平台,具备一站开发、无缝连接、亚秒延时、低廉成本、安全稳定等特点。流计算 Oceanus 以实现企业数据价值最大化为目标,加速企业实时化数字化的建设进程。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档