El problema fundamental que aborda el XCENA MX1 es la creciente divergencia entre la capacidad de memoria requerida por las cargas de trabajo modernas, especialmente en Machine Learning, y el ancho de banda y la latencia que los sistemas tradicionales pueden ofrecer. A medida que los modelos de ML escalan, su 'apetito' por la memoria se vuelve insaciable, y la transferencia de grandes volúmenes de datos a través de la interconexión host-CPU se convierte en un cuello de botella crítico. La tecnología CXL (Compute Express Link) emerge como una solución para expandir la memoria de forma coherente, pero introduce latencia adicional.

El MX1 resuelve esto integrando compute directamente en el dispositivo de expansión de memoria. Al colocar 3072 núcleos RISC-V junto a la DRAM y el almacenamiento SSD, se reduce drásticamente la necesidad de mover datos a través del enlace CXL de vuelta al host para su procesamiento. Esto no solo mejora la eficiencia energética al evitar la transferencia de datos, sino que también explota el ancho de banda interno, mucho mayor, disponible dentro del propio dispositivo. Este enfoque recuerda a los primeros intentos de procesamiento en memoria (PIM) y a arquitecturas como Intel Xeon Phi, que buscaban la eficiencia a través de la paralelización masiva de núcleos más simples.

Arquitectura del Sistema

El XCENA MX1 se conecta al host a través de una interfaz PCIe 6/CXL 3.2 x8, proporcionando un ancho de banda bidireccional de 64 GB/s. Puede albergar hasta 2 TB de memoria DDR5. Adicionalmente, expone ocho carriles PCIe 6 descendentes para conectar SSDs, que pueden presentarse al host como memoria CXL, con la DRAM del MX1 actuando como una caché. La característica central es su chip con 3072 núcleos RISC-V, fabricado en 4nm y consumiendo 40W. Estos núcleos están organizados en clusters de 32, compartiendo L2 caches y un data TLB. Cuatro clusters forman un 'subsystem', la unidad mínima de asignación de trabajo, con 24 subsistemas en total. Dos núcleos Arm Cortex A53 gestionan las funciones de control.

La jerarquía de caché es distintiva: los núcleos RISC-V usan una L1D cache de 4 KB virtualmente direccionada. Los accesos a datos no pasan por traducción de direcciones a menos que fallen en L1D. Las L2 data caches de 128 KB son compartidas por cluster y son VIPT (Virtually Indexed, Physically Tagged), con TLBs compartidos para acelerar la traducción. Las instrucciones operan directamente sobre direcciones físicas, evitando la traducción y los TLBs, con regiones de memoria predefinidas para código. El MX1 implementa un Vector Processing Engine (VPE) personalizado a nivel de subsistema, accesible a través de colas de comandos, que soporta FP32 y FP16, proporcionando ~3 TFLOPS de throughput de producto punto. Para la funcionalidad de 'Infinite Memory' con SSDs, el MX1 utiliza una caché de mapa de 1024 entradas para páginas de 64 KB, gestionada por firmware en los núcleos RISC-V, y permite la configuración de un 'pinned prefix' para fijar regiones de datos en DRAM.

Flujo de Acceso a Datos con SSDs como Memoria (Infinite Memory)

  1. 1 Host CPU Accede a una dirección de memoria CXL mapeada a SSD.
  2. 2 MX1 CXL Interface Recibe la solicitud de acceso.
  3. 3 Map Cache (on-chip) Verifica si la página de 64 KB está mapeada a DRAM local.
  4. 4 DRAM (MX1) Si hay hit, se sirve el dato directamente desde DDR5 del MX1.
  5. 5 Firmware (RISC-V cores) Si hay miss, se genera un page fault y el firmware gestiona la carga.
  6. 6 SSDs (MX1) El firmware lee la página de datos desde los SSDs.
  7. 7 DRAM (MX1) La página se carga en DRAM y se actualiza el map cache.
  8. 8 Host CPU El dato es devuelto al host.
