Conecta con nosotros
GPU GPU

A Fondo

Qué es una GPU, qué elementos la forman y por qué es tan importante

Publicado

el

La GPU es, sin duda, uno de los componentes más importantes, y más interesantes, de todos los que se utilizan actualmente para dar «vida» a un ordenador. Esas siglas hacen referencia, en inglés, a «unidad de procesamiento gráfico», tres palabras que indican, de forma sencilla y clara, que se trata de un elemento que se ocupa de las tareas gráficas del sistema.

Sin embargo, es importante tener en cuenta que el concepto de GPU que manejamos a día de hoy no es exactamente el mismo que imperaba, por ejemplo, en la década de los noventa, y a su vez, el concepto de aquella época, tampoco encaja con el que se utilizaba, por ejemplo, en los años ochenta. Esto tiene una explicación, y es que la arquitectura la unidad de procesamiento gráfico, y su forma de trabajar, han ido cambiando para adaptarse a la evolución del sector.

En los años setenta y ochenta, los gráficos en 3D tenían un coste tan alto en términos de rendimiento que eran algo prohibitivo, y casi todos los adaptadores gráficos de aquella época estaban limitados al 2D. Técnicas como el «blitting» y el dibujado de «sprites» se combinaban con diferentes efectos para dar forma a trabajos que, en algunos casos, alcanzaban una complejidad importante. Recordad, por ejemplo, las maravillas que podía crear Neo Geo a pesar de estar limitada al 2D.

DOOM, de 1993, a la izquierda, y DOOM 2016, a la derecha.

Evolución de la GPU: del «sprite» al triángulo

Cuando hablábamos de gráficos en 2D, aspectos como el tamaño de los «sprites», la profundidad de color y la resolución eran algunos de los más importantes a la hora de diferenciar el rendimiento que podía ofrecer una GPU en concreto. La aceleración en 2D vivió un gran auge a principios de los años noventa, pero fue el salto al 3D lo que realmente marcó una enorme transición en el concepto de GPU.

Estoy seguro de que nuestros lectores más veteranos se acordarán de lo que supuso la adopción de los gráficos en 3D. El concepto de GPU adquirió un nuevo sentido, pasamos de hablar de «sprites» a centrarnos en los triángulos por segundo, y sí, también era importante valorar otros aspectos, como el texturizado, la iluminación, el filtrado de texturas, el Z-buffering y la cantidad de memoria disponible, pero lo más importante fue ese salto del «sprite» al triángulo.

Los gráficos 3D siempre han utilizado, de forma mayoritaria, formas poligonales, pero el triángulo ha sido una de las más populares, tanto que, durante mucho tiempo, el rendimiento en bruto de una GPU se medía, en gran parte, por el total de triángulos por segundo que era capaz de manejar. La Voodoo 2, de 3DFX, era capaz de mover 3 millones de triángulos por segundo filtrados, mapeados, con búfer Z, mezcla alfa, habilitado para niebla y texturizados. Si hablamos de triángulos planos, la cifra era mucho mayor.

A partir de ahí, la GPU se embarcó en una evolución imparable que nos dejó momentos maravillosos para cualquier amante de la tecnología. Entre los más interesantes, y más importantes, podemos destacar, por ejemplo, el debut de la GeForce 256 de NVIDIA, que supuso la llegada de la primera GPU con soporte de transformación e iluminación por hardware; el lanzamiento de la serie GeForce 3, que contaba con shaders programables; la presentación de la ATI Radeon 9700, que mejoró en gran medida el sombreado de píxeles; y la serie GeForce 8000, que introdujo los motores de sombreado unificados, conocidos popularmente como shaders, y marcó la transición de los pixel y vertex shaders a los sombreadores de geometría.

Quake sin aceleración 3D, y con aceleración 3D.

Si miramos al presente, la última gran evolución que ha vivido la GPU ha venido dada por la especialización, y esta ha estado marcada por un avance importante la coexistencia del rasterizado tradicional con la inteligencia artificial y el trazado de rayos.

Con la arquitectura Volta, NVIDIA introdujo un elemento totalmente nuevo en la GPU: los núcleos tensor, que se dedican a sacar adelante tareas asociadas a la inteligencia artificial. Con Turing, llegaron los núcleos RT, especializados en trazado de rayos. AMD ha adoptado una aproximación similar con las Radeon RX 6000 (arquitectura RDNA 2), pero solo ha implementado hardware especializado en trazado de rayos.

Este pequeño repaso histórico ha sido necesario para contar con un punto de partida que nos permita entender, de una manera sencilla, el punto en el que nos encontramos actualmente, y los enormes avances que hemos conseguido en el mundo de la GPU. Tanto NVIDIA como AMD tienen logros importantes a sus espaldas, y ambas han jugado un papel clave en el sector que nos ha permitido llegar a un punto que, hace unos años, habría sido impensable.

¿Qué es una GPU y por qué es importante? Una mirada más a fondo

Podemos definir a la GPU como especializado que se ocupa de sacar adelante todo lo relacionado con la carga de trabajo gráfico que debe procesador un sistema. A diferencia del procesador, que realiza tareas de propósito general, la GPU se especializa en tareas que son necesarias para crear elementos gráficos, tanto en 2D como en 3D, y está capacitada para realizar una alta cantidad de operaciones de coma flotante por segundo.

Un procesador o CPU carece de ese nivel de especialización, y no está capacitado para trabajar con elementos gráficos. La carga de trabajo que debe afrontar una GPU está formada por tareas muy importantes, que incluyen desde la representación visual más básica, como el escritorio de tu PC, hasta la ejecución de gráficos 3D avanzados en juegos de última generación, pasando, como no, por la decodificación y la aceleración de vídeos en diferentes formatos, el tratamiento del color y las funciones de posprocesado asociados a imágenes, vídeos y otros contenidos multimedia.

Como podemos ver, el papel de la GPU es muy importante, y aunque su forma de trabajar presenta similitudes cuando la comparamos con la CPU, al final debemos tener claro que nos encontramos ante un componente muy distinto. Vamos a detenernos un momento en este tema, ya que nos ayudará a profundizar en la GPU y en su manera de trabajar.

Qué es una GPU

Una GPU tiene una enorme cantidad de núcleos, capaces de paralelizar altas cargas de trabajo.

Un procesador realiza operaciones de propósito general. Para ello, utiliza sus diferentes núcleos, almacena instrucciones y datos que necesita en su memoria caché, y guarda operaciones resueltas en la memoria RAM, lo que le permite volver acceder a esas operaciones cuando las necesita sin tener que volver a procesarlas. Un procesador de alto rendimiento, a día de hoy, cuenta con 8 núcleos.

Una GPU adopta una base similar. Recibe datos e instrucciones de la CPU, cuenta con su propia memoria para guardar determinados elementos (geometría, texturas, shaders, étc), a los que puede acceder cuando lo necesita, sin tener que volver a procesarlos, pero su trabajo se limita a las tareas gráficas, y para afrontarlas recurre un enorme grado de paralelizado.

Anteriormente, hemos dicho que una CPU de alto rendimiento actual puede contar con ocho núcleos. Esos núcleos le permiten paralelizar ocho procesos distintos. Pues bien, una GPU, como la RTX 3080, cuenta con 8.704 shaders o núcleos CUDA, es decir, tiene miles de pequeños núcleos, lo que permite paralelizar cargas de trabajo grandes y complejas, y sacarlas adelante de una forma más eficiente.

Esa sencilla comparación nos ayuda a entender por qué una GPU tiene un potencial tan elevado en operaciones de coma flotante, y por qué son capaces de ofrecer un alto nivel de rendimiento en otros sectores que van más allá del diseño gráfico, del renderizado y del gaming, como por ejemplo la investigación científica, la inferencia, el aprendizaje profundo y el análisis de datos. Son sectores que, por la propia naturaleza de las cargas de trabajo que representan, se resuelven mucho mejor al ser paralelizadas en miles de núcleos pequeños.

