La expansión de CUDA a RISC-V aborda un problema fundamental en la computación distribuida y heterogénea: la interoperabilidad eficiente entre unidades de procesamiento gráfico (GPUs) y arquitecturas de CPU diversas. Históricamente, CUDA ha estado ligada a x86-64 y, más recientemente, a aarch64, limitando la elección de CPU para sistemas que dependen fuertemente de la aceleración por GPU. La adopción de RISC-V, una arquitectura de conjunto de instrucciones (ISA) abierta y modular, representa un movimiento estratégico para Nvidia para ampliar su ecosistema y potencialmente reducir la dependencia de ISAs propietarias.

Este esfuerzo no es trivial, ya que requiere que RISC-V evolucione más allá de sus implementaciones actuales de bajo consumo o embebidas hacia un perfil de servidor robusto. La tesis central es que, para que CUDA funcione eficazmente, las plataformas RISC-V deben converger en un conjunto de características de hardware que ya son estándar en entornos de servidor x86-64 y aarch64, como la coherencia de caché a través de PCIe y la gestión avanzada de la plataforma. Este alineamiento es crucial para mantener el rendimiento y la complejidad de desarrollo de software en niveles aceptables para Nvidia.

Arquitectura del Sistema

La integración de CUDA en RISC-V se centra en la compatibilidad a nivel de plataforma, más que en cambios fundamentales en la arquitectura interna de CUDA. Los componentes clave de esta integración incluyen:

1.  CPU RISC-V RVA23 y Especificaciones de Servidor: Nvidia exige CPUs que cumplan con la especificación RVA23 y las especificaciones de SoC y plataforma de servidor de RISC-V. Esto implica características como RAS (Reliability, Availability, and Serviceability), un procesador de seguridad especializado y otras funcionalidades de línea base esenciales para entornos de servidor.

2.  ACPI (Advanced Configuration and Power Interface): Es un requisito crítico para la gestión de hardware, energía y rendimiento. ACPI permite al software descubrir las capacidades del hardware y gestionar el estado del sistema. La reciente adición de soporte ACPI para RISC-V en el foro UEFI y la especificación RISC-V BRS (Boot and Runtime Services) son pasos fundamentales para cumplir con este requisito.

3.  Coherencia PCIe: Nvidia exige coherencia de caché a través de PCIe. Esto es vital para evitar problemas de consistencia de memoria donde los datos modificados en las caches de la CPU no son visibles para los motores DMA de la GPU, o viceversa. Sin coherencia PCIe, el software CUDA tendría que realizar invalidaciones explícitas de caché, lo que aumentaría la complejidad y reduciría el rendimiento. Este requisito se alinea con el patrón de diseño de memoria compartida coherente en sistemas heterogéneos.

4.  Comunicación PCIe Peer-to-Peer (P2P): Esta capacidad permite que dos dispositivos PCIe (ej. dos GPUs o una GPU y otro acelerador) se comuniquen directamente sin pasar por la memoria principal del CPU. Esto reduce la latencia y el ancho de banda del bus de memoria del CPU, mejorando significativamente el rendimiento en cargas de trabajo de computación distribuida como las de machine learning. La ausencia de P2P forzaría el uso de la memoria del CPU como intermediario, introduciendo sobrecarga y complejidad de sincronización.

Además de estos, Nvidia también considera la compatibilidad con extensiones vectoriales de RISC-V para optimizaciones de rendimiento, como el uso de predicación para evitar bifurcaciones costosas. Para NVLink Fusion, los requisitos se extienden a la compatibilidad con frameworks de software como DOCA y NCCL, lo que implica una integración más profunda a nivel de hardware y software para permitir que CPUs personalizados (incluidos RISC-V) utilicen la interconexión NVLink C2C de Nvidia.

Flujo de Datos con Coherencia PCIe entre CPU y GPU

  1. 1 CPU Write CPU escribe datos en memoria, potencialmente en su caché.
  2. 2 DMA Request (GPU) GPU inicia una solicitud DMA para leer datos.
  3. 3 PCIe Coherency Sistema de coherencia asegura que la GPU lea la versión más reciente de los d...
  4. 4 GPU Compute GPU procesa los datos.
  5. 5 DMA Write (GPU) GPU escribe resultados en memoria.
  6. 6 CPU Read CPU lee resultados, sistema de coherencia asegura que lea los datos actualiza...
CapaTecnologíaJustificación
compute RISC-V RVA23 CPU Procesador anfitrión para la GPU, ejecutando el software de control de CUDA. vs x86-64 CPUs, aarch64 CPUs Debe adherirse a las especificaciones de SoC y plataforma de servidor de RISC-V, incluyendo RAS y seguridad.
networking PCIe (Peripheral Component Interconnect Express) Bus de interconexión de alta velocidad entre CPU y GPU, y entre GPUs. Se requiere coherencia y P2P. vs Otros buses de interconexión propietarios (ej. CXL, Infinity Fabric) Coherencia PCIe obligatoria para consistencia de memoria; P2P para transferencias directas entre dispositivos.
orchestration ACPI (Advanced Configuration and Power Interface) Estándar para la gestión de energía, rendimiento y configuración de hardware a nivel de sistema operativo. vs Device Tree (común en sistemas embebidos) Soporte ACPI para RISC-V ratificado en UEFI y BRS.
compute Nvidia GPU (CUDA-enabled) Unidad de procesamiento gráfico para aceleración de cómputo, especialmente en machine learning. vs GPUs de otros fabricantes (AMD, Intel)

Trade-offs

Ganancias
  • Ampliación del ecosistema CUDA
  • Flexibilidad en la elección de CPU para sistemas acelerados por GPU
  • Potencial para diseños de sistemas más optimizados con NVLink Fusion
Costes
  • Restricción de la compatibilidad a hardware RISC-V de servidor de alta gama
  • Mayor tiempo para la adopción generalizada debido a la madurez del ecosistema RISC-V
  • Complejidad de implementación para fabricantes de hardware RISC-V para cumplir con todos los requisitos

Fundamentos Teóricos

El problema de la coherencia de caché en sistemas con múltiples procesadores y aceleradores ha sido un tema central en la arquitectura de computadoras desde los primeros sistemas multiprocesador. Trabajos fundamentales como los de Leslie Lamport sobre la consistencia secuencial (1979) y los modelos de consistencia de memoria más débiles que le siguieron, sentaron las bases para entender cómo los diferentes componentes de un sistema ven las actualizaciones de memoria. La necesidad de coherencia PCIe en la integración de CUDA con RISC-V es una manifestación directa de estos principios.

La gestión de la coherencia de caché en arquitecturas heterogéneas, donde CPUs y GPUs acceden a la misma memoria, es un desafío bien documentado. Los mecanismos de snooping y directorios de caché, descritos en numerosos papers de arquitectura de sistemas (ej. 'Cache Coherence in Shared-Memory Multiprocessors' de James Goodman, 1983), son la base de la coherencia PCIe. La demanda de Nvidia de coherencia PCIe garantiza que el modelo de programación de CUDA, que asume un cierto nivel de consistencia de memoria, pueda operar sin requerir que los desarrolladores implementen complejas y propensas a errores invalidaciones de caché manuales, un problema que ha sido estudiado extensamente en el contexto de la programación de GPUs y FPGAs.