AMD's Athlon XP: Great performance, poor marketingby Anand Lal Shimpi on October 9, 2001 7:00 AM EST
- Posted in
SYSMark 2001: The Benchmarking Controversy
Before we get to the actual performance tests there is a point we must address regarding a benchmark we have used heavily since its introduction: SYSMark 2001. It's actually quite funny about how much controversy surrounds SYSMark 2001 as many people will claim that it is unfairly biased towards Intel processors and thus should not be used to measure performance of AMD CPUs. It's funny because if you ask AMD what they think about the benchmark, they will tell you quite the opposite. In the same meeting we had with AMD over the summer the topic of SYSMark 2001 being used as a valid benchmark came up, and other than one issue they had with Windows Media Encoder, AMD had no problems with the benchmark and actually felt it was a good measurement of performance. In fact, AMD even went as far as to tell us that they would probably join BAPCo but not at this point; joining BAPCo (the makers of SYSMark 2001) requires a constant resource commitment which AMD isn't ready to make just yet.
With that said, it turns out that there is a problem with the way SYSMark 2001 reports performance. In the past we always assumed that because a large portion of the Internet Content Creation (ICC) score was derived from Windows Media Encoder performance, the Pentium 4 did very well in that suite courtesy of its incredible FSB & memory bandwidth. However as we discovered in our P4X266 Review, Windows Media Encoder isn't nearly as bandwidth dependent as we originally thought. Then why did the Pentium 4 do so well in ICC SYSMark 2001 while the Athlon clearly lagged behind?
It couldn't have been SSE2 optimizations since there are no SSE2 optimizations in the applications that SYSMark 2001 uses; and it couldn't have been SSE optimizations because otherwise the Athlon MP (which has SSE support) should have done much better in the benchmark.
The conclusion that the Pentium 4 is simply a faster content creation processor than the Athlon would be valid if it wasn't for one problem: what if SSE wasn't properly being used on the Palomino based CPUs?
Normally how you're supposed to detect whether or not a processor supports SSE is by looking at the SSE bit in the standard features register. If the SSE bit is set to true, then the processor you're dealing with supports SSE; if it's set to false, then your processor doesn't support SSE. The Athlon has this bit set to false since it doesn't have a full SSE implementation, however the Mobile Athlon 4, Athlon MP and the Athlon XP all have this bit set to true. The problem with SYSMark isn't really a problem with SYSMark, it's a problem with Windows Media Encoder 7. Windows Media Encoder 7 doesn't look at this bit to determine whether to use SSE or not, instead it reads the manufacturer code in the CPUID string of the processor. If the manufacturer code reads 'GenuineIntel', as all Intel processors report, and the SSE bit is enabled then WME7 uses SSE. This wasn't a problem until recently since AMD processors didn't have SSE support, but now with the Palomino core they do have SSE support but according to the WME7 SSE detection algorithm they will never run WME7 with SSE enabled. The reason behind this being that the manufacturer string outputted by all AMD processor is 'AuthenticAMD' which doesn't pass WME7's test for SSE compliance. Microsoft is aware of the problem and will fix it in the next version of Windows Media Player, but that doesn't change the issue with SYSMark since it relies heavily on WME7 for determining performance.
So how do you make WME7 detect the Athlon XP as a SSE enabled processor? The solution is actually quite simple; If you run a profile on Windows Media Encoder during an encoding task you'll quickly come to realize that most of the work is being done in a library located in the \Windows\System32\ directory called 'wmvdmoe.dll'. This is the encoding library used by WME hence a great portion of the encoding process is spent dealing with this file. By modifying this file you can set what manufacturer string to look for in order to enable SSE. In order to accomplish the goal of enabling SSE on the Athlon XP you'd want to look for 'AuthenticAMD' instead of 'GenuineIntel'. Those that have experience with editing dlls will find that this workaround is quite easy to implement; for everyone else, AMD has released a patch that will do this for you and even make a backup copy of the old wmvdmoe.dll file for you to compare to.