The most obvious characteristic we had to update was the test's instruction mix, the distribution of processor instructions it uses. Different instruction types can take significantly different numbers of clock ticks to execute, and some processors are more efficient at certain types of instructions than others, so it's vital that the mix of instructions in the test closely matches the mix of instructions in the applications. For example, when we examined the processor usage of the mainstream business applications in the Winstone test, we found that they do not use any floating point or MMX instructions. Consequently, CPUmark99 doesn't include those types of instructions either. We also considered the percentage of L2 cache misses.
Applications are much larger and make more use of memory than they did a couple of years ago.
At the same time, processor subsystems have started using much larger L2 caches. The new CPUmark 99 has a much larger memory footprint, and its cache characteristics are much more representative of modern applications. We also took a hard look at the test's code structure, particularly the way the benchmark interacted with the branch-prediction algorithms of different processors. Processors can differ significantly in the way they handle branch prediction, and it's important to be sure that no artifact of the benchmark test gives unfair advantage to one processor over another. The result of months of development effort, CPUmark 99 reflects the performance characteristics of modern applications running on modern processors more closely that the older CPUmark 32 .