CoreMark is a benchmark program developed by Shay Gal-On and released as an industry standard by EEMBC in 2009. CoreMark’s primary goals are simplicity and providing a method for testing only a processor’s core features.

Goals

edit

1. Freely available C source code.

  • Enable easy adoption.

2. Small (no more then 2K data size and no more then 16K code size).

  • Enable use on any processor, including 8b microcontrollers.

3. Easily Portable C code (big/small endian, 8b/16b/32b/64b processors).

  • Portability is a key issue for embedded devices.

4. Self checking.

  • Help porting to new devices.

5. Use real algorithms.

  • While the benchmark is synthetic like any benchmark, using real algorithms helps make it more relevant.

6. Every operation must derive from a value that is not available at compile time, and result in a value that must be computed.

  • Compilers are getting smarter, but the target of the benchmark is to test the processor. Since writing portable code in assembly is not feasible, CoreMark aims to at least make sure compilers cannot remove parts of the benchmark by pre-computing the results at compile time, or avoiding computation due to results not being used.

7. All code used within the timed portion of the benchmark is part of the benchmark itself (no library calls).

  • To make sure results are comparable.

8. Establish specific run and reporting rules, and verify those in the code where possible.

Internal Structure

edit

Each iteration of CoreMark performs the following algorithms:


  • List processing (find and sort)
  • Matrix manipulation (common matrix operations)
  • State machine (determine if an input stream contains valid numbers)
  • CRC (used in multiple stages to keep a unique value alive and force computation to happen during run time)

CoreMark vs. Dhrystone

edit

CoreMark draws on the strengths that made Dhrystone so resilient - it is small, portable, easy to understand and free. Unlike Dhrystone, CoreMark has specific run and reporting rules, and was designed to avoid the well understood issues that have been cited with Dhrystone.

Results

edit

CoreMark results can be found on the CoreMark web site, and on processor data sheets. Results are in the following format:

CoreMark 1.0 : N / C [/ P] [/ M]

  • N Number of iterations per second with seeds 0,0,0x66,size=2000)
  • C Compiler version and flags
  • P Parameters such as data and code allocation specifics
  • M - Type of parallel execution (if used) and number of contexts

    For example: CoreMark 1.0 : 128 / GCC 4.1.2 -O2 -fprofile-use / Heap in TCRAM / FORK:2
    edit

    Category:Embedded systems Category:Computer benchmarks