Running 32-bit Linux on FPGAs with RISC-V Out-of-Order Core
Luffcaでは、Digilent社のFPGAボード用にRISC-V Out-of-Order CoreであるNaxRiscvのSoCのゲートウェアを作成し、32-bit Linuxを実行することに成功しました。
NaxRiscvの関連記事は、こちら。
LiteX-NaxRiscv
NaxRiscvは、アウトオブオーダ実行スーパースカラのRISC-V Coreです。NaxRiscvは、SoC builderのLiteXに統合されています。
以前の記事で紹介したように、NaxRiscvは、32-bitと64-bit RISC-Vをサポートしています。
今回は、Digilent社のFPGAボードのArty A7-35TとNexys Video用に、32-bit NaxRiscv SoCのゲートウェアを作成しました。
Linux on LiteX-NaxRiscv
LiteX-NaxRiscvには、Linux on LiteX-VexRiscvのように、Linuxの動作環境を構築するリポジトリはありませんが、32-bit NaxRiscvの場合、Linux on LiteX-VexRiscvの成果物を利用して、Linuxを動作させることができます。
ただし、SoCの構成に合わせてdts/dtbを調整する必要があります。
Running Benchmarks on Hardware
作成したSoCのゲートウェアをFPGAボードにロードし、ベンチマークのCoreMarkとDhrystoneを実行しました。
CoreMark
以下は、-O3
オプションでビルドしたCoreMarkを実行したときのコンソール出力を示しています。
root@buildroot:~# coremark_o3 2K performance run parameters for coremark. CoreMark Size : 666 Total ticks : 14985 Total time (secs): 14.985000 Iterations/Sec : 400.400400 Iterations : 6000 Compiler version : GCC10.3.0 Compiler flags : -O3 -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 : 0xa14c Correct operation validated. See readme.txt for run and reporting rules. CoreMark 1.0 : 400.400400 / GCC10.3.0 -O3 -lrt / Heap
-O3
オプションの場合、CoreMarkスコアは392〜401です。
動作周波数が100MHzなので、CoreMark/MHzは3.92〜4.01になります。
NaxRiscvのシミュレータのCoreMark/MHzは4.70なので、少し差があります。
なお、buildrootのデフォルト構成の-O2
オプションの場合、CoreMarkスコアは366〜368です。
Dhrystone
以下は、-O3
オプションでビルドしたDhrystoneを実行したときのコンソール出力を示しています。
root@buildroot:~# dhrystone_o3 1000000 Dhrystone Benchmark, Version 2.1 (Language: C) Program compiled without 'register' attribute Execution starts, 1000000 runs through Dhrystone Execution ends ... Microseconds for one run through Dhrystone: 2.5 Dhrystones per Second: 403225.8
-O3
オプションの場合、Dhrystoneスコアは371,747〜403,225です。
DMIPSとDMIPS/MHzは、それぞれ211〜229と2.11〜2.29になります。
NaxRiscvのシミュレータのDMIPS/MHzは2.60なので、少し差があります。
なお、buildrootのデフォルト構成の-O2
オプションの場合、Dhrystoneスコアは198,807〜202,429です。
まとめ
Luffcaでは、LiteX-NaxRiscvを用いてDigilent社のFPGAボード用にNaxRiscvのSoCのゲートウェアを作成し、32-bit Linuxを実行することに成功しました。