CoreMark-PRO is a comprehensive, advanced processor benchmark that works with and enhances the market-proven industry-standard EEMBC CoreMark® benchmark. While CoreMark stresses the CPU pipeline, CoreMark-Pro tests the entire processor, adding comprehensive support for multicore technology, a combination of integer and floating-point workloads, and data sets for utilizing larger memory subsystems. Together, EEMBC CoreMark and CoreMark-PRO provide a standard benchmark covering the spectrum from low-end microcontrollers to high-performance computing processors.
More details about the workloads can be found in the CoreMark-PRO GitHub repository.
An application note explaining how to port CoreMark-PRO to bare-metal (no operating system) can be found here.
We've also created a tutorial video on YouTube with examples for Linux and an STM32 device. Please view in HD (720p or 1080p) since the video contains a lot of small text.
The EEMBC CoreMark-PRO benchmark contains five prevalent integer workloads and four popular floating-point workloads. The integer workloads include JPEG compression, ZIP compression, an XML parser, the SHA-256 Secure Hash Algorithm, and a more memory-intensive version of the original CoreMark. The floating-point workloads include a fast Fourier transform (FFT), a linear algebra routine derived from LINPACK, a greatly improved version of the Livermore loops benchmark, and a neural net algorithm to evaluate patterns.
Together, the workloads in CoreMark-Pro represent a wide diversity of performance characteristics, memory utilization, and instruction-level parallelism. This benchmark is guaranteed to highlight the strengths — and weaknesses — of any processor.
|Designed to run on devices from 8-bit microcontrollers to 64-bit microprocessors||Targets 32-bit to 64-bit microprocessors|
|Free version only||Commercial licensing available|
|Open score submission to EEMBC website||Open score submission to EEMBC website|
|One integer workload with 4 functions||5 integer and 4 floating-point workloads|
|Small (2k code, 16k data)||Robust (42k code, 3MB data per context)|
|Targets processor core||Targets processor and memory subsystems|
|Limited multicore support||Expanded multicore support|
More information, including a User Guide, can be found in the source code repository from the download area. Individual datasheets are located in the