CPU Benchmark Test
The CPU benchmark test is designed to test the performance of the processor during the most typical usage scenarios. To compute the final CPU score, we perform several benchmark tests and average out the results.
Scenarios tested: single-threaded, multi-threaded.
Results are measured in MIPS (millions of instructions per second).
Note: When we say “instructions” we really mean logical operations – high-level instructions used in software (e.g. add, divide, multiply). We are not referring to low-level CPU instructions (which vary from one CPU to another).
Instructions per Clock
An interesting measure of efficiency is instructions per clock (IPC).
This measure identifies how many instructions a CPU can execute for each Hz of frequency. For example, a Pentium 4 processor might execute 1.5 instructions per clock, meaning that at 2.6 GHz (2600 MHz), its benchmark score would be 3900 MIPS. On the other hand, a 2.6 GHz Core 2 processor would score somewhere around 13,000 MIPS, meaning it can execute 5 instructions per clock (3.3 times more than the Pentium 4).
To calculate IPC, the formula is simply IPC = MIPS / MHz.
Integer vs. Floating Point
From our analysis of typical software, we have determined that floating-point operations are used far more than integer operations during computations of long duration. Therefore, our primary CPU benchmark consists of a series of floating-point operations loosely based on the Whetstone benchmark.
We do perform some integer operations in the CPU benchmark, but there is more weight placed on floating-point operations. Also, our CPU benchmark tests both 32-bit and 64-bit integers and floats. Most modern software uses 64-bit floats & ints, so more weight is placed on those. The results are measured in millions of instructions per second.
Sequential vs. Parallel
CPUs nowadays are capable of executing instructions in parallel. That is, by using multiple cores, software can execute one set of instructions on one core of the CPU while simultaneously executing instructions on another core. This is known as multi-threading or parallel processing. It allows software to run twice as fast on two cores, or N times as fast on N cores. While this capability has existed for several years now, it is still rarely implemented in most applications. Therefore, although we test both sequential and parallel performance, we assign more weight to sequential performance than to parallel performance. This will likely change in future versions of Dacris Benchmarks.
Our sequential & parallel CPU benchmark tests are dead simple. They both consist of the same set of instructions. The only difference is that the sequential test executes in one thread while the parallel one executes in multiple threads (as many as there are CPUs).
Importance of L1/L2 Cache
When software deals with data, typically the data is processed in small chunks. In order for the CPU to access these chunks faster, it stores them in its own internal cache memory. From our analysis of software, nearly all software that executes processing tasks of long duration will use some amount of cache. Compression or encoding applications will tend to use more cache, while decoding applications will use less.
We do not directly measure the speed of the cache in the CPU test, because we are only measuring the raw instruction throughput of the CPU. However, in the memory test, we do measure L1/L2 cache speed.