Developed by a non-profit, Embedded Microprocessor Benchmark Consortium(EEMBC) in 1997 is currently one of the most popular benchmarking software available to characterize and compare the processing capabilities of your embedded microcontrollers. It’s a piece of code that runs on practically any processor/controller out there and does a bunch of tests and reports the result in a standard format. The code conducts a bunch of integer arithmetic calculations, matrix manipulations, linked lists and state machine operations. So it does a few of the performance benchmarks which are used in real life (but it’s still synthetic testing though). CoreMark when it was released, was an alternative to another standard known as Dhrystone that was created back in the 1980s. The issue with Dhrystone was that you can always tweak certain settings to get a higher rating based on compiler optimisations.
CoreMark prevents compiler hacks and smart programming tricks to drive up the ratings. The tests and code are available for free on GitHub if you want to run them on any controller of your choice.
Why does this matter for an embedded developer? When you are searching for a new microcontroller for a project you can always look at the CoreMark numbers and make an informed decision(Usually the higher the better). Most good chip manufacturers give the CoreMark ratings on their products but each might give it in a slightly different manner. There are 3 key numbers you need to keep in mind for that. A single CoreMark number shows the overall performance of the chip. Then there is CoreMark/MHz which normalises the core performance based on the clock speed. A chip having a lower CoreMark/MHz can have an overall better compute capability if it’s run at a higher clock speed. The third is CoreMark/mA which gives you a flavour of energy efficiency/power consumption of your processor. So keep all of these in mind when comparing microcontrollers.
CoreMark scores submitted by users all around can be found at https://www.eembc.org/coremark/scores.php.