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

ago*_*ood 4 intel tlb perf amd-processor

我试图理解性能事件的含义:dTLB 加载和 dTLB 存储?

Had*_*ais 7

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

在 Westmere,Skylake、Kaby Lake、Coffee Lake、Cannon Lake(可能还有 Ice Lake)dTLB-loads和分别dTLB-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 上不支持dTLB-loads和事件dTLB-stores和艾尔蒙特。

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

有关如何将核心事件映射到本机事件的信息,请参阅硬件缓存事件和性能perf

dTLB-loads不同微架构上同一程序的事件计数dTLB-stores可能不同,不仅因为微架构的差异,而且因为事件的含义本身不同。因此,即使程序的微体系结构行为在微体系结构上是相同的,事件计数仍然可能不同。所有英特尔微架构上的本机事件的简要描述可以在此处找到,而有关某些微架构的更详细的描述可以在此处找到。

相关:如何解释 perf iTLB-loads,iTLB-load-misses


Pet*_*des 6

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

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