DMA是指外部設(shè)備不通過(guò)CPU而直接與系統(tǒng)內(nèi)存交換數(shù)據(jù)的接口技術(shù)。
要把外設(shè)的數(shù)據(jù)讀入內(nèi)存或把內(nèi)存的數(shù)據(jù)傳送到外設(shè)蹂楣,一般都要通過(guò)CPU控制完成俏站,如CPU程序查詢或中斷方式。利用中斷進(jìn)行數(shù)據(jù)傳送痊土,可以大大提高CPU的利用率肄扎。 但是采用中斷傳送有它的缺點(diǎn),對(duì)于一個(gè)高速I/O設(shè)備赁酝,以及批量交換數(shù)據(jù)的情況犯祠,只能采用DMA方式,才能解決效率和速度問(wèn)題酌呆。DMA在外設(shè)與內(nèi)存間直接進(jìn)行數(shù)據(jù)交換衡载,而不通過(guò)CPU,這樣數(shù)據(jù)傳送的速度就取決于存儲(chǔ)器和外設(shè)的工作速度隙袁。
通常系統(tǒng)的總線是由CPU管理的痰娱。在DMA方式時(shí)弃榨,就希望CPU把這些總線讓出來(lái),即CPU連到這些總線上的線處于第三態(tài)--高阻狀態(tài)梨睁,而由DMA控制器接管鲸睛,控制傳送的字節(jié)數(shù),判斷DMA是否結(jié)束坡贺,以及發(fā)出DMA結(jié)束信號(hào)官辈。DMA控制器必須有以下功能:
- 能向CPU發(fā)出系統(tǒng)保持(HOLD)信號(hào),提出總線接管請(qǐng)求遍坟;
- 當(dāng)CPU發(fā)出允許接管信號(hào)后拳亿,負(fù)責(zé)對(duì)總線的控制,進(jìn)入DMA方式愿伴;
- 能對(duì)存儲(chǔ)器尋址及能修改地址指針风瘦,實(shí)現(xiàn)對(duì)內(nèi)存的讀寫(xiě)操作;
- 能決定本次DMA傳送的字節(jié)數(shù)公般,判斷DMA傳送是否結(jié)束
- 發(fā)出DMA結(jié)束信號(hào)万搔,使CPU恢復(fù)正常工作狀態(tài)。