Beeinflusst die Geschwindigkeit einer Berechnung in einer CPU die erzeugte Wärme?


9

Nehmen Sie als Beispiel eine CPU, die ihre Taktrate ändern kann, wie eine moderne Computer-CPU (Intel, AMD, was auch immer). Wenn eine bestimmte Berechnung bei einer bestimmten Taktrate durchgeführt wird, erzeugt sie dieselbe Wärmemenge wie bei einer identischen Berechnung bei einer langsameren Taktrate? Ich weiß, dass Wärmeableitung und Wärmestau unterschiedliche Themen sind. Sprechen wir also nur über die erzeugte Rohwärme.


Eine Berechnung mit einer höheren Geschwindigkeit dauert kürzer.
Eugene Sh.

4
In einem Computer, der im Sinne von Landauer ideal ist , würde die Berechnung meiner Meinung nach die gleiche Menge an Wärmeenergie erzeugen. Aber in realen Computern wird es wahrscheinlich anders sein. Insbesondere, weil die Wärmemenge, die bereits erzeugt und noch nicht abgeführt wurde (dh die Temperatur des Halbleiters), seine Eigenschaften und damit die von ihm erzeugte Wärme beeinflusst.
Herd

Natürlich wird es so sein, ich habe einige FPGAs entworfen und wir brauchten es, um wenig Strom zu haben. Daher haben wir anstelle der 1-MHz-Quelle eine 10-kHz-Taktquelle verwendet, da wir nicht so viel Rechenleistung benötigten.
lucas92

2
Der dynamische Stromverbrauch ist proportional zum Quadrat der Taktfrequenz in synchronen ckts. Also sollte auch die Wärme zunehmen.
Mitu Raj

1
@MITURAJ, der dynamische Stromverbrauch ist proportional zur Taktrate. Kein Quadrat der Taktrate. Proportional zum Quadrat der Spannung.
Mkeith

Antworten:


14

Beachten Sie neben der Taktrate, dass in einer echten "großen" CPU (eine mit Caches, MMU, TLBs, Pipeline-Ausführung, SIMD usw.) ein weiterer wichtiger Faktor für die Erzeugung von Wärme darin besteht, wie gut der Befehlsfluss genutzt wird die verfügbaren CPU-Ressourcen. Wenn Sie ein Programm ausführen, das speicherintensiv ist, hungert die CPU die meiste Zeit nur nach Daten und unternimmt nichts, sodass die erzeugte Wärme relativ gering ist. Ein reiner Berechnungscode mit engen Schleifen würde mehr heizen. Noch mehr Wärme könnte mit streng optimiertem Code erzeugt werden, der fast keine Verzweigungsfehler verursacht, die SIMD-Einheiten intensiv nutzt, die Caches optimal nutzt und so weiter.

Es gibt Programme, die speziell dafür entwickelt wurden, die CPU in diesem Modus zu betreiben - und dies so stark wie möglich zu betonen, wobei Prime95 ein herausragendes Beispiel für den PC ist.

Wenn auf einem PC Prime95 bereits auf allen verfügbaren CPU-Kernen ausgeführt wird und Sie gleichzeitig eine andere CPU-intensive Anwendung starten (z. B. 3D-Rendering), werden Sie feststellen, dass sich die CPU abkühlt . Dies liegt daran, dass der sehr schwere Prime95-Code (der "alle Transistoren zum Leuchten bringt" ) mit dem Rendering-Code mit relativ geringerer Nachfrage (der wahrscheinlich viele Cache-Fehler und Fehlvorhersagen für Verzweigungen aufweist - geteilt werden muss, damit die CPU anhalten kann eine Weile und abkühlen).

Eine andere Sache, die Sie berücksichtigen sollten, ist, dass normalerweise jede CPU eine Tabelle mit zulässigen Taktraten und Kernspannungen hat, die jeder Geschwindigkeit zugeordnet sind. Niedrigere Takte werden auch mit niedrigerer Spannung abgeglichen, da der Hersteller festgestellt hat, dass die CPU bei dieser Spannung stabil ist. Der Stromverbrauch variiert ungefähr linear mit der Taktrate, jedoch quadratisch mit der Spannung.


1
Die Leistung variiert quadratisch gegenüber der Spannung für eine bestimmte Taktrate . Normalerweise verwenden Sie die Spannung, um die Taktrate linear zu variieren. Infolgedessen ist die Leistung kubisch gegenüber der Spannung, während die Taktrate linear ist. Der Stromverbrauch ist also quadratisch gegenüber der Taktrate.
MooseBoys

SIMD kann so viel Wärme erzeugen, dass einige CPUs bei intensiver Verwendung von AVX512 überhitzen. +1 für den Hinweis, dass auch der Spannungsanstieg relevant ist.
Wald

