4

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() の目的は何ですか?

4

1 に答える 1

3

2 つのチャンクがある場合は、stats.txt ファイルをチェックインします。

---Begin--- 
---End-----

あなたが説明したように、シミュレーターは dump_stats(0,0) と実行の最後に統計をダンプすることになっているためです。したがって、これらの間隔のいずれかを見ているようです(そして、他の間隔ではすべての統計が0になると思います)。または、シミュレーションにバグがあり、dump_stats() (または reset_stats()) が実際には何もしませんでした。それは実際に私に何度も起こりましたが、このバグの原因についてはよくわかりません.

さらにトラブルシューティングを行う場合は、次の手順を実行できます。

  1. コードの逆アセンブリを見て、reset_stats.w と dump_stats.w を見つけます。
  2. gem5 からトレースをダンプし、最終的にダンプとリセットの命令が実行されるかどうか、および前後に実行される命令 (およびその数) を確認します。

お役に立てれば!

于 2014-07-16T05:47:41.567 に答える