gem5教程第四章 了解gem5统计和输出
除了您的模拟脚本打印出的任何信息外,在运行gem5后,在名为m5out的目录中还生成了三个文件:
- config.ini 包含为模拟创建的每个SimObject及其参数值的列表。
- config.json 与config.ini相同,但采用json格式。
- stats.txt 为模拟注册的所有gem5统计数据的文本表示。
config.ini
此文件是模拟内容的最终版本。此文件中显示了每个模拟SimObject的所有参数,无论是在配置脚本中设置的还是使用的默认值。
下面是从运行第二章节中的simple.py配置文件时生成的config.ini中提取的。
[root]
type=Root
children=system
eventq_index=0
full_system=false
sim_quantum=0
time_sync_enable=false
time_sync_period=100000000000
time_sync_spin_threshold=100000000[system]
type=System
children=clk_domain cpu dvfs_handler mem_ctrl membus
boot_osflags=a
cache_line_size=64
clk_domain=system.clk_domain
default_p_state=UNDEFINED
eventq_index=0
exit_on_work_items=false
init_param=0
kernel=
kernel_addr_check=true
kernel_extras=
kvm_vm=Null
load_addr_mask=18446744073709551615
load_offset=0
mem_mode=timing...
# 在这里,我们可以看到,在每个SimObject的描述开头,首先是它在配置文件中创建的名称,用方括号括起来(例如,[system.membus])。
[system.membus]
type=CoherentXBar
children=snoop_filter
clk_domain=system.clk_domain
default_p_state=UNDEFINED
eventq_index=0
forward_latency=4
frontend_latency=3
p_state_clk_gate_bins=20
p_state_clk_gate_max=1000000000000
p_state_clk_gate_min=1000
point_of_coherency=true
point_of_unification=true
power_model=
response_latency=2
snoop_filter=system.membus.snoop_filter
snoop_response_latency=4
system=system
use_default_range=false
width=16
master=system.cpu.interrupts.pio system.cpu.interrupts.int_slave system.mem_ctrl.port
slave=system.cpu.icache_port system.cpu.dcache_port system.cpu.interrupts.int_master system.system_port[system.membus.snoop_filter]
type=SnoopFilter
eventq_index=0
lookup_latency=1
max_capacity=8388608
system=system
SimObject的每个参数都会显示其值,包括配置文件中未明确设置的参数。例如,配置文件将时钟域设置为1 GHz(在这种情况下为1000滴答)。但是,它没有设置缓存行大小(在系统中为64)对象。
config.ini文件是一个有价值的工具,可以确保您模拟的是您认为正在模拟的内容。
在gem5中,有许多可能的方法可以设置默认值和覆盖默认值。始终检查config.ini是一种“最佳实践”,作为一种健全性检查,确保配置文件中设置的值被传播到实际的SimObject实例化。
stats.txt
gem5有一个灵活的统计生成系统。gem5统计数据在gem5统计中有一些详细介绍。
SimObject的每个实例化都有自己的统计数据。
在模拟结束时,或者当发出特殊的统计数据转储命令时,所有SimObjects的统计数据的当前状态将转储到一个文件中。
首先,统计文件包含有关执行的一般统计信息:
---------- Begin Simulation Statistics ----------
simSeconds 0.000057 # Number of seconds simulated (Second)
simTicks 57467000 # Number of ticks simulated (Tick)
finalTick 57467000 # Number of ticks from beginning of simulation (restored from checkpoints and never reset) (Tick)
simFreq 1000000000000 # The number of ticks per simulated second ((Tick/Second))
hostSeconds 0.03 # Real time elapsed on the host (Second)
hostTickRate 2295882330 # The number of ticks simulated per host second (ticks/s