Hace 3 días nos llegaba la polémica investigación sobre el tipo de instrucciones que usaba PhysX por CPU realizada por Real World Technologies, donde desvelaba que PhysX usa el set de instrucciones x87, viejo pero estándar set de instrucciones aparecido en tiempos de los primeros microprocesadores 8086 en forma del chip 8087, y que se mantuvo como tal hasta tiempos del 486DX donde a partir de allí en adelante este componente se integró en el microprocesador. Desde una entrevista realizada por THINQ, Nvidia nos da su versión de los hechos.
PUBLICIDAD
Cualquier afirmación de que estamos discapacitando a PhysX por CPU es completamente falsa. Nvidia invirtió, y continuará invirtiendo en el rendimiento de PhysX en todas las plataformas, incluyendo CPU.
El actual código PhysX 2.x se remonta a la época en que las CPU multinúcleo eran una rareza, motivo por el cual PhysX no habilita automáticamente los subprocesos múltiples de forma predeterminada, a pesar de ello es bastante fácil para los desarrolladores activar el multihilo en PhysX SDK 2.x.
El próximo PhysX SDK 3.0 introducirá características que activarán automáticamente características multihilo, usando un enfoque basado en tareas, el cual se desarrolló en conjunto con Apex para añadir soporte multihilo automático. El nuevo SDK podrá aprovechar muchos núcleos disponibles o cuantos el desarrollador del juego lo especifique, se proporcionará también un grupo de subprocesos mediante el cual la simulación física podrá tomar recursos que se ejecutan en todos los núcleos.
SSE también se activará predeterminadamente en el nuevo SDK, sin embargo, no todos los desarrolladores querrán SSE activado por defecto, porque todavía desean que sus productos soporten CPUs antiguas, por lo que el usar instrucciones x87 no es un intento deliberado por perjudicar el rendimiento del CPU como lo muestra el artículo de Real World Technologies. Tenemos a cientos de desarrolladores usando PhysX en sus aplicaciones y tenemos la responsabilidad de garantizar que no romperemos la compatibilidad con ninguna plataforma.
PhysX SDK 2.x cuenta con algo de código SSE y SSE no es necesariamente más rápido, en muchas situaciones el código no-SSE brinda mejor desempeño que el código SSE. Sin embargo a largo plazo SSE será el camino a seguir para PhysX por CPU, y tenemos previsto activarlo de forma predeterminada en futuras versiones.
Conclusiones
Muy extraño el saber que los desarrolladores de juegos son los que exigen la compatibilidad con las instrucciones x87, sobretodo sabiendo los elevados requisitos de CPU que exigen los juegos que hacen uso de PhysX, es más, dentro de la lista de juegos que hacen uso de PhysX por CPU, no existe ninguno que pida como requisito mínimo un CPU Pentium II, MMX o anterior (SSE se implementó en los Intel Pentium III, AMD Duron Morgan y superiores), sus requisitos de VGA empiezan desde las Geforce 6 Series (AGP 8x), VGA muy difícil de usar conjuntamente con un viejo Pentium II (las mainboards para dichos microprocesadores usaban AGP 2x, eléctricamente incompatibles con AGP 8x).
Por lo menos consuela saber que en el futuro PhysX SDK 3.0 se usará el soporte multihilo y SSE lo cual beneficiará al rendimiento de PhysX por CPU, y la pondrá al nivel de sus competidores Bullet y Havok los cuales si hacen uso de SSE.
Link: Nvidia: We’re not hobbling CPU PhysX (THINQ)