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中重疊的數據失效。