FPGA開発日記

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

PolarFire SoC Icicle Kitを試す(2)

PolarFile SoC Icicle Kitの続き。Linuxのブートは成功したが、このLinuxはOpenEmbeddedの最小構成のものらしい。かろうじてGCCは入っているようだが、gitコマンドなどは入っていない。LANポートは持っているのでネットワークに接続することは出来るが、それ以外は本当にベアメタルのLinuxという感じだ。

これだけではとりあえずなにもできない。恒例のCoremark測定をどのように行おうか迷ったのだが、結局PC上でCoremarkをクロスコンパイルしてRISC-V用のバイナリを作成し、これをIcicle Kitにscpコマンドでコピーして動かそうという結論に至った。

CoremarkのRISC-V向けコンパイル方法は簡単だ。CoremarkのソースコードGitHub上に公開されているので、これをダウンロードする。

git clone https://github.com/eembc/coremark.git

RISC-V向けに、かつLinuxで動かすようにコンパイルするためには、riscv64-unknown-elf-gccではなく、riscv64-unknown-linux-gnu-gccを使用する。

make -B PORT_DIR=linux64 CC=riscv64-unknown-linux-gnu-gcc LD=riscv64-unknown-linux-gnu-gcc

これで終わり。あとはscpcoremark.exeを転送する。Icicle KitのIPアドレスifconfigで確かめておく。

scp coremark.exe root@10.248.30.151:/home/root

これで転送が完了する。Icicle Kitに移り、ファイルが転送されていることを確認してCoremarkを実行する。

root@icicle-kit-es:~# ./coremark.exe
2K performance run parameters for coremark.
CoreMark Size    : 666
Total ticks      : 15127
Total time (secs): 15.127000
Iterations/Sec   : 1322.139221
Iterations       : 20000
Compiler version : GCC8.3.0
Compiler flags   : -O2 -DPERFORMANCE_RUN=1  -lrt
Memory location  : Please put data memory location here
                        (e.g. code in flash, data on heap etc)
seedcrc          : 0xe9f5
[0]crclist       : 0xe714
[0]crcmatrix     : 0x1fd7
[0]crcstate      : 0x8e3a
[0]crcfinal      : 0x382f
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 1322.139221 / GCC8.3.0 -O2 -DPERFORMANCE_RUN=1  -lrt / Heap
root@icicle-kit-es:~#

CoreMarkスコアは1322.139211となった。これに対してCMK/MHzを算出するためには、動作周波数の667MHzで割り算をすればよい。1322.139211 / 667 = 1.98となった。結構低いなあ?

Rocket-Chipの公称値はもっと上のはずなのだが、、、いろいろ調べてみると自分のブログを見つけた。

msyksphinz.hatenablog.com

あれーUnleashedよりも遅いなあ。まあ、何も特殊なオプションを入れていないCoremark値なのでこんなものなのかもしれない。

f:id:msyksphinz:20201107235256p:plain