CapaTecnologíaJustificación
compute RISC-V Cores (3072) Procesamiento near-memory para cargas de trabajo data-parallel, ejecutando kernels y gestionando funciones de firmware. vs Arm Cortex-A/R cores, x86 cores, Custom ASIC cores 32 cores por cluster, 24 subsistemas (128 cores), in-order execution, 1.1 GHz, 4KB L1D cache, 128KB L2 cache.
compute Arm Cortex A53 (2 cores) Manejo de funciones de control y gestión del dispositivo MX1. vs RISC-V cores para control, Microcontroladores dedicados
compute Vector Processing Engine (VPE) Aceleración de operaciones vectoriales (FP32, FP16) para cargas de trabajo de ML, accesible vía colas de comandos. vs GPUs integradas, FPGAs, ASICs específicos para ML ~3 TFLOPS de throughput de producto punto, 128 FLOPS/ciclo por VPE.
storage DDR5 DRAM Memoria principal de expansión (hasta 2 TB) y caché para los SSDs conectados. vs HBM, DDR4 Hasta 2 TB de capacidad, 128 GB/s de ancho de banda al host.
storage NVMe SSDs (via PCIe 6) Almacenamiento de alta capacidad que puede ser expuesto como memoria CXL, con la DRAM del MX1 actuando como caché. vs HDDs, Memoria no volátil (NVM) de menor latencia Conectividad PCIe 6 downstream, soporte RAID.
networking PCIe 6 / CXL 3.2 x8 Interfaz de alta velocidad y coherente para la conexión con el host CPU, permitiendo expansión de memoria y compute coherente. vs PCIe sin CXL, Interconexiones propietarias 64 GB/s de ancho de banda bidireccional.
cache L1D Cache (RISC-V) Caché de datos de primer nivel, virtualmente direccionada, para reducir latencia de acceso a datos. vs Cachés físicamente direccionadas 4 KB por core, virtually addressed.
cache L2 Data Cache (RISC-V cluster) Caché de datos de segundo nivel, compartida por cluster, VIPT, con TLB compartido. vs Cachés físicamente direccionadas, Cachés por core 128 KB por cluster, VIPT.
cache Map Cache (SSD-backed memory) Caché on-chip para mapear páginas de 64 KB de SSD a DRAM, acelerando accesos a 'Infinite Memory'. vs Software-managed page tables, Hardware TLB para SSD-backed memory 1024 entradas para páginas de 64 KB.

Trade-offs

Ganancias
  • Reducción de latencia de acceso a memoria CXL
  • Aumento de ancho de banda efectivo para compute
  • Eficiencia energética (evitando transferencias CXL)
  • ▲▲ Capacidad de memoria expandida (DDR5 + SSD)
Costes
  • Throughput de compute bruto comparado con GPUs de propósito general
  • Complejidad de programación (modelo similar a OpenCL/CUDA)
  • Latencia de SSDs (mitigada por caching y prefetch)

Fundamentos Teóricos

El concepto de procesamiento near-memory o en memoria tiene raíces profundas en la investigación académica, buscando superar el 'Memory Wall' o 'Von Neumann Bottleneck', un término acuñado por John Backus en su discurso de aceptación del Premio Turing en 1977. Este cuello de botella describe la limitación de throughput entre la CPU y la memoria, que se ha exacerbado con el tiempo a medida que las CPUs se han vuelto exponencialmente más rápidas que la memoria.

Trabajos como los de Olukotun et al. (1996) sobre arquitecturas de múltiples núcleos y el concepto de 'throughput computing' ya exploraban la idea de usar muchos núcleos simples para maximizar el rendimiento en cargas de trabajo paralelas, un principio que el MX1 adopta con sus núcleos RISC-V. La gestión de la coherencia de caché en sistemas distribuidos, fundamental para CXL, se basa en principios establecidos en papers como 'Directory-Based Cache Coherence for Large-Scale Multiprocessors' de Agarwal et al. (1990), que describen cómo los snoops y directorios mantienen la consistencia de datos entre múltiples caches y dispositivos. La idea de usar SSDs como memoria extendida con caching en DRAM también se alinea con la jerarquía de memoria y los principios de localidad temporal y espacial, fundamentales en la arquitectura de computadoras desde los trabajos de Maurice Wilkes sobre memoria caché en la década de 1960.