Benchmarks in LiteX/VexRiscv on an Arty A7-35T

benchmark-linux-litex-vexriscv

Linux on LiteX-VexRiscvのGatewareとSoftwareの組み合わせに対して、ベンチマークのWhetstoneとDhrystoneを実施しました。
上記リポジトリにおけるGatewareのデフォルトのISAは、FPU無しのrv32ima、Software(Buildroot)のデフォルトのISAとABIは、それぞれrv32imailp32に設定されています。
GatewareのISAは、オプションを追加することによりFPU有りのrv32imafd(c)に変更することができます。
同様に、BuildrootのISAとABIも、それぞれrv32imafd(c)ilp32dに変更できます。

まとめ

上のアイキャッチ画像と下の表が、ベンチマークの結果を表しています。

Gateware default
(rv32ima)
with FPU
(rv32imafd)
Software
(Buildroot)
ISA rv32ima rv32imafd
ABI ilp32 ilp32d
Whetstone (MWIPS) 2.3 2.3 38.5 42.7
Dhrystone (DMIPS) 48.4 46.1 37.8 38.0

下記は、GatewareとSoftwareの組み合わせに対する2つのベンチマークの出力を示しています。

Benchmark (Gateware: default, Software: rv32ima – ilp32)

Whetstone

root@buildroot:~# whetstone 10000

Loops: 10000, Iterations: 1, Duration: 438 sec.
C Converted Double Precision Whetstones: 2.3 MIPS

Dhrystone

root@buildroot:~# dhrystone 1000000

Dhrystone Benchmark, Version 2.1 (Language: C)

Program compiled without 'register' attribute

Execution starts, 1000000 runs through Dhrystone
...

Microseconds for one run through Dhrystone: 11.8
Dhrystones per Second: 84961.8

Benchmark (Gateware: with FPU, Software: rv32imafd – ilp32d)

Whetstone

root@buildroot:~# whetstone 100000

Loops: 100000, Iterations: 1, Duration: 234 sec.
C Converted Double Precision Whetstones: 42.7 MIPS

Dhrystone

root@buildroot:~# dhrystone 1000000

Dhrystone Benchmark, Version 2.1 (Language: C)

Program compiled without 'register' attribute

Execution starts, 1000000 runs through Dhrystone
...

Microseconds for one run through Dhrystone: 15.0
Dhrystones per Second: 66711.1