作者lihgong (當憲兵是我一輩子的恥辱)
看板ASM
標題[問題] DMA & Cache
時間Sun Dec 21 22:44:39 2008
DMA & Cache
Cache 和 DMA 通常會有 coherence 的問題
這個問題在 wikipedia 有一篇不錯的文章
http://en.wikipedia.org/wiki/Direct_memory_access#Cache_coherency_problem
當 CPU 的 cache 存在某個記憶體位址的內容
而這段記憶體又被 DMA 寫入時
cache 和 DMA 就不會同步... (傷腦筋)
----
我手邊的 ARM9 (S3C2410) 我現在想啟動他的 DMA來搬資料
Data Sheet跟我說, Cache Coherence 的問題是軟體要自己搞定
看起來我的選擇並不多...
----
我現在想到兩招可以避這個問題...
1. 第一招就直接 flush Data-cache
但這樣感覺會錯殺無辜...
2. 第二招是把 DMA寫入的位置, 告訴 MMU說這個地方是 non-cacheable
但這樣存取那塊 non-cacheable記憶體, 似乎又有點慢
有沒有人知道比較好的方法的, 或是有沒有什麼資料可以看
謝謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.89.65
1F:推 jeunder:只 flush dma 傳輸的區域 ~ 01/07 00:55
2F:推 menspower:宣告成Volatile? 06/04 22:07