回寫與寫通
回答
直寫到主內存的好處是它簡化了計算機系統的設計。使用直寫功能時,主存儲器始終具有該行的最新副本。所以當讀取完成時,主存儲器總是可以回覆所請求的數據。
如果使用回寫,有時最新的數據位於處理器緩存中,有時位於主內存中。如果數據位於處理器高速緩存中,那麼該處理器必須停止主存回覆讀請求,因爲主存可能有一個陳舊的數據副本。這比直寫更復雜。
另外,直寫可以簡化高速緩存一致性協議,因爲它不需要修改狀態。 修改狀態記錄緩存必須在緩存行無效或驅逐行之前寫回緩存行。在直寫中,高速緩存行可以始終無效,因爲內存中已經有最新的行副本。
還有一件事 - 在寫回存儲器映射I/O寄存器的寫回體系結構軟件中,必須採取額外的步驟來確保立即將寫入發送出緩存。否則,寫入內核之外不可見,直到該行被另一個處理器讀取或該行被驅逐。
對於內存映射I/O,這些地址通常映射爲未緩存。直寫也可用於提高可靠性(例如,如果L1僅具有奇偶保護並且L2具有ECC)。對於使用無寫入分配(即,寫入未命中未將塊分配給高速緩存,可能減少對L1容量和L2讀取/ L1填充帶寬的需求)的較小緩存,寫入操作也更受歡迎,因爲大部分硬件寫入需求已經存在,用於這種寫作。 – 2014-11-27 10:42:48
是否可以檢查我的內核中的緩存方法是寫回還是寫入? – Shaowu 2016-11-03 22:04:49
由於處理器必須停止主存回覆讀請求,因此回寫更復雜可能會引起誤解。 更重要的是,高速緩存跟蹤什麼數據是數據(不與主存儲器對齊),什麼不是使用「髒位」,因此可能根本不檢查主存。 – steviejay 2016-11-10 19:21:27
- 1. 編寫與寫回函數錯誤
- 2. 通過Response.Write()回寫函數
- 3. 表單mysql讀寫回寫
- 4. 用Java寫回緩存,何時寫回
- 5. 通過寫入()寫入argv []
- 6. 寫入與RandomAccessFile的#寫()
- 7. 通過指數與jquery刪除XML節點和寫回文件
- 8. 寫HAS_MANY:通過協會和回調
- 9. 重寫與不同的返回類型
- 10. OpenGL FBO與MRT寫回緩衝區
- 11. 返回一個HtmlTable與AJAX寫
- 12. URL重寫回傳與ViewStateMac啓用
- 13. 通用.htaccess寫
- 14. 我如何刷寫寫回cpu緩存?
- 15. 寫JSON與PHP
- 16. 與重寫
- 17. 寫HTML與JavaScript
- 18. pyspark:寫與reduceByKey
- 19. 意外與寫
- 20. nginx與重寫
- 21. 與重寫
- 22. 寫出與糊
- 23. 樹重寫與[]
- 24. 與重寫
- 25. 與重寫
- 26. 關閉寫通道後的qProcess寫入
- 27. 似乎無法寫出通用讀寫
- 28. GitHub API - 寫回購
- 29. 什麼是回寫?
- 30. MongoDB回寫異常
@EricWang我認爲你的意思是'回寫'有更好的表現? – wlnirvana 2016-08-07 22:32:12
@wlnirvana是的,你是對的,這是我的文書錯誤。我會刪除它,並在這裏提出一個新的評論,以避免將來的誤導。 – 2016-08-08 04:31:22
簡單地說,'回寫'具有更好的性能,因爲寫入主內存比寫入CPU高速緩存要慢得多,並且數據可能很短(意味着可能會更快地再次更改,並且不需要將舊版本存入內存)。這很複雜,但更復雜,現代cpu中的大部分內存都使用這個策略。 – 2016-08-08 04:32:15