La tesis central de LPDDR5X-PIM aborda un problema fundamental en la arquitectura de computadoras modernas: el 'memory wall' o 'von Neumann bottleneck'. Este cuello de botella surge de la latencia y el ancho de banda limitados entre la CPU y la memoria principal, lo que se agrava en cargas de trabajo intensivas en datos como la inferencia de Machine Learning. Al integrar unidades de procesamiento (MAC) directamente dentro de los bancos de DRAM, Samsung busca reducir drásticamente el movimiento de datos, aprovechando el ancho de banda interno mucho mayor de la memoria.
Históricamente, la idea de 'Processing-in-Memory' (PIM) o 'Near-Memory Computing' (NMC) no es nueva, con propuestas que datan de los años 90. Sin embargo, la explosión de la IA y la necesidad de procesar grandes volúmenes de datos con baja latencia y alta eficiencia energética han revitalizado el interés. La innovación de Samsung radica en cómo logra esta integración sin modificar el protocolo externo de la interfaz DRAM, lo que facilita su adopción en sistemas existentes, aunque introduce complejidades significativas a nivel de software y sistema operativo.
Arquitectura del Sistema
La arquitectura de LPDDR5X-PIM se basa en un chip LPDDR5X-9600 estándar, pero con una adición clave: un bloque PIM (Processing-in-Memory) por cada uno de sus 16 bancos de DRAM. Cada bloque PIM contiene un 'MAC tree' (Multiply-Accumulate) rodeado de registros de propósito específico: un 'instruction register file' (1024-bit para 64 instrucciones de 16-bit), un 'source register file' (4 kbit para vectores de activación) y un 'scale register' (2 kbit para factores de escala).
La interacción con estos bloques PIM se realiza a través del protocolo LPDDR5X estándar. Samsung ha asignado direcciones de fila especiales que, al ser activadas, cambian el modo operativo del chip. Un par de filas predefinidas controlan el 'single-bank mode' (operación DRAM normal) y el 'multi-bank mode' (donde los comandos se aplican simultáneamente a los 16 bancos, explotando el ancho de banda interno de 614 GB/s). Otras filas especiales, cuando se activan en 'PIM Registers Activated mode', redirigen los comandos de lectura/escritura DRAM para acceder a los registros PIM en lugar de los contenidos de memoria. Esto permite cargar pesos de modelo en DRAM en modo normal, luego escribir activaciones, factores de escala e instrucciones en los registros PIM (en 'multi-bank mode' para broadcast eficiente), iniciar cómputos con comandos de lectura, y finalmente escribir los resultados de vuelta a DRAM con comandos de escritura. Para mitigar la reordenación de accesos por parte del controlador de memoria, se implementa un 'Address Align Mode' (AAM) que permite a las instrucciones inferir el índice del registro fuente a partir de la dirección de columna.
Flujo de Cómputo PIM para Inferencia ML
- 1 Cargar Pesos Software carga pesos del modelo en DRAM usando modo normal (single-bank).
- 2 Configurar PIM Software cambia a multi-bank mode y PIM Registers Activated mode.
- 3 Escribir Activaciones/Instrucciones Software escribe vectores de activación, factores de escala e instrucciones e...
- 4 Iniciar Cómputo Comandos de lectura DRAM inician operaciones MAC en los bloques PIM.
- 5 Acumular Resultados Resultados se acumulan en PIM Vector Register Files (VRF).
- 6 Escribir Resultados a DRAM Comandos de escritura DRAM mueven contenidos de VRF a bancos DRAM.
- 7 Leer Resultados Software vuelve a single-bank mode y lee resultados de DRAM.
| Capa | Tecnología | Justificación |
|---|---|---|
| storage | LPDDR5X-PIM DRAM | Proporciona almacenamiento de datos y ejecuta operaciones de cómputo (MAC) directamente dentro de los bancos de memoria, reduciendo el movimiento de datos. vs HBM-PIM, GDDR-PIM, DDR5 con aceleradores externos 16 bancos de DRAM, cada uno con un bloque PIM; ancho de banda interno de 614 GB/s. |
| compute | MAC units (Multiply-Accumulate) | Unidades de procesamiento integradas en cada banco DRAM, optimizadas para operaciones de inferencia de ML de baja precisión (INT8, FP8, 4-bit). vs Unidades ALU de propósito general, Procesadores RISC-V integrados Soporte para 4 INT8/FP8 MACs por data clock, o 8 por ciclo; 2.4 TOPS por chip. |
| orchestration | Memory Controller (estándar LPDDR5X) | Gestiona los accesos a DRAM y, de forma transparente para el hardware, activa los modos PIM mediante la interpretación de direcciones de fila especiales. vs Controladores de memoria personalizados con comandos PIM explícitos |
Trade-offs
Ganancias
- ▲▲ Ancho de banda efectivo para cómputo
- ▲ Latencia de acceso a datos para cómputo
- ▲ Compatibilidad con controladores de memoria estándar
Costes
- ▲ Complejidad del software y sistema operativo
- ▲▲ Rendimiento del CPU/GPU debido a la deshabilitación de caches y ejecución especulativa
- ▲ Flexibilidad de multitarea y compartición de recursos
- ▲ Capacidad de memoria y ancho de banda para aplicaciones no-PIM
Fundamentos Teóricos
El concepto de Processing-in-Memory (PIM) tiene raíces profundas en la investigación académica de arquitectura de computadoras. Uno de los trabajos seminales que aborda la problemática del 'memory wall' es el artículo de Wulf y McKee de 1995, "Hitting the Memory Wall: Implications of the Obvious". Este paper destacó la creciente brecha de rendimiento entre los procesadores y la memoria, prediciendo la necesidad de arquitecturas que reduzcan el movimiento de datos. La propuesta de Samsung es una manifestación comercial de estas ideas, buscando mitigar el costo energético y de latencia asociado con el transporte de datos entre la DRAM y las unidades de procesamiento.
Además, la implementación de unidades MAC de baja precisión para inferencia de ML se alinea con la investigación en computación aproximada y arquitecturas especializadas para IA, donde la tolerancia a errores inherente a muchos modelos de ML permite el uso de formatos numéricos de menor precisión (INT8, FP8), lo que reduce los requisitos de ancho de banda y potencia. La idea de reinterpretar comandos de memoria para activar funcionalidades de cómputo también se ha explorado en la academia como una forma de extender la funcionalidad de hardware existente sin requerir cambios drásticos en los estándares de interfaz.