在gem5仿真环境中测量时间的最佳方法是什么

时间:2015-11-01 22:49:38

标签: gem5

我在gem5仿真环境中运行一个小矩阵乘法程序,想要测量程序的执行时间。该程序在Fortran中,我在矩阵乘法例程之前和之后使用cpu_time来获取时间。但是还有其他更好的方法来测量gem5环境中的时间吗?

3 个答案:

答案 0 :(得分:4)

在完整系统模式下使用gem5测量给定二进制数据的标准方法是使用--script参数提供rcS脚本:

./build/ARM/gem5.fast ... your_options... --script=./script.rcS

您的脚本应包含m5ops以根据需要重置和转储统计信息。一个示例script.rcS:

m5 resetstats
/bin/yourbinary
m5 dumpstats

然后从stats.txt中您可以获取执行时间(sim_seconds)或您需要的任何统计信息。如果您正在使用Syscall仿真模式,则可以直接检查stats.txt,而无需使用rcS脚本。

答案 1 :(得分:0)

您还可以直接在基准测试内添加resetstats / dumpstats魔术汇编指令,如下所示:How to count the number of CPU clock cycles between the start and end of a benchmark in gem5?在aarch64中:

/* resetstats */
__asm__ __volatile__ ("mov x0, #0; mov x1, #0; .inst 0XFF000110 | (0x40 << 16);" : : : "x0", "x1")
/* dumpstats */
__asm__ __volatile__ ("mov x0, #0; mov x1, #0; .inst 0xFF000110 | (0x41 << 16);" : : : "x0", "x1")

然后,您可能希望查看system.cpu.numCycles,其中显示了传递了多少CPU滴答声。

答案 2 :(得分:-1)

您当然可以根据您的构建查看不同的stat文件,但我认为最简单的方法是在模拟命令之前标记时间:

time ./build/ARM/gem5.fast ... your_options... --script=./script.rcS ...