微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > 请教DMA多通道相对单通道有什么好处呢

请教DMA多通道相对单通道有什么好处呢

时间:12-12 整理:3721RD 点击:
DMA一般都会配置多个通道,用于外设和内存之间访问。但多通道请求在DMA内部要进行仲裁处理,最终只能有一个通道可以用来进行数据传输,那么DMA配置多通道有什么意义呢?为啥不直接配置一个通道?仅仅是为了省去CPU进行总线仲裁?

这个问题很好!
不要只从硬件一个方向去想这个问题。
通常来讲,DMA的存在是有两个优势:
1.硬件搬数据比软件的效率高,可以发出来连续的数据读写请求。
>>从这个角度来讲,你的理解是对的。多通道和单通道在搬运数据的效率上是没有特别大的区别的。
2.CPU把搬运数据的任务交给DMA之后,CPU可以去干其它的事情。
>>如果只有一个通道,软件只能多干一点点事情,当遇到下一个数据搬运任务且前一个DMA操作还没有结束时,软件只能等待。
>>从这个角度来讲,通道越多,并行性越高。软件的效率会更高。
>>多个通道不会更快,但是会减少软件等DMA操作结束的情况。
>>所以,对于频繁需要做数据搬运的应用,为了提高软件在任务调度上的效率,一定要配置多个通道。

DMA自己调度,比用CPU调度快多了

这dma厉害了  
  

多谢!也就是仲裁交给dma完成吧,软件只需利用CPU向多个通道并行发送descriptor就可以了。而不用等待上一个通道完成,然后由CPU仲裁,再产生descriptor

是的,再展开说几句。一个好的dma不止是多通道,还会支持链表descriptor。
一般情况下,数据搬运都是给将来的计算任务做准备的。只要在当前的计算任务完成之前,数据搬运结束就可以。所以软件层面上不需要精确控制,也不是特别在意搬运完成的时间点。多路dma就是原生的队列,软件不需要太大的负担。
用一路dma,在软件哪里实现一个异步的队列来管理搬运任务也可以。但给软件和系统带来了不必要的开销和要求。多路dma只增加了一点逻辑,但给软件带了极大的好处与便利。
如果你是做数字的,多和软件的同事交流一下,会有不少收获。

一个DMA通道不一定能满足你应用需求的,比如说,你原地址32bit,目地8bit,这种要搞一个通道,原32bit,目地16bit,这种在一般的设计里都需要两个不同的通道配置。

mark

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top