Tarjetas gráficasTutoriales

Stream Proccesors ¿Qué son y en que se diferencian de los CUDA Cores?

Referirnos a Stream Proccesors o CUDA Core significa hablar directamente de tarjetas gráficas y su rendimiento, más núcleos igual a más rendimiento. Esto lo tenemos más o menos claro, pero ¿son realmente lo mismo? Pues depende de cómo lo veamos, si es a nivel externo o interno, aunque esto quien realmente lo sabrá serán los ingenieros que día a día diseñan y crean estas maravillas llamadas GPU.

Stream Proccesors

Nosotros nos quedaremos en un nivel más cercano al usuario como es lógico, pues los secretos de cada arquitectura solamente las conocen sus creadores. Aunque podemos sacar algunas diferencias entre los poderoso fabricantes AMD y Nvidia en este tipo de unidades de procesamiento, cómo trabajan y con que elementos forman equipo para ser capaz de darnos esos impresionantes gráficos que tienen los juegos actuales. ¿Empezamos?

Qué son los Stream Proccesors

Los Stream Proccesors, SP o Procesadores de Flujo en español son uno de los elementos cruciales en la arquitectura de una tarjeta gráfica, o mejor dicho en su GPU (Graphics Proccessing Unit). Al igual que las CPU de nuestro equipo están formadas (entre otras cosas) por los núcleos de procesamiento, las GPU también tienen sus propios núcleos, una vez más junto a otras partes que también conoceremos.

Stream Proccesors

Los Stream Proccesors también son conocidos con el nombre de Shaders, EUs, SP o como lo hace Nvidia: CUDA Cores o Núcleos CUDA por estar asociados a la plataforma CUDA por la que la marca verde optó para seguir el desarrollo de sus procesadores gráficos. Todo comenzó en 2006 con la plataforma AMD FireStream parala línea de productos Radeon, la cual se enfocaba totalmente en el Stream Proccesor, posteriormente denominada FirePro.

La función de los procesadores de flujo es la de procesar las instrucciones que entran a la GPU, el procesador que da forma a una tarjeta gráfica. Estas instrucciones estarán íntegramente relacionadas con los gráficos y su renderizado, encargándose de dibujar los modelos 3D, generar la iluminación, sobras y objetos de un escenario. Para ello se basa totalmente en la computación paralela, haciendo que los Stream Proccesors que componen una GPU trabajen juntos para completar la tarea.

Stream Proccesors
Diagrama GPU AMD Radeon RX 6000

El nombre genérico de los Stream Processors será simplemente píxel pipelines o canalizadores de píxeles. Otro nombre acertado para generalizar será el de ALU (Unidad Aritmético-Lógica) al realizar básicamente operaciones matemáticas en coma flotante. Estas instrucciones en coma flotante se denominan FP16 cuando el número es de 16 bits de longitud, FP32 cuando es de 32 bits y FP64 cuando es de 64 bits, el máximo disponible.

Funcionamiento de los Stream Proccesors

Stream Proccesors
Diagrama GPU Nvidia RTX 30

Fotograma a fotograma, los Stream Proccesors generan la imagen que luego veremos en pantalla. Las tareas que realiza serán el renderizado de objetos, sombreado, efectos 3D y detalles en profundidad de la imagen. Mientras más haya y más capacidad tengan, mayor cantidad de cuadros podrán generar por unidad de tiempo, lo que conocemos como FPS o Fotogramas por Segundo.

El funcionamiento en realidad no será muy distinto al de una CPU normal, siendo de forma muy básica y resumida el siguiente:

  1. Llegan los datos desde la RAM para ser procesado y se almacenan en la memoria VRAM
  2. Esta instrucción puede ser directamente en el motor gráfico o de la CPU si tiene que ver con las físicas
  3. De la memoria VRAM pasa a la memoria caché de la GPU, existiendo una cierta cantidad de caché por cada CU o SM, actualmente 128 KB en Nvidia y AMD
  4. En función del tipo de instrucción que sea, se dirigirá a los Stream Proccesors, RT Core o Tensor Core en el caso de Nvidia
  5. Finalmente se procesa la instrucción de forma paralela a muchas otras en la GPU para generar el cuadro de imagen

Stream Proccesors

La idea siempre es tener la mínima cola de instrucciones posible dentro de la GPU, lo que se conoce como Render Latency. Mientras menor sea la resolución de la imagen a procesar y menor cantidad de información tenga el escenario, mayor cantidad de cuadros se podrán procesar.

La cantidad de procesadores de flujo determina la potencia de la GPU, y cuanta más cantidad tengamos, mayor será la potencia, y obviamente el precio de la tarjeta gráfica. La cantidad de memoria VRAM será importante cuando tenemos un escenario de gran profundidad, en donde existe mucha información que procesar.

Diferencias entre un Stream Proccesor vs CPU Core

Todos pensamos en un procesador cuando hablamos de núcleos, pero Stream Proccesors y CPU Cores no serán para nada lo mismo, y la clave precisamente está en el concepto de computación paralela.

Stream Proccesors
Diagramas GPU Radeon RDNA 2 vs APU AMD Ryzen Renoir

Mucho antes que las CPU, ya existía el concepto de computación paralela en las tarjetas gráficas. Las tareas que debe realizar una CPU son muy distintas a una GPU, siendo multitud de instrucciones de muchos tipos, distintos programas, sistemas operativos, etc. Por ello deben ser núcleos de gran tamaño, con muchas unidades funcionales en su interior preparadas para “cualquier cosa”, y a una enorme frecuencia de reloj para hacerlas lo más rápido posible.

En una GPU solamente se trata de gráficos. Traduciendo esto a computación, serán básicamente cálculos en coma flotante, una y otra vez, y en grandes cantidades. Imaginad la cantidad de información que se debe procesar para forma una imagen 3D en movimiento. Serán instrucciones de cálculo muy sencillas pero en grandes cantidades por ciclo, y la paralelización será crucial.

Los Stream Proccesors estarán presentes en mucha mayor cantidad que los núcleos de CPU, más sencillos, más pequeños y trabajando a menor frecuencia para procesar siempre el mismo tipo de instrucciones. Pero deben ser muchos más para generar la imagen, iterando una vez y otra el cálculo para generar el movimiento de la imagen, las sombras y la luz.

Stream Proccesors vs CUDA Cores

Stream Proccesors

Los CUDA Cores serán básicamente los sombreadores que utiliza Nvidia para sus tarjetas gráficas, es decir, sus Stream ProccesorsStream Processors vs CUDA Cores (ver). La función que desempeñan será prácticamente la misma, cambiando el nombre simplemente por motivos corporativos.

En la creación de GPU, Nvidia se decantó por la plataforma CUDA (Compute Unified Device Architecture). Basada en la computación paralela, también será el modelo de interfaz de programación (API) de Nvidia. Se trata básicamente de la forma en la que se comunican los núcleos de la GPU con la API para trabajar con las instrucciones de gráficos.

Stream Proccesors

Las diferencias a nivel interno no las conocemos, así que las diferencias entre Stream Proccesors y CUDA la determinará la arquitectura que utilice cada GPU. En la actualidad encontramos la arquitectura RDNA 2 de AMD y Ampere de Nvidia. Debido a que son arquitecturas totalmente distintas y de distintos fabricantes, los SP y CUDA no son ni mucho menos equivalentes, así que no podemos comparar una tarjeta Nvidia y AMD solo por el número de núcleos. Ni siquiera se deben comparar tarjetas del mismo fabricante que tengan distintas arquitecturas, pues el IPC en ellas cambiará generación tras generación.

Stream Proccesors

