PhysX y la PPU: El legado perdido que NVIDIA acaba de enterrar

NVIDIA ha retirado el soporte para PhysX vía GPU en sus recientemente lanzadas RTX 50 para todos los juegos de 32 bits, lo que afecta negativamente al rendimiento de los juegos antiguos que usaban este motor de físicas. Esto afecta a títulos como Cryostasis, Batman: Arkham City, Borderlands 2, GRAW 2, Mirror’s Edge, Assassin’s Creed IV: Black Flag, Bioshock Infinite, entre otros, obliga al uso de la CPU para el cálculo de las físicas programadas desde dicha API en esos juegos.

Sin PhysX en las NVIDIA RTX 50

Contra todo pronóstico, NVIDIA ha realizado un movimiento incomprensible en el mundo del PC: la retirada del soporte para el motor de físicas PhySX solo en las RTX 50. Si bien este motor se encontraba ya en desuso desde hace años, los juegos de antaño se ejecutan en las GPU usando muy pocos recursos, lo que permitía usar los núcleos sobrantes de la GPU para las físicas, consiguiendo altas tasas de frames por segundo.

Logo NVIDIA PhySX

El problema se hace patente cuando las tasas de frames por segundo se van al suelo, incluso utilizando las CPU más potentes del mercado. Lo cual hace que el comprar una tarjeta gráfica de la generación anterior (RTX 40) tenga en estos momentos un mayor valor para quien juega en PC. Dicho de otra forma, NVIDIA se ha disparado a su propio pie y hemos de admitir que por el momento no entendemos la retirada del soporte a esta tecnología por parte de ellos. Sin embargo, la historia de PhySX esconde la existencia de un hardware, hoy en día olvidado, pero interesante de rememorar.

¿Qué es una PPU?

Una PPU (Physics Processing Unit) es un procesador especializado diseñado para realizar cálculos de física en tiempo real en videojuegos y simulaciones. Su propósito es descargar a la CPU y la GPU de estos cálculos, permitiendo efectos avanzados como colisiones realistas, simulaciones de fluidos, partículas y destrucción de entornos sin afectar el rendimiento general del sistema. Su aparición en el mercado empezó a sonar ya desde la primera mitad de la década de los 2000, en especial por la influencia de títulos como Half-Life 2 habían puesto de manifiesto el potencial de la simulación física, pero también revelaron las limitaciones de las CPU y GPU de la época para gestionar los cálculos necesarios en tiempo real.

Half-Life 2 fisicas

Por aquel entonces, los juegos modernos comenzaban a requerir simulaciones de colisiones, dinámicas de fluidos y partículas, que sobrecargaban la CPU y, en menor medida, la GPU. Hemos de tener en cuenta que las soluciones multinúcleo en las CPU todavía estaban lejanas en el tiempo y su potencia era cuando menos limitada. Es en ese punto donde se planteó un nuevo tipo de hardware, la Physics Processing Unit o PPU, cuyo trabajo no era otro que el de descargar tanto de la CPU como de la GPU del sistema, el tener que calcular las complejas físicas de los videojuegos. No obstante, solo apareció un hardware de este tipo, el cual vino de la mano de una por aquel entonces desconocida AGEIA, la cual había creado una API llamada Novodek, y un hardware, cuyo nombre os sonará mucho más.

Hardware olvidado: la PPU AGEIA PhysX P1

Situémonos en el año 2006, la consola PlayStation 3 se acababa de presentar al público y la gama de tarjetas gráficas más avanzadas de NVIDIA eran las GeForce 7000, las cuales no disponían todavía de la capacidad para usarse para tareas de computación de propósito general. Ideas como CUDA, introducidas en la GeForce 8, todavía se encontraban algo lejanas en el tiempo. Por aquel entonces, una empresa llamada AGEIA, lanzó un hardware conocido como PhySX P1, que fue la primera y última PPU de la historia. Su arquitectura era muy parecida a la del Cell Broadband Engine utilizada en PlayStation 3, hasta el punto que AGEIA lanzó la misma API que funcionaba de forma directa en la CPU de la consola, sin necesidad de que el hardware tuviese la PPU en su interior.

