GPU: ya no solo a los gamers les interesa (parte 1: conociendo la historia)
En este artículo, mi primer aporte oficial a la SVC; trataremos el tema cada vez más relevante de qué es una GPU y porqué se convertirá en algo fundamental en los próximos años, aunque no seas un gamer. vamos a tratar de dar una breve pero clara explicación de donde vienen y cómo se convertirán en una de las piezas centrales en toda PC, no solo de los amigos gamer.
lo que sucede, básicamente, es que la GPU (Unidad de Procesamiento Gráfico, por sus siglas en inglés) empezará a tomar roles aparte de crear mundos imaginarios e imágenes espectaculares en tu monitor, será la fuerza bruta de proceso que mueva las aplicaciones más exigentes, no hablo de un futuro hipotético, es una revolución que YA ha empezado... ¿y te podés dar el lujo de no saber de qué se trata?
debo aclarar que para entender el tema es necesario conocer qué hacían antes y qué hacen ahora los GPU; asi que empecemos.
En el Inicio de los tiempos...
los chips gráficos empezaron, en retrospectiva; de forma humilde, aunque para los tiempos que corrían (allá por 1996) eran realmente espectaculares, lo que hacían en ese entonces era muy sencillo, retiraba los elementos más básicos e intensivos lejos del CPU y los procesaba por su cuenta, para los estándares actuales estos procesos son meramente triviales, pero en ese entonces era sobresaliente; hacía dos cosas: flitrar texturas y procesar geometría.
en términos simples, filtrar texturas se trata de aplicar una conversión a una imagen que envolvía a un elemento 3d para dar la impresión de más detalle del que en realidad tiene. debido a la cantidad limitada de memoria, el tamaño de las texturas era (y aún es) un problema, cuando una textura se acerca demasiado a la vista del observador se puede ver cada uno de los pixeles (un pixel es la unidad básica que forman una imágen), el filtrado era en realidad un método para mezclar el valor de los colores de cada uno de los pixeles más cercanos para crear la ilusión de uniformidad y disimular los pixeles para que la ilusión del detalle no se rompa tan bruscamente, para los gamers algo veteranos que leen esto, pueden ver un ejemplo clásico entre los gráficos del N64 y el PlayStation 1, los del 64 eran filtrados, los del ps 1 no.
| |
cubo sin textura | Cubo con textura |
El procesamiento de geometría es un proceso más fácil de explicar. básicamente es que el procesador le pasa las coordenadas de geometría de los objetos 3d y la tarjeta gráfica los ubica en el espacio virtual y crea el objeto.
bueno, para seguir el orden de la historia, las tarjetas 3dfx (las legendarias Voodoo) eran principalmente las que creaban la geometría para posteriormente colorearla.
Sigamos sacando cosas del CPULa tecnología siguió una evolución bastante predecible por unas cuantas generaciones de tarjetas, solo duplicaban las unidades internas de aplicación de textura, aplicaban nuevas técnicas de filtrado, mejoraban velocidad del core de video y de las memorias, progreso pero ninguna revolución. Hasta que Nvidia creó la Geforce 256.
La geforce 256 fué el primer chip gráfico en incorporar funciones de transformación e iluminación en la tarjeta gráfica y acuñó el término GPU. ah y de paso fué la tarjeta con la que nvidia ganó la carrera de las tarjetas de video para posteriormente absorver a 3Dfx.
ahora tenemos dos nuevos procesos para explicar:
Transformación: se refiere a la geometría, antes de la geforce, si se recuerdan de un par de párrafos atrás, los chips gráficos se limitaban a ubicar los puntos geométricos de los objetos, pero el CPU seguía indicando cómo iban a cambiar esos puntos con respecto al tiempo. la geforce sólo necesitaba la geometría y el "mapa" de cómo se iba a transformar cada vértice que formaba la geometría (recordar esto) y ésta se podía encargar del procedimiento.
|
vértices en una figura geométrica (puntos en amarillo en las esquinas) |
Iluminación: de nada sirve tener objetos 3d y colorearlos si no hay luz para que se vean. de nuevo, antes de la geforce, la iluminación la manipulaba el cpu, otra tarea de la que se hizo cargo la GPU.
se preguntarán a estas alturas, ¿y entonces qué hacía la CPU? dedicarse a cálculos de Inteligencia artificial, mantenimiento de inventario de items y powerups, rudimentarios cálculos de física, etc etc.
de nuevo, las generación siguiente, la geforce 2 mejoró la implementación de la 256 pero realmente no trajo nada nuevo a la escena, del lado de ATI la serie 7500 apareció en escena con mas o menos las mismas características de la Geforce 2
El momento del cambioLLegamos ahora a un punto pivotal de la historia, la Nvidia Geforce 3 y la Ati Radeon 8500. los diseños anteriores como vimos antes se trataron de remover la carga gráfica del CPU al GPU, pero había un problema: la flexibilidad. Aunque habían liberado al CPU de la carga, los procesos de la GPU eran FIJOS, es decir, los desarrolladores no eran libres de escoger cómo debía transformarse los vértices y estaban limitados con el hecho de aplicar texturas que simplemente no reaccionaban a su ambiente o que tenían una reacción limitada.
les presento a sus nuevos mejores amigos: los transformadores de vértices y pixeles.
los Pixel y Vertex Shaders (en inglés) son en una simplificación extrema, lo que su nombre sugiere, pequeños procesadores dentro del chip de gráficos que transforman los vértices de geometría y los pixeles usando pequeñísimos programas (no mas de unas cuantas líneas de código).
Pixel shaders: talvez el cambio mas dramático. Los PS aplicaban programas a las texturas y a las superficies de los objetos 3d. con esto podías conseguir una simulación de agua más precisa por ejemplo, agua que reaccionaba (con límitantes claro) a la interacción del usuario, texturas que podían crear la ilusión de tener volumen, etc.
Vertex Shaders: ahora los desarrolladores podían aplicar programas a los vértices para reaccionar de forma dinámica con su ambiente y no simplemente seguir un "mapa" dado por el CPU ahora seguían condiciones y situaciones.
|
Ejemplo de un shader para efecto de superficie de agua |
lo genial de ésto era que los programadores no tenían que apegarse a instrucciones rígidas de cómo crear efectos sino que se les dió un margen de maniobra para su creatividad, que aunque limitado, era prometedor.
las geforce de serie 3, 4, FX, 6 y 7 fueron por nvidia evoluciones del mismo concepto, por parte de ATI la serie 8000, 9000, X800 y hasta cierto punto la serie x1000 representaron el desarrollo de estas ideas, añadían más y más unidades transformadoras de pixeles y vértices, mejoraban las aplicaciones de textura, nuevas técnicas de Antialiasing (un importante tema, pero irrelevante para la finalidad de este artículo).
En el siguiente (y final) artículo de la serie:Preludio de la computación de Gigaflops
Physx, el profeta
y
el advenimiento de la nueva forma de hacer computación.