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
これで終わり。あとはscp
でcoremark.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の公称値はもっと上のはずなのだが、、、いろいろ調べてみると自分のブログを見つけた。
あれーUnleashedよりも遅いなあ。まあ、何も特殊なオプションを入れていないCoremark値なのでこんなものなのかもしれない。