Vamos a explicar cómo funcionan estos Streaming Multiprocessor de NVIDIA, los cuales han cobrado protagonismo ante la llegada de las RTX 40. Existen desde hace una década y estableceremos las diferencias con otras piezas de hardware muy similares en GPUs.
Toca hablar de arquitecturas y de la importancia de ciertas piezas hardware para darle coherencia al todo. Ya hemos hablado de los Stream Processors y de los CUDA Cores, pero ahora toca subir de nivel para hablar de los SM que NVIDIA utiliza en sus tarjetas gráficas, ¡vamos allá!
Índice de contenidos
El SM o Streaming Multiprocessor es un procesador con propósito general que tiene una frecuencia baja y un caché pequeño. Su misión es ejecutar varios bloques de hilos en paralelo; en cuanto uno de sus bloques de hilos completa la ejecución, se pasa al siguiente bloque en serie.
Dentro de un SM encontramos:
La GPU programa bloques de hilos a un SM, y todos los hilos dentro de un bloque deben residir en solo SM. Cada bloque se divide en fragmentos de 32 subprocesos consecutivos llamados warps.
Digamos que un SM puede tener hasta 8 bloques de hilos en total, por lo que, cada vez que un SM ejecuta un bloque de hilos, se ejecutará todo en ese SM al mismo tiempo. Si necesitamos liberar memoria de un bloque de hilos, es esencial que todo el conjunto de hilos de ese mismo bloque haya terminado la ejecución.
Más abajo, veréis que el Streaming Multiprocessor ha evolucionado conforme han ido sucediéndose las arquitecturas y generaciones de tarjetas gráficas NVIDIA. Igualmente, la idea básica es la siguiente:
Hemos dicho que un bloque de hilos se divide en fragmentos de 32 subprocesos llamados warps, y éstas «deformaciones» (es su traducción al español) ejecutan la misma instrucción. Los warps son elegidos en serie por el SM y cada uno ejecuta la misma instrucción en un momento determinado (SIMD).
Dejando al lado los bloques, cada warp tiene un planificador de warp llamado Warp Scheduler. Cada warp permanece en el planificado que se le asigne, aunque el programador puede cambiar entre warps concurrentes.
Un warp se detiene cuando la siguiente instrucción no se puede ejecutar en el ciclo siguiente, así que el planificador deberá cambiar a un warp que sí puede ejecutar la instrucción.
Normalmente, el hardware se inventa para solucionar un problema, y el problema lo tenía NVIDIA en 2005 con las primeras GeForce GTX, concretamente con las 7900 GTX. Dicho modelo venía potenciada por la GPU G71, cuya estructura se ordenaba en 3 secciones:
Digamos que se trata de una estructura de 3 capas, y para explicarlo me voy a apoyar en el gráfico de Fabien Sanglard, quien lo explica a la perfección.
Los diseñadores tenían un problema porque no sabían cómo ubicar el cuello de botella con el fin de equilibrar cada capa. A esto hay que añadirle la salida de DirectX 10 con los sombreadores de geometría, así que había que hacer un cambio de arquitectura importante.
NVIDIA decidió resolver el problema con la arquitectura Tesla, eliminando la distinción entre capas: nace el Streaming Multiprocessor (SM). Éste sustituiría todas las unidades anteriores (procesamiento de vértices, generación de fragmentos y fusión de fragmentos) ejecutando todas ellas sin distinción.
Eso sí, ya no habría compatibilidad con SIMD, sino que las unidades de sombreado serían núcleos con capacidad para una instrucción FP32 por reloj. El SM recibe hilos en grupos de 32 que se llaman warps, y todos éstos ejecutarán la misma instrucción a la vez, solo cambiando los datos.
A raíz de esto, entra en juego la MT (Multi-threaded Instruction Unit) cuya misión es habilitar o deshabilitar hilos en un warp, si es que el IP se une o se divide. De momento, no había soporte de hardware para FP64, sino que se hacía a través de software.
El Streaming Multiprocessor se ve por primera vez en la gama GeForce 8800 GTX a través de la GPU G80, cuyo proceso era de nada más y nada menos 90 nm. Esta GPU llevaba 2 SM agrupados en un clúster de procesador de texturas (TPC), y eso que la GPU tenía 8 TPC: 128 CUDA cores.
NVIDIA remataba esto con el lenguaje de programación Compute Unified Device Architecture (CUDA). De aquí en adelante, las mejoras que vimos en los SM fueron las siguientes:
Te recomendamos echar un vistazo a la historia de NVIDIA
Sabemos que la nomenclatura no ha sido escogida con buena gana porque AMD denomina a sus núcleos Stream Processors. Éstos no equivalen a un Streaming Multiprocessor, sino a los CUDA Cores, que están dentro del SM.
¿Tiene algo similar AMD? Según comentamos en las AMD Radeon RX 7000, las RX 7900 XT tendrán arquitectura MCM y tendrían 2 módulos denominados GCD y MCM. Nos falta información sobre qué hace cada uno en concreto, pero una filtración mostró que dentro de los GCD existen shader engines, que no dejan de ser sombreadores.
Puede que el GCD o el MCM equivalga a un Streaming Processor, pero no nos podemos aventurar a afirmar que así es.
Esperamos que os haya sido de ayuda esta información, y si tenéis alguna duda, podéis comentar abajo para que os respondamos.
Te recomendamos las mejores tarjetas gráficas del mercado
¿Conocíais estos bloques?
ASUS ha logrado batir varios récords mundiales con una RTX 5090 overclockeada a 3.5 GHz,…
En esta guía te voy a explicar paso a paso cómo compartir películas con un…
AMD confirma que el modelo de referencia de la Radeon RX 9070 XT no se…