Compute-In-Memory (CIM), también conocido como Processing-In-Memory (PIM), es un paradigma arquitectónico que busca superar el 'cuello de botella de von Neumann' al realizar operaciones computacionales directamente dentro o adyacentes a los módulos de memoria. En lugar de transferir datos constantemente entre la memoria principal y la unidad de procesamiento central (CPU) o la unidad de procesamiento gráfico (GPU), CIM permite que los datos se procesen donde residen. Esto se logra mediante la modificación de las celdas de memoria o la adición de lógica de procesamiento simple dentro de los chips de memoria, lo que permite operaciones como sumas, multiplicaciones o incluso funciones lógicas complejas a nivel de bit o palabra.
Aunque aún está en fases de investigación y desarrollo, existen implementaciones notables y prototipos. Samsung ha presentado su 'Processing-In-Memory (PIM) HBM2-PIM' que integra motores de IA directamente en la memoria HBM (High Bandwidth Memory), diseñado para acelerar cargas de trabajo de IA y HPC. Otro ejemplo es el concepto de 'memristors' y otras tecnologías de memoria no volátil (NVM) que pueden realizar operaciones lógicas directamente dentro de sus celdas. Startups como Mythic están desarrollando chips que utilizan arquitecturas de Compute-In-Memory analógicas para inferencia de IA en el borde, aprovechando las propiedades físicas de la memoria para realizar cálculos de manera eficiente.
Para un Arquitecto de Sistemas, Compute-In-Memory es crucial porque promete una eficiencia energética y un rendimiento sin precedentes para cargas de trabajo intensivas en datos, como la inteligencia artificial (especialmente inferencia), el aprendizaje automático, el procesamiento de gráficos y las bases de datos en memoria. La capacidad de reducir drásticamente el movimiento de datos se traduce en menor latencia y menor consumo de energía, lo cual es vital para sistemas de alto rendimiento y dispositivos de borde con restricciones de energía. Sin embargo, los trade-offs incluyen la complejidad de programación, ya que los modelos de computación tradicionales no se adaptan directamente a CIM, y la necesidad de herramientas de software y compiladores especializados. La adopción de CIM requerirá una reevaluación fundamental de las arquitecturas de software y hardware, así como una cuidadosa consideración de qué partes de una aplicación se beneficiarían más de este paradigma para justificar la inversión en su integración.