En resumen, una GPU es una unidad de procesamiento gráfico con una alta capacidad de paralelizado, capaz de trabajar y de procesar gráficos, y de convertir información y datos en elementos visibles por el usuario, pero que también de sacar adelante tareas que requieran de la realización de una gran cantidad de operaciones concurrentes en paralelo. Una GPU es mucho más que un semiconductor para crear gráficos, es un silicio con un enorme potencial que puede dar mucho de sí en diferentes sectores, como hemos visto.

La GPU es el motor gráfico de cualquier equipo. Sin ella, no podríamos hacer algo tan simple representar el escritorio de Windows 10, por ejemplo, y tampoco podríamos ejecutar juegos 3D o disfrutar de contenidos multimedia en alta resolución. Con todo, es importante tener en cuenta que una GPU solo desarrolla todo su potencial en aplicaciones y tareas que estén preparadas para aprovechar la aceleración a través de GPU, es decir, para paralelizarse en niveles muy elevados.

Una unidad SM basada en la arquitectura Ampere. Podemos ver distintos elementos, como los shaders, las TMUs y los núcleos tensor y núcleos RT.

¿Qué elementos integran una GPU?

Entrar en una descripción detallada al milímetro nos llevaría mucho tiempo, y convertiría este artículo en un texto demasiado extenso y complicado, cosa que, obviamente, no deseo. Por ello, voy a adoptar un enfoque similar al que vimos en nuestro especial dedicado a explicar qué es un procesador, por qué es importante y qué elementos lo forman.

Ya sabemos qué es una GPU, y tenemos claro por qué es importante, así que estamos preparados para ver sus partes más importantes. Como dije al principio del artículo, la estructura de la GPU ha cambiado enormemente con el paso del tiempo, de hecho, hace relativamente poco vivimos otra evolución muy importante que vino motivada por la introducción de hardware especializado para trazado de rayos e inteligencia artificial.

A pesar de todo, existen una serie de elementos comunes que utilizan tanto las GPUs de NVIDIA como las GPUs de AMD, y que son fundamentales para que una GPU pueda desarrollar su trabajo. Nos vamos a centrar en estos para que tengáis una visión completa y realista de los «entresijos» sin necesidad de entrar en complejidades innecesarias.

Qué es una GPU

Una GPU Radeon RX 6000 basada en RDNA 2.

  • Unidades SM o Compute Units: NVIDIA utiliza las primeras, AMD las segundas. Cada unidad integra un conjunto de motores de sombreado, unidades de textura, unidades de rasterizado y, en función de la arquitectura, núcleos especializados para trazado de rayos e inteligencia artificial. Son la base de cualquier GPU.
  • Motores de sombreado: también conocidos como shaders. Se ocupan de realizar la carga de trabajo asociada a tareas tan importantes como la transformación de la geometría, tanto a nivel de color como de sombreado y de otros efectos (iluminación, neblina, reflejos, étc). Con la llegada de Turing, arquitectura utilizada en las RTX serie 20, NVIDIA apostó por los shaders mallados (DirectX 12 Ultimate), y AMD hizo lo propio con RDNA 2.
  • Unidades de rasterizado: más conocidos como ROPs. Realizan el proceso necesario para que una imagen, que ha sido expresada en formato vectorial, sea convertida en un conjunto de píxeles perfectamente ordenados que se escriben en el framebuffer, desde el cual serán transmitidos de forma directa a la pantalla. También llevan a cabo operaciones importantes asociadas, por ejemplo, a la aplicación de filtros y técnicas de suavizado (MSAA, por ejemplo).
  • Unidades de texturizado: también las conocemos como TMUs, por sus siglas en inglés. Estas se ocupan de aplicar un mapeado de texturas a la geometría, es decir, de «vestir» o de poner «piel» a los polígonos que forman los distintos elementos del juego.
  • Núcleos RT: dedicados a acelerar el procesado de la carga de trabajo relacionada con el trazado de rayos. Estos núcleos fueron introducidos en 2018, y se centran en calcular las intersecciones transversales BVH, las intersecciones rayo-triángulo y a las intersecciones de delimitadoras de cuadro.
  • Núcleos tensor: estos núcleos también son algo relativamente nuevo. Solo se utilizan en las tarjetas gráficas NVIDIA basadas en la arquitectura Volta, Turing y Ampere. Están especializados en cargas de trabajo centradas en inferencia, inteligencia artificial y aprendizaje profundo. En gaming, se ocupan de la carga de trabajo que representa aplicar el DLSS 2.0.
  • Bus de memoria: el bus de memoria determina el ancho disponible para que la GPU se comunique con la memoria gráfica. Un bus más grande siempre es mejor, ya que aumenta el ancho de banda, pero resulta más caro y depende, en gran medida, de la velocidad de la memoria gráfica utilizada.
  • Memoria gráfica: no se integra en la GPU, pero juega un papel tan importante que hemos querido incluirla. Su función es, en esencia, muy similar a la que ejerce la memoria RAM con respecto a la CPU. La GPU utiliza la memoria gráfica para guardar determinados elementos y datos gráficos que ya ha procesado, para poder recurrir a ellos cuando los necesite sin tener que volver a procesarlos, es decir, sin tener que repetir ciclos de trabajo. Texturas, geometría, shaders y otros elementos se guardan en la memoria gráfica. Una cantidad insuficiente de memoria gráfica puede limitar el rendimiento de una GPU, y su frecuencia de trabajo también influye, ya que la memoria gráfica más lenta ofrece unas velocidades de acceso (escritura y lectura) inferiores.

