What is CoreMark?
CoreMark is a simple, yet sophisticated, benchmark that tests the functionality of a microctronoller (MCU) or central processing unit (CPU). CoreMark is not system dependent, so it functions the same regardless of the platform (e.g. big or little endian, high-end or low-end processor).
How is Coremark used?
Running CoreMark on an MCU or CPU produces a single-number score that allows users to make quick comparisons between processors.
Why would I want to run a benchmark that doesn’t really reflect how I would use a CPU in a real application?
Sometimes it’s important to isolate the CPU’s core from the other elements of the processor and focus on one key element. For example, you might want to have the ability to ignore memory and I/O effects and focus primarily on the pipeline operation. This is CoreMark’s domain. CoreMark is capable of testing a processor’s basic pipeline structure, as well as the ability to test basic read/write operations, integer operations, and control operations.
What are the basic features and characteristics of CoreMark?
- Written in small and easy-to-understand ANSI C code
- Provides a realistic mixture of read/write operations, integer operations, and control operations
- Total binary size of no more than 16K using gcc on an x86 machine (making it more convenient to run using simulation tools)
- Comprised of several commonly used algorithms
What functionality of an MCU or CPU does CoreMark actually test?
Pipeline operation, memory (or cache if any) access, and handling of integer operations.
How does CoreMark's small size help me test a platform’s memory subsystem?
The small size of CoreMark allows it to easily fit in a processor’s cache, which means it’s suitable for testing on a very wide range of processors, from low-end to high-end devices.
Does CoreMark work for analyzing multicore performance?
Yes. You can run multiple instantiations of CoreMark (a rate-type benchmark) and the source code includes a flag that will allow you to compile in code that supports a ‘create and destroy’ context functionality (where a context can be either threads or processes with shared memory or with sockets).
How long does it take to set up and run CoreMark?
CoreMark is easily portable to a wide range of microcontrollers and microprocessors. Therefore, if you have support for the basic functionality (i.e. clock(), GetSystemTimeAsFileTime(), lock_gettime()), it could take as little as 5 minutes. Otherwise, you need to specify how timing is to be accomplished in the porting layer. CoreMark includes full documentation to support your porting efforts and comprehend the run guidelines.
How does EEMBC publish scores for CoreMark?
All scores are located on the score page.
All registered CoreMark users are encouraged to enter their scores and platform configurations on this website. Visit this link to register and submit a score.
What if I want to measure processor performance in a specific application like automotive?
EMBC recommends that you utilize its application-oriented benchmark suites to thoroughly comprehend the capability of an embedded processor and associated compiler.