Wie werden die CPU-Leistung und Temperatur berechnet/geschätzt?

  1. Aus Wikipedia

    Die von einer CPU verbrauchte Leistung ist ungefähr proportional zur CPU-Frequenz und zum Quadrat der CPU-Spannung:

    P = C v 2 F
    (wobei C die Kapazität, f die Frequenz und V die Spannung ist).

    Ich frage mich, wie das aus der grundlegenden Schaltungstheorie abgeleitet wird?

    Wie wird eine CPU als Schaltung modelliert? Warum wird es als Kapazität modelliert, wie wäre es mit einer Mischung aus Widerstand, Kapazität und Induktivität?

    Ist die obige Formel für P damit zusammenhängt die Energie/Arbeit einer Kapazität

    W = C v 2 2 ?

    Muss man hier zwischen AC- und DC-Kreisen unterscheiden?

  2. Aus einer anderen Quelle wird die Temperatur einer CPU als konstanter Faktor geschätzt

    Prozessortemperatur = ( C/W-Wert × ÜbertaktetWatt ) + Gehäusetemperatur
    wo, wenn ich das richtig verstehe, Übertaktete Wattleistung ist der P in meiner ersten Formel, und C/WWert ist der konstante Faktor multipliziert mit P .

    Ich frage mich, warum wir die Temperatur als lineare Funktion modellieren können P ? Genauer gesagt, warum gibt es einen konstanten Faktor C/W-Wert ?

  3. In der Praxis bin ich auf zwei Fälle gestoßen.

    Wenn ich die CPU-Frequenz herunterskaliere, sinkt die CPU-Temperatur. Wenn die CPU-Frequenz ist F in meinem ersten Teil (oder?), dann erklärt die erste Formel diesen Fall gut.

    Aber es gibt einen anderen Fall, für den ich keine Erklärung aus den obigen Teilen finden kann. Wenn ich ein schweres Programm ausführe, wenn ich ein anderes Programm verwende, das in Linux aufgerufen wird, cpulimitum den Prozentsatz der CPU-Auslastung auf beispielsweise zu begrenzen 50 % für den Prozess des Programms (ursprünglich gibt es keine Begrenzung, dh der Prozentsatz der CPU-Auslastung kann 100 % für das Programm betragen), die CPU-Temperatur kann auch sinken. Wie werden Sie das erklären?

    Ich habe meine Fragen auf https://superuser.com/questions/432377/whats-more-harmful-to-a-cpu-high-load-or-high-temperature gepostet , aber die Antworten (insbesondere die von Dennis) dort nicht wirken nicht überzeugend.

Danke und Grüße! ?

FYI - ein gutes, verwandtes Q&A auf EE SE

Antworten (2)

Zu Frage 1 : Ein Prozessor ist offensichtlich ein sehr komplexes Objekt, aber er besteht aus Grundstrukturen, die Logikgatter genannt werden . Ein Logikgatter verbraucht hauptsächlich Strom, wenn es seinen Zustand ändert, und die Frequenz, mit der es seinen Zustand ändert, ist wahrscheinlich im Durchschnitt proportional zur Taktfrequenz. Um die geleistete Arbeit zu berechnen, wenn das Gate seinen Zustand ändert, können Sie es als Kondensator mit einer effektiven Kapazität modellieren. C G , und Sie erhalten:

W = 1 2 C G v 2

und die Leistung ist die Arbeit pro Zustandsänderung mal der Anzahl der Zustandsänderungen pro Sekunde, also:

P G C G v 2 F

Wenn Sie alle Logikgatter im Prozessor addieren, können Sie eine effektive Gesamtkapazität definieren, C , das ist die Summe aller Gate-Kapazitäten, C G , So:

P C v 2 F

Sie müssten die Proportionalitätskonstante experimentell ermitteln.

Zu Frage 2 : Vermutlich ist die CPU mit einem Kühlkörper verbunden, und die Gleichung besagt nur, dass der Wärmestrom in den Kühlkörper (dh aus der CPU heraus) proportional zur Temperaturdifferenz zwischen der CPU und der (vermutlich ungefähr konstanten) Temperatur ist des Kühlkörpers. Dies scheint eine vernünftige Annäherung zu sein, aber es ist nur eine Annäherung.

