Tuesday, June 2, 2009

Rise of a Dhrystone terminator?


The Dhrystone benchmark is a single number benchmark score that was originally developed by Reinhold Weicker in 1984. After 25 years, it is still reported as a measure of a processor’s integer (no floating-point) performance. The types of functions in the benchmark code are simple integer arithmetic, string operations, logic decisions, and memory accesses. The processor hardware, memory architecture, wait states, integer data types, as well as the software design, compiler and linker optimizing options affect the benchmark score.

The Dhrystone benchmark is small, free, and easily ported to new processor designs; however, it is not without shortcomings. It is a synthetic benchmark in that the functions included in the code are based on exercising what the core is capable of performing rather than based on the representative types and frequencies of these functions for a specific class of application. The benchmark is susceptible to compiler optimizations that can make it difficult to compare test results when compiler options or flags are not disclosed as part of the benchmark score. The benchmark code includes significant amount of library calls which also affect how to compare different test results when different libraries, which are not part of the benchmark, are used.

EEMBC has released a new core-level benchmark, CoreMark, as a replacement for the Dhrystone benchmark. Like the Dhrystone benchmark, CoreMark distills core-level performance of a processor to a single number that represents how many iterations of the benchmark code the processor can perform per second. CoreMark focuses on exercising a processor’s basic pipeline structure, basic read/write operations, integer operations, and control operations. The CoreMark workload consists of matrix manipulation that can exercise serial and parallel MAC and math operations, linked-list manipulation to exercise the use of pointers, state machine operation to exercise data dependent branches in the pipeline, and a CRC (Cyclic Redundancy Check) function. CoreMark does not use any library calls from within the timed portion of the benchmark, and it invokes a set of execution and reporting guidelines to avoid ambiguities when comparing benchmark scores for different processors.

CoreMark is intended to provide a starting point for analyzing a processor’s performance. A full measure of a processor’s performance should include the other system level components within a specific runtime context. The CoreMark benchmark code is free, and EEMBC offers application benchmarks, licensable for a fee, for when you need to expand your consideration to include the system level performance in a specific runtime context.

ADVERTISEMENT
 



<< Back | Print
© Reed Business Information, a division of Reed Elsevier Inc. All rights reserved.