Dans un CPU, la vitesse d'un calcul affecte-t-elle la chaleur générée?


9

Prenons comme exemple un processeur capable de changer sa vitesse d'horloge, comme un processeur d'ordinateur moderne (Intel, AMD, peu importe). Quand il fait un certain calcul à une vitesse d'horloge particulière, génère-t-il la même quantité de chaleur que lorsqu'il fait le calcul identique à une vitesse d'horloge plus lente? Je sais que la dissipation thermique et l'accumulation de chaleur sont des problèmes différents, alors parlons simplement de la chaleur brute générée.


Un calcul effectué à une vitesse plus élevée prend plus de temps.
Eugene Sh.

4
Dans un ordinateur idéal au sens de Landauer , je pense que le calcul produirait la même quantité d'énergie thermique. Mais dans les ordinateurs du monde réel, cela va probablement différer. Surtout parce que la quantité de chaleur déjà générée et non encore dissipée (c'est-à-dire la température du semi-conducteur) va affecter ses propriétés et donc la chaleur qu'il génère.
Foyer

Bien sûr que oui, j'ai conçu des conceptions de FPGA et nous en avions besoin pour être de faible puissance. Par conséquent, nous avons utilisé une source d'horloge de 10 kHz au lieu de la source de 1 MHz, car nous n'avions pas besoin de beaucoup de puissance de traitement.
lucas92

2
La consommation d'énergie dynamique est proportionnelle au carré de la fréquence d'horloge dans les ckts synchrones. La chaleur devrait donc également augmenter.
Mitu Raj

1
@MITURAJ, la consommation d'énergie dynamique est proportionnelle à la vitesse d'horloge. Pas carré de vitesse d'horloge. Proportionnelle au carré de tension.
mkeith

Réponses:


14

Outre la vitesse d'horloge, gardez à l'esprit que dans un véritable "gros" CPU (celui qui a des caches, une MMU, des TLB, une exécution en pipeline, SIMD, etc.), un autre facteur important de la quantité de chaleur générée est la qualité d'utilisation du flux d'instructions. les ressources CPU disponibles. Si vous exécutez un programme qui utilise beaucoup de mémoire, la plupart du temps, le processeur manque de données, ne fait rien, de sorte que la chaleur produite est relativement faible. Un code de calcul purement avec des boucles serrées chaufferait davantage. Encore plus de chaleur pourrait être générée avec un code étroitement optimisé qui n'engendre presque aucune erreur de branchement, utilise les unités SIMD de manière intensive, utilise de manière optimale les caches, etc.

Il existe des programmes spécialement conçus pour faire fonctionner le CPU dans ce mode - en le soulignant autant que possible, Prime95 étant un exemple proéminent pour le PC.

En fait, si un PC exécute déjà Prime95 sur tous les cœurs de processeur disponibles et que vous lancez simultanément une autre application gourmande en processeur (par exemple, le rendu 3D), vous remarquerez que le processeur se refroidit . En effet, il doit partager en temps partagé le code Prime95 très lourd (qui "éclaire tous les transistors" ) avec le code de rendu relativement moins exigeant (qui a probablement beaucoup de ratés de cache et de mauvaises prévisions de branche - ceux-ci permettent au CPU de s'arrêter pour un moment et refroidir).

Une autre chose que vous devez prendre en compte est que chaque CPU a généralement une table avec les vitesses d'horloge autorisées et les tensions de base associées à chaque vitesse. Les horloges inférieures sont également associées à une tension inférieure, car le fabricant a déterminé que le CPU sera stable à cette tension. La consommation d'énergie varie à peu près linéairement avec la vitesse d'horloge, mais quadratique avec la tension.


1
La puissance varie de façon quadratique en fonction de la tension pour une vitesse d'horloge donnée . Habituellement, vous utilisez la tension pour faire varier linéairement la fréquence d'horloge. En conséquence, la puissance est cubique par rapport à la tension, tandis que la vitesse d'horloge est linéaire. La consommation d'énergie est donc quadratique par rapport à la vitesse d'horloge.
MooseBoys

SIMD peut générer tellement de chaleur que certains CPU surchauffent lors de l'utilisation intensive de l'AVX512. +1 pour avoir souligné que l'augmentation de tension est également pertinente.
forêt

1
@MooseBoys, vrai, très bon point. Mais il convient de souligner qu'en réalité, si un processeur pleine vitesse a Vcore = 1,2 V, la réduction de moitié de la vitesse d'horloge ne permettrait pas Vcore = 0,6, cela ne fonctionnera tout simplement pas :)
anrieff