PPU PHYSX P1 de ASUS y AGEIA

Las siglas de PPU significan Physics Processing Unit, en PC, y se vendió en forma de tarjeta de expansión para el bus PCI clásico bajo las marcas ASUS y Dell. Sus especificaciones técnicas eran las siguientes:

  • 500 MHz (no oficialmente confirmado).
  • 128 MB de memoria GDDR3 a 733 MHz (11.8 GB/s),
  • PPU AGEIA PhySX P1 como chip principal.
  • Se conectaba a una interfaz PCI clásica, la cual le daba 25 W de potencia eléctrica; sin embargo, requería de alimentación externa.
  • Hasta 96 operaciones de coma flotante por ciclo de reloj (4 VPE * 4 VPU por VPE * 3 ALU por DPU * 2 por soporte FMA en las ALU).

Por desgracia, apenas existía una diferencia muy leve en los juegos entre usar este hardware y no hacerlo, lo que llevó a que fuese un fiasco comercial enorme. Luego, la aparición de las primeras tarjetas gráficas para PC con capacidades de computación de propósito general y la compra de NVIDIA terminaron sepultando este hardware en la papelera de la historia.

PPU Control Engine (PCE)

Sin embargo, como hardware, la PPU de PhySX es cuanto menos un hardware que nos llama poderosamente la atención, si bien es una reliquia de un tiempo pasado, no solo la aparición de las GPU para computación de propósito general terminó por reemplazarlas del mercado, sino que comparte ciertos problemas con el CBEA de PS3. Para entenderlos, hemos de conocer la arquitectura de este chip y sus particularidades. Y es que la Physics Processing Unit no se metió el batacazo comercial porque sí, sino por el hecho de que muchas empresas de videojuegos decidieron ignorar la existencia de dicha unidad.

AGEIA PPU Chip PHYSX

El primer componente del PhySX es el llamado el PPU Control Engine. Se trata de un microcontrolador con set de instrucciones MIPS de 64 bits cuyo trabajo principal es supervisar y dirigir las actividades del Data Movement Engine (DME) y de los cuatro Vector Point Engines (VPE). Además, el PCE maneja la gestión de la memoria GDDR3 y coordina las transferencias de datos entre la PPU y la CPU del sistema. Esto lo consigue a través del DME, el cual integra la topología para comunicar el PCE con los VPE y estos entre sí. Así como el controlador de memoria local y la unidad DMA para comunicarse con la CPU del sistema a través del bus del PCI.

Vector Processor Engine

No obstante, el trabajo del PCE, no era realizar los cálculos para calcular las físicas de la escena, más bien dicho trabajo caía en manos de los 4 VPE, los cuales eran los 4 DSP los encargados de realizar los cálculos pertinentes para las físicas. Conceptualmente, los VPE se parecen mucho a los SPE del CBEA de PS3, en especial por el hecho de que en vez de usar memoria caché hacen uso de memoria local. Lo que obliga a los desarrolladores a tener que manejar ellos la reserva y el movimiento de espacio en la memoria. En todo caso, los de AGEIA se las ingeniaron para complicar aún más la organización en su PPU PhysX P1.

PPU PhySX Ageia diagrama

Cada uno de los 4 VPE dispone de 1 Memory Control Unit, dicha unidad DMA es la encargada de proveerle los datos y las instrucciones necesarias a cada uno de los VPE. Es muy parecido al Memory Flow Controller del SPE, pero con algunos matices, como es el hecho de tener una memoria local interna para el intercambio de información entre los 4 VPE, lo cual no se encuentra en el chip de la consola de Sony y una memoria más a manejar por parte de los programadores. Cada una de las MCU tienen acceso al DME para intercomunicar datos entre sí y recibir comandos por parte del PCE.

Vector Processing Units

