首页 > 代码库 > DMA为什么比轮询、中断方式性能要卓越很多?(你不懂)
DMA为什么比轮询、中断方式性能要卓越很多?(你不懂)
本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/35735397
如果是计算机专业出身的同学,都听过一个概念,中断比轮询要好、DMA比中断要好。
中断比轮询要好,是容易理解的:
在轮询中,CPU是死循环执行对IO端口的检测,这种模式,大量的浪费了CPU(因为CPU除了处理外设之外,更多的时间应该用于对内存的操作,如计算等)。
而中断方式,则没有死循环的浪费,CPU可以正常做别的事情,等到外部设备数据来了,就会主动由设备控制器发出中断(设备控制器预先需要注册对应的中断控制号)
但是,为什么DMA比中断要好呢?
嘿嘿。不幸的是,这个问题本身就是错的。oh my god!
DMA和中断不是同一个层级的概念。DMA本身也会用到中断。
DMA之所以比中断快,是因为,在DMA机制下,进行外设读写操作的指令是由DMA控制器完成,而不是由主机的CPU完成!
DMA方式下,中断已经成为了,DMA开始或完成的一个通知信号(读写指令由DMA控制器完成)。而在“纯中断”模式下,中断是启动主机CPU开始外设读写的信号(读写指令out_p(),in_p()由主机CPU执行)!
明白了吧?
还不明白加我qq号吧:129三865272,注明linux。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。