ProHoster > Blog > administración > Cómo funciona la compresión en la arquitectura de memoria orientada a objetos
Cómo funciona la compresión en la arquitectura de memoria orientada a objetos
Un equipo de ingenieros del MIT desarrolló una jerarquía de memoria orientada a objetos para trabajar con datos de manera más eficiente. En el artículo entendemos cómo está organizado.
/ PxHere /PD
Como sabe, el crecimiento del rendimiento de las CPU modernas no va acompañado de una disminución correspondiente de la latencia al acceder a la memoria. La diferencia en el cambio de los indicadores de un año a otro puede llegar hasta 10 veces (PDF, página 3). Como resultado, aparece un cuello de botella que no permite el uso completo de los recursos disponibles y ralentiza el procesamiento de datos.
La penalización de rendimiento es el llamado retraso de descompresión. En algunos casos, la descompresión de datos preparatoria puede tardar hasta 64 ciclos de procesador.
A modo de comparación: suma y multiplicación de números de punto flotante ocupar no más de diez ciclos. El problema es que la memoria trabaja con bloques de datos de un tamaño fijo, mientras que las aplicaciones operan con objetos que pueden contener diferentes tipos de datos y difieren entre sí en tamaño. Para resolver el problema, los ingenieros del MIT desarrollaron una jerarquía de memoria orientada a objetos que optimiza el procesamiento de datos.
Cómo funciona la tecnología
La solución se basa en tres tecnologías: Hotpads, Zippads y el algoritmo de compresión COCO.
Los hotpads son una jerarquía impulsada por software de memoria de registro de scratchpad (bloc de notas). Estos registros se denominan pads (pads) y hay tres, de L1 a L3. Almacenan objetos de diferentes tamaños, metadatos y matrices de punteros.
En esencia, la arquitectura es un sistema de caché, pero perfeccionado para trabajar con objetos. El nivel de la almohadilla en la que se encuentra el objeto depende de la frecuencia con la que se utilice. Si uno de los niveles se "desborda", el sistema activa un mecanismo similar a los "recolectores de basura" en Java o Go. Analiza qué objetos se usan con menos frecuencia que otros y los mueve automáticamente entre niveles.
Zippads funciona sobre la base de Hotpads: archiva y descomprime datos que entran o salen de los dos últimos niveles de la jerarquía: el teclado L3 y la memoria principal. En los pads primero y segundo, los datos se almacenan sin cambios.
Zippads comprime objetos hasta 128 bytes. Los objetos más grandes se dividen en partes, que luego se colocan en diferentes áreas de la memoria. Como escriben los desarrolladores, este enfoque aumenta el coeficiente de memoria utilizada de manera efectiva.
Para comprimir objetos se utiliza el algoritmo COCO (Cross-Object COmpression), del que hablaremos más adelante, aunque el sistema es capaz de trabajar con Base-Delta-Inmediato o FPC. El algoritmo COCO es una variación de la compresión diferencial (compresión diferencial). Compara los objetos con la "base" y elimina los bits duplicados; consulte el diagrama a continuación:
Según los ingenieros del MIT, su jerarquía de memoria orientada a objetos es un 17 % más rápida que los enfoques clásicos. Su estructura es mucho más cercana a la arquitectura de las aplicaciones modernas, por lo que el nuevo método tiene potencial.
Se espera que, en primer lugar, las empresas que trabajan con big data y algoritmos de aprendizaje automático puedan comenzar a utilizar la tecnología. Otra dirección potencial son las plataformas en la nube. Los proveedores de IaaS podrán trabajar de manera más eficiente con virtualización, sistemas de almacenamiento y recursos informáticos.