Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1147527
  • 博文数量: 173
  • 博客积分: 4048
  • 博客等级:
  • 技术积分: 2679
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-12 18:53
文章分类

全部博文(173)

文章存档

2018年(1)

2016年(1)

2013年(1)

2012年(118)

2011年(52)

分类: 嵌入式

2011-12-07 15:25:35

在需要大量数据的传输时,使用DMA往往会比使用cpu传输速度快。
1、cpu传输数据需要通过指令来完成,而执行指令需要取指、译码、执行等等步骤,编写程序往往还涉及对循环的处理。而本来传输数据需要的信号比较简单,理论上可以每个时钟周期传一个数据。因此把这部分功能给DMA来完成速度快得多。
2、cpu把数据传输任务交给DMA后,cpu可以继续执行其它的指令。因此可以达到并行的效果。所以程序整体的运行速度也会有所提高。

通过分别使用cpu和DMA向外设写入一些数据,比较其总线的时序信号可以直接观察到DMA的优势。
下图为直接使用cpu访问外设时的时序


而如果使用DMA时的时序如下:

从图中可以看出明显使用DMA访问外设效率会更高。

阅读(3248) | 评论(3) | 转发(1) |
给主人留下些什么吧!~~

啦哆A梦2011-12-15 23:40:46

FBI888XH: 使用DMA肯定是要有DMA控制器的。在嵌入式中会用到。
PC机中应该也有DMA,我想操作系统底层软件肯定也是用了DMA的。所以拷东西的时候实际上应该用了DMA。.....
不懂……

FBI888XH2011-12-08 16:30:37

啦哆A梦: 是啊是啊,这样拷东西就快多了,但是用什么软件能实现呢??.....
使用DMA肯定是要有DMA控制器的。在嵌入式中会用到。
PC机中应该也有DMA,我想操作系统底层软件肯定也是用了DMA的。所以拷东西的时候实际上应该用了DMA。

啦哆A梦2011-12-08 00:34:46

是啊是啊,这样拷东西就快多了,但是用什么软件能实现呢??