Zu Frage 3 : Es gibt ein paar mögliche Mechanismen, die am Werk sind. Moderne CPUs skalieren ihre Taktfrequenzen abhängig von der Last, sodass die CPU bei einer Belastung von nur 50 % möglicherweise unter ihrer maximalen Taktgeschwindigkeit läuft. Ich muss zugeben, dass ich nicht weiß, wie die Taktskalierung in modernen CPUs funktioniert, und die Jungs von Stack Overflow oder Superuser würden wahrscheinlich mehr darüber wissen.

Die andere Möglichkeit hängt davon ab, was die CPU in den 50% der Zeit tut, in der sie Ihr Programm nicht ausführt. Zu Beginn dieser Antwort sagte ich, dass die Frequenz, mit der die Logikgatter den Zustand ändern, wahrscheinlich im Durchschnitt proportional zur Taktfrequenz sein wird. Die Proportionalitätskonstante hängt jedoch wahrscheinlich davon ab, was die CPU tut. Eine CPU im Leerlauf schaltet möglicherweise weniger Logikgatter pro Sekunde um als dieselbe CPU, wenn sie Zahlen verarbeitet, sodass eine CPU im Leerlauf weniger Strom verbraucht. Das erklärt, warum der Stromverbrauch und damit die Temperatur sinkt, wenn Sie die von Ihrem Programm verwendete CPU begrenzen.

(Ich gehe davon aus, dass es sich nicht um eine Dual-Core-CPU handelt und 50% bedeutet, dass nur ein Kern verwendet wird!)

+1. Danke! Du sagst es also P C v 2 F , nicht P = C v 2 F ?
Ja, aber erinnere dich daran C ist eine effektive Gesamtkapazität, also nehme ich an, dass Sie definieren könnten C als die Kapazität, die die Proportionalitätskonstante gleich eins macht.
Ich frage mich, ob die Formeln, über die wir bisher gesprochen haben, für Wechselstrom- oder Gleichstromkreise gelten? Muss man hier zwischen AC- und DC-Kreisen unterscheiden?
Die Formel basiert nur darauf, wie oft ein Gate den Zustand ändert und wie viel Strom verbraucht wird, wenn es den Zustand ändert. Dies setzt voraus, dass die Versorgungsspannung konstant ist, also denke ich, dass es sich um eine Gleichstromversorgung handelt. In jedem Fall könnten Sie ein Logikgatter nicht mit einer Wechselstromversorgung betreiben.
(1) Ich frage mich, ob W Und P sind für Energie und Leistung, die die CPU verbraucht oder abführt/freigibt? (2) Wird alles in Form von Wärme abgegeben und erhöht damit die CPU-Temperatur oder nur ein Teil davon?
Die gesamte von der CPU verbrauchte Energie endet als Wärme, dh wenn die CPU 10 Watt verbraucht, gibt sie 10 Watt Wärme ab. Irgendwo muss der Strom schließlich hin!

Die vorherige Antwort ist größtenteils richtig. Ich werde hier einige der Feinheiten hinzufügen. Mein Hintergrund ist ein kürzlich pensionierter CPU-Designer, und ich habe die Leistungsberechnungen viele Male durchgeführt (für Computer im Servermaßstab und nicht für Mobilgeräte, obwohl sie sehr ähnlich sind).

CV2F-Verlust wird einigermaßen korrekt beschrieben. Denken Sie daran, dass ein idealer Kondensator eigentlich keine Energie verbrennt; Die Energie wird im "Widerstand" verbraucht, der den Kondensator lädt oder entlädt. In einer CPU ist dieser "Widerstand" teilweise der effektive Widerstand des Transistors, der den Kondensator steuert, und teilweise der Reihenwiderstand der Metalldrähte in der Schaltung.

Wie oben beschrieben, ist die Berechnung genau und nicht proportional, einfach weil das "C" tatsächlich eher eine effektive Kapazität als eine tatsächliche Kapazität ist. Das „effektiv“ umfasst mehrere Faktoren. Erstens und am wichtigsten: Nicht jeder Knoten wird bei jedem Taktzyklus einschalten – noch lange nicht. Um Energie zu sparen (was bei heutigen CPUs enorm wichtig ist), verbringen CPU-Konstrukteure viel Zeit damit, herauszufinden, wie sie Berechnungen durchführen und gleichzeitig so wenige Knoten wie möglich wechseln können. Zweitens ist "CV2" natürlich einfach die Leistung, die zum Laden eines Kondensators benötigt wird. Nicht jeder Knoten in einer CPU lädt/entlädt auf die gleiche Spannung. Dies liegt teilweise daran, dass verschiedene Teile der CPU von unterschiedlichen Netzteilen betrieben werden, und teilweise daran, dass die Feinheiten der Halbleiterphysik (z. der MOS-Body-Effekt) verhindert, dass einige Knoten auf ihre volle Versorgungsspannung schwingen. Also, ja, die effektiven Kapazitäten werden normalerweise einfach berechnet, um mit einer früheren Simulation übereinzustimmen.

Ein wichtiger Punkt wurde jedoch nicht erwähnt. Sie haben zweifellos vom „Mooreschen Gesetz“ gehört, nach dem Halbleiterbauelemente alle paar Jahre kleiner werden. Einer der unglücklichen Nebeneffekte dieser Skalierung ist, dass die CV2F-Leistung mit jeder Generation immer weniger des gesamten Leistungsbudgets einnimmt und die einfache statische Leistung immer mehr einnimmt. Die ausgefallenen Namen für diese Art des Leistungsverbrauchs sind oft „Gate Leakage“ und „Subthreshold Leakage“. Die Quintessenz ist jedoch, dass diese Art des Stromverbrauchs frequenzunempfindlich ist – Schaltkreise verbrauchen Strom, unabhängig davon, ob sie umschalten oder nicht, solange sie an eine Stromversorgung angeschlossen sind. Wie bereits erwähnt, wird dies immer mehr zum gesamten Leistungsbudget.

Beachten Sie auch, dass dies bei CPUs ein reines DC-Phänomen ist. Mit einer sehr kleinen Anzahl von Ausnahmen verwenden CPUs überhaupt keinen Wechselstrom.

Abschließend noch etwas ausführlicher zu Ihrer letzten Frage. Wie bereits erwähnt, arbeiten CPU-Designer sehr hart daran, so wenige Knoten wie möglich umzuschalten. Wenn jeder Knoten auf der CPU jemals gleichzeitig umgeschaltet würde, wäre das Leistungsbudget bei weitem gesprengt. Eine der häufig angewandten "Big-Hammer"-Techniken ist die Begrenzung der Anzahl der erteilten Anweisungen. Beispielsweise kann eine Dual-Core-CPU nur einen Kern verwenden. Oder jeder einzelne Kern, der in der Lage ist, in jedem Zyklus vier Anweisungen auszugeben, könnte sich darauf beschränken, nur zwei auszugeben. Oder (da Gleitkommaberechnungen sehr leistungsintensiv sind) kann eine CPU Gleitkommabefehle für kurze Zeit abschalten. Unabhängig vom tatsächlich verwendeten Mechanismus gibt es verschiedene Möglichkeiten, die Beschränkungen ein- und auszuschalten. Einige CPUs haben die Fähigkeit, ihre effektive Kapazität im laufenden Betrieb zu überwachen und sich entsprechend einzuschränken. Andere hängen möglicherweise vom Betriebssystem ab, um irgendwo einen Temperatursensor auszulesen und die CPU bei Bedarf zu drosseln. Bei wieder anderen CPUs hat der Power-Control-Mechanismus nichts mit Throttling zu tun; stattdessen senken sie sowohl ihre Spannung als auch ihre Taktfrequenz. (Beachten Sie, dass das Absenken der Spannung einer CPU den Strom senkt, den Transistoren liefern können, was Sie dazu zwingt, auch die Frequenz zu senken). Es ist auch durchaus üblich, dass ein externes Programm (wie das "cpulimit", von dem Sie sprechen) den Chip anweisen kann, sich selbst zu drosseln. Was auch immer der Grund sein mag, diese Drosselung begrenzt die Leistung der CPU (und senkt somit die Temperatur) aus den offensichtlichen Gründen. Es begrenzt die Arbeit, die die CPU verrichtet, und somit die Anzahl von Knoten, die schalten, reduziert und somit die effektive Kapazität verringert wird. Oder, wiederum abhängig von der CPU, zwingt es die CPU, Spannung und Frequenz zu senken, mit dem gleichen Effekt.

Vergessen Sie nicht die HLT-Anweisung auf x86-Prozessoren (und gleichwertige Anweisungen an anderer Stelle, da bin ich mir sicher), mit der das Betriebssystem der CPU mitteilt: "Nichts zu tun - Wechseln Sie in den Energiesparmodus, bis ein Interrupt oder so etwas auftritt".
@Phil: sehr wahr.