Hello Forum,
today I run "coremark" benchmark for soft-cpu "NEORV32" (CPU based on RISC-V ISA) - see project link:
https://github.com/stnolting/neorv32I loaded binary program with "coremark" benchmark for soft-cpu NEORV32 using built-in bootloader. The size of compiled (exe) program with "coremark" was 20 KB. FPGA project had been loaded to Spartan7 (QMTECH FPGA board). FPGA device is XC7S15-1FTGB196C and project clock is 50 MHz.
Because the binary program size I have to increase processor-internal instruction memory (using FPGA BRAM) to 20 KB - see code:
entity neorv32_test_setup_bootloader is
generic (
-- adapt these for your setup --
CLOCK_FREQUENCY : natural := 50000000; -- clock frequency of clk_i in Hz
MEM_INT_IMEM_SIZE : natural := 20*1024; -- size of processor-internal instruction memory in bytes
MEM_INT_DMEM_SIZE : natural := 6*1024 -- size of processor-internal data memory in bytes
);
I loaded binary to soft-cpu and run (in memory) coremark. Thew "coremark" sources were in examples of soft-core project:
https://github.com/stnolting/neorv32/tree/main/sw/example/coremarkI had to wait some time for results (the coremark was calculated for 2000 iterations). On the screenshot below is result of "coremarK":
As one can see the score is 14 iteration per second. Because NEORV32 soft-core has clock 50 MHZ then we have (14/50): 0.28 iter/second /1MHz.This is weak result. For example ARM Cortex-M1 has "coremark" 1.85 iter/second/1MHz . Here below are results for many popular MCUs:
https://en.wikichip.org/wiki/coremark-mhz?utm_content=cmp-truehttps://www.st.com/content/st_com/en/arm-32-bit-microcontrollers/arm-cortex-m4.htmlHere is "coremark" project on GitHub:
https://github.com/eembc/coremark/tree/mainThe NEORV32 softcore had implemented instructions for integer multiply and divide, but hadn't FPU (floating point unit). I added the FPU to soft-core FPGA project, but ths fact do not change anything in "coremark" results.
I was wondering how is "coremark" result for Xilinx "Microblaze" soft-cpu and I found such results:
https://www.jblopen.com/microblaze-benchmarks-part-1-coremark-performance/As one can see the averaged "coremark" result is about 2.0 iter/sec/MHz - which also is weak result.
Is it possible to conclude from this that soft-cpu's implemenrted on FPGA generally has very weak performance. Few post below were one related to new "Microblaze" soft-core based on RISC-V ISA - I am wonderig what is "coremark" result for this new soft-core.
Maybe someone has differnet results of "coremark" benchmarks for several soft-cpu's ?
Best Regards