1. 程式人生 > >Cache一致性與DMA

Cache一致性與DMA

緩存 重新 得到 失效 必須 index 數據 直接 寫入

第一個問題

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

Cache一致性與DMA