Cache一致性與DMA


第一個問題

對於進行DMA操作的設備, 並不是所有系統都保持它們的cache一致性。
在這種情況下, 准備進行DMA的設備可能從RAM得到陳舊的數據, 因為臟的cache行可能還駐留在各個CPU的cache中, 而尚未寫回到RAM。


解決方法:內核的相應部分必須將cache中重疊的數據沖刷掉(或者使它們失效)(譯注: 沖刷掉cache中的相應內容, 以保持cache與RAM的一致)。

 

第二個問題

當設備已經通過DMA將數據寫入RAM之后, 這些數據可能被cache寫回RAM的臟的cache行所覆蓋, 或者CPU已緩存的cache行可能直接掩蓋了RAM被更新的事實。
(譯注: 使得對應的LOAD操作只能獲得cache中的舊值, 而無法得到RAM中的新值), 直到cache行被從CPU cache中丟棄並且重新由RAM載入。

 

解決方法:內核的相應部分必須將cache中重疊的數據失效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM