Jump to content
  • entries
    63
  • comments
    51
  • views
    20,361

Code Paths, or The Problem With Trying to be Innovative

Mira Yurizaki

703 views

Back in 2008, there was a controversy stirring up in the neighborhood with supreme underdog of the x86 world VIA was being reviewed. The one thing VIA did that AMD and Intel don't, was it left its CPUID open. The CPUID is an identifying string that tells programs what kind of processor it is and what features it has. The result was that when you changed VIA's CPUID from "CentuarHauls" (a carryover from when VIA bought Centaur Technologies) to "GenuineIntel" or "AuthenticAMD", its benchmark results in PC Mark 05 changed. The most noticeable one? Memory benchmarking. When VIA pretended to be an Intel CPU, its memory benchmark went up 47%.

 

So was this a result of Futuremark, the creators of PCMark 05, playing favorites with Intel? No, not really. Futuremark became a victim of what is known as code paths. A code path is when you execute a different set of instructions based on what hardware the application detects the computer has. The one common point between benchmarking an Intel, AMD, and VIA product is that their all x86 processors. So if they're all x86 processors, why would Futuremark execute a different set of instructions? At the time of PCMark 05's release (presumably 2005), Intel had processors with the SSE3 instruction set, AMD was still stuck on SSE2. VIA was still in the dumps back then. Maybe Intel also had other instructions specific to its architecture and platform that AMD lacked. Maybe Futuremark decided to squeeze out the most of hardware at the time, code paths should be used. But it ended up biting them in the rear.

 

So herein lies the problem. You want to be innovative in your hardware, you create fun features to make your product stand out from the others, who are technically compatible with your hardware. Developers have a choice: either take advantage of those features so your software also runs better or not. This brings me to another point.

 

Futuremark was recently accused, once again, of playing favorites. The problem? Their Time Spy benchmark. People noted that when asynchronous compute (stay tuned, I have a blog brewing about this...) was enabled, NVIDIA's GeForce 10 cards showed an increase in performance, if slight. People called Futuremark out on this because in supposedly every other test, the GeForce 10 cards either showed no improvement or worse improvement and suspected that NVIDIA was paying them out to make them look favorable. It also didn't help that AMD GPUs didn't improve as much as the other benchmarks supposedly show.

 

Futuremark in a press statement said that they considered all PC GPU vendors, including Intel, for their input. Futuremark asked them if they should include vendor specific code paths, all of them disagreed. Because the moment you do so, fairness goes out the window. But Futuremark is a benchmarking developer, they can't afford to throw fairness out the window.

 

But for game developers who want to squeeze all the features they can with their software may resort to using code paths. And they may resort to using one for the sake of development time and effort. It may suck they're playing "favorites", but when your audience is expecting you to do amazing things at mind boggling frame rates, these you kind of have to make these sacrifices. However, often times they won't resort to a code path. If you look at both NVIDIA and AMD/ATI's tech demos over the years, you'll find that both companies have had GPUs with a lot of advanced features that were later standard in GPUs of later generations (sometimes as early as two generations). But I've never seen any of these used in games.Then again, I was able to run a lot of AMD/ATI's demos on NVIDIA hardware... The only one I couldn't run was the Radeon HD 4800 series Froblins demo.

 

Also this may explain the accusations that some applications favor heavily Intel's processors. There was a period in 2000-2006 or so when AMD and Intel had parity on features, and if someone wanted to take advantage of Intel's new whizzbang features, well, AMD was kind of hosed there. But this only usually mattered for high performance applications like CAD.

0 Comments

There are no comments to display.

×