Ir al contenido

Physics processing unit

De Wikipedia, la enciclopedia libre
Animación de captura de pantalla del sistema de modelado físico del hardware SPARTA.

Una unidad de procesamiento de física (PPU) es un microprocesador dedicado, diseñado para gestionar los cálculos de física, especialmente en el physics engine de los videojuegos. Es un ejemplo de aceleración por hardware.

Algunos ejemplos de cálculos que involucran una PPU incluyen 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 fracturación de objetos.

La idea es que procesadores especializados descarguen tareas que consumen mucho tiempo de la CPU de una computadora, de forma 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 comparten algunas características con este, aunque el producto de Ageia fue el único completo diseñado, comercializado, soportado e integrado en un sistema exclusivamente como una PPU.

Historia

[editar]

Un proyecto académico inicial de investigación sobre PPU,[1][2]​ denominado 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 una PPU simple basada en FPGA y limitada a dos dimensiones. Este proyecto se amplió a un sistema considerablemente más avanzado basado en ASIC, denominado HELLAS.

En febrero de 2006, Ageia (posteriormente fusionada con Nvidia) lanzó la primera PPU dedicada, PhysX. Esta unidad es especialmente eficaz 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 de física, aunque ahora es compatible con algunas de sus unidades de procesamiento gráfico.

AGEIA PhysX

[editar]

