Así funciona NVIDIA NVLink, la interfaz de comunicación de GPU

Así funciona NVIDIA NVLink, la interfaz de comunicación de GPU

Josep Roca

NVIDIA lleva más de cinco años utilizando su interfaz NVLink para intercomunicar SoCs, CPUs y GPUs entre si en mercados como el de la automoción y el de los superordenadores. Os vamos a explicar como funciona esta interfaz y porque no se encuentra en el PC.

Uno de los desarrollos más importantes en los últimos años ha sido el de las interfaces externas de intercomunicación para comunicar entre si varios procesadores entre si. Siendo las más destacadas el Infinity Fabric de AMD y el NVIDIA NVLink. ¿Las diferencias entre ambas? El NVLink no se encuentra en PC y su funcionamiento es distinto. Seguid leyendo para saber cuales son las diferencias.

¿Cómo funciona el NVIDIA NVLink?

NVLink

El NVLink es diferente al PCI Express pese a utilizarse para lo mismo. Mientras que el PCI Express es la clásica interconexión cruzada, en el caso del NVLink estamos ante una interfaz de red y por tanto es la implementación de un NoC, el cual se basa en la transmisión de paquetes de la misma manera que ocurre en una red.

NVLink Flits

Cada paquete transmitido se compone de lo que NVIDIA llama Flits, un Flit son 128 bits de datos y hay 18 Flits por paquete de datos. Siendo los primeros Flits los encargados de configurar a donde va cada paquete y cómo se comunican los diferentes elementos con interfaz NVLink.

NVLink enlaces

Independientemente de la versión de la que estemos hablando, el NVLink se basa en 8 líneas full duplex por interfaz, lo que se traduce en que cada cable de interconexión sirve tanto para enviar y recibir datos. Cada interfaz externa NVLink tiene lo que NVIDIA llama enlaces, siendo 4 en la versión 1.0 y 6 en la versión 2.0 de la interfaz.

Al contrario de lo que ocurre con el PCI Express donde cada interfaz se comunica utilizando una sola dirección en ambos sentidos, en el caso del NVLink la interconexión se realiza a nivel de los llamados enlaces, permitiendo que hasta 4 elementos se interconecten entre sí en el caso de la versión 1.0 del estándar y 6 en la versión 2.0.

Los orígenes de NVLink están en el SLI

NVLink

Originalmente inventado por 3Dfx bajo el nombre de Scan Line Interleave para sus 3Dfx, el SLI original se basaba en renderizar una escena haciendo que cada línea de escaneo de la imagen fuese renderizada por una de las dos tarjetas 3D. Esto evolucionó años más tarde al ScanLine Interconnect para conectar dos GPUs a través del renderizado alterno de fotogramas, en el que cada GPU renderiza un fotograma alterno respecto a la otra.

Pero el SLI venía con limitaciones enormes, una de ellas era la falta de coherencia entre ambas GPUs, ya que cada una tenía su propia memoria VRAM separada de la otra, lo que hacía que la VRAM no solo tuviera que duplicarse, sino además que solo se pudiesen unir dos tarjetas totalmente iguales, obligando a configuraciones simétricas de tarjetas gráficas para comunicarse entre ellas.

Debido a que las aplicaciones suelen estar pensadas para comunicarse con un solo procesador de comandos de la GPU, el SLI funciona de tal manera que la primera GPU domina a la segunda, de tal manera que mientras que cuando la GPU subordinada genera el fotograma final este ha de ser copiado a través de un mecanismo DMA hacía la memoria VRAM de la primera GPU, que es la que tiene la salida de vídeo.

¿NVIDIA NVLink como reemplazo del PCIe?

PCI Express

En el PC utilizamos el puerto PCI Express para comunicar la CPU con la GPU, NVIDIA en cambio utiliza el NVLink para comunicar CPU y GPU en ciertos sistemas en vez del PCI Express como es el caso de sus Drive PX basados en sus NVIDIA Tegra donde los SoC para automoción están emparejados con una GPU dedicada de NVIDIA de manera directa.

Otro ejemplo es en los superordenadores con CPU POWER9 de IBM, los cuales tienen implementado  una interfaz NVLink para comunicarse con las GPUs NVIDIA Volta de manera directa. Por lo que tampoco hizo uso de interfaces PCI Express

NVIDIA GRACE

Sabemos además de la combinación del futuro procesador para superordenadores NVIDIA Grace con GPUs de NVIDIA se va a realizar utilizando la versión 4.0 del estándar, por lo que gracias a ello NVIDIA puede tener un ecosistema exclusivo a través de su interconexión propietaria.

Pero para que el NVLink se estandarice para reemplazar el PCI Express se necesitaría que las CPUs en PC hubiesen adoptado dicha interfaz, algo que no se ha producido y la mayoría de sus ventajas respecto al PCI Express ya son traídas tanto por el Compute Express Link como por el Infinity Fabric de AMD.

Si NVIDIA tuviese su propia CPU x86, lo más seguro es que hubiésemos visto el NVLink siendo implementado en el PC y NVIDIA hubiese lanzado duplas de su hipotética CPU x86 y sus GPUs.

¿Por qué es mejor que el PCI Express?

PCI Express

El NVLink de primera generación tiene una velocidad de transferencia de 20 GB/s por dirección y enlace, lo que le permite alcanzar los 160 GB/s de ancho de banda agregado. La versión 2.0 tiene un ancho de banda de 25 GB/s por dirección y enlace, pero sus 6 unidades por interfaz le permiten alcanzar los 300 GB/s de ancho de banda agregado.

Incluso la versión 1.0 del NVLink es superior en ancho de banda al PCI Express, lo que en teoría supondría un mayor consumo energético, pero la interfaz NVLink al contrario de la PCI Express no se ha creado para alimentar tarjetas gráficas y su consumo energético es mucho más bajo que el PCI Express siendo solo de 5.5 W por enlace.

Por lo que en entornos donde cada vatio de consumo es importante como es en el mundo de los superordenadores donde hace pocos años se está empezando a contar el ratio de todo el consumo energético del sistema respecto a la potencia de cálculo total como medida de rendimiento el uso de una interfaz más eficiente no solo en comunicación sino energéticamente es mucho mejor.

Su futuro pasa por interfaces ópticas

NVLink Optico

NVIDIA ha anunciado ya su interés para la creación de una versión óptica de NVLink. Aprovechando una de las principales ventajas de este tipo de interconexión está el hecho de que la señal no se degrada, permitiendo intercomunicar GPUs entre si a una distancia que puede llegar hasta los 100 metros de distancia. ¿La otra ventaja? El consumo por bit transmitido pasa de los 8 Pj/bit a los 4 Pj/bit permitiendo configuraciones de hasta 600 GB/s bajo el mismo consumo y permitiendo aumentar la cantidad de enlaces por interfaz NVLink.