2009-01-23 48 views

回答

10

緩存感知算法的設計,以儘量減少進出處理器的片上內存緩存的內存頁的運動。這個想法是爲了避免所謂的「緩存未命中」,這會導致處理器在將數據從RAM加載到處理器緩存時停頓。

緩存感知算法小於最佳的紙上可以超越傳統的算法,在理論上是「更快,」因爲緩存感知算法更有效地使用內存。

緩存感知算法明確的編碼才能處理器的緩存行爲的優勢。有關處理器內存頁面大小和「緩存行」的詳細信息被編碼到算法中。因此,高速緩存感知算法將是高度特定於處理器的。

緩存遺忘算法被編碼爲以比傳統算法更友好的方式使用內存,但它並不依賴於底層硬件的詳細細節。

+2

嗯他沒有要求例子?!第 – ljs 2009-01-24 14:25:15

+1

號這個問題說「簡單的解釋」。 – 2009-01-27 16:52:38

4

我想到了一個高速緩存感知算法的最簡單的例子之一訪問二維數組行主要與列重大。由於二維數組通常作爲數組所有行的串聯存儲在內存中,因此逐行訪問它會在合適的時間將適當的數據放入緩存中。但是,當按列 - 主要順序訪問數組時,內存中的大量跳轉和緩存未命中可能會導致大幅減速。

舉個例子,這個C++代碼:

for (int i = 0; i < MAX_N; ++i) { 
    for (int j = 0; j < MAX_N; ++j) { 
    a[i][j] = 10; 
    } 
} 

運行速度更快我的機器上3-4倍,如果我交換接入蜂窩小區的指標(即接入a[j][i]代替)。