图1
从图1可以看到,DMA这块电路通过总线一边连着CPU,一边连着外设。
这是较为详细的DMA构造图。
示意图。
图2
CPU从内存区数据的时候,是一个单元一个单元进行的。取完一个单元的数据后,地址指针
CS:IP须要加1,这个过程由cpu完成。全体过程须要用到数据总线和地址总线。
图3
在图3中,假设内存和外设有一大块数据须要交流,这个时候如果采纳图2的方法,每把一个数据放到外设,不但内存的地址要加1,外设的地址也要加1,这样效率就不高。为理解决这样的抵牾,就产生了DMA这样的芯片。
8237A是一个DMA芯片。从图中可以看到,DMA有地址加一减一的操作。
参考上图,当内存和外设须要大量交流数据的时候,这种环境下,DMA芯片就会向CPU提出总线利用官僚求,这个时候cpu会交出总线利用权,然后DMA器件得到总线往后,就可以对内存和外设进行地址加1的操作,从而把cpu从这种重复的事情中解放出来去干别的事情。
从上面几个图可以看出来,通道也是一个硬件,是DMA功能的进一步扩展。有点类似于做核酸检测的时候,老师有老师的通道,学生有学生的通道,每个通道都有做事者和年夜夫、走廊这些硬件举动步伐。
大略说,DMA便是
1:承担内存和外设进行大量数据交流事情的一个硬件。
2:DMA最紧张的事情便是对内存和外设的存储单元进行地址加1的事情。
3:有DMA往后,内存和外设进行大量数据交流的时候,cpu就可以不管而去做别的事情。