Las CPU NVIDIA «Vera» contienen un error de compatibilidad de hardware PCIe que afecta a las GPU que no son NVIDIA

NVIDIA lanzó recientemente sus CPU «Vera» como SoC independientes disponibles para terceros para competir con los procesadores Intel Xeon y AMD EPYC. Sin embargo, la generación «Vera» parece estar optimizada específicamente para las GPU NVIDIA, ya que el SoC contiene un error de hardware que causa errores cuando se combina con tarjetas gráficas o aceleradores que no son NVIDIA. Si bien las CPU actúan tradicionalmente como dispositivos de uso general que pueden conectar cualquier acelerador de terceros a la plataforma anfitriona, ese no parece ser el caso de «Vera». Específicamente, las GPU de AMD y otros aceleradores de terceros pueden causar problemas, ya que la generación de CPU «Vera» sufre una falla de hardware grave que impide un funcionamiento confiable y una instalación del sistema. El problema surge de cómo los controladores PCIe de las CPU «Vera» generan direcciones de memoria.

Bajo ciertas condiciones, generan direcciones no válidas que interrumpen la comunicación confiable con aceleradores de terceros. Esto ocurre durante las operaciones de escritura de E/S asignadas en memoria PCIe (MMIO) cuando la CPU intenta escribir en regiones MMIO con una habilitación de bytes parcial. El problema se agrava especialmente cuando estas regiones se asignan utilizando el atributo de memoria Arm Normal Non-Cacheable ‘MT_NORMAL_NC’, lo que causa importantes problemas de compatibilidad. Debido a que Arm utiliza una disposición de memoria más relajada para atributos normales que no se pueden almacenar en caché, esto puede introducir errores que resulten en una generación de direcciones incorrecta, corrupción de datos e incluso fallas del dispositivo PCIe en cargas de trabajo con uso intensivo de DMA, como el entrenamiento de IA o simulaciones de HPC a gran escala. Las GPU NVIDIA están codiseñadas teniendo en cuenta las CPU «Vera» y diseños de memoria específicos, por lo que no hay problemas para ejecutar las dos juntas.

Para otros proveedores, NVIDIA puede mitigar este problema con sus kernels de Linux específicos de hardware que incluyen soluciones para tales escenarios. En los NV-Kernels, que NVIDIA mantiene en un repositorio separado para implementar su hardware, hay un parche del kernel de Linux que convierte MT_NORMAL_NC en conversión Device-nGnRE (sin recopilación, sin reordenamiento, reconocimiento temprano), que es una solución de tiempo de ejecución que impone un orden más estricto y coherente con DMApping. Esto se hace para preservar el rendimiento, pero pueden ocurrir casos de latencia más alta. En comparación con la memoria normal que no se puede almacenar en caché, esto puede provocar una degradación del rendimiento en algunas cargas de trabajo sensibles a E/S.

Además, NVIDIA no es el primer fabricante que se enfrenta a este problema. Las CPU basadas en Altra Arm de Ampere Computing experimentan un problema similar: sus controladores PCIe generan direcciones no válidas al escribir MMIO bajo ciertas cargas de trabajo. Ampere soluciona esto con modificaciones del tiempo de ejecución basadas en el kernel de Linux, lo que sugiere que los dispositivos externos Arm pueden manejar la memoria en segundo plano. Sin embargo, hasta el momento no se ha informado de ninguna degradación del rendimiento, lo que indica que este enfoque resuelve eficazmente los problemas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *