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 por hardware .
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 fractura de objetos.
La idea es que procesadores especializados descarguen tareas que consumen mucho tiempo desde la CPU de una computadora, de manera muy 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, aunque el producto de Ageia fue el único completo diseñado, comercializado, respaldado y colocado dentro de un sistema que es exclusivamente una PPU.
Uno de los primeros proyectos académicos de investigación de 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. Esta era una PPU simple basada en FPGA que estaba limitada 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 PhysX dedicada de Ageia (posteriormente fusionada con Nvidia ). La unidad es más efectiva en la aceleración de sistemas de partículas , con solo una pequeña mejora de 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 físico, aunque ahora es compatible con algunas de sus unidades de procesamiento de gráficos.
El primer procesador anunciado como PPU se denominó chip PhysX , presentado por una empresa de semiconductores sin fábrica llamada AGEIA . Los juegos que deseen aprovechar la PPU PhysX deben utilizar el SDK PhysX de AGEIA (anteriormente conocido como NovodeX SDK).
Consiste en un núcleo RISC de propósito general que controla una serie de procesadores VLIW de punto flotante SIMD personalizados que funcionan en memorias bancarias locales, con una estructura de conmutación para gestionar las transferencias entre ellos. No existe una jerarquía de caché como en una CPU o GPU.
El PhysX estaba disponible en tres empresas similares a la forma en que se fabrican las tarjetas de vídeo . ASUS , BFG Technologies , [6] y ELSA Technologies fueron los principales fabricantes. Las PC con las tarjetas ya instaladas estaban disponibles a través de 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 de AGEIA y las GPU de NVIDIA en sistemas con GPU ATi/AMD activas, parecía que PhysX se había ido 100% a Nvidia. Pero en marzo de 2008, Nvidia anunció que haría de PhysX 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 simplemente descargando algunos controladores nuevos.
Consulte el motor de física para obtener una discusión sobre proyectos de PPU de investigación académica.
ASUS y BFG Technologies compraron licencias para fabricar versiones alternativas de la PPU de AGEIA, la PhysX P1 con 128 MB GDDR3:
El SDK de Havok es un competidor importante del SDK de PhysX, utilizado en más de 150 juegos, incluidos títulos importantes como Half-Life 2 , Halo 3 y Dead Rising . [12]
Para competir con la PPU PhysX, una edición conocida como Havok FX debía aprovechar 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 , descargando la física de efectos (si es posible) a la GPU como instrucciones de Shader Model 3.0 y procesando la física de juego en la CPU normalmente. La distinción importante entre los dos es que la física de efectos no afecta el juego (polvo o pequeños restos de una explosión, por ejemplo); la gran mayoría de las operaciones físicas 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 impulso 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 geométrico que permite implementar una gama más amplia de algoritmos; Las GPU modernas admiten sombreadores de cálculo , que se ejecutan en un espacio indexado y no requieren ningún recurso gráfico, solo buffers de datos de uso general. NVidia CUDA proporciona un poco más en cuanto a comunicación entre subprocesos y espacio de trabajo estilo scratchpad asociado con los subprocesos.
No obstante, las GPU se construyen en torno a una mayor cantidad de latencia más larga, subprocesos más lentos y están diseñadas en torno a rutas de datos de textura y framebuffer, y un rendimiento de ramificación deficiente; esto los distingue de las PPU y Cell por estar menos optimizados para asumir tareas de simulación del mundo del juego.
El compilador Codeplay Sieve es compatible con PPU, lo que indica que el chip Ageia physX sería adecuado para tareas de tipo GPGPU. Sin embargo, parece poco probable que Ageia persiga este mercado.
Aunque es muy diferente del PhysX, se podría argumentar que el VU0 de PlayStation 2 es una implementación temprana y limitada de una PPU. Por el contrario, se podría describir una PPU para un programador de PS2 como un reemplazo evolucionado de VU0. Su conjunto de funciones y su ubicación dentro del sistema están orientados a acelerar las tareas de actualización del juego, incluidas la física 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 el motor de un juego y no sería capaz de implementar una API de física completa, por lo que no puede clasificarse como una 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 del sistema que de la unidad en sí.
Este uso es similar a Havok FX o física de GPU en el sentido de que la potencia de punto flotante de propósito general de una unidad auxiliar se utiliza para complementar la CPU en funciones gráficas o físicas.