¿Por qué la memoria de tu GPU es más rápida que la de tu CPU?

Si miramos las especificaciones de una tarjeta gráfica cualquiera, sea de la marca que sea y tenga la arquitectura que tenga, y a no ser que estemos mirando una de gama extremadamente baja, lo normal es encontrarnos con el uso de memoria como VRAM con un ancho de banda mucho más alto que las tradicionales DDR y LPDDR utilizadas como RAM para la CPU. Os explicamos a que se debe esto.

Lo primero que se tiene que tener en cuenta es que una GPU renderiza decenas de veces por segundo, imágenes o fotogramas con una enorme cantidad de píxeles en pantalla. Hasta el punto de llegar a decenas de millones de píxeles que se dibujan en una pantalla por segundo delante de nuestros ojos.

aw 25 360

Pero, antes de que esos píxeles lleguen a la pantalla necesitan dibujarse en un búfer de imagen, la cual es una parte de la VRAM que por un lado almacena la imagen ya generada por la GPU y por otro lado la que en ese momento está generando la GPU. Dicha imagen es compuesta cuando la GPU al final del Pipeline 3D escribe los píxeles en el búfer de imagen.

Debido a que esa ingente cantidad de píxeles se ha de dibujar con la suficiente celeridad hace falta que la memoria de la GPU tenga un buen ancho de banda.

Pixel Shaders, ROPS y Ancho de Banda de la VRAM

VRAM NVIDIA

La penúltima etapa del pipeline 3D son los Pixel Shaders, los cuales siempre exportan el resultado de sus programas a los ROPS, la única pieza en el pipeline gráfico con la capacidad de escribir a memoria. Ya sea a la caché de último nivel, en el caso de las arquitecturas gráficas más nuevas, como a la propia VRAM que es el caso general.

Los fabricantes de GPU siempre dan en las especificaciones la cantidad de ROPS que tienen sus GPU, por ejemplo la NVIDIA RTX 3090 tiene un total de 112 ROPS, lo que se traduce en que puede escribir en el búfer de imagen hasta 112 píxeles por ciclo de reloj. La GPU en su velocidad base funciona a 1395 MHz, por lo que mientras funcione a esa velocidad escribirá en el búfer de imagen 156.240.000.000 píxeles en total, si cada uno de ellos contiene 32 bits de información, 8 bits por componente, de media, entonces será necesario un ancho de banda de 625 GB/s.

El enorme ancho de banda que necesitan las GPU para funcionar ha forzado la implementación de mecanismos de compresión del búfer de imagen como es la implementación del Delta Color Compression, las cuales comprimen la información, reduciendo el impacto en el ancho de banda.

Renderizado por tiles, ancho de banda y VRAM

Tile Rendering

Debido a que las GPU que renderizan por tiles lo que hacen es dividir el búfer de imagen en pequeños búferes de imagen que caben dentro de una memoria interna de una GPU estos no requieren memorias VRAM con un alto ancho de banda, las cuales no son viables en dispositivos de bolsillo como la GDDR6.

Este es el motivo por el cual en los dispositivos PostPC que utilizan este tipo de GPUs como tabletas y smartphones, no tienen problemas de ancho de banda a la hora de renderizar, ya que sus GPU renderizan por tiles. No obstante la implementación del Tile Rendering se traduce en complicar el hardware sacrificando potencia bruta al tener un pipeline de renderizado algo más complicado.

Si se combinará un Tile Renderer con una memoria VRAM de alto ancho de banda, ya sea HBM2 o GDDR6, el resultado sería que una parte no dejaría sacar todo el provecho de la otra, ya que los beneficios de una anularían a los de la otra.

El ancho de banda que requiere la VRAM limita los SoC para PC

Ryzen monolitico

Los SoC para PC donde una GPU está integrada en el mismo chip que la CPU suelen ser muy baja potencia. ¿Qué es lo que impide a Intel o AMD lanzar SoCs con GPUs en su interior más potentes? El motivo es que CPU y GPU comparten el mismo tipo de memoria, normalmente DDR o LPDDR.

Debido al limitado ancho de banda en comparación con otras memorias más especializadas para gráficos no se puede escalar más allá la potencia de las GPU integradas. Este es el motivo por el cual las consolas de videojuegos pese a utilizar SoC utilizan memorias como GDDR5 y GDDR6, ya que si no se utilizará esta memoria no sería posible integrar las potentes GPU que integran.

La otra cara del ancho de banda en la VRAM, el texturizado

Cyperpunk Gameplay

La otra función en la que una GPU necesita utilizar ancho de banda a grandes cantidades es en el texturizado, donde las texturas se encuentran en la VRAM. La misma cantidad de píxeles que luego se van a dibujar en el búfer de imagen se han de texturizar y lo habitual es que por cada píxel en pantalla se van a hacer varias peticiones a la VRAM. Es por ello que el ancho de banda también está relacionado con el texturizado.

Tampoco podemos olvidar que las unidades de texturas están incluidas en los núcleos reales de la GPU, o unidades shader, y por tanto el ancho de banda está directamente relacionado con la configuración que tiene la GPU. La cual obviamente escalará con la cantidad de píxeles que vaya a dibujar, por eso AMD y NVIDIA venden sus tarjetas según la resolución a la que van a renderizar y en diferentes gamas, ya que no todos los monitores que hay en el mercado son iguales.

Este el motivo por el cual no vemos tarjetas gráficas de gama baja con la misma cantidad que las de gama alta, no es solo una cuestión de costes de fabricación.