サイクル精度シミュレータ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のパイプラインが遅れ始めた。 一応、それなりに動作はするようだ。もうちょっと突き詰めていこうと思う。