• Home
  • Chimie
  • Astronomie
  • Énergie
  • La nature
  • Biologie
  • Physique
  • Électronique
  • Une nouvelle technique de compression de données pour des programmes informatiques plus rapides

    Une nouvelle technique développée par des chercheurs du MIT compresse des « objets » en mémoire pour la première fois, libérer plus de mémoire utilisée par les ordinateurs, leur permettant de fonctionner plus rapidement et d'effectuer plus de tâches simultanément. Crédit :Christine Daniloff, MIT

    Une nouvelle technique développée par les chercheurs du MIT repense la compression des données matérielles pour libérer plus de mémoire utilisée par les ordinateurs et les appareils mobiles, leur permettant de fonctionner plus rapidement et d'effectuer plus de tâches simultanément.

    La compression des données exploite les données redondantes pour libérer de la capacité de stockage, augmenter les vitesses de calcul, et offrir d'autres avantages. Dans les systèmes informatiques actuels, accéder à la mémoire principale est très coûteux par rapport au calcul réel. À cause de ce, l'utilisation de la compression des données dans la mémoire permet d'améliorer les performances, car il réduit la fréquence et la quantité de données que les programmes doivent extraire de la mémoire principale.

    La mémoire des ordinateurs modernes gère et transfère les données en morceaux de taille fixe, sur laquelle doivent opérer les techniques de compression traditionnelles. Logiciel, cependant, ne stocke pas naturellement ses données en morceaux de taille fixe. Au lieu, il utilise des "objets, " structures de données qui contiennent différents types de données et ont des tailles variables. Par conséquent, les techniques traditionnelles de compression matérielle gèrent mal les objets.

    Dans un article présenté cette semaine à la conférence internationale ACM sur le support architectural pour les langages de programmation et les systèmes d'exploitation, les chercheurs du MIT décrivent la première approche pour compresser des objets à travers la hiérarchie de la mémoire. Cela réduit l'utilisation de la mémoire tout en améliorant les performances et l'efficacité.

    Les programmeurs pourraient bénéficier de cette technique lors de la programmation dans n'importe quel langage de programmation moderne, comme Java, Python, et Go, qui stocke et gère les données dans des objets, sans changer leur code. De leur côté, les consommateurs verraient des ordinateurs qui peuvent fonctionner beaucoup plus rapidement ou qui peuvent exécuter beaucoup plus d'applications à la même vitesse. Parce que chaque application consomme moins de mémoire, ça roule plus vite, Ainsi, un appareil peut prendre en charge plus d'applications dans la mémoire qui lui est allouée.

    Dans des expériences utilisant une machine virtuelle Java modifiée, la technique compressait deux fois plus de données et réduisait de moitié l'utilisation de la mémoire par rapport aux méthodes traditionnelles basées sur le cache.

    "La motivation était d'essayer de proposer une nouvelle hiérarchie de mémoire qui pourrait faire de la compression basée sur des objets, au lieu de la compression de ligne de cache, car c'est ainsi que la plupart des langages de programmation modernes gèrent les données, " dit le premier auteur Po-An Tsai, un étudiant diplômé du Laboratoire d'Informatique et d'Intelligence Artificielle (CSAIL).

    "Tous les systèmes informatiques en bénéficieraient, " ajoute le co-auteur Daniel Sanchez, professeur d'informatique et de génie électrique, et chercheur au CSAIL. "Les programmes deviennent plus rapides parce qu'ils cessent d'être goulots d'étranglement par la bande passante mémoire."

    Les chercheurs se sont appuyés sur leurs travaux antérieurs qui restructurent l'architecture de la mémoire pour manipuler directement les objets. Les architectures traditionnelles stockent les données en blocs dans une hiérarchie de mémoires progressivement plus grandes et plus lentes, appelé "cache". Les blocs récemment accédés montent au plus petit, caches plus rapides, tandis que les blocs plus anciens sont déplacés vers des caches plus lents et plus grands, se terminant finalement dans la mémoire principale. Bien que cette organisation soit flexible, c'est coûteux :accéder à la mémoire, chaque cache doit rechercher l'adresse parmi son contenu.

    "Parce que l'unité naturelle de la gestion des données dans les langages de programmation modernes sont les objets, pourquoi ne pas simplement créer une hiérarchie de mémoire qui traite des objets ?" dit Sanchez.

    Dans un article publié en octobre dernier, les chercheurs ont détaillé un système appelé Hotpads, qui stocke des objets entiers, étroitement emballés dans des niveaux hiérarchiques, ou "pads". Ces niveaux reposent entièrement sur l'efficacité, sur puce, mémoires directement adressées, sans aucune recherche sophistiquée requise.

    Les programmes référencent alors directement l'emplacement de tous les objets dans la hiérarchie des pastilles. Objets nouvellement alloués et récemment référencés, et les objets qu'ils désignent, rester dans le niveau le plus rapide. Lorsque le niveau le plus rapide se remplit, il exécute un processus "d'éviction" qui conserve les objets récemment référencés mais ramène les objets plus anciens à des niveaux plus lents et recycle les objets qui ne sont plus utiles, pour libérer de l'espace. Les pointeurs sont ensuite mis à jour dans chaque objet pour pointer vers les nouveaux emplacements de tous les objets déplacés. De cette façon, les programmes peuvent accéder à des objets beaucoup moins cher que de rechercher dans les niveaux de cache.

    Pour leur nouveau travail, les chercheurs ont conçu une technique, appelé "Zippads, " qui exploite l'architecture Hotpads pour compresser les objets. Lorsque les objets démarrent au niveau le plus rapide, ils ne sont pas compressés. Mais quand ils sont expulsés à des niveaux plus lents, ils sont tous compressés. Les pointeurs dans tous les objets à travers les niveaux pointent ensuite vers ces objets compressés, ce qui les rend faciles à rappeler aux niveaux les plus rapides et capables d'être stockés de manière plus compacte que les techniques antérieures.

    Un algorithme de compression exploite ensuite efficacement la redondance entre les objets. Cette technique révèle plus d'opportunités de compression que les techniques précédentes, qui se limitaient à trouver une redondance au sein de chaque bloc de taille fixe. L'algorithme sélectionne d'abord quelques objets représentatifs comme objets "de base". Puis, dans de nouveaux objets, il ne stocke que les différentes données entre ces objets et les objets de base représentatifs.

    Brandon Lucie, professeur assistant en génie électrique et informatique à l'Université Carnegie Mellon, fait l'éloge du travail pour tirer parti des fonctionnalités des langages de programmation orientés objet pour mieux compresser la mémoire. "Des abstractions comme la programmation orientée objet sont ajoutées à un système pour rendre la programmation plus simple, mais introduisent souvent un coût dans la performance ou l'efficacité du système, " dit-il. " La chose intéressante à propos de ce travail est qu'il utilise l'abstraction d'objets existante comme un moyen de rendre la compression de la mémoire plus efficace, à son tour rendant le système plus rapide et plus efficace avec de nouvelles fonctionnalités d'architecture informatique."

    Cette histoire est republiée avec l'aimable autorisation de MIT News (web.mit.edu/newsoffice/), un site populaire qui couvre l'actualité de la recherche du MIT, innovation et enseignement.




    © Science https://fr.scienceaq.com