例如,如果我寫入特定的內存位置(例如:DMA傳輸),它在緩存中的效果如何?系統如何確保內存和緩存之間的一致性
4
A
回答
1
緩存是一個CPU功能;如果通過CPU寫入內存,緩存將被更新並保持一致。
如果您以某種其他方式寫入內存(例如,如您所建議的DMA傳輸),您將需要(可能)事先刷新緩存,然後告訴CPU緩存無效。你如何做到這一點取決於你的系統 - 例如見x86的INVD和WBINVD。
兩個很好的文章,在高速緩存一致性和DMA讀是Understanding Caching和Using DMA(兩者均由詹姆斯Bottomley的,發表在Linux Journal上;在問題117,2004年1月「DMA」的問題121,2004年5月的「緩存」)。
+0
非常感謝你爲這些文章。他們看起來非常好。另外還有一篇關於內存映射IO和PCI的文章? – brett 2010-09-29 04:36:24
0
需要注意的一件事情:INVBD和WBVD指令是privlidged指令,因此您無法直接從用戶空間運行它們。
相關問題
- 1. 使用PHP的用戶緩存和系統緩存之間的區別APC
- 2. 系統間緩存和MongoDB比較
- 3. 「內存緩存」和「內存池」之間的區別
- 4. 確保將數據緩存在after_commit掛接時的一致性
- 5. 內存一致性 - 在Java中發生之前的關係
- 6. 系統緩存vs無緩存
- 7. 裝入系統間緩存數據庫
- 8. Windows和系統內存
- 9. 對操作系統的內存保護
- 10. 系統時間和存儲時間之間的區別
- 11. Rails:如何緩存系統表數據
- 12. Libgdx - 保存系統
- 13. Java LockSupport內存一致性
- 14. Postgresql緩存(內存)性能+如何預熱緩存
- 15. SMP中的緩存一致性更新
- 16. 說明Magento緩存系統
- 17. 緩存drupal系統頁面
- 18. MySQL操作系統緩存
- 19. BufferedReader和文件系統緩存
- 20. 用於內存緩存系統的Membase或Redis
- 21. 如何設置Docker的系統內存?
- 22. 緩存內存性能
- 23. 混合最終一致性系統和傳統ACID系統
- 24. 如何確保一個緩衝區存儲在緩存中的手臂9
- 25. 在內存保護操作系統中讀取內存
- 26. 如何保存在android系統
- 27. 在啓動Cassandra時讀取已保存的緩存和系統表時出錯
- 28. mule緩存中的內存中存儲和託管商店之間的區別
- 29. symfony私有緩存和公共緩存之間的差異
- 30. 如何保證交易中的原子性和文件系統的一致性,並採取積極的硬盤緩存和重新排序?
我想說這取決於系統,最好是讓它保持系統。通常,您在應用程序中寫入的內存是虛擬內存,這是系統對其認爲應該使用的任何內存的抽象。 – 2010-09-29 03:25:40