DMA是干什么事情
DMA就是直接存儲(chǔ)器存取方法,但DMA本身是一個(gè)硬件,一個(gè)電路,一個(gè)集成塊。

從圖1可以看到,DMA這塊電路通過(guò)總線(xiàn)一邊連著CPU,一邊連著外設(shè)。
這是較為詳細(xì)的DMA結(jié)構(gòu)圖。

示意圖。

CPU從內(nèi)存區(qū)數(shù)據(jù)的時(shí)候,是一個(gè)單元一個(gè)單元進(jìn)行的。取完一個(gè)單元的數(shù)據(jù)后,地址指針
CS:IP需要加1,這個(gè)過(guò)程由cpu完成。整個(gè)過(guò)程需要用到數(shù)據(jù)總線(xiàn)和地址總線(xiàn)。

在圖3中,假設(shè)內(nèi)存和外設(shè)有一大塊數(shù)據(jù)需要交換,這個(gè)時(shí)候如果采取圖2的方法,每把一個(gè)數(shù)據(jù)放到外設(shè),不但內(nèi)存的地址要加1,外設(shè)的地址也要加1,這樣效率就不高。為了解決這樣的矛盾,就產(chǎn)生了DMA這樣的芯片。

8237A是一個(gè)DMA芯片。從圖中可以看到,DMA有地址加一減一的操作。


參考上圖,當(dāng)內(nèi)存和外設(shè)需要大量交換數(shù)據(jù)的時(shí)候,這種情形下,DMA芯片就會(huì)向CPU提出總線(xiàn)使用權(quán)請(qǐng)求,這個(gè)時(shí)候cpu會(huì)交出總線(xiàn)使用權(quán),然后DMA器件獲得總線(xiàn)以后,就可以對(duì)內(nèi)存和外設(shè)進(jìn)行地址加1的操作,從而把cpu從這種重復(fù)的工作中解放出來(lái)去干別的事情。



從上面幾個(gè)圖可以看出來(lái),通道也是一個(gè)硬件,是DMA功能的進(jìn)一步擴(kuò)展。有點(diǎn)類(lèi)似于做核酸檢測(cè)的時(shí)候,老師有老師的通道,學(xué)生有學(xué)生的通道,每個(gè)通道都有服務(wù)者和醫(yī)生、走廊這些硬件設(shè)施。
簡(jiǎn)單說(shuō),DMA就是
1:承擔(dān)內(nèi)存和外設(shè)進(jìn)行大量數(shù)據(jù)交換工作的一個(gè)硬件。
2:DMA最主要的工作就是對(duì)內(nèi)存和外設(shè)的存儲(chǔ)單元進(jìn)行地址加1的工作。
3:有DMA以后,內(nèi)存和外設(shè)進(jìn)行大量數(shù)據(jù)交換的時(shí)候,cpu就可以不管而去做別的工作。