Los chips gráficos o conocidos a día de hoy como GPUs han tenido una evolución interesante a través del tiempo desde sus inicios en los primeros PCs hasta llegar a los mastodontes ultra-complejos que tenemos a día de hoy. Es por ello que vamos a hacer un repaso de su evolución a través de los tiempos en este artículo.
Las tarjetas gráficas o conocidas como GPUs a día de hoy son el componente de un PC más utilizado que no forma parte del diseño de Von Neumann. Lo que ha llevado a la espectacular evolución de las GPUs hasta el día de hoy.
¿Qué es una GPU?
Una tarjeta gráfica es un componente clave de un ordenador que utiliza este para comunicarse con el usuario a través de una pantalla, sobre la cual genera imágenes que informan de la situación actual del ordenador en cada momento. Los componentes principales de una tarjeta gráfica son el chip gráfico por un lado y la memoria de vídeo o VRAM.
Así ha sido desde el lanzamiento de las primeras tarjetas gráficas hasta hoy en día, los chips gráficos y las VRAM se han vuelto más complejas y potentes, pero la configuración estándar se sigue manteniendo.
Primera generación de tarjetas gráficas: terminales y búfer de imagen
La primera generación es la que venía de las terminales de texto, donde se utilizaba un televisor sin receptor de radiofrecuencia para transmitir el texto que se escribía. El nombre que recibían dichas terminales era el de TV Typewriters o máquinas de escribir en la televisión, ya que para una persona de aquellos tiempos era eso.
Su funcionamiento era muy sencillo, una parte de la RAM se utilizaba para almacenar la sucesión de caracteres que íbamos escribiendo. Cada carácter tenía su glifo en forma de mapa de bits guardado en una ROM y en vez de almacenarlos en la RAM lo que hacía la RAM era informarle a la ROM que carácter había que escribir en la salida de vídeo. Para ello se utilizaban una serie de contadores binarios que contaban los tiempos de escaneo vertical y horizontal.
Pero de la misma manera que se pueden escoger caracteres se pueden escoger colores, por lo que algunos de estos chips gráficos primitivos podían dibujar imágenes en pantalla, pero limitadas por la memoria disponible y la paleta de colores, la cual fue evolucionando con el tiempo para mostrar cada vez más definición en una mayor cantidad de píxeles, no obstante se trataba de elementos muy primitivos con los que apenas se podía hacer nada.
Segunda evolución de las GPUs: sprites
Por desgracia la segunda generación no llegó al PC, ya que a principios de los 80 IBM no se había planteado estas para ejecutar videojuegos. ¿El concepto de la segunda generación? Los objetivos móviles o sprites, estos son glifos o mapas de bits que se pueden colocar en cualquier posición en en la imagen.
A principios de los 80 la mayoría de sistemas de 8 bits que tenía la gente en sus hogares hacían uso de un sistema de sprites, ya que la mayoría de su software son videojuegos. Los sistemas de sprites utilizan tablas de atributos para cada sprite que indican la prioridad, si está volteado no, la paleta de colores que utilizan y su posición.
Este sistema se utilizó en consolas de 8 y 16 bits durante casi 15 años antes de dar el salto a los 32 bits. En PC en cambio fue totalmente inédito, lo que influyó por completo a los juegos que salieron para la plataforma durante largos años.
Tercera evolución de las GPUs: listas de pantalla y el Blitter
Las listas de pantalla aparecieron por primera vez en un hardware doméstico a través del ANTIC del ordenador Atari 800. Una lista de pantalla no es más que una serie de órdenes de cómo ha de dibujar el chip gráfico la escena. Hasta el momento lo que se había hecho era copiar una lista de datos en la memoria de vídeo y hacer que el hardware la interpretase.
Pero donde tuvieron su apogeo fue en el Commodore Amiga, a través de su chip gráfico Agnus que en su interior tenía una evolución del ANTIC llamada Copper y un chip llamado Blitter, que revolucionó por completo el funcionamiento. ¿La función del Blitter? El copiar datos de una memoria a otra pero pudiendo modificar estos al vuelo de tal manera que el origen era diferente al destino y todo ello liberando a la CPU.
Antes de la aparición del Blitter, las CPUs solo tenían para ellas el tiempo en el que no se dibujaba la pantalla, con el Blitter una CPU podía pasar a tener todo el tiempo del mundo y su capacidad para manipular los datos gráficos al vuelo dieron un salto de calidad en los PCs.
Cuarta evolución de las GPUs: memoria multipuerto
Pese a que la CPU estaba completamente libre, los chips gráficos tenían el problema de que no podían acceder a la RAM para manipular los datos si se estaba generando la pantalla. Por lo que la siguiente evolución fue el uso de memoria multipuerto. Lo que se traduce en memoria de varios canales. Lo que se traduce en que el adaptador de pantalla y el chip gráfico pueden acceder al mismo tiempo sin que uno tenga que esperar al otro.
Con esto llegamos a la evolución de las tarjetas 2D, a partir de ese punto su evolución no fue arquitectural sino en especificaciones, con la capacidad de dibujar más píxeles por pantalla y con mayor precisión de color.
La aparición del hardware 3D en PC
Las primeras tarjetas 3D no tenían los elementos 2D sino dos elementos de hardware completamente inéditos en el hardware en 2D, los cuales eran los siguientes:
- Unidades de manejo de texturas: las cuales pueden tomar una parte concreta de una imagen guardada en memoria y manipularla. Una unidad de texturas es capaz de coger esa parte concreta de una imagen y rotarla, cambiarla de tamaño e incluso ajustarla para ser colocada en una superficie en 3D. Las unidades de texturas fueron las últimas en aparecer en las estaciones de trabajo para el 3D, pero en cambio en PC de cara a la adopción de los gráficos en 3D fue la primera parte del hardware en ser adoptada.
- Unidades de rasterizado: Las unidades de rasterizado se encargan de convertir los datos 3D basados en vectores en datos cartesianos 2D que se pueden mostrar en pantalla. Este proceso era altamente pesado para las CPUs de la época y su inclusión permitió que el software 3D llegase a los hogares y no fuese necesario utilizar estaciones de trabajo.
Las primeras tarjetas 3D eran un sobrecoste y no tuvieron el éxito esperado pese a su adopción en el mercado de los videojuegos para PC, el motivo era que pedían una tarjeta 2D aparte, pero no tardaron en ser integradas las dos partes del hardware en una sola.
La GPU se completa para llegar a su forma final
La NVIDIA GeForce 256 fue la primera GPU en tener el pipeline 3D al completo, esto significaba que toda la escena en 3D era calculada por la GPU y la CPU solo tenía que crear la lista de pantalla. Fue un cambio importante a partir del cual se han dado el resto de evoluciones desde entonces, las cuales resumidamente han sido las siguientes:
- Unidades Shader: se trata de procesadores basados en la ejecución multihilo, lo que les permite ejecutar programas con los que primero modificaban primitivas gráficas y con el tiempo datos más genéricos. Su evolución llevó a los gráficos a la computación científica e inicialmente se encontraban separados por el tipo de primitiva gráfica, pero luego se unificaron y siguen así desde entonces.
- Aceleradores: los códecs de vídeo, adaptadores de pantalla y demás hardware se integraron dentro de las GPUs durante este periodo. Dejando de ser chips aparte.
- Arrays sistólicos para la ejecución de algoritmos de inteligencia artificial.
- Unidades para acelerar la ejecución del trazado de rayos.
Aunque en los últimos veinte años hemos visto generación tras generación de GPUs, realmente a nivel de arquitectura si descartamos el añadido de nuevas unidades para la IA y el Ray Tracing, lo que hemos visto realmente es una evolución en el que cada vez hay más unidades pero con una arquitectura en común.
Fuente: HardZone