@anreiff Je me souviens peut-être mal, mais je pense que certaines puces Intel modernes vont descendre jusqu'à 0,8 V ou plus lorsqu'elles sont inactives. Ils ne sont cependant qu'à ~ 700 MHz à ce stade, et le cache est probablement désactivé.
mbrig

Le fait est qu'ils ne vont pas près de 0V, comme on pourrait s'y attendre si la vitesse d'horloge du processeur et Vcore étaient proportionnelles. Cela ressemble plus à 3,5 GHz à 1,2 V et à 0,7 GHz à 0,8 V. La réduction de la vitesse a plus d'effet sur la dissipation de puissance que la tension, même si la première ne l'affecte "que" linéairement.
anrieff

5

La puissance consommée est proportionnelle au taux de transition de l'horloge et aux pertes de conduction lors de la commutation de ces portes de condensateur efficaces. L'élévation de température est cependant proportionnelle à la puissance consommée multipliée par la résistance thermique effective, en degrés C par watt et est donc indépendante de l'énergie, ou peut plutôt fonctionner plus froide ou plus chaude en fonction de la consommation d'énergie et ne pas répartir cette puissance sur une plus longue période de temps. Il peut y avoir une formule qui montre que l'augmentation de la température avec la vitesse d'horloge est une puissance fractionnaire de puissance supérieure à un.


4
  • La puissance sera plus faible à la fréquence de fonctionnement inférieure.

  • À la même tension de noyau, l'énergie totale serait plus élevée à la fréquence d'horloge inférieure.

  • Mais si la tension du cœur est abaissée avec la fréquence, l'énergie totale peut être inférieure.

  • Pour les algorithmes qui passent la plupart de leur temps à attendre des opérations d'E / S, le temps d'exécution sera approximativement constant quelle que soit la fréquence d'horloge de base. Par conséquent, l'énergie totale requise pour le calcul augmentera proportionnellement à la fréquence d'horloge.


    La consommation d'énergie d'un CPU se compose de deux parties.

1) Appel de courant statique (I_static). Pour une tension d'alimentation et une température particulières, cette consommation de courant est constante, indépendamment de ce que fait le CPU.

Un processeur fabriqué à l'aide de la technologie CMOS se compose de milliers ou de millions de transistors MOSFET. La consommation de courant statique est principalement due au courant de fuite combiné à l'état bloqué de millions de transistors MOSFET.

  • La consommation de courant statique augmente généralement à mesure que la tension d'alimentation augmente.

  • La consommation de courant statique augmente généralement à mesure que la température du processeur augmente.

  • La consommation de courant statique est pour de nombreux appareils beaucoup plus petite que la consommation de courant dynamique.

2) Appel de courant dynamique. Pour un processeur construit à l'aide de processus CMOS, le courant dynamique se produit lorsque les transistors commutent entre les états marche / arrêt.

  • Pour une tension d'alimentation spécifiée, la consommation de courant dynamique est généralement directement proportionnelle à la fréquence.

  • La consommation de courant dynamique augmente à mesure que la tension d'alimentation augmente.

La raison en est la suivante. Chaque transistor MOSFET dans le CPU a une certaine quantité de capacité qui lui est associée. Chaque fois qu'un MOSFET commute; une charge Q = C * V est nécessaire pour charger / décharger cette capacité.

La consommation de courant dynamique pour chaque transistor est I_dynamic = C * V * f.

Quelle que soit la fréquence à laquelle les instructions sont exécutées, un ensemble particulier d'opérations sur un processeur particulier (en supposant un comportement identique du cache et de la mémoire) consomme une certaine quantité de charge totale (Q_program) en raison de la consommation de courant dynamique, quelle que soit la fréquence que les instructions sont exécutées à.

Mais si les instructions sont exécutées plus lentement, la charge totale due à la consommation de courant statique sera plus élevée car plus de temps s'est écoulé.

