An EEMBC Benchmark


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?

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.

Copyright © EEMBC