People often ask about the applicability of CoreMark for 8-, 16-, and 32-bit processors. They wonder if it provides a realistic measure of performance for an 8-bit micro when it does calculations based on 32-bit data (and vice versa). CoreMark will work on any architecture, though 8b handling is most efficient on 8b processors, 16b data types are handled optimally on 16b processors, and similarly 32b processors are the best at handling 32b data.
Realistically though, all of those data types are commonly used in most C code. The compiler is in charge of making the best use of the processor resources, and making sure the end result is correct.
CoreMark intrinsically usesĀ several integer data types:
8b – used as data for the state machine (mostly in compares).
16b – used as data and status info during the list processing (read/write and bit manipulation) as well as input data for the matrix operations (computations), and for crc.
32b – used as result data type for matrix multiply operations.
This introduces a mix of the common programming data types and covers core integer functionality in the processor.