Una unidad de procesamiento de física ( PPU ) es un microprocesador dedicado diseñado para manejar los cálculos de física , especialmente en el motor de física de los videojuegos . Es un ejemplo de aceleración de hardware .
Algunos ejemplos de cálculos que involucran una PPU pueden incluir dinámica de cuerpos rígidos , dinámica de cuerpos blandos , detección de colisiones , dinámica de fluidos , simulación de cabello y ropa , análisis de elementos finitos y fracturamiento de objetos.
La idea es que los procesadores especializados descarguen las tareas que consumen mucho tiempo de la CPU de una computadora, de manera similar a cómo una GPU realiza operaciones gráficas en lugar de la CPU principal. El término fue acuñado por Ageia para describir su chip PhysX . Varias otras tecnologías en el espectro CPU-GPU tienen algunas características en común con este, aunque el producto de Ageia fue el único completo diseñado, comercializado, respaldado e instalado dentro de un sistema que es exclusivamente una PPU.
Un proyecto de investigación académica temprana sobre PPU [1] [2] llamado SPARTA (Simulación de Física en una Arquitectura en Tiempo Real) se llevó a cabo en Penn State [3] y la Universidad de Georgia. Se trataba de un PPU simple basado en FPGA que estaba limitado a dos dimensiones. Este proyecto se amplió a un sistema basado en ASIC considerablemente más avanzado llamado HELLAS.
En febrero de 2006 se lanzó la primera PPU dedicada PhysX de Ageia (que luego se fusionó con Nvidia ). La unidad es más efectiva para acelerar sistemas de partículas , con solo una pequeña mejora en el rendimiento medida para la física de cuerpos rígidos. [4] La PPU de Ageia está documentada en profundidad en su solicitud de patente estadounidense n.° 20050075849. [5] Nvidia/Ageia ya no produce PPU ni aceleración de hardware para el procesamiento de física, aunque ahora es compatible con algunas de sus unidades de procesamiento de gráficos.
El primer procesador que se anunció como PPU se denominó chip PhysX y fue presentado por una empresa de semiconductores sin fábrica llamada AGEIA . Los juegos que deseen aprovechar el PPU PhysX deben usar el SDK PhysX de AGEIA (antes conocido como SDK NovodeX).
Consiste en un núcleo RISC de propósito general que controla una matriz de procesadores VLIW de punto flotante SIMD personalizados que funcionan en memorias almacenadas localmente, con una estructura de conmutación para administrar las transferencias entre ellos. No existe una jerarquía de caché como en una CPU o GPU.
El PhysX estaba disponible en tres empresas de forma similar a como se fabrican las tarjetas de vídeo . ASUS , BFG Technologies [ 6] y ELSA Technologies eran los principales fabricantes. Las PC con las tarjetas ya instaladas estaban disponibles en fabricantes de sistemas como Alienware , Dell y Falcon Northwest [7] .
En febrero de 2008, después de que Nvidia comprara Ageia Technologies y finalmente cortara la capacidad de procesar PhysX en la PPU AGEIA y las GPU NVIDIA en sistemas con GPU ATi/AMD activas, parecía que PhysX pasaría al 100% a manos de Nvidia. Pero en marzo de 2008, Nvidia anunció que convertiría a PhysX en un estándar abierto para todos, [8] por lo que los principales fabricantes de procesadores gráficos tendrán soporte para PhysX en las tarjetas gráficas de próxima generación. Nvidia anunció que PhysX también estará disponible para algunas de sus tarjetas gráficas lanzadas al mercado con solo descargar algunos controladores nuevos.
Consulte el motor de física para obtener una discusión sobre los proyectos de investigación académica de PPU.
ASUS y BFG Technologies compraron licencias para fabricar versiones alternativas de la PPU de AGEIA, la PhysX P1 con 128 MB GDDR3:
El Havok SDK es un competidor importante del PhysX SDK, utilizado en más de 150 juegos, incluidos títulos importantes como Half-Life 2 , Halo 3 y Dead Rising . [12]
Para competir con el PhysX PPU, una edición conocida como Havok FX aprovecharía la tecnología multi-GPU de ATI ( AMD CrossFire ) y NVIDIA ( SLI ) utilizando tarjetas existentes para acelerar ciertos cálculos físicos. [13]
Havok divide la simulación de física en física de efectos y física de juego , con la física de efectos que se descarga (si es posible) a la GPU como instrucciones Shader Model 3.0 y la física de juego se procesa en la CPU de forma normal. La distinción importante entre los dos es que la física de efectos no afecta a la jugabilidad (polvo o pequeños escombros de una explosión, por ejemplo); la gran mayoría de las operaciones de física todavía se realizan en software. Este enfoque difiere significativamente del SDK de PhysX, que mueve todos los cálculos a la tarjeta PhysX si está presente.
Desde la adquisición de Havok por parte de Intel , Havok FX parece haber sido archivado o cancelado. [14]
El avance hacia GPGPU ha hecho que las GPU sean más adecuadas para el trabajo de una PPU; DX10 agregó tipos de datos enteros, una arquitectura de sombreado unificada y una etapa de sombreado de geometría que permite implementar una gama más amplia de algoritmos; las GPU modernas admiten sombreadores de cómputo , que se ejecutan en un espacio indexado y no requieren ningún recurso gráfico, solo búferes de datos de propósito general. NVidia CUDA proporciona un poco más en cuanto a comunicación entre subprocesos y un espacio de trabajo de estilo scratchpad asociado con los subprocesos.
No obstante, las GPU están diseñadas en torno a una mayor cantidad de latencia más larga, subprocesos más lentos y rutas de datos de textura y framebuffer, y un rendimiento de ramificación deficiente; esto las distingue de las PPU y Cell por estar menos optimizadas para asumir tareas de simulación del mundo del juego.
El compilador Codeplay Sieve es compatible con PPU, lo que indica que el chip physX de Ageia sería adecuado para tareas de tipo GPGPU. Sin embargo, parece poco probable que Ageia se anime a participar en este mercado.
Aunque es muy diferente de PhysX, se podría argumentar que el VU0 de PlayStation 2 es una implementación temprana y limitada de un PPU. Por el contrario, se podría describir un PPU a un programador de PS2 como un reemplazo evolucionado para VU0. Su conjunto de características y ubicación dentro del sistema está orientado a acelerar las tareas de actualización del juego, incluidas las físicas y la IA; puede descargar dichos cálculos trabajando con su propio flujo de instrucciones mientras la CPU está operando en otra cosa. Sin embargo, al ser un DSP, depende mucho más de la CPU para realizar un trabajo útil en un motor de juego y no sería capaz de implementar una API de física completa, por lo que no se puede clasificar como un PPU. Además, VU0 es capaz de proporcionar potencia de procesamiento de vértices adicional, aunque esto es más una propiedad de las vías en el sistema que de la unidad en sí.
Este uso es similar a Havok FX o la física de la GPU en que la potencia de punto flotante de propósito general de una unidad auxiliar se utiliza para complementar la CPU en funciones de gráficos o de física.