CoreMark
CoreMark is EEMBC's compact, portable benchmark for embedded CPU cores, reporting iterations per second and CoreMark/MHz. It measures integer throughput but stays in cache, so it ignores memory and I/O.
CoreMark is a small, free benchmark from the Embedded Microprocessor Benchmark Consortium (EEMBC) created to replace the aging Dhrystone for comparing processor cores. It is deliberately simple, fits in a few kilobytes, and produces one easy-to-cite number, which made it the de facto standard for embedded and microcontroller comparisons. Silicon vendors print CoreMark figures on datasheets, and developers use it to rank candidate microcontrollers quickly before committing to a design.
What It Measures
CoreMark exercises common operations that resist compiler shortcuts: linked-list processing, matrix manipulation, state-machine handling, and CRC computation. The result is reported as CoreMark iterations per second, and frequently normalized as CoreMark/MHz to compare core efficiency independent of clock speed. Because the workload touches integer math, pointer chasing, and control flow, it approximates general-purpose integer throughput on small cores. The CRC step also doubles as a self-check, verifying that the computation ran correctly and was not optimized away.
Methodology
The benchmark runs a fixed algorithm for a set number of iterations and times the result. Run rules forbid precomputing answers at compile time, and seed values are derived at run time so the compiler cannot optimize the work away. Reported results must disclose the compiler, version, flags, target hardware, and memory configuration. For valid comparison, the same source must run unmodified except for the documented build configuration. Vendors publish results to EEMBC's database with full toolchain disclosure, and the run must last long enough to produce a statistically meaningful timing rather than a few microseconds dominated by timer noise.
How to Interpret Results
Use the raw CoreMark score to compare absolute throughput between chips. Use CoreMark/MHz to compare microarchitectural efficiency, which is the fairer measure when clock speeds differ. Higher is better. Always read the compiler and flags: aggressive optimization can shift scores by tens of percent, so a higher number on a better compiler is not necessarily a faster core. CoreMark is best for ranking embedded cores, sizing microcontrollers, and sanity-checking compiler upgrades, but two chips should only be compared when built with comparable toolchains.
Limitations
CoreMark is intentionally tiny, so it lives almost entirely in cache and says nothing about memory bandwidth, I/O, floating point, or large-working-set behavior. It does not predict application performance for media, networking, or DSP workloads. Its simplicity makes it easy to game with compiler tricks if run rules are ignored, and a high CoreMark/MHz does not guarantee good real-world responsiveness. Use it as a quick comparative integer metric, then supplement with workload-specific tests, a memory benchmark such as STREAM, and the EEMBC suites that target specific domains.