【问题标题】:What is the meaning of Perf events: dTLB-loads and dTLB-stores?Perf 事件的含义是什么:dTLB-loads 和 dTLB-stores?
【发布时间】:2019-10-03 22:36:34
【问题描述】:

我试图理解 perf 事件的含义:dTLB-loads 和 dTLB-stores?

【问题讨论】:

  • 你知道加载和存储操作之间的区别吗?例如add [rdi], eax 既是加载也是存储。 (并且每个部分都是单独执行的,所以两者都是单独的 TLB 引用)。
  • 我一般都理解加载从内存中获取并将存储写回内存,但我对 TLB 存储的含义感到困惑。从我读过的内容来看,TLB 条目可以被修改(尤其是脏位或有效位已更改),但是存储发生在哪里以及为什么?

标签: intel perf amd-processor tlb


【解决方案1】:

启用虚拟内存后,需要在TLB中查找每一次内存访问的虚拟地址,获取对应的物理地址,确定访问权限和权限(或在映射无效的情况下引发异常)。 dTLB-loadsdTLB-stores 事件分别表示数据存储器加载或存储访问的 TLB 查找。这是这些事件的perf 定义。但具体含义取决于微架构。

在 Westmere、Skylake、Kaby Lake、Coffee Lake、Cannon Lake(可能还有 Ice Lake)上,dTLB-loadsdTLB-stores 分别映射到 MEM_INST_RETIRED.ALL_LOADSMEM_INST_RETIRED.ALL_STORES。在 Sandy Bridge、Ivy Bridge、Haswell、Broadwell、Goldmont、Goldmont Plus,它们分别映射到 MEM_UOP_RETIRED.ALL_LOADSMEM_UOP_RETIRED.ALL_STORES。在 Core2、Nehalem、Bonnell、Saltwell 上,它们分别映射到 L1D_CACHE_LD.MESIL1D_CACHE_ST.MESI。 (请注意,在 Bonnell 和 Saltwell 上,事件的正式名称是 L1D_CACHE.LDL1D_CACHE.STperf 使用的事件代码仅记录在英特尔手册第 3 卷中,而不是英特尔其他有关性能事件的来源中。 ) Silvermont 和 Airmont 不支持 dTLB-loadsdTLB-stores 事件。

在所有当前的 AMD 处理器上,dTLB-loads 映射到 LsDcAccesses 并且不支持 dTLB-stores。但是,LsDcAccesses 计算加载和存储的 TLB 查找。在其他供应商的处理器上,不支持 dTLB-loadsdTLB-stores

请参阅 Hardware cache events and perf 了解如何将 perf 核心事件映射到原生事件。

同一程序在不同微架构上的dTLB-loadsdTLB-stores 事件计数可能不同,不仅因为微架构不同,还因为事件本身的含义不同。因此,即使程序的微架构行为在微架构上证明是相同的,事件计数仍然可能不同。可以在here 找到对所有英特尔微架构的原生事件的简要描述,可以在here 找到有关某些微架构的更详细描述。

相关:how to interpret perf iTLB-loads,iTLB-load-misses.

【讨论】:

    【解决方案2】:

    TLB 存储不是写入 TLB,它是写入主内存中的虚拟地址,必须读取 TLB 条目。 p>

    因此,TLB 存储是由存储操作完成的 TLB 引用。

    【讨论】:

      猜你喜欢
      • 2020-07-26
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-18
      • 2019-02-04
      • 2012-08-26
      • 1970-01-01
      相关资源
      最近更新 更多