Mathématiquement, on pourrait écrire ...

W = (I_dynamic + I_static) * V_supply

E = W * time = Q_program * V_supply + I_static * V_supply * time

Nous pouvons voir que lorsque la fréquence d'horloge approche de 0, la puissance s'approche d'une valeur fixe, mais l'énergie nécessaire pour calculer le programme approche de l'infini.

Donc, si (basé sur les capacités des transistors CPU) Q_program est fixé pour une tension d'alimentation et un ensemble d'opérations particuliers, comment les processeurs modernes économisent-ils de l'énergie en abaissant leur fréquence d'horloge? La réponse est que la plupart des processeurs modernes incluent soit à bord (ou dans une puce compagnon) un régulateur de tension de noyau réglable. Lorsqu'ils abaissent leur fréquence d'horloge, ils peuvent également abaisser leur tension de base. Q_program (et E_program) diminue ensuite proportionnellement à la tension d'alimentation.

Notez que le CPU ne peut pas utiliser la tension inférieure aux fréquences plus élevées car à des tensions inférieures, le temps de commutation du transistor augmente.

La puissance est proportionnelle à la tension (au carré) et à la consommation de courant. Donc, si la tension baisse simultanément avec la fréquence, la puissance diminue avec le cube de la fréquence.


1

Les transistors utilisent de l'énergie, qui est gaspillée en chaleur. Il existe deux mécanismes, l'énergie statique et l'énergie dynamique. L'énergie statique est constante et l'énergie dynamique (de commutation) se produit chaque fois qu'elle change d'état (0-> 1 ou 1-> 0). L'énergie dynamique (de commutation) est généralement la plus grande source de chaleur que l'électricité statique. Le calcul que vous souhaitez effectuer prendra le même nombre de cycles d'horloge et fera basculer le même nombre de bits de transistor quelle que soit la vitesse d'horloge. La chaleur dynamique est donc la même pour les deux situations. La chaleur statique est ... statique. Donc, en résumé, en supposant que le CPU effectue UNIQUEMENT ce calcul, la consommation d'énergie / chaleur est exactement la même lorsqu'elle est calculée en moyenne sur une période de temps donnée.


Vous êtes au bord de la vérité, mais je vais laisser passer. Le niveau d'énergie pour le CMOS augmente presque dans une ligne linéaire avec la fréquence de fonctionnement, mais double la tension et l'énergie quadruple. Équation I2R désagréable, sans compter la vitesse.
Sparky256

L'OP a posé une question purement sur la vitesse d'horloge, aucune mention de tension réduite.
TopCat

Une réponse ci-dessus mentionnait la pénalité pour les tensions de base. Je n'ai pas laissé entendre que vous deviez répondre à ce problème. Je faisais seulement un commentaire - dans une boîte de commentaire.
Sparky256

La question concernait la CHALEUR (mesurée en Joules), pas la puissance ou la température. La chaleur est une forme d'énergie. À l'exception de la petite quantité d'énergie reçue des sources d'entrée et livrée aux charges de sortie, toute l'énergie consommée dans l'appareil deviendra de la chaleur et sera finalement dissipée. Dans la logique CMOS, la consommation d'énergie génère de la chaleur lorsque l'état de la machine change - normalement une fois par cycle d'horloge à ce moment où les portes sont à mi-chemin entre 0 et 1. Ainsi, la CHALEUR pour une tâche donnée doit être indépendante de la vitesse d'horloge et totalement dépendante sur le nombre de cycles d'horloge.
richard1941

1

Dans le scénario que vous avez décrit, l'énergie requise pour le calcul ne dépend pas de la vitesse d'horloge. Mais la chaleur peut être un terme "spongieux". Disons que le calcul prend 1 joule. Si vous le faites en 1 seconde, c'est 1 Joule / sec = 1 Watt. Mais si cela prend 2 secondes, c'est 1 Joule / 2sec = 0,5 Joule / sec = 0,5 Watt.

Le processeur atteindra certainement une température plus élevée si le calcul est fait plus rapidement, car l'énergie est libérée plus rapidement. Je ne pense pas qu'il soit trop important que j'en dise plus.

Oh, sauf que les chiffres que je vous ai donnés ne sont pas censés être réalistes. C'est juste le concept.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.