簡體   English   中英

緩存未命中的價格是多少

[英]What is the price of a cache miss

我正在分析一些代碼並使用cachegrind來獲取執行中的cachemisses(L2和L3)的數量。

我的問題是如何根據緩存未命中確定等待緩存獲取readdy的時間?

我希望能夠說出“我的代碼獲得90%的cpu利用率”之類的話題

是否可以根據緩存研磨輸出執行此操作?

Cachegrind簡單地模擬CPU上的執行,模擬緩存和分支預測器的行為方式。 為了能夠知道在緩存上花費多長時間,需要更多信息。 具體而言,您需要知道何時可以推測執行以及可以並行分派多少指令(以及如何同時協調內存訪問)。 Cachegrind無法做到這一點,任何可能在很大程度上依賴於處理器的工具(而緩存未命中的處理器依賴性要小得多)。

如果您可以訪問現代英特爾CPU,我建議您免費獲得VTune(用於非商業目的)並查看其內容。 它可以告訴處理器收集有關緩存未命中的數據並將其報告給您,這樣您就可以看到實際發生的事情,而不僅僅是模擬。 它將為每行代碼提供每個指令的時鍾,使用它可以看到哪些行在緩存上阻塞(以及多長時間),它還可以為您提供cachegrind可以提供的所有其他信息。

你可以在這里得到它:

http://software.intel.com/en-us/articles/non-commercial-software-download/

唯一可以確定的方法是使用CPU的性能監視計數器來測量特定的CPU - 即使這樣,結果也非常具體,基於此的任何優化都可能對具有不同高速緩存大小的CPU表現得非常糟糕,總線架構或內存配置。

可以在幾個時鍾周期內從高速緩存中獲取變量。

如果它不在緩存中,則可能需要超過一百個時鍾周期才能從RAM中獲取它。

暫無
暫無

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

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