C'est un fait : les processeurs actuels chauffent beaucoup. Pourtant, ce n'est pas la faute des fabricants de processeurs qui essayent 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. Devant tout ce gâchis, on peut légitimement se poser quelques questions : où passe l'énergie engloutie par nos processeurs ? que font les fabricants pour éviter que leurs processeurs ne gaspillent trop ? Pour prendre leur défense et expliquer cet état de fait environnementalement déplorable, il fallait au moins un article !

Vous devez surement savoir que nos processeurs sont fabriqués avec des composants électroniques que l'on appelle des transistors, reliés pour former des circuits plus ou moins compliqués. Afin d'expliquer pourquoi notre processeur chauffe et comment diminuer sa consommation énergétique, il va falloir expliquer comment fonctionnent ces transistors utilisés dans nos ordinateurs. Eh oui, la grande partie des pertes énergétiques à l'intérieur d'un processeur a lieu dans ces transistors. De plus, une grande partie des astuces des fabricants repose justement sur les propriétés des transistors utilisés dans nos ordinateurs.

Rappels sur le transistor CMOS

Petite précision pour commencer : il existe différents types de transistors, chacun avec ses particularités, ses avantages et ses inconvénients. On ne va pas en parler plus que ça, mais il faut préciser que les transistors utilisés dans nos ordinateurs sont des transistors à effet de champ à technologie CMOS. Si vous ne comprenez pas ce que ça signifie, ce n'est pas grave, c'est un simple détail.

Mais qu'est-ce qu'un transistor CMOS ?

Il s'agit simplement d'un composant relié au reste du circuit électronique par trois morceaux de fil conducteur que l'on appelle broches. Nous allons appliquer de force une tension électrique sur ces broches (attention à ne pas la confondre avec le courant électrique), et cette tension représentera soit 0 soit 1 en fonction du transistor utilisé.

Image utilisateur

Ces trois broches ont des utilités différentes et on leur a donné un nom pour mieux les repérer :

  • la grille ;

  • le drain ;

  • la source.

Dans les processeurs, on utilise notre transistor comme un interrupteur qui réagit en fonction de sa grille : suivant la valeur de la tension qui est appliquée sur la grille, le transistor conduira ou ne conduira pas le courant entre la source et le drain. En clair, appliquez la tension adéquate et la liaison entre la source et le drain se comportera comme un interrupteur fermé et conduira le courant : le transistor sera alors dit dans l'état passant. Par contre, si vous appliquez une tension à la bonne valeur sur la grille, cette liaison se comportera comme un interrupteur ouvert et le courant ne passera pas : le transistor sera dit dans l'état bloqué.

Il existe deux types de transistors CMOS, qui différent entre autres par la tension qu'il faut mettre sur la grille pour les ouvrir/fermer :

  • les transistors NMOS qui s'ouvrent lorsqu'on place une tension égale à zéro sur la grille et se ferment si la tension placée sur cette même grille représente un 1 ;

  • et les PMOS pour qui s'est l'inverse : ils se ferment lorsque la tension sur la grille est nulle, et s'ouvrent si celle-ci représente un 1.

Anatomie d'un CMOS

Voyons maintenant ce que notre transistor a dans le ventre.
À l'intérieur du transistor, on trouve simplement une plaque en métal reliée à la grille appelée l'armature, un bout de semi-conducteur entre la source et le drain, et un morceau d'isolant entre les deux.

Image utilisateur

Comment ça marche ?

Premier cas : on laisse la grille tranquille, la plaque de métal reliée à la grille est vide d’électrons. Si on place une tension entre la source et le drain, un courant électrique va passer et des électrons vont circuler de la source vers le drain : un courant va s'établir.

Maintenant, si on place une tension sur la grille, des électrons vont s'accumuler dans la plaque de métal de la grille jusqu’à un certain point. Au bout d'un certain temps, la grille sera remplie. Ces électrons chargés négativement vont donc repousser tous les autres électrons qui circulent entre le source et le drain, ce qui va les gêner et faire circuler ceux-ci plus difficilement : le courant va diminuer.

Image utilisateur

Au bout d'une certaine tension, les électrons stockés dans la grille vont tellement repousser les électrons de la source que ceux-ci ne traverseront plus du tout la liaison entre la source et le drain : le courant ne passe plus.

