Nvidia Streaming Multiprocessor History


El fin de semana pasado pas茅 aprendiendo programaci贸n CUDA y SIMT. Este fruct铆fero tiempo termin贸 con una aceleraci贸n de casi 700 veces de mi "corredor de tarjeta de visita" [1] - de 101 segundos a 150 ms.

Una experiencia tan agradable fue una buena excusa para seguir estudiando el tema y la evoluci贸n de la arquitectura de Nvidia. Debido a la gran cantidad de documentaci贸n publicada a lo largo de los a帽os por el equipo "verde", logr茅 retroceder en el tiempo y caminar brevemente a trav茅s de la sorprendente evoluci贸n de sus multiprocesadores de transmisi贸n.

En este art铆culo consideraremos:

A帽o Generaci贸n Crystal Process Technology Series Tarjeta m谩s potente
=================================================== ===========================
2006 Tesla GeForce 8 G80 90 nm 8800 GTX 
2010 Fermi GeForce 400 GF100 40 nm GTX 480
2012 Kepler GeForce 600 GK104 28 nm GTX 680
2014 Maxwell GeForce 900 GM204 28 nm GTX 980 Ti
2016 Pascal GeForce 10 GP102 16 nm GTX 1080 Ti
2018 Turing GeForce 20 TU102 12 nm RTX 2080 Ti

Callej贸n sin salida


Hasta 2006, la arquitectura de GPU de NVidia se correlacion贸 con las etapas l贸gicas de la representaci贸n API [2] . La GeForce 7900 GTX, controlada por el cristal G71, constaba de tres partes involucradas en el procesamiento de v茅rtices (8 bloques), la generaci贸n de fragmentos (24 bloques) y la combinaci贸n de fragmentos (16 bloques).


Cristal G71. Presta atenci贸n a la optimizaci贸n Z-Cull, que descarta un fragmento que no pasar铆a la prueba Z.

Esta correlaci贸n hizo que los dise帽adores adivinaran la ubicaci贸n de los cuellos de botella del transportador para el equilibrio correcto de cada una de las capas. Con el advenimiento de otra etapa en DirectX 10, el sombreador geom茅trico, los ingenieros de Nvidia enfrentaron la dif铆cil tarea de equilibrar el cristal sin saber qu茅 tan activamente se usar谩 esta etapa. Es hora de un cambio.

Tesla



Nvidia resolvi贸 el problema de la creciente complejidad con la ayuda de la arquitectura Tesla "integrada", lanzada en 2006.

Ya no hab铆a ninguna diferencia entre las capas en el cristal G80. Debido a la capacidad de ejecutar v茅rtices, fragmentos y "n煤cleos" geom茅tricos, el multiprocesador de flujo (Multiprocesador de flujo, SM) ha reemplazado todos los bloques existentes anteriormente. El equilibrio de carga se realiz贸 autom谩ticamente, gracias al reemplazo del "n煤cleo" realizado por cada SM, dependiendo de los requisitos del transportador.

"De hecho, desechamos toda la arquitectura de sombreado NV30 / NV40 y desde cero creamos una nueva con una nueva arquitectura com煤n para procesadores universales (SIMT), que tambi茅n introdujo nuevas metodolog铆as de dise帽o de procesador".

John Alben (entrevista extremetech.com)

Ya no puede ejecutar instrucciones SIMD, los "bloques de sombreado" se convierten en "n煤cleos", capaces de ejecutar una instrucci贸n entera o una instrucci贸n con float32 por ciclo. SM recibe hilos en grupos de 32 hilos, llamados warp. Idealmente, todos los hilos de la misma urdimbre ejecutan la misma instrucci贸n al mismo tiempo, solo para diferentes datos (de ah铆 el nombre SIMT). La Unidad de Instrucci贸n de m煤ltiples subprocesos (MT) se dedica a habilitar / deshabilitar hilos en la urdimbre si su puntero de instrucci贸n (Puntero de instrucci贸n, IP) converge / rechaza.

