Nvidia se brání, že nechává na vývojářích her, zdali PhysX implementují vícevláknově. Konspirační teorie, že Nvidia na vývojáře v zákulisí vyvíjí tlaky, aby PhysX neoptimalizovali, navždy zůstanou jen v rovině spekulací. Je tedy Nvidia v celé situaci nevinně, nebo je to naopak ona (či Ageia, kterou odkoupila), kdo PhysX na CPU záměrně zmrzačil? David Kanter ze serveru Real World Tech se rozhodl rozetnout všechny pochybnosti a spory. Ve svém článku hlouběji zmapoval, jak PhysX provádí výpočty na CPU, a došel k poměrně zajímavému zjištění.
Knihovny PhysX (PhysXCore.dll, ole32.dll) ve velké míře používají instrukce x87, které přibližně před 20 lety rozšířily repertoár x86 o floating point výpočty (s plovoucí desetinnou čárkou). Během uplynulých let byly tyto instrukce nahrazeny sadou SSE a SSE2; Intel, AMD i Microsoft považují sadu x87 za zastaralou a nedoporučují její používání. A není divu: dnešní procesorová jádra umí provést maximálně dvě x87 operace za takt, zatímco SSE operací s 32bitovou přesností (single precision) zvládnou až osm a budoucí generace procesorů Intelu s instrukcemi AVX dokonce dvojnásobek. David Kanter odhaduje, že použití SSE2 by CPU PhysX mohlo realisticky zrychlit minimálně dvakrát. To by stačilo, aby hra jej využívající dosáhla hratelných framerate.
Proč tedy PhysX využívá zastaralé instrukce x87 namísto moderních SSE, když všechny procesory v roce 2005 už podporovaly SSE2 (Ageia PPU karta vyšla v roce 2006)? Podle Davida Kantera jednoduše proto, že to Ageia nebo Nvidia tak chtěly. Odhaduje, že upravit a překompilovat knihovny PhysXu by zabralo jeden až dva dny a maximálně dva týdny testování navrch. Jenže je zřejmé, že Nvidia by musela být padlá na hlavu, aby své akcelerátory připravila o výhodu, kterou ve hrách s GPU PhysX nyní mají.
Celý článek „PhysX87: Software Deficiency“ čtěte na serveru Real World Technologies