ProHoster > Blog > administração > Como funciona a compactação na arquitetura de memória orientada a objetos
Como funciona a compactação na arquitetura de memória orientada a objetos
Uma equipe de engenheiros do MIT desenvolveu uma hierarquia de memória orientada a objetos para trabalhar com dados de forma mais eficiente. No artigo, entendemos como isso é organizado.
/ PxHere /DP
Como você sabe, o aumento de desempenho das CPUs modernas não é acompanhado por uma diminuição correspondente na latência ao acessar a memória. A diferença na mudança de indicadores de ano para ano pode chegar a até 10 vezes (PDF, página 3). Com isso, surge um gargalo, que não permite o aproveitamento total dos recursos disponíveis e retarda o processamento dos dados.
A penalidade de desempenho é o chamado atraso de descompressão. Em alguns casos, a descompactação de dados preparatória pode levar até 64 ciclos do processador.
Para comparação: adição e multiplicação de números de ponto flutuante ocupar não mais do que dez ciclos. O problema é que a memória trabalha com blocos de dados de tamanho fixo, enquanto os aplicativos operam com objetos que podem conter diferentes tipos de dados e diferem entre si em tamanho. Para resolver o problema, os engenheiros do MIT desenvolveram uma hierarquia de memória orientada a objetos que otimiza o processamento de dados.
Como a tecnologia funciona
A solução é baseada em três tecnologias: Hotpads, Zippads e o algoritmo de compressão COCO.
Hotpads são uma hierarquia orientada por software de memória de registro de rascunho (borrador). Esses registros são chamados de pads (pads) e existem três deles - de L1 a L3. Eles armazenam objetos de tamanhos diferentes, metadados e matrizes de ponteiros.
Em essência, a arquitetura é um sistema de cache, mas aprimorado para trabalhar com objetos. O nível do bloco no qual o objeto está localizado depende da frequência com que é usado. Se um dos níveis "transborda", o sistema aciona um mecanismo semelhante aos "coletores de lixo" em Java ou Go. Ele analisa quais objetos são usados com menos frequência do que outros e os move automaticamente entre os níveis.
Zippads funciona com base em Hotpads - arquiva e descompacta dados que entram ou saem dos dois últimos níveis da hierarquia - o pad L3 e a memória principal. No primeiro e no segundo pads, os dados são armazenados inalterados.
Zippads comprime objetos de até 128 bytes. Objetos maiores são divididos em partes, que são colocadas em diferentes áreas da memória. Conforme os desenvolvedores escrevem, essa abordagem aumenta o coeficiente de memória efetivamente usada.
Para compactar objetos, é utilizado o algoritmo COCO (Cross-Object COmpression), que abordaremos mais adiante, embora o sistema seja capaz de trabalhar com Base-Delta-Imediato ou FPC. O algoritmo COCO é uma variação da compressão diferencial (compressão diferencial). Ele compara objetos com "base" e remove bits duplicados - veja o diagrama abaixo:
De acordo com os engenheiros do MIT, sua hierarquia de memória orientada a objetos é 17% mais rápida do que as abordagens clássicas. É muito mais próximo em sua estrutura da arquitetura de aplicativos modernos, portanto, o novo método tem potencial.
Espera-se que, antes de tudo, empresas que trabalham com big data e algoritmos de aprendizado de máquina possam começar a usar a tecnologia. Outra direção potencial são as plataformas de nuvem. Os provedores de IaaS poderão trabalhar com mais eficiência com virtualização, sistemas de armazenamento e recursos de computação.