在塊模式下,DMA控制器告訴設(shè)備獲取總線,然后執(zhí)行一系列傳輸操作,然后釋放總線。這種操作的形式稱為突發(fā)模式。這種模式比周期竊取更有效,因?yàn)楂@取總線需要時(shí)間,一次獲取總線的代價(jià)是可以同時(shí)傳輸多個(gè)字。缺點(diǎn)是如果此時(shí)突發(fā)傳輸時(shí)間較長,CPU等設(shè)備可能會被長時(shí)間阻塞。
在我們討論的模型中,有時(shí)稱為飛越模式,DMA控制器會告訴設(shè)備控制器直接將數(shù)據(jù)傳輸?shù)絻?nèi)存。一些DMA控制器使用的另一種模式是,設(shè)備控制器將字發(fā)送到DMA控制器,然后DMA控制器發(fā)送第二個(gè)總線請求,將字寫入任何可以寫入的位置。在這種方案中,每個(gè)傳輸?shù)淖侄夹枰~外的總線周期,但它更靈活,因?yàn)樗€可以執(zhí)行器件到器件的復(fù)制,甚至是存儲器到存儲器的復(fù)制(通過預(yù)先讀取存儲器,然后寫入存儲器)。
大多數(shù)DMA控制器使用物理地址進(jìn)行傳輸。使用物理地址需要操作系統(tǒng)將目標(biāo)內(nèi)存緩沖區(qū)的虛擬地址轉(zhuǎn)換為物理地址,并將物理地址寫入DMA控制器的地址寄存器。另一種方案是一些DMA控制器將虛擬地址寫入DMA控制器。然后,DMA控制器必須使用MMU來完成從虛擬到物理的轉(zhuǎn)換。只有當(dāng)MMU是內(nèi)存而不是CPU的一部分時(shí),虛擬地址才能放在總線上。
文章比較長,字?jǐn)?shù)比較多,可以先打開頭像關(guān)注我,再慢慢看。///有個(gè)感嘆:我今年年初錄了一套比較系統(tǒng)的單片機(jī)入門教程,所以想問我的同學(xué)可以去拿。這是免費(fèi)的,我可以私信。點(diǎn)擊我頭像左下角的黑色字體,我也能得到。最近挺閑的。我會帶學(xué)生參加省級以上比賽。///
當(dāng)一個(gè)I/O設(shè)備完成它的工作時(shí),它會產(chǎn)生一個(gè)中斷(默認(rèn)操作系統(tǒng)已經(jīng)打開了中斷),它可以通過在總線上聲明分配的信號來達(dá)到這個(gè)目的。主板上的中斷控制器芯片會檢測到這個(gè)信號,然后執(zhí)行中斷操作。
如果在中斷之前沒有其他中斷操作被阻塞,中斷控制器將立即處理該中斷。如果中斷前有其他中斷操作正在進(jìn)行,或者其他設(shè)備發(fā)出更高級別的中斷信號,那么這個(gè)設(shè)備暫時(shí)不會處理。在這種情況下,設(shè)備將繼續(xù)在總線上設(shè)置中斷信號,直到它獲得CPU服務(wù)。
為了處理中斷,中斷控制器在地址線上放置一個(gè)數(shù)字來指定關(guān)注哪個(gè)設(shè)備,并斷言一個(gè)信號來中斷CPU。中斷導(dǎo)致CPU停止當(dāng)前正在做的事情,開始做其他事情。地址線上會有一個(gè)中斷向量表的索引,用來獲取下一個(gè)程序計(jì)數(shù)器。
這個(gè)新獲得的程序計(jì)數(shù)器也表示程序即將開始,它將指向程序的開始。從這個(gè)角度來看,陷阱和中斷通常使用相同的機(jī)制,并且通常共享相同的中斷向量。中斷向量的位置可以硬連線到機(jī)器中,也可以位于內(nèi)存中的任何位置,CPU寄存器指向它的起始點(diǎn)。
中斷服務(wù)程序開始運(yùn)行后,中斷服務(wù)程序通過將某個(gè)值寫入中斷控制器的I/O端口來確認(rèn)中斷。告訴它中斷控制器可以發(fā)出另一個(gè)中斷。使CPU延遲響應(yīng)以實(shí)現(xiàn)同時(shí)到達(dá)CPU的多個(gè)中斷涉及競爭。一些舊電腦沒有集中的中斷控制器,通常每個(gè)設(shè)備都請求自己的中斷。
對單片機(jī)感興趣的朋友可以給我打電話。我錄過一些關(guān)于單片機(jī)的入門教程。有需要的童鞋可以從我這里拿,免費(fèi)??梢运叫盼摇傲掷蠋煛鳖I(lǐng)取~點(diǎn)擊打開我的頭像即可領(lǐng)取。