2014-01-19 55 views
4

我想在計算一個特定程序時計算二級高速緩存未命中總數。是否有任何方法可以在二級高速緩存中找到高速緩存未命中?二級高速緩存行未命中數

我知道了,Core i7 CPU的性能計數器事件類型「L2_LINES_OUT」可用於Counts L2緩存行被驅逐,但不知道如何使用它?

我使用的是linux和Intel i7 IvyBridge機器。

任何指針或鏈接將不勝感激。

+0

爲什麼這對你很重要?你難道不能簡單地基準你的程序嗎? –

+1

@BasileStarynkevitch,我想這正是他想要做的:) – Leeor

回答

1

IBM文檔here可能會對您有所幫助。

它描述了Ivybridge上許多不同指標的各種表達式。你想要的似乎是

*Instruction fetch from L2 cache miss rate* 
100.0 * X_L2_RQSTS_IFETCH_MISS/X_L2_RQSTS_IFETCHES 
+0

'IFETCH'事件只會計算指令緩存未命中(錯過代碼L1並查找共享L2的事件) – Leeor

2

this summary,您可以使用l2_rqsts子事件:

0x01: (name=demand_data_rd_hit) Demand Data Read requests that hit L2 cache 
0x03: (name=all_demand_data_rd) Demand Data Read requests 
0x04: (name=rfo_hit) RFO requests that hit L2 cache 
0x08: (name=rfo_miss) RFO requests that miss L2 cache 
0x0c: (name=all_rfo) RFO requests to L2 cache 
0x10: (name=code_rd_hit) L2 cache hits when fetching instructions, code reads. 
0x20: (name=code_rd_miss) L2 cache misses when fetching instructions 
0x30: (name=all_code_rd) L2 code requests 
0x40: (name=pf_hit) Requests from the L2 hardware prefetchers that hit L2 cache 
0x80: (name=pf_miss) Requests from the L2 hardware prefetchers that miss L2 cache 
0xc0: (name=all_pf) Requests from L2 hardware prefetchers 

你可以使用 - (all_demand_data_rd - demand_data_rd_hit)計算的需求缺失

0

搜索PAPI,它是一個工具,您可以使用它來讀取您希望收集L2緩存未命中的代碼段之前和之後的PMU。

相關問題