2

次のコマンドで dhrystone などのベンチマークを実行する場合:

make output/dhrystone.riscv.out

http://riscv.org/download.html#tab_rocketで説明されているように、C++ エミュレーターで。次の出力が得られます: 初めて実行するとき:

Microseconds for one run through Dhrystone: 1064
Dhrystones per Second: 939
cycle = 533718
instret = 148672

そして2回目:

Microseconds for one run through Dhrystone: 1064
Dhrystones per Second:                      939
cycle = 533715
instret = 148672

周期が違うのはなぜ?それらはまったく同じであるべきではありません。他のベンチマークでもこれを試してみましたが、偏差がさらに高くなりました。これが正常な場合、偏差はどこから来るのでしょうか?

4

1 に答える 1

1

ランダムに初期化されたレジスタには、少量の非決定性があります (たとえば、HTIF によって回復されるクロックはランダムな位相に初期化されます)。これらの小さな逸脱がパフォーマンスのベンチマークに影響を与えるとは思えません。

毎回同じ結果が必要な場合 (検証など)、エミュレータ コードを変更して、レジスタを毎回既知の値に初期化することができます。

于 2015-08-25T18:31:52.193 に答える