2012-12-12 63 views
0

假設我們有一些數組位於一些固定的內存地址中,這些地址經常被訪問和更新(與訪問頻率相比,更新頻率低得多),現代CPU通常可以緩存整個數組如果數組的大小很小?數組的更新/訪問可以完全在緩存而不是主存儲器中完成嗎?根據我過去的經驗,我測試過的幾款英特爾CPU很可能是這種情況,但我需要一些關於緩存算法的細節(對於任何遠程近期的CPU模型來說,這很難找到)來開發我的算法最佳。關於緩存算法

回答

0

寫入可以是回寫式或直寫式,具體取決於特定的CPU。大多數現代CPU支持回寫。

多次讀取可以從緩存中進行,這取決於多種因素,包括

  • 在計算機上正在發生的事情(別的東西可以驅逐從緩存您的陣列)什麼其他處理。
  • 多核心是否正在訪問陣列。每個核心通常都有自己的緩存。

有關英特爾高速緩存體系結構的信息,請參閱

+0

所以我們不能用緩存就像一個快速的內存緩衝區,因爲任何寫入操作都會導致昂貴的內存寫入,這意味着CPU的約束che不能做nvidia GPU的緩存,那太糟糕了。 – user0002128

+0

@ user1748356:我改正了這個說法。大多數現代CPU除了寫通外,還支持寫回緩存。 –

+0

但緩存到內存寫入是否與緩存訪問同時發生?我的意思是,一個操作是將數據x從緩存複製到主存儲器,而另一個操作是將數據x從高速緩存複製到寄存器等,兩個操作都在同時/並行進行,因此數據訪問操作不需要等到記憶寫作完成了嗎? – user0002128