首页 > 解决方案 > 如何在 gem5 中使用 CommMonitor

问题描述

我想记录缓存的访问细节。我看到了一些答案,说 CommMonitor 可以提供帮助。但没有找到更多细节。

如何在 gem5 中跟踪通过缓存和 DRAM 内存的数据?

从 GEM5 获取物理地址跟踪

以上是关于CommMonitor的一些解答。我对 CommMonitor 有一些疑问?

  1. 首先Commmonitor可以用于DerivO3CPU还是只用于TimingSimpleCPU?我在 DerivO3CPU 上试了一下,有输出。但在某处我似乎听说它不能用于 DerivO3CPU。

  2. 我对 CommMonitor 的理解是,它就像一个过滤器。流经它的数据被记录下来。比如在l2和membus之间添加commMonitor,

         system.monitor2 = CommMonitor()
         system.monitor2.trace = MemTraceProbe(trace_file = "CT_mon2.trc.gz")
         system.monitor2.slave = system.l2.mem_side
         system.membus.slave = system.monitor2.master
         system.l2.cpu_side = system.tol2bus.master
    

输出格式为:

 11500: system.monitor2: Forwarded read request
  77000: system.monitor2: Latency: 65500
  77000: system.monitor2: Received read response
 103000: system.monitor2: Forwarded read request
 104000: system.monitor2: Forwarded read request
 165000: system.monitor2: Latency: 62000
 165000: system.monitor2: Received read response
 170000: system.monitor2: Latency: 66000
 170000: system.monitor2: Received read response
 194500: system.monitor2: Forwarded read request
 200500: system.monitor2: Forwarded read request
 243000: system.monitor2: Latency: 48500
 243000: system.monitor2: Received read response
 249000: system.monitor2: Latency: 48500
 249000: system.monitor2: Received read response
 267500: system.monitor2: Forwarded read request
 269500: system.monitor2: Forwarded read request
 274000: system.monitor2: Forwarded read request

生成的CT_mon2.trc.gz文件是解压后的二进制文件,怎么看里面的数据呢?如果能输出地址和数据就更好了

  1. 如何在 l1dcache 和 cpu 之间使用它?

标签: gem5

解决方案


  1. 如何在 l1dcache 和 cpu 之间使用它?

编辑 gem5/src/cpu/→ BaseCPU.py 如下,不要忘记在对 src 文件夹进行任何更改后进行构建: 在此处输入图像描述

您可以使用标志(如下)来查看通过此主从接口的内容。

build/X86/gem5.opt --debug-flags=CommMonitor --debug-file=trace.txt.gz configs/learning_gem5/part2/simple_cache.py

在 m5out 文件夹中找到 trace.txt.gz。


推荐阅读