User:Shay.gal-on/coremark

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
1. Freely available C source code. 2. Small (no more then 2K data size and no more then 16K code size). 3. Easily Portable C code (big/small endian, 8b/16b/32b/64b processors). 4. Self checking. 5. Use real algorithms. 6. Every operation must derive from a value that is not available at compile time, and result in a value that must be computed. 7. All code used within the timed portion of the benchmark is part of the benchmark itself (no library calls). 8. Establish specific run and reporting rules, and verify those in the code where possible.
 * Enable easy adoption.
 * Enable use on any processor, including 8b microcontrollers.
 * Portability is a key issue for embedded devices.
 * Help porting to new devices.
 * While the benchmark is synthetic like any benchmark, using real algorithms helps make it more relevant.
 * 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.
 * To make sure results are comparable.

Internal Structure
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
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
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