En cada VPE en la PPU PhySX P1 se encuentran 4 Vector Processing Units o VPU y es aquí donde las cosas se complican, ya que por cada VPU nos encontramos un nivel adicional al encontrarnos 2 Data Processing Units funcionando en paralelo. Cada una de estas DPU, carece de acceso a memoria más allá de su memoria local, por lo que requieren del uso por parte del driver o de la aplicación misma, manejando a la MCU dentro del propio VPE, para obtener los datos e instrucciones del exterior.

Esto nos puede parecer similar a la memoria local de los SPE del CBEA, pero aquí es distinto, ya que la memoria local de cada una de las Vector Processing Units usa una arquitectura Harvard con la memoria para datos e instrucciones separada. Una solución clásica en los DSP y microcontroladores para evitar así conflictos de acceso entre el MCU alimentando nuevos datos y el cálculo de las física a tiempo real. En cuanto a la composición interna de los DPU, este solo puede ejecutar una instrucción por ciclo de reloj, por lo que solo podía utilizar una de sus cuatro unidades por instrucción.

Si ya hablamos de unidades de ejecución, nos encontramos con 4 unidades distintas, siendo la primera una unidad SIMD compuesta por 3 ALU con capacidad para operar con coma flotante de 32 bits y con la capacidad de realizar instrucciones matemáticas complejas de 2 operandos por ciclo de reloj. Una unidad de escalar de enteros clásica, una de control de saltos y una unidad de lógica de predicados. No obstante, solo se podía utilizar una de estas unidades por ciclo de reloj.

La compra por parte de NVIDIA y el fin de la historia

El desarrollo y aparición de la PPU no fueron una casualidad, y tampoco una solución intentando encontrar un problema al que solucionar. Pensad que hablamos de una época en la que las tarjetas gráficas aún no se usaban para el cálculo de simulaciones complejas en los sistemas de alto rendimiento y las CPU multinúcleo eran una novedad reciente. Es más, fuera del caso de Half-Life 2, que popularizó las físicas en los videojuegos, estas eran muy pobres por las limitaciones técnicas y la poca capacidad de procesamiento.

GeForce 8800 sin disipador

El objetivo de hardware como la PPU PhysX P1 era simple y llanamente llegar a descargar el trabajo tanto a la CPU como a la GPU en el cálculo de las físicas en los juegos. Sin embargo, la aparición del chip G80 de NVIDIA en las GeForce 8 cambió la historia para siempre. Y es que se trató de la primera vez que apareció en el mercado doméstico el concepto GPGPU, y claro, NVIDIA prometía poder realizar el cálculo de las físicas de los videojuegos en sus nuevas tarjetas gráficas, un mensaje que calo lo suficiente como para que el hardware de AGEIA se viera como algo superfluo.

Así pues, en el año 2008, NVIDIA adquirió AGEIA y su tecnología PhysX y la integró PhysX en sus tarjetas gráficas, eliminando la necesidad de hardware dedicado y permitiendo que las GPU GeForce asumieran estos cálculos. En aquel momento, la PPU como concepto murió y con los avances de computación de propósito general en las GPU que hubo con los años nunca más volvió a tener posibilidad de resucitar.

5 1 vote
Article Rating
Subscribe
Notify of
guest

2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Vladimir castellanos
Vladimir castellanos
24 days ago

Gracias por el artículo, siempre quise saber más sobre esas PPU

Klayf
Klayf
23 days ago

Gran artículo, siempre quise saber más de esas PPU de AGEIA, claramente recuerda al Cell en algunas cuestiones y diría que a las VU de PS2 un poco también.
Me da cierta nostalgia recordar el PhysX y ver que lo estén matando, recuerdo usarlo en su momento con una GeForce 9800 GT, en juegos como Mafia II, Metro 2033 o Mirror’s Edge, solo que era usado como algo más «cosmético» que ser algo integrado en favor de la jugabilidad como hacía Half Life 2 con las físicas. En fin, se le dió mucho bombo en su momento, pero después fue quedando en el olvido, como ha pasado con cosas como el TressFX o el Nvidia HairWorks.

2
0
Would love your thoughts, please comment.x
()
x