Image utilisateur

Consommation dynamique

La première cause d'échauffement dans un transistor est l'accumulation ou la fuite des électrons de la grille lorsque notre transistor change d'état. Pour cela, il faut que la tension de la grille varie de façon à faire passer la plaque de métal de l'état vide à l'état rempli, ou inversement. En vue d'expliquer pourquoi, il faut d'abord remarquer quelque chose : si vous regardez bien, notre transistor est composé de deux morceaux de conducteurs (la grille et la liaison drain-source) séparés par un isolant, c'est une sorte de condensateur. Un condensateur est un composant capable d'accumuler des charges électriques (ici, des électrons).

Pour accumuler des charges dans ce condensateur (sur l'armature de la grille), il faut fournir de l'énergie qui sera donc consommée. De même, lorsque l'armature se vide, l'énergie stockée dans cette dernière va se dissiper sous forme de chaleur. L'énergie accumulée par un condensateur est de $$\frac {1} {2} \times C \times U^2$$, avec $$U$$ la tension appliquée sur l'armature, et $$C$$ un paramètre du condensateur nommé sa capacité. Donc, à chaque fois qu'un transistor doit changer d’état, il va pomper une énergie proportionnelle à $$U^2$$.

Fréquence

Nos processeurs actuels sont cadencés par ce que l'on appelle une horloge : il s'agit d'une tension cyclique qui sert à synchroniser les circuits présents dans notre processeur. Cette tension change de valeur plusieurs fois par seconde. Le nombre exact de changements de valeur de l'horloge qui ont lieu durant une seconde s'appelle la fréquence du processeur. Cette fréquence se mesure dans une unité : le hertz.

Image utilisateur

Cette 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. Mais ça ne veut pas dire forcément qu'il le fera : il peut ne pas changer d'état si le circuit dont il fait partie ne fait pas de calculs, il ne dissipera ni ne consommera d'énergie. En effet, dans un circuit qui n’effectue pas de calculs et qui ne fait donc rien, il n'y a aucune raison que les transistors changent d'état. Enfin presque, tout circuit est relié à l'horloge et donc certains transistors du circuit devront tout de même changer d'état, mais nous reviendrons sur cela plus tard.

Consommation dynamique

Une partie des pertes énergétiques vient du fait que nos transistors consomment de l'énergie en changeant d'état : on appelle cette perte la consommation dynamique. C'est cette consommation qui intervient pour une grande part dans la consommation énergétique d'un processeur. Les fabricants ont donc cherché un moyen d'estimer celle-ci de façon à pouvoir la diminuer le plus possible. Comme on le voit, suivant la charge de travail que l'on donnera à un processeur, celui-ci chauffera plus ou moins. Difficile donc d'évaluer la quantité de chaleur dissipée et l'énergie consommée sans faire d'approximations. Pour évaluer la quantité de chaleur dissipée en une seconde par notre processeur, on va poser une petite hypothèse : nos transistors n’arrêtent pas de changer d'état et sont exploités au mieux ! Donc, pour un processeur de fréquence $$f$$, nos transistors vont changer d'état $$f$$ fois par seconde.

Pour un seul transistor, l'énergie dissipée en une seconde est donc calculable de la sorte :

$$\frac {1} {2} \times C \times U^2 \times f$$

Pour obtenir la consommation d'énergie totale de notre processeur, il suffit de multiplier celle d'un transistor par le nombre total de transistors de notre processeur (on peut faire ça parce que ces transistors sont tous identiques). En notant le nombre total de transistors du processeur $$n$$, on a alors :

$$\frac {1} {2} \times n \times C \times U^2 \times f$$.

On peut donc en déduire quelque chose : plus un processeur a de transistors, plus celui-ci consommera et chauffera. On peut aussi en déduire qu'un processeur consommera d'autant plus que sa fréquence et/ou sa tension d'alimentation est élevée.

Vu que $$n$$, et $$C$$ dépendent du processeur et de sa conception, on peut décider de les passer sous le tapis pour obtenir un résultat un peu indépendant de la conception du processeur, en posant :

$$\frac {C \times n} {2} = K$$.

On obtient la formule nous permettant de déduire la consommation d'un processeur en fonction de sa fréquence et de sa tension d'alimentation :

$$K \times f \times U^2$$.

Solutions

On voit donc plusieurs solutions simples pour diminuer la consommation énergétique d'un processeur :

  • diminuer le nombre de transistors ;

  • diminuer la capacité résiduelle de ces transistors ;

  • diminuer la fréquence ;

  • diminuer la tension d'alimentation du processeur.

On remarque quand même que diminuer la tension d'alimentation est la solution la plus efficace : la consommation énergétique est proportionnelle au carré de la tension, et non à la tension elle-même. Logiquement, les efforts devraient se concentrer sur une diminution de la tension. C'est en pratique ce que font les fabricants de processeurs : ils améliorent leurs transistors de façon à pouvoir diminuer au maximum la tension minimale qui leur permet de fonctionner normalement. En diminuant certains paramètres du transistor, comme la longueur de son armature, l'épaisseur de l'isolant, ou la longueur de la tranche de semi-conducteur, on peut diminuer la tension nécessaire pour faire fonctionner notre transistor. Et cela, saNS toucher à la fréquence.

Et oui, car la fréquence et la tension sont reliées d'une façon qui pose problème quand on souhaite diminuer la tension. Plus la tension d'alimentation d'un transistor est élevée, plus la grille se remplit et se vide vite, plus on peut faire changer d'état le transistor rapidement et donc on peut augmenter la fréquence. Avec les processeurs actuels, la fréquence est devenue tellement démesurée qu'il est difficile de diminuer la tension sans sacrifier en fréquence et donc perdre en performance. Difficile à faire, cependant des solutions techniques existent. Quant au nombre de transistors, nos processeurs actuels embarquent de plus en plus de circuits pour gagner en performance et diminuer le nombre de transistors semble être un vœu pieux, irréalisable.

Dynamic frequency scaling

Cependant, les fabricants de CPU sont pleins d'astuces. Ils 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 qui a besoin d'une quantité énorme de ressources. 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ée DFS. Pour cela, il faut inclure dans les circuits du processeur une petite unité dédiée à la gestion de l'énergie. Cette unité estimera en permanence l'utilisation et la charge de travail imposée au processeur et en déduira s'il faut réduire la fréquence du processeur (et de combien) ou la laisser à son niveau maximal. Cette unité utilise différents algorithmes câblés sous forme de circuits qui analysent et adaptent la fréquence.

Cette technologie est en soi assez peu efficace. Et cela pour plusieurs raisons : la consommation énergétique varie proportionnellement à la fréquence, ce qui a moins d'impact qu'une baisse de la tension d'alimentation. De plus, cela n'aura d'impact que sur les circuits qui changent d'état, à savoir les circuits qui font des calculs ou ceux qui sont reliés à l'horloge pour qu'ils se synchronisent avec elle. Diminuer la fréquence lorsque l'on a besoin de calculs serait inutile : on observerait une baisse des performances assez flagrante et peu de personnes seraient prêtes à l'accepter ; diminuer la fréquence quand peu de circuits changent d'état est peu efficace.

Dynamic Voltage Scaling

Mais la technologie du Dynamic frenquency Scaling a un effet de bord. Comme on l'a vu plus haut, les circuits de nos processeurs ont besoin d'une tension d'autant plus élevée qu'ils doivent avoir une fréquence élevée. Le truc, c'est que la réciproque est vraie : diminuer la fréquence d'un circuit permet de diminuer sa tension d'alimentation. Ainsi, en utilisant la technique du DFS, on peut utiliser une autre technologie qui permettra de diminuer, non seulement la fréquence, mais aussi la tension d'alimentation du processeur. La technologie consistant à diminuer la tension d'alimentation s'appelle le Dynamic Voltage Scaling, de son petit nom : DVS. Là encore, c'est l’unité de gestion de l'énergie intégrée au processeur qui se charge de gérer les tensions d'alimentation : quand les diminuer et de combien.

Avec cette technologie, on sort l'artillerie lourde ! En effet, ce procédé a un impact important sur la consommation énergétique du processeur : si vous vous souvenez des équations vues plus haut, vous savez que l'énergie dissipée durant une seconde est proportionnelle au carré de la tension. En clair, diviser la tension par 2 correspond à diviser par 4 l'énergie dépensée. Dans la réalité, on n'arrive jamais à diviser par deux la tension d’alimentation déjà très basse. Mais les gains sont quand même conséquents. Les technologie DVS et DFS ont toutes les deux été intégrées dans les processeurs modernes sous des noms de marketing assez exotiques : cool and quiet pour AMD et SpeedStep pour Intel. Néanmoins, ni AMD ni Intel ne sont les inventeurs du principe du DVS ou du DFS.

Clock gating

Comme je l'ai dit plus haut, dans un circuit électronique fait de transistors CMOS, ce sont les changements d’état qui seront à l'origine de la majorité de la consommation d'énergie du processeur. Or, certains circuits sont reliés à l'horloge du processeur et vont, pour prendre en compte celle-ci et garder la synchronisation avec les autres composants, devoir changer d'état à chaque fois que l'horloge change de valeur. Notre horloge est, rappelons-le, une tension qui varie cycliquement dans le temps. Elle est distribuée à tous les circuits électroniques du processeur par un réseau électrique interne au CPU, nommé l'arbre d'horloge. Une grande part des pertes en énergie a lieu dans cet arbre d'horloge. On estime que ces pertes peuvent varier de 20% à 35%. L'origine d'une grande partie des pertes vient des composants reliés à l'horloge qui doivent continuer à changer d'état tant que l'horloge est présente, et ce même quand ils sont inutilisés.

La solution est ne pas envoyer le signal d'horloge en entrée des différentes circuits inutilisés : on appelle cela le clock gating. Pour cela, on dispose entre l'arbre d'horloge et le circuit voulu d'une sorte « d'interrupteur » qui peut se fermer ou s'ouvrir sur commande. Si on ouvre cet interrupteur, l'horloge n'atteindra pas le circuit et elle ne pourra pas agir sur lui et faire changer d'état les quelques transistors reliés à l'horloge. Ces interrupteurs, nommés clock gates, sont reliés à la fameuse unité de gestion de l'énergie intégrée dans le processeur qui se charge de les ouvrir ou les fermer quand il détecte qu'un circuit est inutilisé.

Capacité

Une dernière idée pour diminuer la consommation dynamique du processeur pourrait être de diminuer la capacité de chaque transistor. 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 :

$$C = \frac {S \times \epsilon} {d}$$

avec $$S$$ la surface de la grille, $$\epsilon$$ 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).