1
@ MooseBoys, stimmt, sehr guter Punkt. Aber es ist erwähnenswert, dass in Wirklichkeit, wenn eine CPU mit voller Geschwindigkeit Vcore = 1,2 V hat, eine Halbierung der Taktrate Vcore = 0,6 nicht zulässt, es einfach nicht funktioniert :)
anrieff

@anreiff Ich erinnere mich vielleicht falsch, aber ich denke, einige moderne Intel-Chips werden im Leerlauf bis auf 0,8 V herunterfahren. Zu diesem Zeitpunkt sind sie jedoch nur bei ~ 700 MHz, und der Cache ist wahrscheinlich ausgeschaltet.
mbrig

Die Sache ist, dass sie nicht in die Nähe von 0 V gehen, wie man erwarten könnte, wenn CPU-Taktrate und Vcore proportional wären. Es ist eher wie 3,5 GHz @ 1,2 V und 0,7 GHz @ 0,8 V. Die Verringerung der Geschwindigkeit wirkt sich stärker auf die Verlustleistung aus als auf die Spannung, selbst wenn diese erstere "nur" linear beeinflusst.
Anrieff

5

Die verbrauchte Leistung ist proportional zur Übergangsrate des Takts und den Leitungsverlusten beim Schalten dieser effektiven Kondensatorgatter. Der Temperaturanstieg ist jedoch proportional zum Stromverbrauch und zum effektiven Wärmewiderstand in Grad C pro Watt und ist daher unabhängig von der Energie oder kann je nach Stromverbrauch kühler oder heißer laufen und diese Leistung nicht über einen längeren Zeitraum verteilen. Es kann eine Formel geben, die zeigt, dass der Temperaturanstieg mit der Taktrate eine Bruchleistung der Leistung ist, die größer als eins ist.


4
  • Die Leistung ist bei der niedrigeren Betriebsfrequenz niedriger.

  • Bei gleicher Kernspannung wäre die Gesamtenergie bei niedrigerer Taktfrequenz höher.

  • Wenn jedoch die Kernspannung mit der Frequenz nach unten eingestellt wird, kann die Gesamtenergie geringer sein.

  • Bei Algorithmen, die die meiste Zeit auf E / A-Operationen warten, ist die Ausführungszeit unabhängig von der Kerntaktfrequenz ungefähr konstant. Daher steigt die für die Berechnung erforderliche Gesamtenergie proportional zur Taktfrequenz.


    Der Stromverbrauch einer CPU besteht aus zwei Teilen.

1) Statische Stromaufnahme (I_static). Für eine bestimmte Versorgungsspannung und Temperatur ist diese Stromaufnahme unabhängig davon, was die CPU tut, konstant.

Eine mit CMOS-Technologie hergestellte CPU besteht aus Tausenden oder Millionen von MOSFET-Transistoren. Die statische Stromaufnahme ist hauptsächlich auf den kombinierten Leckstrom im ausgeschalteten Zustand von Millionen von MOSFET-Transistoren zurückzuführen.

  • Die statische Stromaufnahme nimmt normalerweise mit zunehmender Versorgungsspannung zu.

  • Die statische Stromaufnahme steigt normalerweise mit steigender CPU-Temperatur.

  • Die statische Stromaufnahme ist für viele Geräte viel kleiner als die dynamische Stromaufnahme.

2) Dynamische Stromaufnahme. Bei einem Prozessor, der unter Verwendung von CMOS-Prozessen aufgebaut ist, tritt der dynamische Strom auf, wenn Transistoren zwischen Ein / Aus-Zuständen umschalten.

  • Bei einer bestimmten Versorgungsspannung ist die dynamische Stromaufnahme normalerweise direkt proportional zur Frequenz.

  • Die dynamische Stromaufnahme nimmt mit zunehmender Versorgungsspannung zu.

Der Grund ist wie folgt. Jedem MOSFET-Transistor in der CPU ist eine bestimmte Kapazität zugeordnet. Jedes Mal, wenn ein MOSFET schaltet; Zum Laden / Entladen dieser Kapazität wird eine Ladung Q = C * V benötigt.

Die dynamische Stromaufnahme für jeden Transistor ist I_dynamic = C * V * f.

Unabhängig davon, mit welcher Frequenz die Befehle ausgeführt werden, verbraucht ein bestimmter Satz von Operationen auf einer bestimmten CPU (unter der Annahme eines identischen Verhaltens aus dem Cache und dem Speicher) aufgrund der dynamischen Stromaufnahme unabhängig von der Frequenz eine bestimmte Menge an Gesamtladung (Q_program) dass die Anweisungen ausgeführt werden bei.

Wenn die Anweisungen jedoch langsamer ausgeführt werden, ist die Gesamtladung aufgrund der statischen Stromaufnahme höher, da mehr Zeit vergangen ist.

