Gem5模拟器学习(七)

gem5附带的默认配置脚本

本文是对官网教程gem5: Using the default configuration scripts的整理,主要介绍了

gem5附带了许多配置脚本,允许用户非常快速地使用gem5。

1. configs文件夹

gem5中的全部配置脚本都在configs文件夹中,该文件夹的结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
configs/boot:
bbench-gb.rcS bbench-ics.rcS hack_back_ckpt.rcS halt.sh

configs/common:
Benchmarks.py Caches.py cpu2000.py FileSystemConfig.py GPUTLBConfig.py HMC.py MemConfig.py Options.py Simulation.py
CacheConfig.py cores CpuConfig.py FSConfig.py GPUTLBOptions.py __init__.py ObjectList.py SimpleOpts.py SysPaths.py

configs/dist:
sw.py

configs/dram:
lat_mem_rd.py low_power_sweep.py sweep.py

configs/example:
apu_se.py etrace_replay.py garnet_synth_traffic.py hmctest.py hsaTopology.py memtest.py read_config.py ruby_direct_test.py ruby_mem_test.py sc_main.py
arm fs.py hmc_hello.py hmc_tgen.cfg memcheck.py noc_config riscv ruby_gpu_random_test.py ruby_random_test.py se.py

configs/learning_gem5:
part1 part2 part3 README

configs/network:
__init__.py Network.py

configs/nvm:
sweep_hybrid.py sweep.py

configs/ruby:
AMD_Base_Constructor.py CHI.py Garnet_standalone.py __init__.py MESI_Three_Level.py MI_example.py MOESI_CMP_directory.py MOESI_hammer.py
CHI_config.py CntrlBase.py GPU_VIPER.py MESI_Three_Level_HTM.py MESI_Two_Level.py MOESI_AMD_Base.py MOESI_CMP_token.py Ruby.py

configs/splash2:
cluster.py run.py

configs/topologies:
BaseTopology.py Cluster.py CrossbarGarnet.py Crossbar.py CustomMesh.py __init__.py MeshDirCorners_XY.py Mesh_westfirst.py Mesh_XY.py Pt2Pt.py

boot/

这些是在全系统模式下使用的rcS文件。这些文件在Linux引导后由模拟器加载,并由shell执行。其中大多数用于在全系统模式下运行时控制基准测试。有些是实用函数,如hack_back_ckpt.rcS。在全系统模拟一章中,将更深入地介绍这些文件。

common/

common目录包含许多用于创建模拟系统的辅助脚本和函数。例如,

Caches.py类似于前几章中创建的Caches.py和Caches_opts.py文件。

Options.py包含可以在命令行上设置的各种选项。比如CPU的数量、系统时钟等等。这是查看要更改的选项是否已经有命令行参数的好地方。

CacheConfig.py包含用于为经典内存系统设置缓存参数的选项和函数。

MemConfig.py提供了一些帮助函数,用于设置内存系统。

FSConfig.py包含为许多不同类型的系统设置全系统仿真所需的功能。全系统仿真将在本章中进一步讨论。

Simulation.py包含许多用于设置和运行gem5的辅助函数。该文件中包含的许多代码管理保存和恢复检查点。下面示例中的示例配置文件使用该文件中的函数来执行gem5模拟。该文件相当复杂,但它也允许在模拟运行方式上有很大的灵活性。

dram/

包含测试DRAM的脚本。

example/

此目录包含一些示例 gem5配置脚本,可以使用这些脚本即开即用地运行 gem5。具体来说,se.py 和 fs.py 非常有用。有关这些文件的更多信息可以在下一节中找到。此目录中还有一些其他实用程序配置脚本。

learning_gem5/

该目录包含learning_gem5书中的所有gem5配置脚本。

network/

此目录包含HeteroGarnet网络的配置脚本。

nvm/

此目录包含使用NVM接口的示例脚本。

ruby/

该目录包含Ruby的配置脚本及其包含的缓存一致性协议。

splash2/

该目录包含用于运行splash2基准测试套件的脚本,以及用于配置模拟系统的一些选项。

topologies/

该目录包含在创建Ruby缓存层次结构时可以使用的拓扑的实现。

2. se.py&fs.py

SE模式默认配置脚本se.py和FS模式默认配置脚本fs.py均位于目录configs/example/,下面以se.py为例介绍它们通用的命令行选项:

  • 通过--cmd=选项指定二进制文件

    1
    build/X86/gem5.opt configs/example/se.py --cmd=tests/test-progs/hello/bin/x86/linux/hello
  • 默认情况下,两个配置脚本均使用 atomic CPU和 atomic memory accesses,因此没有时间统计数据产生

    可通过--cpu-type=CPU_TYPE指定CPU类型,通过--mem-type=MEM_TYPE指定内存类型。