Trois solutions s'offrent à nous :

  • diminuer $$S$$ (la surface de la grille) ;

  • augmenter $$d$$ (la distance entre le semi-conducteur et la grille) ;

  • modifier $$\epsilon$$ (le coefficient de l'isolant).

Tout d'abord, la variable $$d$$ n'a jamais été augmentée : avec la nécessité de miniaturiser nos transistors pour en faire tenir le plus possible, on a dû réduire au maximum l'épaisseur de l’isolant, au point que ça pose des problèmes.

Pour modifier $$\epsilon$$, il a fallu trouver des matériaux ayant un coefficient faible, ce qui 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. Sans elles, nos processeurs n'auraient pas pu être miniaturisés et voir leurs courants de fuite diminuer. Leur raréfaction laisse planer quelques jours sombres pour l'industrie des processeurs et de la micro-électronique en général.

Consommation statique

Dans ce qu'on a vu plus haut, on a vu les solutions et les causes de la consommation dynamique d'un processeur. Cette consommation dynamique correspond à la consommation énergétique du processeur du au fait que nos transistors changent d'état. Mais nous n'avons pas parlé de la consommation statique, celle qui existe même quand nos transistors restent dans le même état. Celle-ci devient de plus en plus importante depuis ces dernières années, et une grande partie (pouvant aller jusqu’à 50%) de la consommation énergétique d'un processeur passe dans cette consommation dynamique.

Mais d'où vient-elle ?

Logiquement, la grille et le semi-conducteur d'un transistor sont censées être séparées par un isolant et donc aucun courant ne devrait la traverser. Du moins, c'est la théorie, et la réalité est tout autre : l'isolant est loin de jouer son rôle d'isolant suffisamment bien dans les processeurs actuels. Pourquoi ? À force de vouloir miniaturiser au maximum pour intégrer de nombreux transistors sur la même processeur, la couche d'isolant ne fait guère plus de quelques dizaines atomes d'épaisseurs ! Inutile de vous dire que celle-ci est loin d'être étanche et que de nombreux électrons quittent la grille pour rejoindre la zone de semi-conducteur, dissipant une partie de l'énergie emmagasinée dans la grille. De plus, ces électrons perdus, il faut alors les remplacer et gaspiller de l'énergie pour remplir à nouveau la grille.

Ces fuites d’électrons à travers l'isolant s’appellent des courants de fuite. Ces pertes par courants de fuite ont lieu en permanence dès que la grille est chargée, que le transistor change d'état ou non. Une faible partie de la consommation énergétique de nos processeurs est due à ces courants de fuite, mais elle devient de moins en moins négligeable au fil du temps, au fur et à mesure que les processeurs diminuent leur consommation dynamique. De nos jours, on estime que presque 30 à 50% de la consommation d'un processeur passe dans ces courants de fuite. Autant dire que les diminuer devient assez important.

On peut limiter ces courants de fuite en utilisant des matériaux avec un $$\epsilon$$ faible, mais avec une distance grille — semi-conducteur si faible, il ne faut pas espérer des miracles. On peut aussi influer sur les courants de fuite en manipulant la tension d'alimentation. Plus la tension d'alimentation est faible, plus les courants de fuite seront faibles. C'est aussi simple que cela, les deux étant reliés. Nous avons donc une solution pour nos courants de fuite : diminuer la tension d'alimentation de notre circuit.

Power gating

Pour limiter les courants de fuite, une autre solution existe. Son principe est simple : diminuer la tension d'alimentation diminue aussi les courants de fuite. Et quand un circuit n'est plus alimentés, ces courants de fuites s'annulent. Alors pourquoi ne pas couper la tension en entrée des circuits inutilisés pour supprimer les courants de fuite ? Eh bien, ceci existe et s'appelle le power gating ! Cette technique est très efficace, surtout pour couper l'alimentation du cache du processeur. Mais elle est plus difficilement utilisable : les interrupteurs capables de couper l'alimentation électrique des circuits (power gates) sont assez lents et on ne peut pas éteindre les unités qui restent inutilisées durant peu de temps.

Tensions d'alimentations multiples

Comme vous l'avez deviné, la fréquence d'horloge du processeur cadence l'intégralité de celui-ci. Elle permet à tous les circuits du processeur d'aller à la même vitesse. Or, certaines portions du processeur sont naturellement plus rapides que d'autres. Il faut dire que certains circuits du processeur sont très simples et donc très rapides, tandis que d'autres sont très complexes et sont plus lents. Si on veut faire aller tout ces circuits à la même vitesse, on doit se limiter au plus petit dénominateur commun, et donc s'aligner sur le circuit le plus lent. Ainsi, certains circuits du processeur sont trop rapides comparés aux autres. Or, vous vous souvenez de la relation entre fréquence et tension. Si ces circuits fonctionner à une fréquence inférieure à ce qu'ils peuvent, alors pourquoi ne pas baisser leur tension juste ce qu'il faut pour les faire aller à la bonne vitesse ? On économise alors de la tension gratuitement.

Mais dans ce cas, baisser cette tension ne devrait toucher que ces circuits trop rapides. 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 faibles, tandis que d'autres seront alimentées par des tensions plus élevées.

Et voilà, vous connaissez maintenant quelques-unes des technologies implémentées dans nos processeurs pour maîtriser leur consommation énergétique. Bien sûr, ce ne sont pas les seules, et il en existe d'autres, mais vous connaissez au moins quelques procédés généralistes présents dans tous les processeurs grand public actuels.

déroulement d'un cours

  • 1

    Dès aujourd'hui, vous avez accès au contenu pédagogique et aux exercices du cours.

  • 2

    Vous progressez dans le cours semaine par semaine. Une partie du cours correspond à une semaine de travail de votre part.

  • !

    Les exercices doivent être réalisés en une semaine. La date limite vous sera annoncée au démarrage de chaque nouvelle partie. Les exercices sont indispensables pour obtenir votre certification.

  • 3

    À l'issue du cours, vous recevrez vos résultats par e-mail. Votre certificat de réussite vous sera également transmis si vous êtes membre Premium et que vous avez au moins 70% de bonnes réponses.

L'auteur

Découvrez aussi ce cours en...

Exemple de certificat de réussite
Exemple de certificat de réussite