Perf 事件的含义是什么:dTLB 加载和 dTLB 存储?

What is the meaning of Perf events: dTLB-loads and dTLB-stores?

我想了解性能事件的含义:dTLB 加载和 dTLB 存储?

A TLB-store 不是写入 TLB,它是写入主内存中的虚拟地址,必须 读取一个TLB条目。

所以 TLB-store 是 TLB-reference 由存储操作完成的。

启用虚拟内存后,每次内存访问的虚拟地址都需要在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.ST 并且 perf 使用的事件代码仅记录在英特尔手册第 3 卷中,其他文档中没有有关性能事件的英特尔资源。)Silvermont 和 Airmont 不支持 dTLB-loadsdTLB-stores 事件。

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

请参阅 了解如何将 perf 核心事件映射到本机事件。

同一程序在不同微体系结构上的dTLB-loadsdTLB-stores事件计数可能不同,这不仅是因为微体系结构的差异,而且是因为事件本身的含义不同。因此,即使程序的微体系结构行为在微体系结构上是相同的,事件计数仍然可能不同。可以在 here and a more detailed description on some of the microarchitectures can be found here.

中找到所有英特尔微体系结构上的本机事件的简要说明。

相关:.