Des données compressées pour des ordinateurs plus rapides

Ordinateur https://live.staticflickr.com/65535/47638022281_2e667eb72b_b.jpg https://live.staticflickr.com/65535/47638022281_2e667eb72b_b.jpg Technologie Média 0 https://technologiemedia.net/2019/04/18/des-donnees-compressees-pour-des-ordinateurs-plus-rapides/#respond
1245

mit-compression-des-données-ordinateur-plus-rapide

Une nouvelle technique mise au point par les chercheurs du MIT repense la compression des données matérielles afin de libérer davantage de mémoire utilisée par les ordinateurs et les périphériques mobiles, leur permettant ainsi d’exécuter plus rapidement et d’effectuer plus de tâches simultanément.

Une nouvelle technique de compression des données

La compression des données exploite les données redondantes pour libérer de la capacité de stockage, augmenter la vitesse de calcul et fournir 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. De ce fait, l’utilisation de la compression de données dans la mémoire contribue à améliorer les performances, car elle 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 lesquels doivent fonctionner les techniques de compression traditionnelles. Cependant, les logiciels ne stockent pas naturellement leurs données dans des morceaux de taille fixe. Au lieu de cela, il utilise des «objets», des structures de données contenant différents types de données et ayant des tailles variables. Par conséquent, les techniques de compression matérielles traditionnelles gèrent mal les objets.

Dans un document présenté cette semaine à la conférence internationale ACM sur le support architectural des langages de programmation et des systèmes d’exploitation, les chercheurs du MIT décrivent la première approche permettant de compresser des objets dans 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é.

Une technique efficace avec n’importe quel langage de programmation moderne 

Les programmeurs pourraient bénéficier de cette technique lors de la programmation dans n’importe quel langage de programmation moderne – tel que le Java, le Python et le Go – qui stocke et gère des données dans des objets, sans modifier leur code. De leur côté, les consommateurs verraient des ordinateurs pouvant fonctionner beaucoup plus rapidement ou beaucoup plus d’applications à la même vitesse. Comme chaque application consomme moins de mémoire, elle s’exécute plus rapidement, de sorte qu’un périphérique peut prendre en charge davantage d’applications dans la mémoire 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 la mémoire cache.

«La motivation était de créer une nouvelle hiérarchie de mémoire capable de faire de la compression d’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», explique le premier auteur, Po-An Tsai, étudiant diplômé dans le laboratoire d’informatique et d’intelligence artificielle (CSAIL).

«Tous les systèmes informatiques en bénéficieraient», ajoute Daniel Sanchez, coauteur, professeur d’informatique et de génie électrique et chercheur au CSAIL. «Les programmes deviennent plus rapides car ils ne sont plus gênés par la bande passante de la mémoire.»

Les chercheurs se sont inspirés de leurs travaux précédents pour restructurer l’architecture de la mémoire afin de manipuler directement les objets. Les architectures traditionnelles stockent les données dans des blocs dans une hiérarchie de mémoires progressivement plus grandes et plus lentes, appelées «caches».

Les blocs récemment utilisés accèdent à des caches plus petits et plus rapides, tandis que les blocs plus anciens sont déplacés dans des caches plus lents et plus grands, pour finalement revenir dans la mémoire principale. Bien que cette organisation soit flexible, elle est coûteuse: pour accéder à la mémoire, chaque cache doit rechercher l’adresse parmi son contenu.

Créer une hiérarchie de mémoire

«Parce que les objets sont l’unité naturelle de la gestion des données dans les langages de programmation modernes, pourquoi ne pas simplement créer une hiérarchie de mémoire qui traiterait les objets?», déclare Sanchez.

Dans un article publié en octobre dernier, les chercheurs ont détaillé un système appelé Hotpads, qui stocke des objets entiers, regroupés dans des niveaux hiérarchiques, ou «pads». Ces niveaux résident entièrement dans des mémoires efficaces, directement sur une puce, directement adressées – sans recherches sophistiquées.

Les programmes font ensuite directement référence à l’emplacement de tous les objets dans la hiérarchie des pads. Les objets récemment alloués et récemment référencés, ainsi que les objets qu’ils pointent, restent au niveau le plus rapide. Lorsque le niveau le plus rapide est rempli, il exécute un processus «d’éviction» qui conserve les objets récemment référencés, mais abaisse les objets plus anciens à des niveaux plus lents et recycle les objets devenus inutiles 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 manière, les programmes peuvent accéder aux objets de façon beaucoup moins cher qu’une recherche dans les niveaux de cache.

Un algorithme de compression exploite ensuite efficacement la redondance entre les objets

Pour leurs nouveaux travaux, les chercheurs ont conçu une technique appelée «Zippads», qui exploite l’architecture Hotpads pour compresser des objets. Lorsque les objets commencent pour la première fois au niveau le plus rapide, ils sont décompressés. Mais quand ils sont expulsés à un niveau plus lent, ils sont tous compressés. Les pointeurs de tous les objets, quel que soit leur niveau, pointent ensuite sur ces objets compressés, ce qui facilite leur rappel aux niveaux les plus rapides et leur stockage plus compact que les techniques précédentes.

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, limitées à la recherche de redondance au sein de chaque bloc de taille fixe. L’algorithme sélectionne d’abord quelques objets représentatifs en tant qu’objets «de base». Ensuite, dans les nouveaux objets, il ne stocke que les différentes données entre ces objets et les objets de base représentatifs.

Brandon Lucia, professeur adjoint en génie électrique et informatique à la Carnegie Mellon University, fait l’éloge de ce travail visant à exploiter les fonctionnalités des langages de programmation orientés objet pour mieux compresser la mémoire. «Des abstractions telles que la programmation orientée objet sont ajoutées à un système pour simplifier la programmation, mais entraînent souvent un coût en matière de performance ou d’efficacité du système», a-t-il déclaré.

L’abstraction d’objets existants

«Ce qui est intéressant dans ce travail, c’est qu’il utilise l’abstraction d’objets existants comme moyen de rendre la compression de la mémoire plus efficace, ce qui rend un système plus rapide et plus efficace grâce à de nouvelles fonctionnalités d’architecture informatique.

Source : MIT
Crédit photo sur Unsplash : Tianyi Ma

https://live.staticflickr.com/65535/47638022281_2e667eb72b_b.jpg