La dissipation de puissance ou dissipation énergétique est le processus dans lequel un processeur (ou CPU) consomme de l'énergie électrique, et la dissipe sous forme de chaleur à la fois par l'action de la commutation des circuits contenus dans le CPU (tels que les transistors ou historiquement les tubes à vide) et par la consommation due à l'impédance des circuits électroniques.
La conception de processeurs qui exécutent des tâches de manière efficace, sans surchauffe est une problématique importante de presque tous les fabricants de processeurs à ce jour. Certaines implémentations de CPU utilisent très peu d'énergie ; par exemple, les processeurs dans les téléphones mobiles utilisent souvent juste quelques watts d'électricité[1], alors que certains microcontrôleurs utilisés dans les systèmes embarqués peuvent consommer seulement quelques milliwatts ou même quelques microwatts. En comparaison, les processeurs à usage général pour ordinateurs personnels, tels que les ordinateurs de bureau et ordinateurs portables, dissipent beaucoup plus de puissance en raison de leur plus grande complexité et vitesse. Ces composants peuvent consommer de la puissance de l'ordre de quelques watts à plusieurs centaines de watts. Historiquement, les premiers CPU mis en œuvre avec des tubes à vide consommaient plusieurs kilowatts d'énergie.
Les processeurs pour ordinateurs de bureau utilisent généralement une partie importante de l'énergie consommée par l'ordinateur. Les autres gros consommateurs sont les cartes graphiques, qui contiennent des unités de traitement graphique[2], les cartes mères et les blocs d'alimentation. Dans les ordinateurs portables, le rétroéclairage de l'écran LCD utilise également une partie importante de la puissance totale. Même si des fonctions d'économie d'énergie ont été mises en place dans les ordinateurs personnels lorsqu'ils sont en veille, la consommation globale des CPU haute performance d'aujourd'hui est considérable. Ceci est en fort contraste avec la très faible consommation d'énergie des processeurs conçus pour des appareils de faible puissance. Par exemple, l'Intel XScale, peut fonctionner à 600 MHz en consommant moins de 1 W de puissance, alors que les processeurs pour PC Intel x86 dans la même catégorie de performance utilisent plusieurs fois plus d'énergie.
Il y a des causes techniques à cette différence :
Les constructeurs de CPU publient en général deux valeurs concernant la consommation du CPU :
Plusieurs facteurs contribuent à la consommation d’énergie du processeur ; il s’agit notamment de la consommation d’énergie dynamique, de la consommation d’énergie par court-circuit et de la consommation d'énergie due aux courants de fuite des transistors :
La consommation d’énergie dynamique provient du fonctionnement des portes logiques à l’intérieur d’un processeur. Lorsque les portes logiques basculent, l’énergie circule lorsque les condensateurs qu’elles contiennent sont chargés et déchargés. La puissance dynamique consommée par un processeur est approximativement proportionnelle à la fréquence du processeur et au carré de la tension du processeur[4] :
où C est la capacité de charge commutée, f est la fréquence, V est la tension[5].
Lorsque les portes logiques basculent, certains transistors à l’intérieur changent d’état. Comme cela prend un temps fini, il peut arriver que pendant un très court laps de temps, certains transistors conduisent simultanément. Un chemin direct entre la source et la terre entraîne alors une perte de puissance par court-circuit ( P s c {\displaystyle P_{sc}} ). L’amplitude de cette puissance dépend du type de porte logique, et est assez complexe à modéliser à un niveau macro.
La consommation d’énergie due aux courants de fuite ( P l e a k {\displaystyle P_{leak}} ) émane à un niveau microscopique dans les transistors. De petites quantités de courant circulent toujours entre les différentes parties dopées du transistor. L’amplitude de ces courants dépend de l’état du transistor, de ses dimensions, de ses propriétés physiques et parfois de sa température. La quantité totale de courants de fuite a tendance à augmenter en fonction de l’augmentation de la température et de la diminution de la taille des transistors.
La consommation d’énergie dynamique et par court-circuit dépend de la fréquence d’horloge, tandis que le courant de fuite dépend de la tension d’alimentation du processeur. Il a été démontré que la consommation d’énergie d’un programme présente un comportement énergétique convexe, ce qui signifie qu’il existe une fréquence CPU optimale à laquelle la consommation d’énergie est minimale pour le travail effectué.
La consommation d’énergie peut être réduite de plusieurs façons, notamment les suivantes :
Historiquement, les fabricants de processeurs ont systématiquement augmenté les fréquences d’horloge et le parallélisme au niveau des instructions, de sorte que le code monothread s’exécutait plus rapidement sur les processeurs les plus récents sans modification[9]. Plus récemment, afin de gérer la dissipation de la puissance du processeur, les fabricants de processeurs privilégient les conceptions de puces multicœurs, de sorte que les logiciels doivent être écrits de manière multi-thread ou multi-processus pour tirer pleinement parti de ce matériel. De nombreux paradigmes de développement multithread introduisent une surcharge et ne verront pas d’augmentation linéaire de la vitesse par rapport au nombre de processeurs. Cela est particulièrement vrai lors de l’accès à des ressources partagées ou dépendantes, en raison de la contention de verrou. Cet effet devient plus perceptible à mesure que le nombre de processeurs augmente.