|
DMA 與 CPU 同時訪問總線有如下幾種方法:
1. 總線時分復(fù)用。
這種總線的訪問權(quán)被分成多個時間片,CPU 和 DMA 分別使用不同的時間片。這種方法在早期的 DMA 中很常見。當(dāng)時的 CPU 沒有指令流水線,每個指令周期需要許多時鐘周期才能完成,但只有其中小部分時鐘周期訪存。這時候 DMA 可以利用 CPU 訪存的間隙時間,實現(xiàn) DMA 與 CPU 并行。類似的做法也存在于比較現(xiàn)代的系統(tǒng)中,通過插入等待狀態(tài)來實現(xiàn) CPU 和 DMA 交替訪問總線。
2. 矩陣總線。
矩陣總線每一個訪存設(shè)備和每一組內(nèi)存設(shè)備分別占據(jù)一個端口,只要兩個訪存設(shè)備訪問的不是同一個端口就可以互不沖突。如果內(nèi)存被分為多塊使用多個總線端口的話,只要 DMA 和 CPU 不同時訪問同一塊內(nèi)存,兩者就可以相安無事。幾乎所有基于 ARM 的芯片都用了矩陣總線作為系統(tǒng)總線。
3. 指令緩存。
現(xiàn)在大多數(shù)的 CPU 都有緩存。此時只要 CPU 需要訪問的的指令已經(jīng)存入了緩存,CPU 便不需要去系統(tǒng)總線取指。此時總線完全空閑,DMA 可以獨占訪問總線。
哪怕是第1種, 也有好多方式:
51hei.jpg (239.36 KB, 下載次數(shù): 28)
下載附件
2023-11-18 00:05 上傳
來源:https://www.zhihu.com/question/321877977/answer/664568452
所以, 基本上不會影響, 從宏觀的角度, 可以認(rèn)為DMA與CPU可以融洽的共享總線.
|
|