Dos SFU lo ayudan a realizar c谩lculos matem谩ticos complejos, como la ra铆z cuadrada inversa, sin, cos, exp y rcp. Estos bloques tambi茅n son capaces de ejecutar una instrucci贸n por ciclo, pero como solo hay dos, la velocidad de la deformaci贸n se divide en cuatro. No hay soporte de hardware para float64, los c谩lculos se realizan mediante programaci贸n, lo que afecta en gran medida la velocidad de ejecuci贸n.

SM se da cuenta de su potencial m谩ximo cuando puede ocultar latencias de memoria debido a la presencia constante de warp s despachables, pero tambi茅n cuando el flujo en el warp no se desv铆a (la l贸gica de control lo mantiene en la misma ruta de ejecuci贸n de instrucciones). Los estados de flujo se almacenan en archivos de registro de 4 kilobytes (archivo de registro, RF). Los subprocesos que ocupan demasiado espacio en la pila reducen el n煤mero de subprocesos posibles que pueden ejecutarse al mismo tiempo, al tiempo que reducen el rendimiento.

El cristal insignia de la generaci贸n Tesla fue el G80 de 90 nm introducido en la GeForce 8800 GTX. Dos SM se combinan en un cl煤ster de procesador de textura (TPC) junto con una unidad de textura y un cach茅 Tex L1. Se prometi贸 que el G80 con 8 TPC y 128 n煤cleos genera 345.6 gigaflops [3]. La tarjeta 8800 GTX fue extremadamente popular en un momento, recibi贸 cr铆ticas maravillosas y se enamor贸 de aquellos que pod铆an pagarla. Result贸 ser un producto tan excelente que, trece meses despu茅s de su lanzamiento, sigui贸 siendo una de las GPU m谩s r谩pidas del mercado.


G80 instalado en 8800 GTX. Las unidades de salida de procesamiento (ROP) hacen el suavizado.

Junto con Tesla, Nvidia introdujo el lenguaje de programaci贸n C para Compute Unified Device Architecture (CUDA), un superconjunto del lenguaje C99. A los entusiastas de GPGPU, que agradecieron la alternativa de enga帽ar a la GPU con texturas y sombreadores GLSL, les gust贸 esto.

Aunque principalmente hablo de SM en esta secci贸n, era solo la mitad del sistema. En SM, es necesario transferir instrucciones y datos almacenados en la memoria de la GPU. Para evitar el tiempo de inactividad, las GPU no intentan minimizar las transferencias de memoria utilizando grandes cach茅s y prediciendo c贸mo funciona la CPU. Las GPU aprovechan la latencia, saturando el bus de memoria para satisfacer las necesidades de E / S de miles de subprocesos. Para esto, un chip (por ejemplo, G80) obtiene un gran ancho de banda de memoria utilizando seis buses de memoria DRAM de dos lados.


Las GPU aprovechan las latencias de memoria, mientras que las CPU las ocultan con una gran memoria cach茅 y l贸gica de predicci贸n.

Fermi



Tesla fue un movimiento arriesgado que result贸 ser muy exitoso. Tuvo tanto 茅xito que se convirti贸 en la base de la GPU NVidia durante las pr贸ximas dos d茅cadas.

芦 , , (Fermi , Maxwell ), , G80, [Pascal]禄.

( extremetech.com)

En 2010, Nvidia lanz贸 el GF100, basado en la nueva arquitectura Fermi. Los interiores de su 煤ltimo chip se describen en detalle en la documentaci贸n t茅cnica de Fermi [4] .

El modelo de ejecuci贸n todav铆a se basa en la deformaci贸n de 32 hilos enviados a SM. NVidia logr贸 duplicar / cuadruplicar todos los indicadores solo gracias a la tecnolog铆a de proceso de 40 nan贸metros. Gracias a dos conjuntos de 16 n煤cleos CUDA, SM ahora pudo despachar simult谩neamente dos semi-warp (16 hilos cada uno). A pesar del hecho de que cada n煤cleo ejecut贸 una instrucci贸n por ciclo de reloj, SM pudo esencialmente excluir una instrucci贸n warp por ciclo de reloj (cuatro veces m谩s que la arquitectura Tesla SM).

