Gem5のデフォルト設定スクリプトの構成について。
シミュレーションする内容を十分に理解せずにこのスクリプトを使用することは危険であり、コンピュータアーキテクチャの研究をするときは、これらのスクリプトを完全に理解することが重要である。
まずは configs/
の中身を表示してみる。
. ├── boot ├── common ├── dist ├── dram ├── example ├── learning_gem5 ├── network ├── nvm ├── ruby ├── splash2 └── topologies
boot/
boot/ ├── bbench-gb.rcS ├── bbench-ics.rcS ├── hack_back_ckpt.rcS └── halt.sh 0 directories, 4 files
フルシステムモードで使用するrcSファイル。
これらのファイルはLinuxの起動後にシミュレータによってロードされ、シェルによって実行される。
これらのファイルのほとんどは、フルシステムモードで実行されるベンチマークを制御するために使用される。
hack_back_ckpt.rcSの
ようなユーティリティ関数もある。
これらのファイルについては、フルシステム・シミュレーションの章で詳しく説明する。
common
common/ ├── Benchmarks.py ├── CacheConfig.py ├── Caches.py ├── CpuConfig.py ├── FSConfig.py ├── FileSystemConfig.py ├── GPUTLBConfig.py ├── GPUTLBOptions.py ├── HMC.py ├── MemConfig.py ├── ObjectList.py ├── Options.py ├── SimpleOpts.py ├── Simulation.py ├── SysPaths.py ├── __init__.py ├── cores │ ├── __init__.py │ └── arm │ ├── HPI.py │ ├── O3_ARM_v7a.py │ ├── __init__.py │ ├── ex5_LITTLE.py │ └── ex5_big.py └── cpu2000.py 5 directories, 43 files
このディレクトリには、シミュレートされたシステムを作成するための多くのヘルパースクリプトや関数が含まれている。例えば、Caches.py
は、前の章で作成したcaches.pyと
caches_opts.py
に似ている。
Options.py
:コマンドラインで設定できる様々なオプションを含んでいる。CPUの数、システムクロック、他にも多くのオプションが用意されている。変更したいオプションが既にコマンドラインパラメータを持っているかどうかを確認するのによく使われる。CacheConfig.py
:には、古典的なメモリシステムのキャッシュパラメータを設定するためのオプションと関数が含まれています。MemConfig.py
:メモリシステムを設定するためのいくつかのヘルパー関数を提供している。FSConfig.py
:フルシステムシミュレーションを設定するために必要な関数を含んでいる。フルシステムシミュレーションについては、この章で説明する。Simulation.py
:gem5をセットアップして実行するための多くのヘルパー関数が含まれている。このファイルに含まれるコードの多くは、チェックポイントの保存と復元を管理する。examples/
にある設定ファイルの例では、このファイルの関数を使用してgem5シミュレーションを実行する。このファイルは非常に複雑だが、シミュレーションの実行方法に多くの柔軟性を持たせている。
dram
dram/ ├── lat_mem_rd.py ├── low_power_sweep.py └── sweep.py 0 directories, 3 files
example
example/ ├── apu_se.py ├── arm ├── etrace_replay.py ├── fs.py ├── garnet_synth_traffic.py ├── gem5_library ├── gpufs ├── hmc_hello.py ├── hmc_tgen.cfg ├── hmctest.py ├── hsaTopology.py ├── lupv ├── memcheck.py ├── memtest.py ├── noc_config ├── read_config.py ├── riscv ├── ruby_direct_test.py ├── ruby_gpu_random_test.py ├── ruby_mem_test.py ├── ruby_random_test.py ├── sc_main.py ├── se.py └── sst 7 directories, 17 files
このディレクトリにはgem5のいくつかのコンフィグレーションスクリプトの例が含まれている。特に、se.pyおよびfs.pyは非常に有用である。これらのファイルについては次の章で取り扱う。
このディレクトリには、ユーティリティコンフィグレーションスクリプトも含ま柄れている。
learning_gem5/
learning_gem5/ ├── README ├── part1 │ ├── caches.py │ ├── simple-arm.py │ ├── simple-riscv.py │ ├── simple.py │ └── two_level.py ├── part2 │ ├── hello_goodbye.py │ ├── run_simple.py │ ├── simple_cache.py │ └── simple_memobj.py └── part3 ├── msi_caches.py ├── ruby_caches_MI_example.py ├── ruby_test.py ├── simple_ruby.py └── test_caches.py 3 directories, 15 files
このディレクトリには、learning_gem5で使用するすべてのgem5のコンフィグレーションスクリプトが含まれている。
network
network/ ├── Network.py └── __init__.py 1 directory, 4 files
HeteroGarnetネットワークに関するコンフィグレーションスクリプトが含まれれる。
nvm
tree nvm/ nvm/ ├── sweep.py └── sweep_hybrid.py 0 directories, 2 files
NVMインタフェースを使用するためのサンプルスクリプトが含まれている。
ruby
ruby/ ├── AMD_Base_Constructor.py ├── CHI.py ├── CHI_config.py ├── CntrlBase.py ├── GPU_VIPER.py ├── Garnet_standalone.py ├── MESI_Three_Level.py ├── MESI_Three_Level_HTM.py ├── MESI_Two_Level.py ├── MI_example.py ├── MOESI_AMD_Base.py ├── MOESI_CMP_directory.py ├── MOESI_CMP_token.py ├── MOESI_hammer.py ├── Ruby.py └── __init__.py 1 directory, 18 files
このディレクトリにはRuby(訳注:これはプログラミング言語のRubyのことではない)ためのコンフィグレーションおよびキャッシュコヒーレンスプロトコルが含まれている。詳細はRubyの章を参照すること。
splash2/
splash2/ ├── cluster.py └── run.py 0 directories, 2 files
このディレクトリには、splash2ベンチマークスイートを実行するためのスクリプトが含まれている。
topologies
topologies/ ├── BaseTopology.py ├── Cluster.py ├── Crossbar.py ├── CrossbarGarnet.py ├── CustomMesh.py ├── MeshDirCorners_XY.py ├── Mesh_XY.py ├── Mesh_westfirst.py ├── Pt2Pt.py └── __init__.py 1 directory, 11 files
このディレクトリには、Rubyキャッシュ階層を作成するときに使用するトポロジの実装が含まれている。詳細はRubyの章を参照すること。