2010-10-27 68 views
2

預取距離和預取程度有什麼區別?預取距離和預取程度

+0

其他人已經給出了簡明的答案。有關預取距離和程度的詳細答案和說明,請參閱我的[有關緩存預取技術的調查問卷](https://www.academia.edu/23625676/A_Survey_of_Recent_Prefetching_Techniques_for_Processor_Caches)。 – user984260 2016-03-24 12:28:16

回答

1

預取通常處理整個緩存行。因此,給定的預取請求將引入將保存指定地址的高速緩存行。

由於內存速度的巨大差異,將數據帶入緩存可能需要很多週期。如果不是更長的話,一些潛伏期會在幾十個週期內。現在,真正從預取中受益的唯一方法是在實際使用數據之前發出足夠的時間,以便機器有足夠的時間將數據提取到緩存中。這意味着數據訪問是可預測的,所以可以預測內存需要在緩存中。最簡單的情況是通過線性陣列行進。現在,一個常見的場景(在'科學代碼'中)是一個讀取數據然後處理它的循環。高速緩存未命中懲罰可能很高並且處理器可能非常快,並且簡單地預取下一高速緩存行可能不夠,因爲我們可能已經完成了處理對應於當前高速緩存行的陣列並且等待鄰近高速緩存行中的數據在數據到達緩存之前。所以我們可能不得不比下一個緩存行更遠。

預取前多遠距離例如512字節。預取的程度是以高速緩存線爲單位的距離,即如果你的高速緩存線是256字節,則預取程度是2.

+1

我熟悉的預取程度的定義是 - 您在每個觸發器上發出多少預取行。它們不必等於預取距離(在某些實現中可能會動態變化),只要它最終得到您的存在即可。 – Leeor 2013-11-23 15:31:33

0

預取程度是每個觸發器預取的高速緩存行數。

預取距離是循環內數組的概念。 D = ceil(l/s),l是以循環次數表示的平均內存延遲,s是最短執行路徑的循環時間。 D是某個數組元素的提前迭代次數,以便覆蓋內存延遲。