FPGA開発日記

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

SiFiveの64bit RISC-VコアE51でCoremarkを動作させる

前回、MCSをダウンロードしてSiFiveのRISC-VコアE51を起動させた。

その時は、デバッグ用の機器を用意していなかったので自分のプログラムを動作させることができなかったが、ハードウェア設計の師匠からメールをもらい、プログラムを動作させることができるようになった。

tom01h.exblog.jp

詳細は師匠の技なのでこのブログには書かないが、MCSファイルの中身を差し替えてプログラム部分を差し替えることによりプログラムを動作させることができるようになる。

ここではfreedom-e-sdkに格納されている64ビット版Coremarkをコンパイルし、コンパイル結果のihexファイルをMCSファイルと結合することによりプログラムを動作させることにした。

MCSファイルを改変した結果、無事にCoremarkプログラムが起動した。

f:id:msyksphinz:20170515001923p:plain

Coremark/MHzの計算方法は、例によって { \displaystyle
\text{Iterations/Sec} / \text{MHz}
} で計算できるので、今回は { \displaystyle
152.084290 / 65 = 2.34
} となる。

あれ、公称値と少し違うなあ。

f:id:msyksphinz:20170515002436p:plain

core freq at 65000000 Hz
core freq at 65000000 Hz
2K performance run parameters for coremark.
CoreMark Size    : 666
Total ticks      : 18446744073688525916
Total time (secs): 65.753011
Iterations/Sec   : 152.084290
Iterations       : 10000
Compiler version : GCC7.1.0
Compiler flags   : -O2 -fno-common -funroll-loops -finline-functions --param max-inline-insns-auto=20 -falign-functions=4 -falign-jumps=4 -falign-loops=4
Memory location  : STACK
seedcrc          : 0xe9f5
[0]crclist       : 0xe714
[0]crcmatrix     : 0x1fd7
[0]crcstate      : 0x8e3a
[0]crcfinal      : 0x988c
Correct operation validated. See readme.txt for run and reporting rules.
CoreMark 1.0 : 152.084290 / GCC7.1.0 -O2 -fno-common -funroll-loops -finline-functions --param max-inline-insns-auto=20 -falign-functions=4 -falign-jumps=4 -falign-loops=4 / STACK

Progam has exited with code:0x0000000000000000