2014-02-28 119 views
2

我正在準備即將到來的考試,我是有這個問題煩惱高速緩存未命中率:確定的代碼片段

直接映射大小64K的塊尺寸是16個字節的緩存。緩存開始空

enter image description here

什麼是高速緩存未命中率如果...

  1. 行數= 128,COLS = 128
  2. 行數= 128和cols = 192個
  3. 行數= 128和COLS = 256

[解決方案:第5頁http://www.inf.ethz.ch/personal/markusp/teaching/263-2300-ETH-spring11/midterm/midterm_sln.pdf]

我很困惑他們是如何得到「緩存存儲128 x 128元素」。我認爲緩存大小是64K(2^16)。

另外,有人可以解釋如何處理每個問題?我的教授有一些公式來計算每個塊的訪問次數:塊大小/步幅,但它似乎並不適用於此。

回答

-1

據我瞭解;在情況1中,src和dst矩陣都是64kb大小(128 * 128 * 4字節);因爲緩存是直接映射的並且大小爲64kb;相同索引的src & dst的條目將不得不被映射到高速緩存中的相同位置(因爲(0 + i mod)64 =(64 + i mod)64)同時在行中被使用

dest[i][j]=src[i][j] 

因此你有100%的遺漏率;由於新的尺寸是64kb(128 * 256 * 4)的倍數,所以同樣適用於情況3,所以它沒有任何區別;

但是對於情況2;矩陣的大小變成96kb(128 * 192 * 4字節);所以現在src & dst可能會同時加載,你會有一個較低的錯過率。

+0

96kb數據集如何適合64 kb緩存? – Leeor