Siempre se están intentando buscar nuevas soluciones y arquitecturas que mejoren la latencia y el ancho de banda entre las unidades de procesamiento y la memoria, ya que las primeras hacen uso de los datos e instrucciones almacenadas en la memoria, y mientras mayores sean las velocidades, mejor será el rendimiento. Ahora nos llega el paradigma In-memory y Near memory computing, que va en este sentido y del que vamos a hablar en este artículo…
El problema de la brecha entre el procesador y la memoria
El desafío de la diferencia de velocidad entre los microprocesadores y la memoria RAM es un problema que ha existido durante décadas. A medida que la velocidad y el rendimiento de los microprocesadores ha experimentado un crecimiento constante, la velocidad de acceso y transferencia de datos de la memoria RAM no ha avanzado al mismo ritmo, generando una brecha, un gap que parece insalvable por el momento.
Este desequilibrio en la velocidad de los componentes es una de las limitaciones más significativas, todo un cuello de botella que ha dado lugar a una serie de estrategias y tecnologías para abordarlo de la mejor forma posible.
Para comprender mejor esta discrepancia, primero, es importante tener en cuenta la función de cada uno de estos componentes clave de una computadora:
- Microprocesador (CPU): es el cerebro del ordenador y es responsable de realizar todas las operaciones o cálculos. Es decir, debe acceder a la memoria, donde se encuentran los datos e instrucciones que componen el programa a ejecutar, y traerlas para poder interpretar la operación implícita en la instrucción y aplicar dicha operación aritmeticológica a los datos. Por tanto, depende enormemente del ancho de banda y la latencia de los canales que interconectan la CPU y la memoria principal.
- Memoria RAM: almacena datos e instrucciones de los programas en uso actualmente para que la CPU pueda acceder rápidamente a ellos, sin tener que acceder a una memoria secundaria más lenta, como los medios de almacenamiento masivo (HDD, SSD,…). Sin embargo, la fabricación de estos chips no ha estado a la par por cuestiones técnicas, quedándose rezagada en cuanto a velocidad.
En definitiva, aunque las CPU se han vuelto considerablemente más rápidas con el tiempo, la velocidad de la RAM no ha experimentado un crecimiento proporcional. Esto crea una brecha de rendimiento entre los dos componentes, lo que significa que la CPU a menudo se encuentra esperando datos de la RAM, lo que ralentiza el proceso general y limita el rendimiento potencial del sistema.
Varias razones explican esta diferencia entre una unidad y otra, básicamente podemos centrarnos en las tecnología de fabricación. Las CPU han avanzado significativamente en términos de tecnología de fabricación, con los nodos más punteros, lo que les ha permitido aumentar la velocidad y la eficiencia. En cambio, la fabricación de chips de memoria RAM ha avanzado a un ritmo más lento, y aún se siguen fabricando con nodos algo más atrasados.
Para abordar esta brecha de velocidad, se han desarrollado varias soluciones:
- Memorias caché: los sistemas de computación utilizan una jerarquía de memoria, donde la CPU tiene múltiples niveles de caché que son más rápidos pero más pequeños que la RAM principal. Esta jerarquía ayuda a reducir la brecha de velocidad, pero no la elimina por completo. Aumentar el tamaño de las cachés de nivel 1, nivel 2 y nivel 3 en las CPU ha ayudado a reducir la necesidad de acceder a la RAM principal con frecuencia.
- Tecnologías de memoria más avanzadas: se han desarrollado tecnologías de memoria más rápidas, como DDR4 y DDR5, que ofrecen una mayor velocidad de transferencia de datos en comparación con las generaciones anteriores.
- Uso de tecnologías de almacenamiento SSD: los discos de estado sólido (SSD) han ganado popularidad como unidades de almacenamiento de alto rendimiento, lo que permite que los datos se almacenen y accedan más rápidamente que en los discos duros tradicionales. Además, en la actualidad también se están analizando sistemas de memoria no volátil, como la PCM, ReRAM, etc.
- Procesadores más eficientes: se están desarrollando microarquitecturas de CPU más eficientes que pueden manejar de manera más efectiva la brecha de velocidad entre la CPU y la RAM, con sistemas que permiten anticiparse o procesar otras instrucciones si existe una dependencia de datos no resuelta.
Como puedes ver, la brecha de velocidad entre los microprocesadores y la memoria RAM es un desafío constante en el mundo de la informática. A pesar de los avances en ambas áreas, la memoria RAM no ha seguido el mismo ritmo de crecimiento que los microprocesadores. Sin embargo, se están aplicando diversas estrategias y tecnologías para mitigar este problema y mejorar el rendimiento general. A medida que la tecnología continúa evolucionando, es probable que veamos más innovaciones que aborden esta brecha y permitan un rendimiento más equilibrado en las computadoras del futuro. Y de esto te vamos a hablar aquí, con los sistemas In-memory computing y Near memory computing…
¿Qué es Near memory computing?
A medida que la innovación en el campo de los procesadores ha avanzado, superando a la de las memorias en términos de latencia y eficiencia energética, ha surgido lo que se conoce como «el muro de la memoria«. A pesar de esto, la tecnología de las memorias no ha logrado mantener el mismo ritmo de desarrollo.
En el pasado, los diseñadores de sistemas intentaron abordar esta brecha utilizando jerarquías de memoria para mitigar algunos de los problemas asociados con las memorias DRAM. Sin embargo, el número limitado de conexiones en los paquetes de memoria resultó insuficiente para satisfacer las crecientes demandas de ancho de banda de los procesadores multinúcleo. Además, el rendimiento de las computadoras basadas en silicio ha llegado a un punto de estancamiento debido a la falta de escalabilidad de Dennard, la desaceleración de la ley de Moore y la limitación de las capacidades de los dispositivos de silicio tradicionales.
La jerarquía de memoria actual incluye múltiples niveles de caché, memoria principal y dispositivos de almacenamiento. En el enfoque de la «computación en memoria cercana», los datos se traen a la caché desde el almacenamiento y se procesan en esta ubicación. La computación en memoria cercana, o Near Memory Computing, utiliza estrategias orientadas a los datos para procesar la información en las proximidades de su ubicación física. En contraste, Near Memory Computing busca llevar a cabo el procesamiento lo más cerca posible de la ubicación física de los datos. Además de centrarse en los datos, esta aproximación acerca las unidades de cálculo a la ubicación de los datos para minimizar las costosas transferencias de datos, como los paquetes 3D, mediante el apilado de chips de memoria y cálculo. El procesamiento en memoria cercana se vuelve posible gracias los empaquetados 3D de componentes lógicos y de memoria en una vía de silicio (TSV), lo que reduce la latencia de acceso a la memoria, el consumo de energía y el uso del ancho de banda.
¿Qué es In-memory computing?
La computación en memoria, también conocida como in-memory computing, se refiere a la realización de cálculos informáticos de manera completa en la memoria de una computadora, como la RAM. Este proceso es posible gracias al uso de software especializado en sistemas que se ejecuta en un grupo de computadoras. Cuando estos equipos combinan sus recursos de RAM, los cálculos se llevan a cabo en todos ellos, aprovechando la capacidad colectiva de la memoria RAM disponible. La computación en memoria es esencialmente equivalente al procesamiento en memoria y a la informática en memoria, con la única diferencia de que se enfoca específicamente en las operaciones de cálculo.
Si te preguntas cómo funciona la in-memory computing, aquí explicamos su funcionamiento. Al eliminar los accesos lentos a los datos y basarse únicamente en los datos almacenados en la RAM, la computación en memoria aumenta la eficiencia general de los cálculos. Para lograr un mayor rendimiento y reducir la latencia en el acceso a unidades de disco duro o unidades de estado sólido (SSD), el software de uno o más ordenadores administra tanto los cálculos como los datos en la memoria.
Varios ordenadores contribuyen al proceso dividiendo el cálculo en tareas más pequeñas que se distribuyen entre cada máquina para su ejecución en paralelo. La computación en memoria se realiza frecuentemente mediante el uso de redes de datos en memoria (IMDG o in-memory data grid). Un ejemplo de esto es Hazelcast IMDG, que permite a los usuarios realizar cálculos sofisticados en grandes conjuntos de datos a través de un clúster de servidores, manteniendo un alto rendimiento.
Conclusiones
Como conclusión, agregar que tanto la computación en memoria (In-memory computing) como la computación en memoria cercana (near-memory computing) tienen como objetivo superar las limitaciones actuales de la jerarquía de memoria que describí en el primera apartado, y que representa una restricción significativa en el rendimiento de los sistemas computacionales debido a la disparidad entre la velocidad de la memoria y las unidades de procesamiento, que se vuelven cada vez más rápidas. Estos cambios en la arquitectura tienen el potencial de generar mejoras significativas en términos de eficiencia informática, reducción de consumo energético, aumento de rendimiento y mayor capacidad de procesamiento inteligente, especialmente cuando se combinan con otras tecnologías como los FPGA (Field-Programmable Gate Arrays) o los DSA (Domain-Specific Accelerators), que potencian aún más el uso de la inteligencia artificial…