FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Gem5のチュートリアル "Learning Gem5"をやってみる(4. Gem5のコンフィグレーションスクリプトの構成)

www.gem5.org

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

DRAMをテストするためのスクリプトが含まれている。

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の章を参照すること。


msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com

msyksphinz.hatenablog.com