X
Tech

NVIDIA "de-optimizes" PhysX for the CPU

NVIDIA has purposefully de-optimized its PhysX realtime physics engine when it is run on the CPU, according to research carried out by Real World Tech.
Written by Adrian Kingsley-Hughes, Senior Contributing Editor

NVIDIA has purposefully de-optimized its PhysX realtime physics engine when it is run on the CPU, according to research carried out by Real World Tech.

The article goes on to claim that NVIDIA makes use of the x87 instruction set for floating-point math rather than the more modern, and vastly superior, SSE.

The truth is that there is no technical reason for PhysX to be using x87 code. PhysX uses x87 because Ageia and now Nvidia want it that way.

...

Using x87 definitely makes the GPU look better, since the CPU will perform worse than if the code were properly generated to use packed SSE instructions.

How old is x87? This should give you a clue:

Intel started discouraging the use of x87 with the introduction of the P4 in late 2000. AMD deprecated x87 since the K8 in 2003, as x86-64 is defined with SSE2 support; VIA’s C7 has supported SSE2 since 2005. In 64-bit versions of Windows, x87 is deprecated for user-mode, and prohibited entirely in kernel-mode. Pretty much everyone in the industry has recommended SSE over x87 since 2005 and there are no reasons to use x87, unless software has to run on an embedded Pentium or 486.

SemiAccurate's Charlie Dimerjian offers us an insight into the lengths that NVIDIA must have gone to in order to use x87 over SSE:

What does this mean? Well, to not use SSE on any modern compiler, you have to explicitly tell the compiler to avoid it. The fact that it has been in every Intel chip released for a decade means it is assumed everywhere. Nvidia had to go out of their way to make it x87 only, and that wasn't by accident, it could not have been.

So, what's going on here? Well, it seems that NVIDIA has chosen an archaic instruction set for the CPU in order to make PhysX on the GPU seem so much better. Back to Real World Tech:

For Nvidia, decreasing the baseline CPU performance by using x87 instructions and a single thread makes GPUs look better. This tactic calls into question the CPU vs. GPU comparisons made using PhysX; but the name of the game at Nvidia is making the GPU look good, and PhysX certainly fits the bill in the current incarnation.

Bottom line, NVIDIA wants to sell GPUs, and giving PhysX the advantage on the GPU fits in perfectly with this agenda.

Editorial standards