diff --git a/README.md b/README.md index 60d0760f..7cdbbdb9 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ These are configurations on which lowRISC is focusing for performance evaluation | Config | "small" | "maxperf" | "maxperf-pmp-bmfull" | | ------ | ------- | --------- | ---------------- | | Features | RV32IMC, 3 cycle mult | RV32IMC, 1 cycle mult, Branch target ALU, Writeback stage | RV32IMCB, 1 cycle mult, Branch target ALU, Writeback stage, 16 PMP regions | -| Performance (CoreMark/MHz) | 2.44 | 3.09 | 3.09 | +| Performance (CoreMark/MHz) | 2.47 | 3.13 | 3.05 | | Area - Yosys (kGE) | 33.15 | 39.03 | 63.32 | | Area - Commercial (estimated kGE) | ~27 | ~31 | ~50 | | Verification status | Green | Amber | Amber | @@ -31,7 +31,9 @@ These are configurations on which lowRISC is focusing for performance evaluation Notes: * Performance numbers are based on CoreMark running on the Ibex Simple System [platform](examples/simple_system/README.md). - Note that CoreMark was compiled without support for the B extension. + Note that different ISAs (use of B and C extensions) give the best results for different configurations. + See the [Benchmarks README](examples/sw/benchmarks/README.md) for more information. + The "maxperf-pmp-bmfull" configuration sets a `SpecBranch` parameter in `ibex_core.sv`; this helps timing but has a small negative performance impact. * Yosys synthesis area numbers are based on the Ibex basic synthesis [flow](syn/README.md). * Commercial synthesis area numbers are a rough estimate of what might be achievable with a commercial synthesis flow and technology library. * Verification status is a rough guide to the overall maturity of a particular configuration. diff --git a/examples/sw/benchmarks/README.md b/examples/sw/benchmarks/README.md index 78c2a9ec..1ed303cc 100644 --- a/examples/sw/benchmarks/README.md +++ b/examples/sw/benchmarks/README.md @@ -62,6 +62,32 @@ seedcrc : 0xe9f5 Correct operation validated. See README.md for run and reporting rules. ``` +### Choice of ISA string + +Different ISAs (to choose different RISC-V ISA extensions) can be selected by +passing the desired ISA string into `RV_ISA` when invoking make. + +``` +make -C ./examples/sw/bencharmsk/coremark clean +make -C ./examples/sw/benchmarks/coremark RV_ISA=rv32imc +``` + +This will build CoreMark using the 'C' extension (compressed instructions). + +When changing `RV_ISA`, you must clean out any old build with `make clean` and +rebuild. + +The following ISA strings give the best performance for the Ibex configurations +listed in the README: + +| Config | Best ISA | +|----------------------|----------| +| "small" | rv32im | +| "maxperf" | rv32im | +| "maxperf-pmp-bmfull" | rv32imcb | + +### CoreMark score + A CoreMark score is given as the number of iterations executed per second. The CoreMark binary is hard-coded to execute 10 iterations (see `examples/sw/benchmarks/coremark/Makefile` if you wish to alter this). To obtain