Una nueva técnica desarrollada por los investigadores del MIT reconsidera la compresión de datos de hardware para liberar más memoria utilizada por computadoras y dispositivos móviles, permitiéndoles correr más rápido y realizar más tareas simultáneamente.
La compresión de datos aprovecha los datos redundantes para liberar capacidad de almacenamiento, aumentar las velocidades de cómputo y proporcionar otras ventajas. En los sistemas informáticos actuales, acceder a la memoria principal es muy costoso en comparación con el cómputo real. Debido a esto, el uso de la compresión de datos en la memoria ayuda a mejorarrendimiento, ya que reduce la frecuencia y la cantidad de datos que los programas necesitan obtener de la memoria principal.
La memoria en las computadoras modernas administra y transfiere datos en fragmentos de tamaño fijo, en los que deben operar las técnicas de compresión tradicionales. Sin embargo, el software no almacena naturalmente sus datos en fragmentos de tamaño fijo. En su lugar, utiliza "objetos", datosestructuras que contienen varios tipos de datos y tienen tamaños variables. Por lo tanto, las técnicas tradicionales de compresión de hardware manejan los objetos de manera deficiente.
En un documento presentado en la Conferencia internacional de ACM sobre soporte arquitectónico para lenguajes de programación y sistemas operativos esta semana, los investigadores del MIT describen el primer enfoque para comprimir objetos en la jerarquía de memoria. Esto reduce el uso de memoria al tiempo que mejora el rendimiento y la eficiencia.
Los programadores podrían beneficiarse de esta técnica cuando programen en cualquier lenguaje de programación moderno, como Java, Python y Go, que almacene y administre datos en objetos, sin cambiar su código. Por su parte, los consumidores verían computadoras que puedenejecuta mucho más rápido o puede ejecutar muchas más aplicaciones a la misma velocidad. Debido a que cada aplicación consume menos memoria, se ejecuta más rápido, por lo que un dispositivo puede admitir más aplicaciones dentro de su memoria asignada.
En experimentos con una máquina virtual Java modificada, la técnica comprimió el doble de datos y redujo el uso de memoria a la mitad en comparación con los métodos tradicionales basados en caché.
"La motivación era tratar de crear una nueva jerarquía de memoria que pudiera hacer compresión basada en objetos, en lugar de compresión de línea de caché, porque así es como la mayoría de los lenguajes de programación modernos manejan los datos", dice el primer autor Po-An Tsai, unestudiante graduado en el Laboratorio de Ciencias de la Computación e Inteligencia Artificial CSAIL.
"Todos los sistemas informáticos se beneficiarían de esto", agrega el coautor Daniel Sanchez, profesor de ciencias de la computación e ingeniería eléctrica e investigador de CSAIL. "Los programas se vuelven más rápidos porque dejan de ser bloqueados por el ancho de banda de la memoria".
Los investigadores se basaron en su trabajo anterior que reestructura la arquitectura de la memoria para manipular directamente los objetos. Las arquitecturas tradicionales almacenan datos en bloques en una jerarquía de memorias progresivamente más grandes y lentas, llamadas "cachés". Los bloques a los que se accedió recientemente se convierten en cachés más pequeños y más rápidos., mientras que los bloques más antiguos se mueven a cachés más lentos y más grandes, y finalmente terminan en la memoria principal. Si bien esta organización es flexible, es costosa: para acceder a la memoria, cada caché necesita buscar la dirección entre sus contenidos.
"Debido a que la unidad natural de gestión de datos en los lenguajes de programación modernos son los objetos, ¿por qué no simplemente hacer una jerarquía de memoria que se ocupe de los objetos?", Dice Sánchez.
En un artículo publicado en octubre pasado, los investigadores detallaron un sistema llamado Hotpads, que almacena objetos enteros, estrechamente empaquetados en niveles jerárquicos o "pads". Estos niveles residen completamente en memorias eficientes, en chip, direccionadas directamente, conno se requieren búsquedas sofisticadas
Los programas luego hacen referencia directa a la ubicación de todos los objetos en la jerarquía de los pads. Los objetos recién asignados y recientemente referenciados, y los objetos a los que apuntan, permanecen en el nivel más rápido. Cuando el nivel más rápido se llena, se ejecuta un proceso de "desalojo"que mantiene los objetos a los que se hace referencia recientemente, pero elimina los objetos más antiguos a niveles más lentos y recicla los objetos que ya no son útiles, para liberar espacio. Los punteros se actualizan en cada objeto para señalar las nuevas ubicaciones de todos los objetos movidos. De esta manera, los programaspuede acceder a objetos de forma mucho más económica que buscar en los niveles de caché.
Para su nuevo trabajo, los investigadores diseñaron una técnica, llamada "Zippads", que aprovecha la arquitectura Hotpads para comprimir objetos. Cuando los objetos comienzan por primera vez en el nivel más rápido, no están comprimidos. Pero cuando son expulsados a niveles más lentos, todos están comprimidos. Los punteros en todos los objetos a través de los niveles luego apuntan a esos objetos comprimidos, lo que hace que sea fácil recuperarlos a los niveles más rápidos y puedan almacenarse de manera más compacta que las técnicas anteriores.
Un algoritmo de compresión aprovecha la redundancia entre los objetos de manera eficiente. Esta técnica descubre más oportunidades de compresión que las técnicas anteriores, que se limitaron a encontrar redundancia dentro de cada bloque de tamaño fijo. El algoritmo primero selecciona algunos objetos representativos como objetos "base". Luego, en objetos nuevos, solo almacena los diferentes datos entre esos objetos y los objetos base representativos.
Fuente de la historia :
Materiales proporcionado por Instituto de Tecnología de Massachusetts . Original escrito por Rob Matheson. Nota: El contenido puede ser editado por estilo y longitud.
Cita esta página :