Efficience énergétique de l’informatique – l’influence de la couche logicielle est primordiale
Une équipe de chercheur (The University of Texas at Austin, University of Washington, Australian National University) proposent dans leur étude "Looking Back on the Language and Hardware Revolutions: Measured Power, Performance, and Scaling" [1] une analyse approfondie des profils énergétiques d’une sélection représentative des processeurs Intel de la période 2003-2010 (Pentium 4, Core2Duo, Core2Quad, Core i5, Core i7, Atom, Atom D).
Durant cette période, l’architecture des processeurs et les logiciels ont beaucoup évolué. La finesse de gravure est passée de 130 nm à 32 nm, les monoprocesseurs ont été progressivement remplacés par des puces multi-coeurs/multi-processeurs et les éditeurs de logiciels développent davantage avec des langages "gérés" (codes de fort degré d’abstraction qui permettent de produire des logiciels portables, plus indépendants de l’architecture matérielle. Les auteurs ont sélectionné le langage java pour représenter cette catégorie) au détriment des langages "natifs" (‘assembly language’). Afin de mieux comprendre comment l’énergie est utilisée par les composants, ces chercheurs ont analysé de manière approfondie la puissance consommée, la performance et la fréquence de l’horloge de 8 processeurs (45 configurations matérielles différentes au total) représentatifs de cette période, sur lesquelles une batterie de 61 tests de performance séquentiels et parallèles a été réalisée.
Par leurs mesures, les chercheurs ont pu constater que la consommation énergétique réelle des processeurs varie nettement selon le test de performance exécuté. L’étude met également en évidence que les méthodes actuelles de prédiction de la performance, et de la consommation électrique, donnent des résultats assez éloignés de la réalité.
La comparaison des tests de performance avec les différents types de langages montrent de nettes différences selon le type de langage utilisé (voir graphique ci-contre), révélant ainsi l’influence importante de la couche logicielle sur l’efficience globale du système. Les chercheurs recommandent ainsi aux architectes systèmes d’inclure dans leurs méthodes de conception et d’évaluation du matériel, à la fois des langages natifs et gérés.
Les chercheurs ont également démontré l’influence de certaines technologies sur la consommation électrique. Comme l’on pouvait s’y attendre, les différentes technologies d’économie d’énergie ou d’optimisation des performances comme la variation dynamique de la fréquence d’horloge, les différentes microarchitectures, le Turbo Boost (fonctionnalité de sur-cadençage dynamique sur les puces Intel), le multi-tâche (Simultaneous Multithreading – SMT) et le nombre de coeurs, font varier de manière extrêmement importante la puissance électrique consommée par le processeur.
Mais les résultats obtenus ont par exemple permis aux auteurs de l’étude de mettre en évidence que le SMT, pourtant réservée à l’origine aux puces entrées de gamme, est l’une des technologies les plus efficaces pour améliorer l’efficience énergétique d’un processeur, et que le multi-cœur, par contre, n’apporte pas toujours un gain d’efficience.
En plus de proposer une méthodologie détaillée, les auteurs de l’étude proposent également quelques recommandations. Alors que la majorité des processeurs modernes intègrent un watt-mètre utile pour leur gestion interne, les auteurs soulignent la nécessité d’en ouvrir l’accès aux développeurs afin de rendre les logiciels « conscients » de leur consommation électrique. Les auteurs recommandent également aux concepteurs de puces d’intégrer plusieurs watt-mètres, un pour chaque unité du processeur (cores, mémoire cache, etc.).
Enfin, les auteurs ajoutent que lors de la conception d’un système informatique efficient, il ne faudrait pas se limiter à optimiser le matériel, mais prendre aussi en compte les logiciels qui seront exécutés pour optimiser le couple matériel/logiciel.
[1] Source de l’étude : Hadi Esmaeilzadeh, Ting Cao, Xi Yang, Stephen M. Blackburn, Kathryn S. McKinley, "Looking Back on the Language and Hardware Revolutions: Measured Power, Performance, and Scaling" (2011): http://www.cs.utexas.edu/~mckinley/papers/power-v-perf-asplos-2011.pdf