El n煤mero de SFU tambi茅n ha aumentado, pero no tanto, la capacidad solo se ha duplicado. Se puede concluir que las instrucciones de este tipo no se usaron muy activamente.

Hay soporte de semi-hardware para float64, que combina operaciones realizadas por dos n煤cleos CUDA. Gracias a la ALU de 32 bits (en Tesla era de 24 bits), el GF100 puede realizar multiplicaci贸n de enteros en un ciclo, y debido a la transici贸n de IEEE 754-1985 a IEEE 754-2008, ha aumentado la precisi贸n al trabajar con la tuber铆a float32 usando Fused Multiply -Agregar (FMA) (m谩s preciso que el utilizado en Tesla MAD).

Desde el punto de vista de la programaci贸n, el sistema de memoria integrado de Fermi hizo posible complementar CUDA C con caracter铆sticas de C ++ como un objeto, m茅todos virtuales y excepciones.

Debido al hecho de que los bloques de textura ahora se han convertido en SM, el concepto de TPC ha sido abandonado. Ha sido reemplazado por cl煤steres de procesadores gr谩ficos (GPC), cada uno con cuatro SM. Por 煤ltimo, pero no menos importante, SM ahora est谩 dotado del motor Polymorph, que se ocupa de obtener v茅rtices, transformar la ventana gr谩fica y la teselaci贸n. El buque insignia GeForce GTX 480 basado en el GF100 fue anunciado con 512 n煤cleos y capaz de proporcionar 1,345 gigaflops [5] .


GF100 instalado en la GeForce GTX 480. Tenga en cuenta los seis controladores de memoria que sirven al GPC.

Kepler



En 2012, Nvidia lanz贸 la arquitectura Kepler, llamada as铆 por un astr贸logo, mejor conocido por descubrir las leyes del movimiento planetario. Como de costumbre, la documentaci贸n t茅cnica GK104 [6] nos permiti贸 mirar dentro .

En Kepler, Nvidia mejor贸 significativamente la eficiencia energ茅tica del chip al reducir la velocidad del reloj y combinar la frecuencia central con la frecuencia de la tarjeta (anteriormente, su frecuencia se duplicaba).

Tales cambios deber铆an haber llevado a una disminuci贸n de la productividad. Sin embargo, gracias a una tecnolog铆a de proceso de reducci贸n a la mitad (28 nan贸metros) y al reemplazo del despachador de hardware por uno de software, Nvidia pudo no solo colocar m谩s SM en el chip, sino tambi茅n mejorar su dise帽o.

Next Generation Streaming Multiprocessor (SMX) es un monstruo, casi todos cuyos indicadores se han duplicado o triplicado.

Gracias a cuatro despachadores de urdimbre capaces de procesar una urdimbre completa en un ciclo de reloj (Fermi solo pod铆a procesar la mitad de la urdimbre), SMX ahora conten铆a 196 n煤cleos. Cada despachador ten铆a un despacho doble, lo que permit铆a ejecutar la segunda instrucci贸n en warp si era independiente de la instrucci贸n ejecutable actual. La programaci贸n dual no siempre fue posible porque una columna de 32 n煤cleos era com煤n a dos operaciones de programaci贸n.

Tal esquema complic贸 la l贸gica de programaci贸n (volveremos a esto m谩s adelante), pero gracias a la ejecuci贸n de hasta seis instrucciones warp por ciclo, el SMX proporcion贸 el doble de rendimiento en comparaci贸n con el SM de arquitectura Fermi.

