gem5缓存统计信息 - 重置和转储

时间:2014-05-24 06:13:58

标签: computer-architecture cpu-architecture gem5

我正在尝试熟悉gem5模拟器。 首先,我用

编写了一个简单的程序
int main()
{
    m5_reset_stats(0, 0);
    m5_dump_stats(0, 0);
    return 0;
}

我用util / m5 / m5op_x86.S编译它并使用...

运行它
 ./build/X86/gem5.opt configs/example/se.py --caches -c ~/tmp/hello

m5out / stats.txt显示(除其他外)......

system.cpu.dcache.ReadReq_hits::total             881
system.cpu.dcache.WriteReq_hits::total            917
system.cpu.dcache.ReadReq_misses::total            54
system.cpu.dcache.WriteReq_misses::total           42

为什么一个空函数显示如此多的命中和未命中? libc引起的命中和失误是什么?如果是这样,那么m5_reset_stats()和m5_dump_stats()的目的是什么?

1 个答案:

答案 0 :(得分:3)

如果有两个

块,我会检查stats.txt文件
---Begin--- 
---End-----

因为正如您所解释的那样,模拟器应该在dump_stats(0,0)和运行结束时转储统计信息。所以,看起来你要么正在查看其中一个区间(我希望其他区间的所有统计数据都为0);或者模拟中存在错误,dump_stats()(或reset_stats())实际上没有做任何事情。这实际上发生在我身上很多次,但我不确定这个bug的来源。

如果您想进一步排查问题,可以执行以下操作:

  1. 查看代码的反汇编并找到reset_stats.w和dump_stats.w
  2. 从gem5转储跟踪并查看它是否最终执行转储和重置指令以及在之前/之后执行的指令(以及执行的指令)。
  3. 希望这有帮助!