硬件计数器上LLCMisses和CacheMisses之间的差异



LLCMisses和CacheMisses之间有什么区别?

两个计数器返回的值通常应该相同。

BenchmarkDotNet中可用的计数器是由Windows ETW基础设施提供的计数器。不幸的是,据我所知,微软没有提供任何关于它们的具体信息,但我们可以从我们看到的信息中合理地推断出很多。

在英特尔系统上,我看到了完整的PMC源代码列表,该列表以具有顺序ID的8个条目结尾。这8个条目中的前7个(UnhaltedCoreCyclesInstructionRetiredUnhaltedReferenceCyclesLLCReferenceLLCMissesBranchInstructionRetiredBranchMispredictsRetired(与7个"英特尔体系结构性能事件"计数器的名称和顺序几乎完全匹配(有关详细信息,请参阅"英特尔软件开发人员手册"的"性能监视"一章(。

8中的最后一个LbrInserts可能是指"英特尔最后一个分支记录"性能监视功能。因此,假设这些源直接映射到那些特定的x86计数器似乎是合理的,如果没有它们,它们就不会出现在架构上。

在列出的其他5个源中,TotalIssues返回与InstructionRetired相同的值;BranchInstructions匹配BranchInstructionRetiredCacheMisses匹配LLCMissesBranchMispredictions匹配BranchMispredictsRetiredTotalCycles匹配UnhaltedCoreCycles

据推测,其他CPU体系结构定义了自己的体系结构特定源,这些源映射到不同的体系结构专用计数器,例如ARM上的BranchMispredictions可能映射到BR_MIS_PRED计数器,该计数器与Intel的Branch Mispredictions Retired没有相同的语义,但仍然代表分支预测错误的概念。

因此,实际的答案是,如果您正在分发具有预定义值的软件,如果您想要英特尔计数器的具体含义,请选择LLCMisses。如果您只想了解缓存未命中的概念,那么可以选择CacheMisses,这样它也可以在具有不同性能计数器的其他体系结构上工作。如果你只是在本地运行它,那么选择哪一个并不重要。

相关内容

  • 没有找到相关文章

最新更新