Se afirm贸 que el buque insignia NVIDIA GeForce GTX 680 con un cristal GK104 y ocho SMX tiene 1536 n煤cleos, alcanzando 3.250 gigaflops [7]. Los elementos del cristal se volvieron tan intrincados que tuve que eliminar todas las firmas del diagrama.


GK104 instalado en la GeForce GTX 680.

Preste atenci贸n a los subsistemas de memoria completamente redise帽ados, trabajando con una frecuencia impresionante de 6 GHz. Permitieron reducir el n煤mero de controladores de memoria de seis a cuatro.

Maxwell


En 2014, Nvidia lanz贸 la GPU de d茅cima generaci贸n llamada Maxwell. Como se indica en la documentaci贸n t茅cnica del GM107 [8] , el lema de la primera generaci贸n de arquitectura era "M谩xima eficiencia energ茅tica y rendimiento extraordinario por cada vatio consumido". Las tarjetas se colocaron para "entornos de energ铆a limitada, como computadoras port谩tiles y PC con factor de forma peque帽o (SFF)".

La decisi贸n m谩s importante fue abandonar la estructura Kepler con el n煤mero de n煤cleos CUDA en SM, que no es una potencia de dos: algunos n煤cleos se volvieron comunes y volvieron a funcionar en modo de media deformaci贸n. Por primera vez en la historia de la arquitectura, SMM ten铆a menos n煤cleos que su predecesor: "solo" 128 n煤cleos.

La coincidencia del n煤mero de n煤cleos y el tama帽o de la urdimbre mejor贸 la segmentaci贸n de cristales, lo que result贸 en un ahorro de espacio y energ铆a.


Un SMM 2014 ten铆a tantos n煤cleos (128) como el GTX 8800 completo en 2006.

La segunda generaci贸n de Maxwell (descrita en la documentaci贸n t茅cnica GM200 [9] ) aument贸 significativamente la productividad, al tiempo que mantuvo la eficiencia energ茅tica de la primera generaci贸n.

La tecnolog铆a de proceso se mantuvo en 28 nan贸metros, por lo que los ingenieros de Nvidia no pudieron recurrir a la miniaturizaci贸n simple para aumentar la productividad. Sin embargo, una disminuci贸n en el n煤mero de n煤cleos SMM ha reducido su tama帽o, debido a lo cual se podr铆an colocar m谩s SMM en el chip. En comparaci贸n con Kepler, la segunda generaci贸n de Maxwell duplic贸 el n煤mero de SMM, al tiempo que aument贸 su 谩rea de cristal en solo un 25%.

En la lista de mejoras, tambi茅n puede encontrar una l贸gica de despacho simplificada, que permiti贸 reducir la cantidad de redundancia redundante de despacho y el retraso de los c谩lculos, lo que garantiz贸 un aumento en la optimizaci贸n del uso de la deformaci贸n. Adem谩s, la frecuencia de la memoria se increment贸 en un 15%.

Estudiar el diagrama de bloques Maxwell GM200 ya est谩 empezando a cansar tus ojos. Pero a煤n lo examinamos cuidadosamente. La tarjeta insignia NVIDIA GeForce GTX 980 Ti con un cristal GM200 y 24 SMM prometi贸 3072 n煤cleos y 6.060 gigaflops [10] .


GM200 instalado en la GeForce GTX 980 Ti.

Pascal


En 2016, Nvidia present贸 a Pascal. La documentaci贸n t茅cnica GP104 [11] deja una sensaci贸n de d茅j脿 vu porque el Pascal SM se ve exactamente como el Maxwell SMM. La falta de cambios SM no estanc贸 el rendimiento, porque la tecnolog铆a de proceso de 16 nan贸metros nos permiti贸 colocar m谩s SM y duplicar el n煤mero de gigaflops nuevamente.

Entre otras mejoras importantes se encontraba un sistema de memoria basado en el nuevo GDDR5X. La interfaz de memoria de 256 bits, gracias a ocho controladores de memoria, proporcion贸 velocidades de transferencia de 10 gigaflops, aumentando el ancho de banda de la memoria en un 43% y reduciendo el tiempo de inactividad de las deformaciones.

