Resultados del Embench-IoT en GaZmusino

El rendimiento de un microcontrolador o core RISC-V se puede medir de muchas maneras, pero Embench-IoT se ha consolidado como un benchmark de referencia para sistemas embebidos y aplicaciones de IoT. En este post compararemos el desempeño de nuestro core GaZmusino, evaluado mediante simulación con Verilator, frente a los resultados reportados por Antmicro en su plataforma Embench-Tester.

Resumen rápido: GaZmusino es competitivo en la mayoría de benchmarks, pero las operaciones que requieren divisiones pesadas muestran retrasos debido a la ausencia de divisor hardware.


🔧 Metodología

La comparación se basó en los siguientes enfoques:

  • GaZmusino: simulaciones realizadas utilizando Verilator para obtener los tiempos de ejecución de cada benchmark.
  • Antmicro: resultados públicos disponibles en la plataforma Embench Tester, que reporta el rendimiento de varios cores open-source.
  • Compilador y flags: se utilizó riscv64-unknown-elf-gcc 14.2.0 con optimización -O2. Versiones diferentes pueden alterar ligeramente los tiempos de ejecución.

📊 Resultados

La siguiente tabla es scrollable tanto horizontal como vertical, para poder visualizar todos los benchmarks y cores.

Benchmark GaZmusino cv32e40p CVA5 VexRISCV serv picorv32 Ibex Rocket microwatt
cubic10244623928152326
nbody14459015972143952108
st184386907211214562
minver243882334213276277
nsichneu573967111612315755
wikisort65651662421423338598
crc32774192922515407268
nettle-aes773890712717294793
ud773679731115275965
aha-mont64754682131714317471
nettle-sha25682409362395336041
picojpeg863794941517256177
edn89429090210247752
matmult-int90399091313216244
primecount1126093127918368185
sglib-combined12145101981921337463
qrduino123541151132122357980
slre125551311392325398287
huffbench126461151194428359676
md5sum15964153137563265115115
tarfind22838143771620338870
statemate2985218120319244010195

Benchmarks ordenados por rendimiento en GaZmusino


📝 Conclusiones

  1. Fortalezas de GaZmusino

    • Muy competitivo en md5sum, qrduino, slre, huffbench, tarfind y statemate.
    • Supera consistentemente a cores ligeros como serv, picorv32 e Ibex.
  2. Limitaciones detectadas

    • Rendimiento bajo en cubic, nbody, st y minver.
    • Causa principal: ausencia de divisor hardware, las divisiones se resuelven en software aumentando latencia.
  3. Comparativa global

    • Nivel medio-alto de rendimiento, acercándose a cores complejos como VexRISCV y CVA5.
    • Sólido en enteros, memoria y lógica; débil en divisiones.