Distintos tipos de núcleos en una GPU: la importancia de la especialización.

Otras cosas a tener en cuenta

La GPU es una unidad de procesamiento gráfico que tiene, como hemos podido ver, un hardware altamente especializado, lo que le permite ofrecer un rendimiento muy elevado al trabajar con cualquier tipo de elemento gráfico (geometría, texturas, sombreado e incluso con trazado de rayos). Sin embargo, su rendimiento y su eficiencia varían en función de la arquitectura y del proceso de fabricación que utilice.

Esto quiere decir que una GPU que tenga un mayor número de shaders no tiene por qué ser mejor que otra que cuente con un menor número de aquellos. Por ejemplo, la GTX 780 Ti tiene la friolera de 2.880 shaders, pero utiliza una arquitectura obsoleta (Kepler, lanzada en 2012) y está fabricada en proceso de 28 nm, por lo que rinde menos que una GTX 1060 (basada en Pascal, lanzada en 2016), que suma 1.280 shaders, y es menos eficiente que esta, que viene fabricada en proceso de 16 nm.

Con el lanzamiento de cada nueva arquitectura, tanto NVIDIA como AMD han introducido mejoras importantes a nivel de rendimiento que no siempre han estado ligadas a un aumento del número máximo de shaders, aunque es cierto que, con la llegada de Ampere, la cosa ha cambiado notablemente. Sin embargo, tiene una explicación, y es que NVIDIA ha doblado los motores de sombreado, como os contamos en su momento en este artículo.

Memoria gráfica distribuida alrededor de una GPU.

Por otro lado, no debemos olvidar que el hardware especializado está teniendo un impacto cada vez más grande. Vamos a entenderlo enseguida con un ejemplo muy simple, la GTX 1080 Ti es más potente que la RTX 2060, pero esta última logra superarla en determinados escenarios, gracias a que cuenta con núcleos RT y con núcleos tensor. En Death Stranding, la RTX 2060 ofrece un resultado muy similar a la GTX 1080 Ti moviendo dicho juego en 4K, gracias al DLSS 2.0, y la segunda es incapaz de mover juegos con trazado de rayos de forma fluida, cosa que la segunda sí puede hacer.

La GPU mantiene su esencia, pero como hemos podido ver en este artículo, su evolución ha sido tan grande que su especialización se ha hecho todavía más marcada, y se ha extendido a niveles impensables. Será interesante ver qué nos depara el futuro, y descubrir, sobre todo, si al final somos capaces de dar el salto a un diseño de tipo MCM.

Editor de la publicación on-line líder en audiencia dentro de la información tecnológica para profesionales. Al día de todas las tecnologías que pueden marcar tendencia en la industria.

Lo más leído