Los coprocesadores son
microprocesadores que realizan tareas específicas para liberar de carga los
procesadores de propósito general. Una CPU “normal” (Central Processing Unit) puede
realizar multitud de operaciones distintas y se intenta optimizar para que las
haga en el menor tiempo posible, pero en general habrá determinadas tareas para
las que si diseñamos un pequeño procesador específico para ellas le saque más
rendimiento con menos recursos. En los procesadores antiguos había ejemplos de
este tipo de componentes auxiliares en los coprocesadores matemáticos, para
gestión de memoria (DMA), para gestión de gráficos, etc.
![]() |
Coprocesador matemático |
Actualmente se
descarga a la CPU de las tareas más recurrentes e intensivas del procesado de
gráficos a través de una tarjeta que lleva un procesador específico para ello:
las tarjetas gráficas con su Graphics Processing Unit (GPU). Las GPUs están
diseñadas para tratar grandes cantidades de datos, del mismo tipo, con una
cantidad muy pequeña de instrucciones. Lo que se conoce como el pipeline gráfico es una serie de
primitivas que manda el procesador central a la tarjeta gráfica donde se hacen
todas las operaciones necesarias sobre dichos datos hasta llegar a la
rasterización (proyección de los datos 3D en 2D para su salida por un dispositivo
como la pantalla).
La demanda actual de
gráficos más realistas e impresionantes ha multiplicado el interés en el
desarrollo de nuevas GPUs y la demanda de potencia de cálculo es cada vez
mayor. Para liberar a su vez a estos procesadores específicos de determinadas
tareas recurrentes se recurre a los coprocesadores para gráficos, que son como
el ayudante del ayudante. Con dos niveles de especialización se intenta
conseguir resultados muy optimizados.
![]() |
GPU de nVidia de la serie 6600 GT |
Las GPUs actuales tratan
de forma muy eficiente los cálculos necesarios para:
- Sombreado
- Texturización
- Renderizado
- Muestro múltiple (multisampling)
- Antialiasing
Actualmente las GPUs
vienen en una tarjeta gráfica separada de la placa madre, conectada a la CPU y
memoria RAM a través de bus AGP
o PCI Express. Tiene acceso a una memoria RAM en la tarjeta que es
normalmente más rápida pero de menor capacidad que la memoria RAM principal.
Por otro lado, muchas placas madres tienen una GPU integrada en el chipset
Northbridge (encargado de controlar la memoria RAM y la ranura AGP) que usa la
memoria principal como frame buffer.
Al ver las
características de las tarjetas gráficas actuales, algunos científicos vieron
que se podían utilizar de forma muy eficiente para realizar determinados
cálculos muy intensivos que eran de aplicación en el ámbito científico. Esto se
ha llamado GPGPU: General Processing on a GPU. Es una idea muy similar al
proyecto Folding@home
que hay en PS3 para ayuda a la investigación contra el cáncer, sólo que en vez
de correr sobre la GPU utiliza todos las unidades del Cell de todas las PS3 que
estén conectadas en ese momento para desarrollo de modelos de proteínas.
Dentro de los
microprocesadores que se han diseñado para las GPUs he podido encontrar
información de dos tipos: los PPUS y los RTPU.
-
PPU:
significa literalmente Physics Processing Unit y se encarga de gestionar los cálculos
de físicas relacionados con efectos adicionales en la escena. Por ejemplo se
pueden usar para mover pequeños objetos por el escenario a causa del viento de
forma realista y físicamente correcta (aunque en el cálculo se suelen usar
métodos de aproximación para resolver las ecuaciones, los modelos en que se
basan sí son coherentes). Esto se podría hacer con una animación tradicional
pero no sería igual de realista ni sería modificable ni reusable. Otro ejemplo
es el tratamiento de partículas y fluidos como humo, fuego, metralla, etc.
![]() |
Ejemplo de físicas aplicado en el juego Brothers in Arms |
La física
general de la escena la sigue llevando el procesador principal, es en los “efectos
especiales” donde se emplea la PPU.El primer coprocesador que salió al mercado fue el PhysX de
Ageia y se le dio mucha publicidad gracias a juegos que lo usaban de forma
espectacular como el Mirror’s
Edge. Antes de este existieron proyectos como SPARTA y HELLAS que eran el
resultado de proyectos de investigación.
Posteriormente nVidia adquirió Ageia e incorporó su API en
sus tarjetas, así pues no usó su tecnología como un coprocesador dedicado sino
usando los recursos ya existentes en la tarjeta. Hoy en día no sería difícil
tener dos tarjetas iguales conectadas en SLI o Xfire
y asignar los cálculos de físicas a una de ellas, haciendo innecesario
implementar otro hardware específico que tendría un coste muy similar y no sería
muy atractivo para el usuario medio.
-
RTPU:
Ray Tracing Processing Unit en inglés, hace referencia a la técnica de generación
de imágenes 3D híper realista conocida como Traza de Rayos
que intenta emular en un entorno digital el comportamiento real de la luz,
dando como resultado imágenes espectaculares. El problema de esta técnica es
que consume muchos recursos y de ahí el desarrollo de coprocesadores
específicos que ayuden en esta tarea. Actualmente hay prototipos funcionales de
esta tecnología como el CausticOne de Caustic
Graphics que permiten representar estas escenas a una velocidad de 5 frames
por segundo, lo que las deja prácticamente fuera del campo de imágenes
interactivas. Sin embargo se espera que en el futuro cercano se desarrolle esta
tecnología hasta alcanzar tasas de frames que permitan mostrar juegos
comerciales que hagan uso de esta técnica.
![]() |
Imagen renderizada con tecnología propia de Caustic Graphics |
No hay comentarios:
Publicar un comentario