2014-11-23 60 views
40

我的理解是,兩種方法的主要區別在於,在「直寫」方法中,數據通過緩存立即寫入主存儲器,而在「回寫」數據中寫在「後一時間」。回寫與寫通

我們仍然需要等待「後一段時間」的內存,那麼「直寫」的好處是什麼?

+0

@EricWang我認爲你的意思是'回寫'有更好的表現? – wlnirvana 2016-08-07 22:32:12

+0

@wlnirvana是的,你是對的,這是我的文書錯誤。我會刪除它,並在這裏提出一個新的評論,以避免將來的誤導。 – 2016-08-08 04:31:22

+2

簡單地說,'回寫'具有更好的性能,因爲寫入主內存比寫入CPU高速緩存要慢得多,並且數據可能很短(意味着可能會更快地再次更改,並且不需要將舊版本存入內存)。這很複雜,但更復雜,現代cpu中的大部分內存都使用這個策略。 – 2016-08-08 04:32:15

回答

44

直寫到主內存的好處是它簡化了計算機系統的設計。使用直寫功能時,主存儲器始終具有該行的最新副本。所以當讀取完成時,主存儲器總是可以回覆所請求的數據。

如果使用回寫,有時最新的數據位於處理器緩存中,有時位於主內存中。如果數據位於處理器高速緩存中,那麼該處理器必須停止主存回覆讀請求,因爲主存可能有一個陳舊的數據副本。這比直寫更復雜。

另外,直寫可以簡化高速緩存一致性協議,因爲它不需要修改狀態。 修改狀態記錄緩存必須在緩存行無效或驅逐行之前寫回緩存行。在直寫中,高速緩存行可以始終無效,因爲內存中已經有最新的行副本。

還有一件事 - 在寫回存儲器映射I/O寄存器的寫回體系結構軟件中,必須採取額外的步驟來確保立即將寫入發送出緩存。否則,寫入內核之外不可見,直到該行被另一個處理器讀取或該行被驅逐。

+4

對於內存映射I/O,這些地址通常映射爲未緩存。直寫也可用於提高可靠性(例如,如果L1僅具有奇偶保護並且L2具有ECC)。對於使用無寫入分配(即,寫入未命中未將塊分配給高速緩存,可能減少對L1容量和L2讀取/ L1填充帶寬的需求)的較小緩存,寫入操作也更受歡迎,因爲大部分硬件寫入需求已經存在,用於這種寫作。 – 2014-11-27 10:42:48

+1

是否可以檢查我的內核中的緩存方法是寫回還是寫入? – Shaowu 2016-11-03 22:04:49

+2

由於處理器必須停止主存回覆讀請求,因此回寫更復雜可能會引起誤解。 更重要的是,高速緩存跟蹤什麼數據是數據(不與主存儲器對齊),什麼不是使用「髒位」,因此可能根本不檢查主存。 – steviejay 2016-11-10 19:21:27