以下の内容はhttps://msyksphinz.hatenablog.com/entry/2025/11/20/040000より取得しました。


SPEC2006/SPEC2017をRISC-V環境で実行するためのリポジトリを構築する (Sniperシミュレーションの実行)

生成したSIFTトレースを使用して、Sniperシミュレータで詳細な性能評価を行う。

Sniperの設定

Sniperシミュレーションでは、複数の設定ファイルを使用する:

CONFIG_BASE="${CONFIG_DIR}/riscv-base.cfg"
CONFIG_MEDIUMBOOM="${CONFIG_DIR}/riscv-mediumboom.v1024_d256.cfg"
CONFIG_BASE_HIGH="${CONFIG_DIR}/riscv-base-high.cfg"
  • riscv-base.cfg: 基本的なRISC-Vプロセッサ設定
  • riscv-mediumboom.v1024_d256.cfg: MediumBOOMプロセッサ設定(ベクトル拡張対応)
  • riscv-base-high.cfg: 高性能設定

ROI(Region of Interest)の設定

SimPointの結果を基に、ROI(Region of Interest)を設定する。ROIは、詳細シミュレーションを実行する領域を指定する:

# fast-forward: 20% of INTERVAL, detailed simulation: 80% of INTERVAL
WARMUP_LENGTH=$((SIMPOINT_INTERVAL * 20 / 100))
DETAILED_LENGTH=$((SIMPOINT_INTERVAL * 80 / 100))
ROI_ICOUNT_PARAMS="0:${WARMUP_LENGTH}:${DETAILED_LENGTH}"
  • Warm-up期間: SimPoint位置の直前20%を高速実行してキャッシュをウォームアップ
  • 詳細シミュレーション期間: 残り80%を詳細にシミュレート

Sniperシミュレーションの実行

Sniperシミュレーションを実行する場合は、run_sniper_<benchmark> ターゲットを使用する:

make run_sniper_429.mcf

このターゲットは、以下の処理を行う:

  1. sift_results/<benchmark>/ からすべてのSIFTファイルを検索
  2. 各SIFTファイルに対してSniperシミュレーションを実行
  3. 結果を simulation_results/<benchmark>/ に保存
"${RUN_SNIPER}" -d "${output_subdir}" \
  -v \
  -c "${CONFIG_BASE}" \
  -c "${CONFIG_MEDIUMBOOM}" \
  -c "${CONFIG_BASE_HIGH}" \
  --roi-script \
  -s "roi-icount:${ROI_ICOUNT_PARAMS}" \
  -c "general/magic=false" \
  -c "general/app=${benchmark}" \
  -c "perf_model/core/rob_timer/vec_physical_registers=40" \
  -c "perf_model/core/rob_timer/vec_reserve_policy=alloc_none" \
  -c "perf_model/dram/latency=200" \
  -c "perf_model/l1_dcache/outstanding_misses=48" \
  -c "perf_model/l2_cache/outstanding_misses=9" \
  --traces=${sift_file}

Sniperの出力結果

Sniperシミュレーションの結果は、simulation_results/<benchmark>/ ディレクトリに保存される:

simulation_results/
├── 400.perlbench/
│   └── subcmd_1/
│       └── simpoint_12345/
│           ├── sim.out
│           ├── sim.stats.sqlite3
│           └── ...
├── 401.bzip2/
│   └── subcmd_1/
│       └── simpoint_23456/
│           └── ...
└── ...

各シミュレーション結果には、以下の情報が含まれる:

  • sim.out: シミュレーションの標準出力
  • sim.stats.sqlite3: 詳細な統計情報(SQLiteデータベース形式)
  • その他のログファイル: デバッグ情報やエラーログ

並列実行による高速化

Sniperシミュレーションも、各SIFTファイルごとに独立して実行できるため、parallelコマンドを使用して並列実行される。

実行フローの全体像

BBV収集からSniperシミュレーションまでの全体フローをまとめると:

  1. BBV収集: make run_bbv_<benchmark>

    • QEMUのBBVプラグインを使用して基本ブロックベクトルを収集
    • 結果: bbv_results/<benchmark>/bbv_*.out.*.bb
  2. SimPoint分析: make run_simpoint_<benchmark>

    • SimPointツールで代表的な位相を抽出
    • 結果: simpoint_results/<benchmark>/*.simpoints*.weights
  3. SIFT生成: make run_sift_<benchmark>

    • QEMUのfrontendプラグインでSIFTトレースを生成
    • 結果: sift_results/<benchmark>/**/*.sift
  4. Sniperシミュレーション: make run_sniper_<benchmark>

    • SIFTトレースを使用して詳細な性能評価を実行
    • 結果: simulation_results/<benchmark>/**/sim.stats.sqlite3



以上の内容はhttps://msyksphinz.hatenablog.com/entry/2025/11/20/040000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14