Dans ce chapitre, nous allons évoquer la consommation énergétique. Nos ordinateurs consomment une certaine quantité de courant pour fonctionner, et donc une certaine quantité d'énergie. Il se trouve que cette énergie finit par être dissipée sous forme de chaleur : plus un composant consomme d'énergie, plus il chauffe. La chaleur dissipée est mesurée par ce qu'on appelle l'enveloppe thermique, ou TDP ("Thermal Design Power"), mesurée en Watts. Généralement, le TDP d'un processeur tourne autour des 50 watts, parfois plus sur les modèles plus anciens.
De telles valeurs signifient que les processeurs actuels chauffent beaucoup. Pourtant, ce n'est pas la faute des fabricants de processeurs qui essaient de diminuer la consommation d'énergie de nos CPU au maximum. Malgré cela, nos processeurs voient leur consommation énergétique augmenter toujours plus : l'époque où l'on refroidissait les processeurs avec un simple radiateur est révolue. Place aux gros ventilateurs super puissants, placés sur un radiateur. Et pourtant, l'efficacité énergétique des processeurs n'a pas cessé d'augmenter au cours du temps : pour le même travail, les processeurs chauffent moins. Avant l'année 2010 (environ, la date exacte varie suivant les estimations), la quantité de calcul que peut effectuer le processeur en dépensant un watt double tous les 1,57 ans. Cette observation porte le nom de loi de Kommey. Mais depuis l'année 2010, on est passé à une puissance de calcul par watt qui double tous les 2,6 ans. Il y a donc eu un ralentissement dans l'efficacité énergétique des processeurs. Globalement, le nombre de Watts nécessaires pour effectuer une instruction a diminué de manière exponentielle avec les progrès de la miniaturisation.
La consommation d'un processeur.
Pour comprendre pourquoi, on doit parler de ce qui fait qu'un processeur consomme de l'énergie. Précisons que ce que nous allons dire se généralise à tous les circuits électroniques, sans exceptions. Une partie de la consommation d'énergie d'un processeur vient du fait que le circuit consomme de l'énergie en changeant d'état. On appelle cette perte la consommation dynamique. Une autre partie vient du fait que les circuits ne sont pas des dispositifs parfaits et qu'ils laissent fuiter un peu de courant. Cette consommation est appelée la consommation statique.
L'importance relative de la consommation statique ou dynamique dépend de la technologie utilisée pour fabriquer les portes logiques. Les anciennes technologies, comme les technologies bipolaire, NMOS ou PMOS, ont une forte consommation statique, mais une faible consommation dynamique. A l'inverse, la technologie CMOS a une grande consommation dynamique, mais une faible consommation statique. La raison est que les technologie pré-CMOS utilisaient des résistances avec les transistors. Et des résistances parcourues par un courant consomment de l'énergie, qu'elles convertissent en chaleur. La consommation d'énergie était donc très élevée. Et vu qu'il n'est pas possible d'éteindre une résistance, qui est parcourue par un courant en permanence, il s'agissait surtout de consommation statique. A l'opposé, le MOS n'utilise que des transistors, qui ont une consommation statique très faible. Aussi, les puce électroniques actuelles sont dominées par la consommation dynamique.
Du moins, c'est la théorie, car la miniaturisation a beaucoup changé les choses. La réduction de la finesse de gravure diminue la consommation dynamique, mais augmente la consommation statique. La miniaturisation a permis de radicalement réduire la consommation électrique des puces, en réduisant leur consommation dynamique. Vu que les puces anciennes avaient une consommation statique ridiculement basse et une consommation dynamique normale, doubler la première et diviser par deux la seconde donnait un sacré gain au total. Lors de cette période, la réduction de la finesse de gravure permettait de diminuer la consommation d'énergie, tout en augmentant la puissance de calcul. La loi de Kommey était valide, car la consommation dynamique était la plus importante des deux. Mais depuis, la consommation statique a finit par rattraper la consommation dynamique. L'évolution de la finesse de gravure ne permettant plus de réduire la consommation statique, la consommation d'énergie des processeurs s'est mise à stagner, ce qui explique le ralentissement de la loi de Kommey.
La consommation statique d'un processeur.
Avant toute chose, nous devons faire quelques rappels sur les transistors MOS, sans lesquels les explications qui vont suivre seront compliquées. Un transistor MOS est composé de deux morceaux de conducteurs (l'armature de la grille et la liaison drain-source) séparés par un isolant. L'isolant empêche la fuite des charges de la grille vers la liaison source-drain. Mais avec la miniaturisation, la couche d'isolant ne fait guère plus de quelques dizaines atomes d'épaisseur et laisse passer un peu de courant : on parle de courants de fuite. Plus cette couche d'isolant est petite, plus le courant de fuite sera fort. En clair, une diminution de la finesse de gravure a tendance à augmenter les courants de fuite. Les lois de la physique nous disent alors que la consommation d'énergie qui résulte de ce courant de fuite est une consommation statique. Mieux, on sait prouver qu'elle est égale au produit entre la tension d'alimentation et le courant de fuite.
La consommation dynamique d'un processeur.
Nous avons dit plus haut qu'un transistor MOS est composé de deux transistors séparés par un isolant. Tout cela ressemble beaucoup à un autre composant électronique appelé le condensateur, qui sert de réservoir à électricité. On peut le charger en électricité, ou le vider pour fournir un courant durant une petite durée de temps. Et l'intérieur d'un condensateur est formé de deux couches de métal conducteur, séparées par un isolant électrique, tout comme les transistors MOS. Tout cela fait qu'un transistor MOS incorpore un pseudo-condensateur caché entre la grille et la liaison source-drain, qui porte le nom de capacité parasite du transistor. Et tout cela permet d'expliquer d'où provient la consommation d'énergie d'un transistor.
La quantité d'énergie que peut stocker un condensateur est égale au produit ci-dessous, avec C un coefficient de proportionnalité appelé la capacité du condensateur et U la tension d'alimentation. Cette équation nous dit que la consommation d'énergie d'un transistor dépend du carré de la tension d'alimentation et de sa capacité. Les transistors étant un condensateur, 
On peut alors multiplier par le nombre de transistors d'une puce électronique, ce qui donne :
L'énergie est dissipée quand les transistors changent d'état, il dissipe une quantité de chaleur proportionnelle au carré de la tension d'alimentation. Or, la fréquence définit le nombre maximal de changements d'état qu'un transistor peut subir en une seconde : pour une fréquence de 50 hertz, un transistor peut changer d'état 50 fois par seconde maximum. Après, il s'agit d'une borne maximale : il se peut qu'un transistor ne change pas d'état à chaque cycle. Mais on peut faire l'approximation suivante : le nombre de changement d'état de tous les transistors d'une puce dépend de la fréquence.L'énergie dissipée en une seconde (la puissance P) est approximée par l'équation suivante :
Dans la section qui suit, la capacité des transistors ne nous intéressera pas beaucoup, pas plus que leur nombre. On pourra se contenter d'une relation qui ne contient que la fréquence et la tension.
L'équation précédente nous dit que la consommation d'énergie d'une puce dépend de la tension d'alimentation et de la fréquence. Plus la tension d'alimentation et la fréquence sont élevées, plus le composant consomme d'énergie. La tension a un impact bien plus grand que la fréquence, car elle est au carré alors que la fréquence ne l'est pas.
Les technologies de réduction de la puissance dissipée par un processeur.
L'équation précédente dit que diminuer la tension ou la fréquence permettent de diminuer la consommation énergétique. De plus, la diminution de tension a un effet plus marqué que la diminution de la fréquence. Pour réduire la tension et la fréquence, les ingénieurs ont inventé diverses techniques assez intéressantes, qui permettent d'adapter la tension et la fréquence en fonction des besoins.
Le "Dynamic Voltage Scaling" et le "Frequency Scaling".
Les fabricants de CPU ont eu l'idée de faire varier la tension et la fréquence en fonction de ce que l'on demande au processeur. Rien ne sert d'avoir un processeur qui tourne à 200 gigahertz pendant que l'on regarde ses mails. Par contre, avoir un processeur à cette fréquence peut être utile lorsque l'on joue à un jeu vidéo dernier cri. Dans ce cas, pourquoi ne pas adapter la fréquence suivant l'utilisation qui est faite du processeur ? C'est l'idée qui est derrière le Dynamic Frequency Scaling, aussi appelé DFS. De plus, diminuer la fréquence permet de diminuer la tension d'alimentation, pour diverses raisons techniques. La technologie consistant à diminuer la tension d'alimentation suivant les besoins s'appelle le Dynamic Voltage Scaling, de son petit nom : DVS. Ces techniques sont gérées par un circuit intégré dans le processeur, qui estime en permanence l'utilisation du processeur et la fréquence/tension adaptée.
Le "Power Gating".
Un bon moyen de réduire la consommation électrique de quoi que ce soit est simplement de ne pas dépenser d'énergie inutilement. Une source importante d'économie d'énergie est de ne pas alimenter ce qui ne fonctionne pas, ce qui est en pause ou inutilisé. Si on prend un exemple pour une maison, ne pas éclairer une pièce inutilisée et/ou ne pas la chauffer, évite des gaspillages. Et bien des économies du même genre sont possibles dans un processeur. Il arrive que certains circuits dans un processeur soient inutilisés, pour des raisons aussi diverses que variées. Dans ce cas, on peut éteindre les circuits inutilisés d'un processeur, qui ne consommeront donc plus de courant : on parle de power gating. Elle s'implémente en utilisant des "Power Gates" qui déconnectent les circuits de la tension d'alimentation quand ceux-ci sont inutilisés. Cette technique est très efficace, surtout pour couper l'alimentation du cache du processeur. Cette technique réduit la consommation statique des circuits, mais pas leur consommation dynamique, par définition.
Le "Clock Gating".
Une autre solution, en lien avec le changement d'état des circuits inutilisés, consiste à jouer sur la manière dont l'horloge est distribuée dans le processeur. On estime qu'une grande partie des pertes ont lieu dans l'arbre d'horloge (l'ensemble de fils qui distribuent l'horloge aux bascules). Approximativement 20 à 30% des pertes ont lieu dans l'arbre d'horloge, mais tout dépend du processeur. Les pertes dans l'arbre d'horloge peuvent monter à 90% sur certains processeurs. Et la raison à cela est assez intuitive : l'horloge change d'état à chaque cycle, alors que les autres circuits peuvent garder leur état d'un cycle à l'autre. Rappelons que la dissipation thermique a lieu quand un bit change de valeur. Dans un circuit (hors arbre d'horloge), les bits ne changent pas forcément de valeur à chaque cycle. Sur les architectures modernes, la probabilité de transition 0 ⇔ 1 étant d'environ 10%-30%. Et si les bits gardent la même valeur, alors il n'y a pas de dissipation de puissance. Par contre, l'horloge change d'état à chaque cycle : elle passe de 0 à 1, puis de 1 à 0, à chaque cycle. Il y a toujours deux transitions à chaque cycle, et donc dissipation d'énergie à chaque cycle.
Une première solution consiste à utiliser des bascules spéciales. En effet, l'horloge est surtout connectée aux bascules/registres des circuits séquentiels, la connexion à des circuits combinatoires étant beaucoup plus rare. En conséquence, une bonne partie des pertes liées à l'horloge sont localisées dans ces bascules. Et il est possible de concevoir des bascules synchrones qui consomment peu de puissance.
Une autre solution possible est ne pas envoyer le signal d'horloge en entrée des circuits inutilisés : on appelle cela le Clock Gating. Pour implémenter cette technique, on est obligé de découper notre processeur en sous-circuits, tous reliés à l'horloge. L'ensemble de ces circuits formera un tout du point de vue de l'horloge : on pourra tous les déconnecter de l'horloge d'un coup. Pour implémenter le "Clock Gating", on dispose entre l'arbre d'horloge et le circuit, un circuit qui inhibera l'horloge au besoin. Ce circuit d'inhibition de l'horloge, qui s'appelle une "Clock Gate", est relié à la fameuse unité de gestion de l'énergie intégrée dans le processeur qui se charge de le commander. Comme on le voit sur le schéma du dessus, ces "Clock Gates" sont commandées par un bit, qui ouvre ou ferme la "Clock Gate". Ce signal est généré par une unité spéciale dans notre processeur.
La distribution de tensions d'alimentations multiples.
Une autre solution prend en compte le fait que certaines portions du processeur sont naturellement plus rapides que d'autres. Il est en effet possible de faire fonctionner certaines portions du processeur à une fréquence plus basse que le reste. Autant les circuits de calculs doivent fonctionner à la fréquence maximale, autant un processeur intègre des circuits annexes assez divers, sans rapport avec ses capacités de calcul et qui peuvent fonctionner au ralenti. Par exemple, les circuits de gestion de l'énergie n'ont pas à fonctionner à la fréquence maximale, tout comme les "timers" (des circuits qui permettent de compter les secondes, intégrés dans les processeurs et utilisés pour des décomptes logiciels). Pour cela, les concepteurs de CPU font fonctionner ces circuits à une fréquence plus basse que la normale. Ils ont juste à ajouter des circuits de réduction de fréquence dans l'arbre d'horloge, ce qui est assez trivial.
Vu que les circuits en question fonctionnent à une fréquence inférieure à ce qu'ils peuvent, on peut baisser leur tension d'alimentation juste ce qu'il faut pour les faire aller à la bonne vitesse. Pour ce faire, on doit utiliser plusieurs tensions d'alimentation pour un seul processeur. Ainsi, certaines portions du processeur seront alimentées par une tension plus faible, tandis que d'autres seront alimentées par des tensions plus élevées. La distribution de la tension d'alimentation dans le processeur est alors un peu plus complexe, mais rien d'insurmontable. Pour obtenir une tension quelconque, il suffit de partir de la tension d'alimentation et de la faire passer dans un régulateur de tension, qui fournit la tension voulue en sortie. Les concepteurs de CPU ont juste besoin d'ajouter plusieurs régulateurs de tension, qui fournissent les diverses tensions nécessaires, et de relier chaque circuit avec le bon régulateur.
L'influence de la loi de Moore.
La loi de Moore a des conséquences assez intéressantes. En effet, l'évolution de la finesse de gravure permet d'augmenter le nombre de transistors et la fréquence, mais aussi de diminuer la tension d'alimentation et la capacité des transistors. Pour comprendre pourquoi, il faut savoir que le condensateur formé par la grille, l'isolant et le morceau de semi-conducteur est ce que l'on appelle un condensateur plan. La capacité de ce type de condensateur dépend de la surface de la plaque de métal (la grille), du matériau utilisé comme isolant (en fait, de sa permittivité), et de la distance entre la grille et le semi-conducteur. On peut calculer cette capacité comme suit, avec S la surface de la grille, e un paramètre qui dépend de l'isolant utilisé et d la distance entre le semi-conducteur et la grille (l'épaisseur de l'isolant, quoi).
Généralement, le coefficient e (la permittivité électrique) reste le même d'une génération de processeur à l'autre. Les fabricants ont bien tenté de diminuer celui-ci, et trouver des matériaux ayant un coefficient faible n'a pas été une mince affaire. Le dioxyde de silicium pur a longtemps été utilisé, celui-ci ayant une permittivité de 4,2, mais il ne suffit plus de nos jours. De nombreux matériaux sont maintenant utilisés, notamment des terres rares. Leur raréfaction laisse planer quelques jours sombres pour l'industrie des processeurs et de la microélectronique en général. Dans les faits, seuls les coefficients S et d vont nous intéresser.
Les équations de Dennard.
Si la finesse de gravure diminue de formula_7, la distance d va diminuer du même ordre. Quant à la surface S, elle va diminuer du carré de formula_7, c’est-à-dire qu'elle sera divisée par 2. La capacité totale sera donc divisée par formula_7 tous les deux ans. La fréquence suit le même motif. Cela vient du fait que la période de l'horloge correspond "grosso modo" au temps qu'il faut pour remplir ou vider l'armature de la grille. Dans ces conditions, diminuer la capacité diminue le temps de remplissage/vidange, ce qui diminue la période et fait augmenter la fréquence. Les conséquences d'une diminution par formula_7 de la finesse de gravure sont résumées dans le tableau ci-dessous. L'ensemble porte le nom de lois de Dennard, du nom de l'ingénieur qui a réussi à démontrer ces équations à partir des lois de la physique des semi-conducteurs.
Plus la finesse de gravure est faible, plus le composant électronique peut fonctionner avec une tension d'alimentation plus faible. La tension d'alimentation est proportionnelle à la finesse de gravure : diviser par deux la finesse de gravure divisera la tension d'alimentation par deux. La finesse de gravure étant divisée par la racine carrée de deux tous les deux ans, la tension d'alimentation fait donc de même. Cela a pour conséquence de diviser la consommation énergétique par deux, toutes choses étant égales par ailleurs. Mais dans la réalité, les choses ne sont pas égales par ailleurs : la hausse du nombre de transistors va compenser exactement l'effet de la baisse de tension. À tension d'alimentation égale, le doublement du nombre de transistors tous les deux ans va faire doubler la consommation énergétique, ce qui compensera exactement la baisse de tension.
La finesse de gravure permet aussi de faire diminuer la capacité d'un transistor. Comme pour la tension d'alimentation, une division par deux de la finesse de gravure divise par deux la capacité d'un transistor. Dit autrement, la capacité d'un transistor est divisée par la racine carrée de deux tous les deux ans. On peut remarquer que cela compense exactement l'effet de la fréquence sur la consommation énergétique. La fréquence étant multipliée par la racine carrée de deux tous les deux ans, la consommation énergétique ferait de même toutes choses étant égales par ailleurs.
Si on fait le bilan, la consommation énergétique des processeurs ne change pas avec le temps, du moins si ceux-ci gardent la même surface. Cette conservation de la consommation énergétique se fait cependant avec une augmentation de performance. Ainsi, la performance par watt d'un processeur augmente avec le temps. L'augmentation de performance étant de 80 % par an pour un processeur, on déduit rapidement que la performance par watt augmente de 80 % tous les deux ans. Du moins, c'est la théorie. Théorie qui fonctionnait bien il y a encore quelques années, mais qui ne se traduit plus dans les faits depuis la commercialisation des premiers processeurs Intel Core. Depuis, on observe que le nombre de transistors et la finesse de gravure suivent la tendance indiquée par la loi de Moore, mais cela ne permet plus de faire baisser la tension ou la fréquence. L'ère des équations de Dennard est aujourd'hui révolue, reste à vous expliquer pourquoi.
La fin des équations de Dennard.
La raison principale de la fin des équations de Dennard tient dans la consommation statique et plus précisément dans l'existence des courants de fuite. Les courants de fuite traversent l'isolant du transistor, qui a une certaine résistance électrique. Or, quand on fait passer un courant dans une résistance, il se forme une tension à ses bornes, appelée tension de seuil. Cette tension de seuil est proportionnelle au courant et à la résistance (c'est la fameuse loi d'Ohm vue au collège). On ne peut pas faire fonctionner un transistor si la tension d'alimentation (entre source et drain) est inférieure à la tension de seuil. C'est pour cela que ces dernières années, la tension d'alimentation des processeurs est restée plus ou moins stable, à une valeur proche de la tension de seuil (1 volt, environ). Il faut alors trouver autre chose pour limiter la consommation à des niveaux soutenables.
Les concepteurs de processeurs ne pouvaient pas diminuer la fréquence pour garder une consommation soutenable, et ont donc préféré augmenter le nombre de cœurs. L'augmentation de consommation énergétique ne découle que de l'augmentation du nombre de transistors et des diminutions de capacité. Et la diminution de 30 % tous les deux ans de la capacité ne compense plus le doublement du nombre de transistors : la consommation énergétique augmente ainsi de 40 % tous les deux ans. Bilan : la performance par watt stagne. Et ce n'est pas près de s'arranger tant que les tensions de seuil restent ce qu'elles sont.