A nivel interno, se conoce que los procesadores de flujo de AMD cuentan con una mejor optimización en lo que a complicación de instrucciones se refiere. Esto no es una desventaja para Nvidia si hablamos de desarrolladores de juegos, pues CUDA es una plataforma mucho mas atractiva de cara a la programación por contar con más bibliotecas, trozos de código y recursos de creación.

Al tener una orientación un poco más orientada a la creación, el compilador de Nvidia hace una menor optimización de las tareas, asignando éstas a los núcleos en función del tiempo de ejecución. Y lo cierto es que le funciona bien, pues por ahora hay más juegos con funciones exclusivas de Nvidia que de AMD, aunque la marca roja poco a poco gana terreno. Por otro lado, los Stream Proccesors son núcleos más pequeños, están mejor optimizados en tareas, por ello está más que demostrado que son mejores y más estables en tareas de minería de criptomoneda.

Stream Proccesors y CUDA en arquitecturas actuales

Las arquitecturas actualmente operativas en el mercado de tarjetas gráficas para juegos (dejando de lado los gráficos integrados) serán RDNA 2 en el caso de AMD y Ampere en el caso de Nvidia.

Stream Proccesors

Stream Proccesors en arquitectura AMD

Intentaremos explicar de forma muy simple las principales características que implementa la arquitectura RDNA de AMD en sus tarjetas gráficas, sustituyendo a GCN presente dos generaciones atrás.

Stream Proccesors Stream Proccesors

En las GPU RDNA 2 de AMD contamos con una GPU con transistores de 7 nm formada por Unidades de Cómputo (CU), digamos como núcleos principales. Dentro de cada CU nos encontramos con 64 Stream Proccesors, así que una GPU como la RX 6900 XT cuenta con 80 CU, significa que tendrá 5120 SP en su interior. Una de las mejoras más importantes en esta arquitectura es que se implementan no una, sino dos unidades escalares y programadores para duplicar la capacidad de instrucciones por ciclo respecto a GCN.

La arquitectura también se simplifica y mejora la gestión de las unidades de computación y las instrucciones. Finalmente, en RDN2 se introducen los aceleradores de rayos, concretamente uno por cada CU. Consiste en unidades computacionales que procesan los rayos de luz y cómo inciden estos sobre los objetos simulando la realidad. Por los demás el esquema es similar, aunque se producen cambios profundos en la memoria caché de la tarjeta para mejorar el rendimiento.

La configuración de memoria consiste en la memoria VRAM principal con chips de tipo GDDR6, y un bloque denominado Infinity Cache de 128 MB compartido. Más cercana a los núcleos, tenemos una caché L2 de 4 MB que se conectará con el motor de sombreado (Shader Engine) y con el procesador de comandos como núcleo central de la GPU. Una memoria caché L1 de 128 KB se ubicará en cada uno de los motores de sombreado con acceso exclusivo a cada banco de caché L2. Aún quedará un nivel L0 de caché con 32 KB ubicada en cada unidad de computación que sería como una especie de caché L1 para una CPU.

CUDA Cores en arquitectura Nvidia

La arquitectura Ampere es la que actualmente opera en la marca verde, la cual se basa en un proceso de fabricación de 8 nm frente a los 7 nm de AMD. En esta la GPU estará formada por SM o Stream Multiprocessors, que vendrán a ser el equivalente de los CU en AMD.

Stream Proccesors
El multiprocesador de transmisión (SM) GA100

En la imagen que vemos arriba tenemos lo que sería un SM, el cual está compuesto por 128 CUDA Cores de 11ª generación, en lugar de los 64 que lleva AMD. Esto lo convertirá en una unidad de computación de mayor tamaño, además introduciendo un total de 4 núcleos llamados Tensor Cores que no tienen las GPU de AMD. Su función será la de realizar cálculos matemáticos más complejos relacionados con inteligencia artificial y aprendizaje automático para DLSS. En AMD esta tarea la realizan también los SP. Por cada SM también existe un RT Core con la misma función de procesar rayos de luz, siendo más potente que el equipamos en las tarjetas AMD.

