簡體   English   中英

測量l1 / l2緩存中加載的行數(包括預取)?

[英]Measure the number of lines loaded in l1/l2 cache for reads(including prefetch)?

我正在嘗試確定L1緩存(處理器Intel Broadwell)中加載的緩存行數。 我的內核代碼是

a[i] = 2*b[i] + 2.3 // i from 0 to pow(10,8)

我正在使用perf事件L1-dcache-load-misses 測得的數量是預期的兩倍。 我期待6M負載和6M存儲。 L1-dcache-load-misses約為12M。 然而LLC-stores如預期(6M)

i) L1-dcache-load-misses是否計算加載和存儲未命中?

英特爾軟件開發人員手冊 (表19.5)中,對於L2緩存,我發現了兩個指標

  • i) L2_TRANS.L2_FILL (r20f0)
  • ii) L2_TRANS.L2_WB (r40f0)

ii)L2_TRANS.L2_FILL的確切含義是什么? 這是L2交易的總數嗎?

iii)L2_TRANS.L2_WB的確切含義是什么? 是L2寫入事務的總數嗎?

Perf使用映射到預定義計數器事件和掩碼的這些事件別名,但由於每個CPU可能具有不同的映射,這有時會發生變化,並且您可能最終會計算其他內容。

這個關於英特爾論壇的討論表明,至少有一些系統(Haswell,但Broadwell應該非常相似)有L1-dcache-load-misses錯誤地映射到L1替換,這可以解釋雙重值(商店也會獲取行進入L1緩存)。

對於L2_trans事件,假設它們被正確映射,它們應該確實計算L2中的總填充和驅逐。 請注意,這可能包括更多的負載+存儲,因為L2也有代碼(在這么小的內核中可能忽略不計)和預取(可能很重要,因為您的數據在空間布局並且易於預取)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM