Embench-IoT Results on GaZmusino

The performance of a microcontroller or RISC-V core can be measured in many ways, but Embench-IoT has become a reference benchmark for embedded systems and IoT applications. In this post, we compare the performance of our core GaZmusino, evaluated via simulation with Verilator, against the results reported by Antmicro on their Embench-Tester platform.
Quick summary: GaZmusino is competitive in most benchmarks, but operations requiring heavy division show delays due to the lack of a hardware divider.
🔧 Methodology
The comparison was based on the following approaches:
- GaZmusino: simulations performed using Verilator to obtain execution times for each benchmark.
- Antmicro: public results available on the Embench Tester platform, reporting the performance of various open-source cores.
- Compiler and flags: riscv64-unknown-elf-gcc 14.2.0 with -O2 optimization. Different versions may slightly affect execution times.
📊 Results
The table below is scrollable both horizontally and vertically, to allow viewing all benchmarks and cores.
Benchmark | GaZmusino | cv32e40p | CVA5 | VexRISCV | serv | picorv32 | Ibex | Rocket | microwatt |
---|---|---|---|---|---|---|---|---|---|
cubic | 10 | 24 | 46 | 239 | 2 | 8 | 15 | 23 | 26 |
nbody | 14 | 45 | 90 | 1597 | 2 | 14 | 39 | 52 | 108 |
st | 18 | 43 | 86 | 907 | 2 | 11 | 21 | 45 | 62 |
minver | 24 | 38 | 82 | 334 | 2 | 13 | 27 | 62 | 77 |
nsichneu | 57 | 39 | 67 | 111 | 6 | 12 | 31 | 57 | 55 |
wikisort | 65 | 65 | 166 | 242 | 14 | 23 | 33 | 85 | 98 |
crc32 | 77 | 41 | 92 | 92 | 25 | 15 | 40 | 72 | 68 |
nettle-aes | 77 | 38 | 90 | 71 | 27 | 17 | 29 | 47 | 93 |
ud | 77 | 36 | 79 | 73 | 11 | 15 | 27 | 59 | 65 |
aha-mont64 | 75 | 46 | 82 | 131 | 7 | 14 | 31 | 74 | 71 |
nettle-sha256 | 82 | 40 | 93 | 62 | 39 | 5 | 33 | 60 | 41 |
picojpeg | 86 | 37 | 94 | 94 | 15 | 17 | 25 | 61 | 77 |
edn | 89 | 42 | 90 | 90 | 2 | 10 | 24 | 77 | 52 |
matmult-int | 90 | 39 | 90 | 91 | 3 | 13 | 21 | 62 | 44 |
primecount | 112 | 60 | 93 | 127 | 9 | 18 | 36 | 81 | 85 |
sglib-combined | 121 | 45 | 101 | 98 | 19 | 21 | 33 | 74 | 63 |
qrduino | 123 | 54 | 115 | 113 | 21 | 22 | 35 | 79 | 80 |
slre | 125 | 55 | 131 | 139 | 23 | 25 | 39 | 82 | 87 |
huffbench | 126 | 46 | 115 | 119 | 44 | 28 | 35 | 96 | 76 |
md5sum | 159 | 64 | 153 | 137 | 56 | 32 | 65 | 115 | 115 |
tarfind | 228 | 38 | 143 | 77 | 16 | 20 | 33 | 88 | 70 |
statemate | 298 | 52 | 181 | 203 | 19 | 24 | 40 | 101 | 95 |
Benchmarks ordered by GaZmusino performance
📝 Conclusions
-
Strengths of GaZmusino
- Very competitive in
md5sum
,qrduino
,slre
,huffbench
,tarfind
, andstatemate
. - Consistently outperforms lightweight cores such as serv, picorv32, and Ibex.
- Very competitive in
-
Detected limitations
- Low performance in
cubic
,nbody
,st
, andminver
. - Main reason: absence of a hardware divider, divisions are handled in software, increasing latency.
- Low performance in
-
Overall comparison
- Medium-high performance level, approaching more complex cores such as VexRISCV and CVA5.
- Solid in integer, memory, and logic workloads; weak in division-heavy tasks.