0
如果手動刷新CPU高速緩存(如果它作爲直寫式高速緩存實現),是否有意義?手動刷新直寫式高速緩存
如果手動刷新CPU高速緩存(如果它作爲直寫式高速緩存實現),是否有意義?手動刷新直寫式高速緩存
當存儲指令將一個字寫入直寫式(WT)高速緩存時,它也會發送到存儲器層次結構的以下級別(see cache entry at wikipedia)。因此,WT高速緩存中的高速緩存塊是乾淨的,即與下一級的副本相一致,並且不需要寫回。
WT廢票可以直接內存訪問非常(DMA),使高速緩存內容陳舊,但是,時被要求據我所知,這些沒有手動操作,但操作系統或硬件驅動。
相關手動沖洗,例如,根據英特爾架構軟件開發人員手冊(第2卷,指令集):
WBINVD - 寫回和無效高速緩存該指令寫回的所有修改的緩存線處理器的內部緩存到主內存並使內部緩存無效(刷新)。
所以我認爲,在WT高速緩存的情況下,該指令剛纔的所有高速緩存行無效。
謝謝你。如果高速緩存行的後備存儲是易失性(DMA),那麼緩存理想不會使其無效而不是刷新它? – San 2013-04-09 02:55:35
你說得對。我編輯了我的答案,使其更加準確。 – chus 2013-04-09 12:27:34
是的。現在,由於WT緩存行條目始終是乾淨的,因此緩存行的顯式刷新不應該導致寫入實際內存不是嗎? CPU應該放棄flush指令。 – San 2013-04-09 15:48:21