I. Introduction
Benchmarking is one of the critical stages of the continuous development cycle of compilers and system microarchitectures. A set of representative applications (collectively referred to as ‘benchmark suite’) is executed on the computer system to either identify potential optimization opportunities in the system software or hardware, or to qualitatively determine the benefits of the optimizations performed. There are several benchmark suites available that focus on different application domains. For example, the EEMBC [1] and MiBench [2] benchmark suites focus on embedded system applications in different domains like automation, communication, and office software. The SPLASH [3] and PARSEC [4] benchmark suites, comprise of multi-threaded workloads and evaluate a processor's multi-threading capabilities.