Stream Proccesors
Operaciones de A100 Tensor Core en comparación con V100 Tensor Core y operaciones estándar para diferentes tipos de datos

Esto hace que por ejemplo una Nvidia RTX 3090 cuente con 10496 CUDA Cores en sus 82 SM, poniendo de manifiesto que la cantidad es muy superior que en AMD. Queda aquí claro que la potencia no es comparable por la cantidad de SP, pues una tarjeta no es el doble más potente que otra. La distribución de memoria caché es bastante más simple, con una VRAM principal GDDR6, mientras que en el interior tendremos un nivel L2 con 512 KB por cada unidad de control, un nivel L1 de 128 KB por cada SM y un nivel L0 por cada complejo CUDA.

Cómo saber cuántos Stream Proccesors o CUDA Cores

No queremos finalizar este post sin mostrar cómo podemos conocer las características de nuestra tarjeta gráfica. De esta forma podemos obtener más información para el rendimiento en juegos de los distintos modelos de cada fabricante.

Stream Proccesors

Stream Proccesors

Será tan simple como descargar GPU-Z en la versión más actual posible y ejecutarlo. En la esquina inferior derecha tenemos un desplegable para elegir la tarjeta en el caso de que tengamos más de una, por ejemplo, gráficos integrados de la CPU y tarjeta gráfica dedicada.

La aplicación nos dará toda la información técnica importante de la tarjeta, encontrando la cantidad de núcleos en el apartado Shaders. A modo de resumen debemos tener en cuenta las siguientes cuestiones a la hora de comparar una tarjeta con otra:

  • Además de Shaders, las tarjetas también cuentan con RT Cores o Tensor Cores en el caso de Nvidia, dependiente de la arquitectura y la generación su IPC varía, mejorando cuanto más nueva sean.
  • Las frecuencias de reloj son diferentes en cada fabricante, y no es un indicativo de mayor o menor potencia.
  • La cantidad de memoria VRAM también es importante para evaluar el rendimiento de la tarjeta en juegos o renderizado. De igual forma, la arquitectura de los chips, GDDR6, GDDR6X, HBM, etc. y el ancho de bus deben ser tenidos en cuenta.

Al final, la forma más rápida y certera de evaluar el rendimiento de una tarjeta gráfica es probarla en los juegos y hacer benchmarks. Solo de esa forma veremos hasta dónde es capaz de llegar con un juego o programa según la tasa de FPS o tiempo de renderizado que entregue.

O también visitando las diferentes reviews de tarjetas gráficas en donde se compara su rendimiento

Conclusiones finales

Confiamos en haber explicado lo suficiente bien que son los Stream Proccesors y CUDA Cores de las tarjetas gráficas actuales, y más o menos cuál es su funcionamiento y diferencias. Como siempre, con cada iteración y nueva arquitectura los fabricantes van ganando eficiencia y potencia de cálculo, repercutiendo en la mejora de calidad y motores gráficos cada vez más realistas.

No olvidemos que todas las GPU, incluidas las integradas en procesadores AMD e Intel, así como los procesadores de dispositivos portables también cuenta con shaders. La clave está en hacerlos cada más pequeños para introducir más, aumentando la paralelización de procesos y dándonos mayor FrameRate.

Os dejamos con más artículos relacionados por si os interesan:

Para ti, que es lo más importante de una tarjeta gráfica (no vale decir que haya stock…ya lo sabemos…)

José Antonio Castillo

Graduado en Ingeniería en Tecnologías Industriales. Amante de la informática, el gaming y casi cualquier deporte de motor.
Los datos de carácter personal que nos facilite mediante este formulario quedarán registrados en un fichero de Miguel Ángel Navas Carrera, con la finalidad de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento del interesado. Si no se acepta no podrás comentar en este blog. Puedes consultar Política de privacidad. Puede ejercitar los derechos de acceso, rectificación, cancelación y oposición en [email protected]
Botón volver arriba