【问题标题】:What is the meaning of LLC-prefetch-misses perf eventLLC-prefetch-misses perf event是什么意思
【发布时间】:2022-01-22 09:45:55
【问题描述】:

我正在尝试了解 Sandy Bridge 的 LLC-prefetch-misses perf 事件的含义。

从linux内核source我看到了事件的定义:

[ C(OP_PREFETCH) ] = {
    [ C(RESULT_ACCESS) ] = SNB_DMND_PREFETCH|SNB_L3_ACCESS,
    [ C(RESULT_MISS)   ] = SNB_DMND_PREFETCH|SNB_L3_MISS,
},

在哪里: SNB_DMND_PREFETCH = (SNB_PF_DATA_RD|SNB_PF_RFO) 指向事件寄存器的第 4-5 位,而 SNB_L3_MISS = (SNB_DRAM_ANY|SNB_NON_DRAM) 指向事件寄存器的第 22-36 位。

阅读Intel® 64 and IA-32 Architectures Software Developer’s Manual,第 3 卷,第 18.3.4.5 章,我发现:

SNB_DMND_PREFETCH 代表“Request_Type”,SNB_L3_MISS 代表MSR_OFFCORE_RSP_x 事件寄存器的“Response_Type”字段

请求:

回复:

但是,我无法理解预取上下文中“响应”的含义。

另外,我在一些课程中找到了这个定义slides

Prefetch Hit: Prefetched line that was hit in the cache before being replaced (miss avoided)

Prefetch Miss: Prefetched line that was replaced before being accessed

关于LLC-prefetchLLC-prefetch-misses 事件的含义有什么建议吗?上述定义是否相关?

谢谢。

【问题讨论】:

    标签: linux caching perf prefetch


    【解决方案1】:

    事件 LLC-prefetch-misses 发生在任何类型(DATA_RD 或 RFO)的 L2 硬件预取,其中目标高速缓存行不是从 CPU 高速缓存提供的。仅当目标行在所需的一致性状态(E 或 M,用于 RFO 预取,或 S,用于 DATA_RD 预取)中不存在于同一 L2 缓存中时,才会生成 L2 硬件预取。

    处理预取事务可能需要窥探同一 NUMA 域中其他内核的私有缓存或窥探其他 NUMA 域中的缓存。事件定义中的SNB_DRAM_ANY 标志表示该事件包括所有窥探案例。 LLC-prefetch-misses 类型的事件的唯一两个要求是它是 L2 硬件预取请求并且供应商不是 CPU 缓存。在这种情况下,供应商通常是本地或远程 DRAM 控制器。

    事件LLC-prefetch 包含LLC-prefetch-misses,因为它包括供应商是CPU 数据缓存(L3、L2 或L1D)的情况。在 L3 中命中的 L2 预取由 LLC-prefetch 计数,但不由 LLC-prefetch-misses 计数。 LLC-prefetch 计数至少与 LLC-prefetch-misses 一样大。

    【讨论】:

      猜你喜欢
      • 2012-09-18
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多