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

benchmark-linux-litex-vexriscv

We ran the Whetstone and Dhrystone benchmarks for the gateware and software combination of Linux on LiteX-VexRiscv.
The default ISA for gateware in the above repository is set to rv32ima without FPU, and the default ISA and ABI for software (Buildroot) are set to rv32ima and ilp32, respectively.
The gateware ISA can be changed to rv32imafd(c) with FPU by adding an option.
Similarly, the Buildroot ISA and ABI can be changed to rv32imafd(c) and ilp32d, respectively.

Summary

The featured image and the table below show the benchmark results.

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

Below are the outputs of the two benchmarks for the gateware and software combination.

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