El primer procesador anunciado como PPU se denominó chip PhysX, presentado por AGEIA, una fabless semiconductor company . Los juegos que deseen aprovechar el PPU PhysX deben usar el PhysX SDK de AGEIA (anteriormente 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 locales almacenadas, con una red de conmutación para gestionar las transferencias entre ellos. No existe una cache-hierarchy como en una CPU o GPU.

El PhysX estaba disponible a través de tres empresas, de forma similar a como se fabrican las tarjetas graficas. ASUS, BFG Technologies[6]​ y ELSA Technologies fueron los principales fabricantes. Los 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, tras la adquisición de Ageia Technologies por parte de Nvidia y la eliminación del procesamiento de PhysX en la PPU de AGEIA y las GPU NVIDIA en sistemas con GPU ATi/AMD activas, parecía que PhysX pasaría a manos de Nvidia. Sin embargo, en marzo de 2008, Nvidia anunció que convertiría PhysX en un estándar abierto para todos,[3] de modo que los principales fabricantes de procesadores gráficos tendrían compatibilidad con PhysX en las tarjetas gráficas de próxima generación. Nvidia anunció que PhysX también estaría disponible para algunas de sus tarjetas gráficas lanzadas, simplemente descargando nuevos controladores.

Especificaciones del hardware de PhysX P1 (PPU)

[editar]
  • Dispositivo multinúcleo basado en la arquitectura MIPS con hardware de aceleración física integrado y subsistema de memoria con una gran cantidad de núcleos[8][9]
    • 125 millones de transistores[10]
    • Tamaño de matriz: 182 mm²
    • Proceso de fabricación: 130 nm
    • Consumo máximo de energía: 30 W
  • Memoria: 128 MB de RAM GDDR3 con interfaz de 128 bits
  • PCI 3.0 de 32 bits (ASUS también fabricó una tarjeta PCI Express)
  • Pruebas de colisión Sphere : 530 millones por segundo (capacidad máxima)
  • Pruebas de colisión Convex: 530 000 por segundo (capacidad máxima)
  • Ancho de banda máximo de instrucciones: 20 000 millones por segundo

Havok FX

[editar]

El SDK de Havok es un competidor importante del SDK de PhysX, utilizado en más de 150 juegos, incluyendo títulos importantes como Half-Life 2, Halo 3 y Dead Rising.[11]

Para competir con el PPU de 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 de física.[12]

Havok divide la simulación de física en física de efectos y física de juego. La física de efectos se descarga (si es posible) a la GPU como instrucciones de Shader Model 3.0 y la física de juego se procesa en la CPU de forma normal. La distinción importante entre ambos radica en que la física de efectos no afecta a la jugabilidad (por ejemplo, el polvo o los pequeños escombros de una explosión); la gran mayoría de las operaciones de física se siguen realizando por software. Este enfoque difiere significativamente del SDK de PhysX, que traslada 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.[13]

PPU vs. GPUs

[editar]

El impulso hacia las GPGPU ha hecho que las GPU sean más adecuadas para la función de PPU. DX10 añadió 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 compute shaders, que se ejecutan en un espacio indexado y no requieren recursos gráficos, solo búferes de datos de propósito general. NVidia CUDA ofrece mayor comunicación entre subprocesos y un espacio de trabajo tipo scratchpad asociado a los subprocesos.

No obstante, las GPU se basan en una mayor cantidad de subprocesos con mayor latencia y lentitud, y se diseñan en torno a rutas de datos de textura y framebuffer, además de un bajo rendimiento de ramificación. Esto las distingue de las PPU y Cell por estar menos optimizadas para asumir tareas de simulación del mundo del juego.

El Codeplay Sieve compiler admite la 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 adentre en este mercado.

PS2 – VU0

[editar]

Aunque es muy diferente de PhysX, se podría argumentar que el VU0 de PlayStation 2 es una implementación temprana y limitada de una PPU. Por otro lado, un programador de PS2 podría describir una PPU como un reemplazo evolucionado de VU0. Sus características y su ubicación dentro del sistema están orientadas a acelerar las tareas de actualización del juego, incluyendo física e IA; puede descargar dichos cálculos trabajando con su propio flujo de instrucciones mientras la CPU trabaja en otra cosa. Sin embargo, al ser un DSP, depende mucho más de la CPU para realizar tareas útiles en un motor de juego y no sería capaz de implementar una API de física completa, por lo que no puede clasificarse como una PPU. VU0 también puede 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 la física de la GPU, ya que la potencia de punto flotante de propósito general de una unidad auxiliar se utiliza para complementar a la CPU en funciones gráficas o de física.

ver también

[editar]

Referencias

[editar]
  1. B. Bishop, T. Kelliher, "Specialized Hardware for Deformable Object Modeling," IEEE Transactions on Circuits and Systems for Video Technology, 13(11):1074–1079, Nov. 2003.
  2. S. Yardi, B. Bishop, T. Kelliher, "HELLAS: A Specialised Architecture for Interactive Deformable Object Modeling", ACM Southeast Conference, Melbourne, FL, March 10–12, 2006, pp. 56–61.
  3. «SPARTA Homepage». Cse.psu.edu. Archivado desde el original el 30 de julio de 2010. Consultado el 16 de agosto de 2010. 
  4. «Exclusive: ASUS Debuts AGEIA PhysX Hardware». AnandTech. Archivado desde el original el September 8, 2010. Consultado el 16 de agosto de 2010. 
  5. «United States Patent Application: 0050086040». Appft1.uspto.gov. Archivado desde el original el 10 de febrero de 2020. Consultado el 16 de agosto de 2010. 
  6. «:::News Release:::». Archivado desde el original el 26 de abril de 2006. Consultado el 8 de junio de 2011. 
  7. «BFG Tech ad for the PhysX». Maximum PC (Future US): 6. May 2006. ISSN 1522-4279. Consultado el 16 de septiembre de 2009. 
  8. «PhysX FAQ». NVIDIA Corporation. 28 November 2018. 
  9. Nicholas Blachford (2006). «Lets Get Physical: Inside The PhysX Physics Processor». 
  10. http://www.legitreviews.com/article/346/2/ Legit Reviews - ASUS's AGEIA PhysX P1 Card
  11. «Games using Havok». Archivado desde el original el 15 de abril de 2012. Consultado el 19 de febrero de 2007. 
  12. Havok FX product information (enlace roto disponible en este archivo).
  13. Shilov, Anton (19 de noviembre de 2007). «GPU Physics Dead for Now, Says AMD's Developer Relations Chief». Xbit Laboratories. Archivado desde el original el 1 de diciembre de 2011. Consultado el 26 de noviembre de 2007. 
  14. https://www.digipart.com/part/UA6528
[editar]