- DMA是个啥?
官方解释是DMA是一种无需CPU参与就可以让外设(如硬盘)与系统内存之间进行双向数据传输的硬件机制,使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高数据传输带宽的利用率。
要想浅显的了解DMA到底是个什么,我们先来看看外设和内存之间普通的数据传输控制方式是怎么样的。有两种:一种是程序直接控制方式;一种是中断方式。
-- 程序直接控制方式
程序直接控制方式就是CPU告诉外设“我要读了”,然后外设开始准备。CPU这时候停下手中的工作,不停的问外设“好了没有”,一旦外设说“好了”,CPU就从外设读一个字,再往内存写一个字,然后再告诉外设“我要继续读”,就这么重复直到完成。所以在读的过程中CPU别的什么也干不了。
-- 中断方式
中断方式就是CPU告诉外设“我要读了”,然后就不管了,继续干自己的事。这时候外设开始准备,等准备好了就主动告诉CPU“我好了”,CPU这时候停下手里的工作开始从外设读一个字,然后往内存写一个字。写完了就告诉外设“我要继续读”,说完了就继续干刚才被打断前的事,等外设再准备好以后再通知CPU,直到完成。中断方式的好处就是CPU在外设准备的时候不用不停地问,可以做自己的事,提高了利用率
-- DMA
DMA方式就是CPU告诉外设“你把XXX个字的内容写到内存的XXX位置去吧”,然后就不管了,等外设准备好了就通知CPU“我准备好了”,然后CPU让出一个节拍的总线使用权,外设就可以直接把数据送入内存,然后再通知CPU说“我传完了”,然后CPU进行一些清理工作就可以了。DMA比中断方式又有提高,因为中断方式中,数据从外设输入内存依然要CPU参与,而DMA在大量数据读入的时候不需要CPU参与,这就节约了CPU的时间。
通道就是相当于有一个处理器专门来管数据传送,只要CPU把指令告诉通道,通道就可以完成一切数据传输任务,所以CPU的利用率更高。
网友评论