FPGA開発日記

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

サイクル精度シミュレータSniperでIn-order / Out-of-orderモードでサイクル数の変化を観測する

サイクル精度シミュレータSniperは、トレースファイルをベースとしたサイクル精度解析シミュレータだ。 RISC-Vのサポートにおいては、SpikeからSIFTファイルを生成し、それをSniperに加えることでサイクル計算を行う。

いろいろ設定を見てみると、In-orderモードとOut-of-orderモードの変更ができるようなので、変更してどのようにサイクル数が変わるのか様子を観察してみた。

以下のような2つの設定ファイルを用意した。

diff -w ../../sniper/config/riscv-inorderboom.cfg ../../sniper/config/riscv-mediumboom.cfg
17c17
< in_order = true
---
> in_order = false

それぞれでシミュレーションし、結果をGem5のトレース形式で吐き出してみる。

run: test.sift
        $(SNIPER_ROOT)/run-sniper -v -c $(SNIPER_ROOT)/config/riscv-mediumboom.cfg --traces=test.sift > cycle.log 2>&1
        mv o3_trace.out o3_trace.outoforder.out

run-io: test.sift # Inorder Implementation
        $(SNIPER_ROOT)/run-sniper -v -c $(SNIPER_ROOT)/config/riscv-inorderboom.cfg --traces=test.sift > cycle.log 2>&1
        mv o3_trace.out o3_trace.inorder.out

ざっくりと以下の図のような感じでIn-orderのパイプラインが遅れ始めた。 一応、それなりに動作はするようだ。もうちょっと突き詰めていこうと思う。