El buque insignia NVIDIA GeForce GTX 1080 Ti con un chip GP102 y 28 TSM prometi贸 3584 n煤cleos y 11,340 gigaflops [12] .


GP104 instalado en la GeForce GTX 1080.

Turing


Con el lanzamiento de Turing en 2018, Nvidia hizo su "mayor paso arquitect贸nico en diez a帽os" [13] . En Turing SM, no solo aparecieron n煤cleos Tensor especializados con inteligencia artificial, sino tambi茅n n煤cleos para el trazado de rayos (rautracing, RT). Una estructura tan fragmentada me recuerda a la arquitectura en capas que exist铆a antes de Tesla, y esto prueba una vez m谩s que la historia ama la repetici贸n.


Adem谩s de los nuevos n煤cleos, tres caracter铆sticas importantes han aparecido en Turing. En primer lugar, el n煤cleo CUDA se ha convertido en superescalar, lo que permite la ejecuci贸n paralela de instrucciones con n煤meros enteros y de coma flotante. Si encuentra 1996, esto puede recordarle la arquitectura "innovadora" de Intel.

En segundo lugar, el nuevo subsistema de memoria en GDDR6X, compatible con 16 controladores, ahora puede proporcionar 14 gigaflops.

En tercer lugar, las transmisiones ahora no tienen punteros de instrucci贸n (IP) comunes en warp. Gracias a la programaci贸n independiente de subprocesos en Volta, cada subproceso tiene su propia IP. Como resultado de esto, los SM pueden configurar de manera m谩s flexible los flujos de despacho en urdimbre sin la necesidad de convergencia lo m谩s r谩pido posible.

El buque insignia NVIDIA GeForce GTX 2080 Ti con cristales TU102 y 68 TSM tiene 4352 y alcanza 13 45 gigaflops [14] . No dibuj茅 un diagrama de bloques porque se ver铆a como una mancha verde borrosa.

Lo que nos espera a continuaci贸n


Seg煤n los rumores, la pr贸xima arquitectura, llamada Ampere, se anunciar谩 en 2020. Como Intel demostr贸 con el ejemplo de Ice Lake que todav铆a existe el potencial de miniaturizaci贸n utilizando la tecnolog铆a de proceso de 7 nan贸metros, casi no hay duda de que Nvidia lo usa para reducir a煤n m谩s SM y duplicar su rendimiento.


Teraflops / s para cada chip / tarjeta Nvidia (fuente de datos: techpowerup.com).

Ser谩 interesante ver c贸mo Nvidia contin煤a la evoluci贸n de la idea de los cristales que tienen tres tipos de n煤cleos que realizan diferentes tareas. 驴Veremos cristales, todo el estado de los n煤cleos tensoriales o los n煤cleos RT? Curioso.

Materiales de referencia


[1] Fuente: Revisiting the Business Card Raytracer
[2] Fuente: Fermi: la primera arquitectura de computaci贸n de GPU completa
[3] Fuente: NVIDIA GeForce 8800 GTX (techpowerup.com)
[4] Fuente: documento t茅cnico de Fermi (GF100)
[5] Fuente: NVIDIA GeForce GTX 480
[6] Fuente: documento t茅cnico de Kepler (GK104)
[7] Fuente: NVIDIA GeForce GTX 680
[8] Fuente: documento t茅cnico de Maxwell Gen1 (GM107)
[9] Fuente: documento t茅cnico de Maxwell Gen2 (GM200)
[10] Fuente: NVIDIA GeForce GTX 980 Ti
[11] Fuente: documento t茅cnico de Pascal (GP102)
[12] Fuente:NVIDIA GeForce GTX 1080 Ti
[13] Fuente: documento t茅cnico de Turing (TU102)
[14] Fuente: NVIDIA GeForce GTX 2080 Ti

All Articles