Perf事件:dTLB负载和dTLB存储是什么意思?

时间:2019-05-16 15:35:51

标签: intel perf amd-processor tlb

我试图了解perf事件的含义:dTLB加载和dTLB存储?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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使用的事件代码仅记录在Intel手册第3卷中,而未在其他手册中进行记录。英特尔提供有关性能事件的信息。)Silvermont和Airmont不支持dTLB-loadsdTLB-stores事件。

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

有关如何将perf核心事件映射到本地事件的信息,请参见Hardware cache events and perf

在不同的微体系结构上,同一程序的dTLB-loadsdTLB-stores事件计数可能会有所不同,这不仅是由于微体系结构的差异,还因为事件的含义本身是不同的。因此,即使程序的微体系结构行为在微体系结构上被证明是相同的,事件计数仍然可以不同。可以在here上找到对所有英特尔微体系结构上的本机事件的简短描述,而在here上可以找到某些微体系结构的更详细的描述。

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