0
假設我們有一些數組位於一些固定的內存地址中,這些地址經常被訪問和更新(與訪問頻率相比,更新頻率低得多),現代CPU通常可以緩存整個數組如果數組的大小很小?數組的更新/訪問可以完全在緩存而不是主存儲器中完成嗎?根據我過去的經驗,我測試過的幾款英特爾CPU很可能是這種情況,但我需要一些關於緩存算法的細節(對於任何遠程近期的CPU模型來說,這很難找到)來開發我的算法最佳。關於緩存算法
假設我們有一些數組位於一些固定的內存地址中,這些地址經常被訪問和更新(與訪問頻率相比,更新頻率低得多),現代CPU通常可以緩存整個數組如果數組的大小很小?數組的更新/訪問可以完全在緩存而不是主存儲器中完成嗎?根據我過去的經驗,我測試過的幾款英特爾CPU很可能是這種情況,但我需要一些關於緩存算法的細節(對於任何遠程近期的CPU模型來說,這很難找到)來開發我的算法最佳。關於緩存算法
寫入可以是回寫式或直寫式,具體取決於特定的CPU。大多數現代CPU支持回寫。
多次讀取可以從緩存中進行,這取決於多種因素,包括
有關英特爾高速緩存體系結構的信息,請參閱
所以我們不能用緩存就像一個快速的內存緩衝區,因爲任何寫入操作都會導致昂貴的內存寫入,這意味着CPU的約束che不能做nvidia GPU的緩存,那太糟糕了。 – user0002128
@ user1748356:我改正了這個說法。大多數現代CPU除了寫通外,還支持寫回緩存。 –
但緩存到內存寫入是否與緩存訪問同時發生?我的意思是,一個操作是將數據x從緩存複製到主存儲器,而另一個操作是將數據x從高速緩存複製到寄存器等,兩個操作都在同時/並行進行,因此數據訪問操作不需要等到記憶寫作完成了嗎? – user0002128