Content area
Full text
CPU benchmark maximizes simplicity and efficacy.
Many attempts have been made to provide a single number that can totally quantify the ability of a CPU. Be it MHz, MOPS, MFLOPS--all are simple to derive but misleading when looking at actual performance potential. Dhrystone was the first attempt to tie a performance indicator, namely DMIPS, to execution of real code--a good attempt that has long served the industry but is no longer meaningful. BogoMIPS attempts to measure how fast a CPU can do nothing, for what that's worth.
The need still exists for a simple and standardized benchmark that provides meaningful information about the CPU core. Introducing CoreMark, available for free download from www.coremark.org. CoreMark ties a performance indicator to execution of simple code, but rather than being entirely arbitrary and synthetic, the code for the benchmark uses basic data structures and algorithms that are common in practically any application. Furthermore, in developing this benchmark, the Embedded Microprocessor Benchmark Consortium (EEMBC) carefully chose the CoreMark implementation such that all computations are driven by run-time-provided values to prevent code elimination during compile-time optimization. CoreMark also sets specific rules about how to run the code and report results, thereby eliminating inconsistencies.
Coremark Composition
To appreciate the value of CoreMark, it's worthwhile to dissect its composition, which in general consists of lists, strings, and arrays (matrices to be exact). Lists commonly exercise pointers and are also characterized by non-serial memory-access patterns. In terms of testing the core of a CPU, list processing predominantly tests how fast data can be used to scan through the list. For lists larger than the CPU's available cache, list processing can also test the efficiency of cache and memory hierarchy.
List processing consists of reversing, searching, or sorting the list according to different parameters, based on the contents of the list's data items. In particular, each list item can either contain a precomputed value or a directive to invoke a specific algorit hm with specific data to provide a value during sorting. To verify correct operation, CoreMark performs a 16-bit cyclic redundancy check (CRC) based on the data contained in elements of the list. Since CRC is also a commonly used function in embedded applications, this calculation is included in the timed portion...