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