Benchmarking RISCV SBCs with SPEC 2017 (Single/Multi Core)
Benchmarking RISCV SBCs with SPEC 2017 (Single/Multi Core)
By Akif Ejaz|
In this article, we’ll be benchmarking some of the available RISC‑V single-board computers (SBCs) using SPEC 2017. We'll be diving into both single-core and multi-core CPU performance to see how these boards handle real-world compute workloads.
We’ll also walk through the complete setup process for running SPEC 2017 on RISC‑V hardware — so you can easily replicate the benchmarks on your own system.
1. System & Environment Details
All system, hardware and environment specifications used in this benchmark — including vendor, board name, OS, compiler version, SoC, CPU, cores, RAM, and RISC‑V extensions — are listed in the table below.
Vendor
Board Name
OS
Compiler (GCC)
SOC
CPU
Cores
RAM GB
RISCV Extensions
StarFive
VisionFive V1
Ubuntu 24.04.1 LTS
gcc/g++ 13.2.0
JH7100
U74 @ 1.2GHz + E24
2+1
8
RV64GC
StarFive
VisionFive 2
Ubuntu 24.04.1 LTS
gcc/g++ 13.2.0
JH7110
U74 @ 1.5GHz
4
8
RV64GC
Milk-V
Milk-V Jupiter
Bianbu 2.2
gcc/g++ 13.2.0
SpacemiT K1/M1
X60 @ 1.6GHz
8
16
RV64GCVB, RVA22, RVV1.0
Milk-V
Milkv Pioneer Box
Debian GNU/Linux 13
gcc/g++ 14.2.0
SG2042
C920 @ 2.0GHz
64
128
RVV 0.7.1
Banana Pi
Banana Pi BPI-F3
Bianbu 2.2
gcc/g++ 13.2.0
SpacemiT K1
X60 @ 2.0GHz
8
16
RV64GCVB, RVA22, RVV1.0
2. Setup and Installation
SPEC CPU 2017 is a licensed benchmark suite, so you must obtain it from SPEC’s website. In this article, I'll go with "cpu2017-1.1.9.iso" version. Once get the .iso file follow these below steps:
export ISO_FILE="cpu2017-1.1.9.iso" export MOUNT_DIR="$PWD/spec-mount" mkdir $MOUNT_DIR && sudo mount "$ISO_FILE" "$MOUNT_DIR" cd "$MOUNT_DIR" && ./install.sh
This will prompt you to confirm the path of installation, provide the absolution path where you want to install spec. In my case I installed it in "INSTALL_DIR="$PWD/spec-17"
To confirm the installation you can run these below commands:
cd $INSTALL_DIR && ./bin/runcpu -h
This should list all the available options for SPEC.
3. Running CPU benchmark
There are mainly 4 major benchmark types that SPEC provides as mentioned in 1.3 Benchmarks and Suites.
SPECrate suites run multiple concurrent copies of each benchmark.
The tester selects how many.
Higher scores indicate more throughput (work per unit of time).
The "Short Tag" is the canonical abbreviation for use with runcpu, where context is defined by the tools. In a published document, context may not be clear.
To avoid ambiguity in published documents, the Suite Name or the Metrics should be spelled as shown above.
In this article we'll be going forward for only 'intrate' other benchmarks seem to have some problem running on RISCV as of today.
In order to run benchmark, follow these commands below.
Note: Download the "gcc-linux-riscv.cfg" from here. To also run "fprate, intspeed, fpspeed" add these at the end of above command.
In this .cfg file search for 'EDIT' and it should point you, which variables/setting you need to change, mainly we should change the label, num cores, gcc and g++ path and version etc. For more details see all options here.
4. Auto-Setup CoreMark Script for RISCV
You can use this below script which automates setup and running the SPEC 2017 benchmark.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
To cut the effort I've used the above script and that should give you following results.
5.1 Single Core
In order to run for single core make sure to update the `--copies=1 and --thread=1` in command mentioned in section 3. In this article we'll be only looking for multicore results. If you are running for single core or face any issue running SPEC for single core feel free to reach out to us at : cloud-v@10xengineers.io
5.2 Multi Core
Multi Core results for SPEC 2017 are attached below:
6. Overall Results and Conclusion
By running each test multiple times and averaging the results, we cut out random noise and get fair, consistent numbers. Looking at those numbers, the Milk-V Pioneer Box clearly leads the pack. The major reason being its multicore support having 64 Cores.