我们可以使用英特尔的性能计数器来衡量成功的存储转发吗?

时间:2017-09-09 22:54:16

标签: performance x86 intel-pmu

是否可以使用最近的Intel x86芯片上的性能计数器来衡量成功的存储转发操作的数量?

我看到ld_blocks.store_forward测量失败商店转发的事件,但我很清楚是否可以衡量成功案例。

2 个答案:

答案 0 :(得分:4)

我没有看到比你为SKL做的更多的事情,但是较老的搜索可能有更多细节:

对于Core2(英特尔令人困惑地称之为Core微体系结构),the optimization manual文档(在B.7中) INTEL CORE MICROCHCHITECTURE的事件比率):

  

B.7.5.2 4K别名和存储转发块检测

     
      
  1. 因重叠存储率而被阻止的负载:LOAD_BLOCK.OVERLAP_STORE/CPU_CLK_UNHALTED.CORE
  2.         

    4K别名和存储转发块是两种不同的负载情况   由于不同的原因被前面的商店阻止。两种情况   由同一事件检测到:LOAD_BLOCK.OVERLAP_STORE。很高的价值   “由重叠存储率阻止的负载”表示4K   别名或存储转发块可能会影响性能

这可能会导致商店转发失败并成功。 (和4k混叠,所以你需要避免或减去它。)

  

B.7.5.3通过前置商店加载阻止

     
      
  1. 由未知商店地址Rate: LOAD_BLOCK.STA / CPU_CLK_UNHALTED.CORE
  2. 阻止的加载         

    “未知商店阻止的负载”的值很高   “地址速率”表示前面经常阻塞负载   地址未知且意味着性能损失的商店。

         
        
    1. 被未知商店数据速率阻止的负载:LOAD_BLOCK.STD / CPU_CLK_UNHALTED.CORE
    2.         

      “未知商店阻止的负载”的值很高   “数据速率”表示前面经常阻止负载   数据未知的商店,意味着性能损失。

最后两个计数器似乎计算成功的商店转发,但仅在检测到(可能的)重叠后实际必须等待的情况下

答案 1 :(得分:2)

没有记录的事件可以统计成功的商店转发操作的数量。但是,我为此目的在Haswell和Broadwell上确定了一组未记录的事件。特别是,事件代码为0x2且umask为奇数的任何事件(任何奇数,例如1)似乎都非常准确地表示成功进行商店转发的事件,即,计数与预期一样,标准偏差实际上为零。我认为您可以在以后(甚至更早)的微体系结构上使用相同的事件。同样,这些事件均未记录。