Uma nova técnica desenvolvida por pesquisadores do MIT compacta "objetos" na memória pela primeira vez, liberando mais memória usada por computadores, permitindo que eles funcionem mais rapidamente e realizem mais tarefas simultaneamente. Crédito:Christine Daniloff, MIT
Uma nova técnica desenvolvida por pesquisadores do MIT repensa a compressão de dados de hardware para liberar mais memória usada por computadores e dispositivos móveis, permitindo que eles funcionem mais rapidamente e realizem mais tarefas simultaneamente.
A compressão de dados aproveita dados redundantes para liberar capacidade de armazenamento, aumentar as velocidades de computação, e fornecer outras vantagens. Nos sistemas de computador atuais, acessar a memória principal é muito caro em comparação com a computação real. Por causa disso, o uso da compressão de dados na memória ajuda a melhorar o desempenho, pois reduz a frequência e a quantidade de dados que os programas precisam buscar na memória principal.
A memória em computadores modernos gerencia e transfere dados em blocos de tamanho fixo, em que as técnicas tradicionais de compressão devem operar. Programas, Contudo, não armazena naturalmente seus dados em blocos de tamanho fixo. Em vez de, ele usa "objetos, "estruturas de dados que contêm vários tipos de dados e têm tamanhos variáveis. Portanto, as técnicas tradicionais de compressão de hardware tratam mal os objetos.
Em um artigo apresentado na Conferência Internacional ACM sobre Suporte Arquitetônico para Linguagens de Programação e Sistemas Operacionais esta semana, os pesquisadores do MIT descrevem a primeira abordagem para compactar objetos na hierarquia da memória. Isso reduz o uso de memória enquanto melhora o desempenho e a eficiência.
Os programadores podem se beneficiar desta técnica ao programar em qualquer linguagem de programação moderna, como Java, Pitão, e Go - que armazena e gerencia dados em objetos, sem alterar seu código. No final deles, os consumidores veriam computadores que podem rodar muito mais rápido ou podem rodar muito mais aplicativos na mesma velocidade. Como cada aplicativo consome menos memória, corre mais rápido, para que um dispositivo possa suportar mais aplicativos dentro de sua memória alocada.
Em experimentos usando uma máquina virtual Java modificada, a técnica comprimia o dobro de dados e reduzia o uso de memória pela metade em relação aos métodos tradicionais baseados em cache.
"A motivação era tentar criar uma nova hierarquia de memória que pudesse fazer compressão baseada em objeto, em vez de compressão de linha de cache, porque é assim que a maioria das linguagens de programação modernas gerencia os dados, "diz o primeiro autor Po-An Tsai, Pós-graduando no Laboratório de Ciência da Computação e Inteligência Artificial (CSAIL).
"Todos os sistemas de computador se beneficiariam com isso, "acrescenta o co-autor Daniel Sanchez, professor de ciência da computação e engenharia elétrica, e pesquisador do CSAIL. "Os programas ficam mais rápidos porque param de ser congestionados pela largura de banda da memória."
Os pesquisadores construíram trabalhos anteriores que reestruturam a arquitetura da memória para manipular objetos diretamente. As arquiteturas tradicionais armazenam dados em blocos em uma hierarquia de memórias progressivamente maiores e mais lentas, chamados de "caches". Os blocos acessados recentemente aumentam para os menores, caches mais rápidos, enquanto os blocos mais antigos são movidos para caches mais lentos e maiores, eventualmente terminando de volta na memória principal. Embora esta organização seja flexível, é caro:para acessar a memória, cada cache precisa pesquisar o endereço entre seu conteúdo.
"Como a unidade natural de gerenciamento de dados nas linguagens de programação modernas são os objetos, por que não apenas fazer uma hierarquia de memória que lida com objetos? ”, diz Sanchez.
Em um artigo publicado em outubro passado, os pesquisadores detalharam um sistema chamado Hotpads, que armazena objetos inteiros, compactado em níveis hierárquicos, ou "almofadas". Esses níveis residem inteiramente na eficiência, no chip, memórias endereçadas diretamente - sem a necessidade de pesquisas sofisticadas.
Em seguida, os programas fazem referência direta à localização de todos os objetos na hierarquia de blocos. Objetos recém-alocados e referenciados recentemente, e os objetos para os quais eles apontam, fique no nível mais rápido. Quando o nível mais rápido é preenchido, ele executa um processo de "despejo" que mantém os objetos referenciados recentemente, mas leva os objetos mais antigos para níveis mais lentos e recicla os objetos que não são mais úteis, para liberar espaço. Os ponteiros são atualizados em cada objeto para apontar para as novas localizações de todos os objetos movidos. Desta maneira, os programas podem acessar objetos de maneira muito mais barata do que pesquisar os níveis de cache.
Para seu novo trabalho, os pesquisadores desenvolveram uma técnica, chamado "Zippads, "que alavanca a arquitetura Hotpads para compactar objetos. Quando os objetos começam no nível mais rápido, eles estão descompactados. Mas quando eles são despejados para níveis mais lentos, eles estão todos compactados. Ponteiros em todos os objetos entre os níveis apontam para esses objetos compactados, o que os torna fáceis de recuperar para os níveis mais rápidos e capazes de ser armazenados de forma mais compacta do que as técnicas anteriores.
Um algoritmo de compressão aproveita a redundância entre os objetos de forma eficiente. Esta técnica revela mais oportunidades de compressão do que as técnicas anteriores, que foram limitados a encontrar redundância dentro de cada bloco de tamanho fixo. O algoritmo primeiro escolhe alguns objetos representativos como objetos "básicos". Então, em novos objetos, ele apenas armazena os dados diferentes entre esses objetos e os objetos de base representativos.
Brandon Lucia, professor assistente de engenharia elétrica e da computação na Carnegie Mellon University, elogia o trabalho de alavancar recursos de linguagens de programação orientadas a objetos para melhor compactar a memória. "Abstrações como a programação orientada a objetos são adicionadas a um sistema para tornar a programação mais simples, mas muitas vezes introduzem um custo no desempenho ou eficiência do sistema, ", diz ele." O interessante sobre este trabalho é que ele usa a abstração do objeto existente como uma forma de tornar a compressão de memória mais eficaz, por sua vez, tornando o sistema mais rápido e eficiente com novos recursos de arquitetura de computador. "
Esta história foi republicada por cortesia do MIT News (web.mit.edu/newsoffice/), um site popular que cobre notícias sobre pesquisas do MIT, inovação e ensino.