ProHoster > Blog > Administración > Como funciona a compresión nunha arquitectura de memoria orientada a obxectos
Como funciona a compresión nunha arquitectura de memoria orientada a obxectos
Un equipo de enxeñeiros do MIT desenvolveu unha xerarquía de memoria orientada a obxectos para traballar con datos de forma máis eficiente. No artigo entenderemos como funciona.
/ stocks /PD
Como é sabido, o aumento do rendemento das CPU modernas non vai acompañado dunha diminución correspondente da latencia ao acceder á memoria. A diferenza nos cambios nos indicadores dun ano a outro pode chegar a ser ata 10 veces (PDF, páxina 3). Como resultado, xorde un pescozo de botella que impide o uso total dos recursos dispoñibles e ralentiza o procesamento de datos.
O dano no rendemento é causado polo chamado atraso de descompresión. Nalgúns casos, a descompresión de datos preparatoria pode levar ata 64 ciclos de procesador.
Para comparación: suma e multiplicación de números en coma flotante ocupar non máis de dez ciclos. O problema é que a memoria funciona con bloques de datos dun tamaño fixo, e as aplicacións operan con obxectos que poden conter diferentes tipos de datos e diferir en tamaño entre si. Para resolver o problema, os enxeñeiros do MIT desenvolveron unha xerarquía de memoria orientada a obxectos que optimiza o procesamento de datos.
Como funciona a tecnoloxía
A solución baséase en tres tecnoloxías: Hotpads, Zippads e o algoritmo de compresión COCO.
Hotpads son unha xerarquía controlada por software de memoria rexistrada de alta velocidade (bloc de notas). Estes rexistros chámanse almofadas e hai tres deles: de L1 a L3. Almacenan obxectos de diferentes tamaños, metadatos e matrices de punteiros.
Esencialmente, a arquitectura é un sistema de caché, pero adaptado para traballar con obxectos. O nivel da almofada no que se atopa o obxecto depende da frecuencia con que se use. Se un dos niveis "desborda", o sistema inicia un mecanismo similar aos "recolectores de lixo" nas linguaxes Java ou Go. Analiza cales son os obxectos que se usan con menos frecuencia que outros e móvenos automaticamente entre niveis.
Zippads funciona enriba de Hotpads: arquiva e desarquiva os datos que entran ou saen dos dous últimos niveis da xerarquía: o pad L3 e a memoria principal. O primeiro e o segundo pad almacenan datos sen cambios.
Zippads comprime obxectos cuxo tamaño non supera os 128 bytes. Os obxectos máis grandes divídense en partes, que despois se colocan en diferentes áreas da memoria. Segundo escriben os desenvolvedores, este enfoque aumenta o coeficiente de memoria utilizada de forma eficaz.
Para comprimir obxectos utilízase o algoritmo COCO (Cross-Object COmpression), do que comentaremos máis adiante, aínda que o sistema tamén pode traballar con Base-Delta-Inmediato ou FPC. O algoritmo COCO é un tipo de compresión diferencial (compresión diferencial). Compara obxectos coa "base" e elimina os bits duplicados; vexa o seguinte diagrama:
Segundo os enxeñeiros do MIT, a súa xerarquía de memoria orientada a obxectos é un 17% máis produtiva que os enfoques clásicos. Está moito máis próximo no deseño á arquitectura das aplicacións modernas, polo que o novo método ten potencial.
Espérase que as empresas que traballan con big data e algoritmos de aprendizaxe automática comecen a utilizar a tecnoloxía primeiro. Outra dirección potencial son as plataformas na nube. Os provedores de IaaS poderán traballar de forma máis eficiente coa virtualización, os sistemas de almacenamento de datos e os recursos informáticos.