Mathematisch könnte man schreiben ...

W = (I_dynamic + I_static) * V_supply

E = W * Zeit = Q_Programm * V_Supply + I_Static * V_Supply * Zeit

Wir können sehen, dass wenn sich die Taktfrequenz 0 nähert, sich die Leistung einem festen Wert nähert, aber die zur Berechnung des Programms erforderliche Energie gegen unendlich geht.

Wenn also (basierend auf den Kapazitäten der CPU-Transistoren) Q_program für eine bestimmte Versorgungsspannung und einen bestimmten Satz von Operationen festgelegt ist, wie sparen moderne CPUs Strom, indem sie ihre Taktfrequenz senken? Die Antwort ist, dass die meisten modernen CPUs entweder einen einstellbaren Kernspannungsregler an Bord (oder in einem Companion-Chip) enthalten. Wenn sie ihre Taktfrequenz senken, können sie auch ihre Kernspannung senken. Q_program (und E_program) senken sich dann proportional zur Versorgungsspannung ab.

Beachten Sie, dass die CPU die niedrigere Spannung bei den höheren Frequenzen nicht verwenden kann, da bei niedrigeren Spannungen die Schaltzeit des Transistors zunimmt.

Die Leistung ist proportional zur Spannung (Quadrat) und zur Stromaufnahme. Wenn also die Spannung gleichzeitig mit der Frequenz abfällt, fällt die Leistung mit dem Würfel der Frequenz ab.


1

Transistoren verbrauchen Energie, die als Wärme verschwendet wird. Es gibt zwei Mechanismen, statische und dynamische Energie. Die statische Energie ist konstant und die dynamische (Schalt-) Energie tritt immer dann auf, wenn sie den Zustand ändert (0-> 1 oder 1-> 0). Dynamische (Schalt-) Energie ist normalerweise die größere Wärmequelle als die statische. Die Berechnung, die Sie durchführen möchten, benötigt dieselbe Anzahl von Taktzyklen und bewirkt, dass dieselbe Anzahl von Transistorbits unabhängig von der Taktrate umgedreht wird. Daher ist die dynamische Wärme für beide Situationen gleich. Die statische Wärme ist ... statisch. Wenn also die CPU NUR diese 1 Berechnung durchführt, ist der Energie- / Wärmeverbrauch im Durchschnitt über einen bestimmten Zeitraum genau gleich.


Du reitest am Rande der Wahrheit, aber ich werde es durchkommen lassen. Das Energieniveau für CMOS steigt fast linear mit der Betriebsfrequenz an, verdoppelt jedoch die Spannung und die Energie vervierfacht sich. Böse I2R-Gleichung, ohne Geschwindigkeit.
Sparky256

Das OP fragte nur nach der Taktrate, ohne die reduzierte Spannung zu erwähnen.
TopCat

Eine obige Antwort erwähnte die Strafe für Kernspannungen. Ich habe nicht impliziert, dass Sie auf dieses Problem antworten müssen. Ich habe nur einen Kommentar abgegeben - in einem Kommentarfeld.
Sparky256

Die Frage betraf HEAT (gemessen in Joule), nicht Leistung oder Temperatur. Wärme ist eine Form von Energie. Mit Ausnahme der geringen Energiemenge, die von den Eingangsquellen empfangen und an die Ausgangslasten abgegeben wird, wird die gesamte im Gerät verbrauchte Energie zu Wärme und schließlich abgeführt. In der CMOS-Logik erzeugt der Energieverbrauch Wärme, wenn sich der Maschinenzustand ändert - normalerweise einmal pro Taktzyklus in dem Moment, in dem die Tore auf halbem Weg zwischen 0 und 1 liegen. Daher sollte die HEIZUNG für eine bestimmte Aufgabe unabhängig von der Taktrate und vollständig abhängig sein auf die Anzahl der Taktzyklen.
richard1941

1

In dem von Ihnen beschriebenen Szenario hängt die für die Berechnung erforderliche Energie nicht von der Taktrate ab. Aber Hitze kann ein "matschiger" Begriff sein. Angenommen, die Berechnung dauert 1 Joule. Wenn Sie dies in 1 Sekunde tun, ist dies 1 Joule / Sek. = 1 Watt. Wenn es jedoch 2 Sekunden dauert, ist dies 1 Joule / 2 Sek. = 0,5 Joule / Sek. = 0,5 Watt.

Der Prozessor erreicht definitiv eine höhere Temperatur, wenn die Berechnung schneller durchgeführt wird, da die Energie schneller freigesetzt wird. Ich glaube nicht, dass es zu viel Sinn macht, mehr zu sagen.

Oh, außer dass die Zahlen, die ich Ihnen gegeben habe, nicht realistisch sein sollen. Es ist nur das Konzept.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.