gpt4 book ai didi

c - 使用 Intel 的 PIN 工具计算程序中缓存命中/未命中的次数

转载 作者:太空宇宙 更新时间:2023-11-03 23:26:29 25 4
gpt4 key购买 nike

我一直在尝试编写一个 pintool 工具来检测给定程序中的缓存命中和未命中。我发现有INS_IsMemoryRead/Write之类的调用来判断指令是不是LD/ST。

  • 有没有办法确定指令是否命中缓存?
  • 如果是这样,是否也可以获取从缓存/内存中获取数据所花费的周期数?

最佳答案

这两样都做不到。

pin自带的缓存工具“Memory”是一个非常简单的缓存功能模拟器。换句话说,通过使用缓存工具,可以根据缓存组织(例如大小、路数、缓存级别)查看/模拟应用程序可能有多少缓存未命中。通过一些简单的代码编写,就可以报告缓存未命中发生的指令,然后将这些指令映射回源代码。但是,缓存模拟的命中/未命中结果可能与真实计算机系统不同或不对应,即使缓存模拟器配置为具有与真实系统相同的缓存组织也是如此。

此外,缓存工具的另一个限制是它是单线程的。您不能将它用于多线程应用程序。

此外,将无法获得任何计时信息,例如为缓存未命中提供服务所需的周期数。这非常依赖于体系结构,我不知道可以从真实系统提供此信息的工具。相反,人们使用 CPU 时序模拟器。示例 CPU 时序模拟器是 Gem5 http://www.gem5.org/和基于 PtlSim 的 Marss http://marss86.org/ .

关于c - 使用 Intel 的 PIN 工具计算程序中缓存命中/未命中的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26127802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com