• Home
  • Química
  • Astronomía
  • Energía
  • Naturaleza
  • Biología
  • Física
  • Electrónica
  • Una novedosa técnica de compresión de datos para programas informáticos más rápidos

    Una técnica novedosa desarrollada por investigadores del MIT comprime "objetos" en la memoria por primera vez, liberando más memoria utilizada por las computadoras, permitiéndoles correr más rápido y realizar más tareas simultáneamente. Crédito:Christine Daniloff, MIT

    Una técnica novedosa desarrollada por investigadores del MIT reconsidera la compresión de datos por 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 la velocidad de la computación, y proporcionar otras ventajas. En los sistemas informáticos actuales, acceder a la memoria principal es muy caro en comparación con el cálculo real. Debido a esto, el uso de la compresión de datos en la memoria ayuda a mejorar el rendimiento, 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 trozos de tamaño fijo, sobre el que deben operar las técnicas de compresión tradicionales. Software, sin embargo, naturalmente, no almacena sus datos en fragmentos de tamaño fijo. En lugar de, utiliza "objetos, "estructuras de datos que contienen varios tipos de datos y tienen tamaños variables. Por lo tanto, Las técnicas tradicionales de compresión de hardware manejan mal los objetos.

    En un artículo presentado en la Conferencia Internacional 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 la 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 al programar en cualquier lenguaje de programación moderno, como Java, Pitón, y Go, que almacena y gestiona datos en objetos, sin cambiar su código. En su final, los consumidores verían computadoras que pueden funcionar mucho más rápido o pueden ejecutar muchas más aplicaciones a la misma velocidad. Dado que cada aplicación consume menos memoria, corre más rápido, para que un dispositivo pueda 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 fue intentar crear una nueva jerarquía de memoria que pudiera realizar compresión basada en objetos, en lugar de la compresión de la línea de caché, porque así es como la mayoría de los lenguajes de programación modernos gestionan los datos, "dice el primer autor Po-An Tsai, estudiante de posgrado 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 Sánchez, profesor de informática e ingeniería eléctrica, e investigador en CSAIL. "Los programas se vuelven más rápidos porque dejan de ser atascados 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 objetos directamente. Las arquitecturas tradicionales almacenan datos en bloques en una jerarquía de memorias progresivamente más grandes y más lentas, llamados "cachés". Los bloques a los que se ha accedido recientemente se elevan a los más pequeños, cachés más rápidos, mientras que los bloques más antiguos se mueven a cachés más lentos y más grandes, eventualmente terminando de nuevo en la memoria principal. Si bien esta organización es flexible, es costoso:acceder a la memoria, cada caché necesita buscar la dirección entre sus contenidos.

    "Dado que la unidad natural de la gestión de datos en los lenguajes de programación modernos son los objetos, ¿Por qué no 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, empaquetados en niveles jerárquicos, o "almohadillas". Estos niveles residen completamente en eficientes, en chip memorias direccionadas directamente, sin necesidad de búsquedas sofisticadas.

    Luego, los programas hacen referencia directamente a la ubicación de todos los objetos en la jerarquía de pads. Objetos recién asignados y referenciados recientemente, y los objetos a los que apuntan, permanecer en el nivel más rápido. Cuando el nivel más rápido se llena, ejecuta un proceso de "desalojo" que mantiene los objetos a los que se hace referencia recientemente, pero lanza los objetos más antiguos a niveles más lentos y recicla los objetos que ya no son útiles, para liberar espacio. Luego, los punteros se actualizan en cada objeto para señalar las nuevas ubicaciones de todos los objetos movidos. De este modo, los programas pueden acceder a los objetos de forma mucho más económica que la búsqueda a través de niveles de caché.

    Por su nuevo trabajo, los investigadores diseñaron una técnica, llamado "Zippads, "que aprovecha la arquitectura Hotpads para comprimir objetos. Cuando los objetos comienzan en el nivel más rápido, están descomprimidos. Pero cuando son desalojados a niveles más lentos, están todos comprimidos. Los punteros en todos los objetos a través de los niveles apuntan a esos objetos comprimidos, lo que los hace fáciles de recuperar a los niveles más rápidos y pueden almacenarse de manera más compacta que las técnicas anteriores.

    Luego, 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 elige algunos objetos representativos como objetos "base". Luego, en nuevos objetos, solo almacena los diferentes datos entre esos objetos y los objetos base representativos.

    Brandon Lucía, profesor asistente de ingeniería eléctrica e informática en la Universidad Carnegie Mellon, elogia el trabajo para aprovechar las características de los lenguajes de programación orientados a objetos para comprimir mejor la memoria. "Las abstracciones como la programación orientada a objetos se agregan a un sistema para simplificar la programación, pero a menudo introducen un costo en el rendimiento o la eficiencia del sistema, ", dice." Lo interesante de este trabajo es que utiliza la abstracción de objetos existente como una forma de hacer que la compresión de la memoria sea más efectiva, a su vez, hace que el sistema sea más rápido y eficiente con características novedosas de arquitectura informática ".

    Esta historia se vuelve a publicar por cortesía de MIT News (web.mit.edu/newsoffice/), un sitio popular que cubre noticias sobre la investigación del MIT, innovación y docencia.




    © Ciencia https://es.scienceaq.com