In una CPU, la velocità di un calcolo influisce sul calore generato?


9

Prendiamo ad esempio una CPU in grado di cambiare la sua velocità di clock, come una moderna CPU per computer (Intel, AMD, qualunque cosa). Quando esegue un determinato calcolo a una determinata velocità di clock, genera la stessa quantità di calore di quando esegue il calcolo identico a una velocità di clock inferiore? So che la dissipazione del calore e l'accumulo di calore sono questioni diverse, quindi parliamo solo del calore grezzo generato.


Un calcolo eseguito con una velocità maggiore richiede un tempo più breve.
Eugene Sh.

4
In un computer ideale nel senso di Landauer , penso che il calcolo produrrebbe la stessa quantità di energia termica. Ma nei computer del mondo reale, probabilmente differirà. Soprattutto perché la quantità di calore che è già stata generata e non ancora dissipata (ovvero la temperatura del semiconduttore) influenzerà le sue proprietà e quindi il calore che genera.
Hearth

Certo che lo sarà, ho progettato alcuni progetti FPGA e ne avevamo bisogno per essere a bassa potenza. Pertanto, abbiamo utilizzato una sorgente di clock a 10 kHz anziché la sorgente a 1 MHz in quanto non avevamo bisogno di tanta potenza di elaborazione.
lucas92,

2
Il consumo dinamico di energia è proporzionale al quadrato della frequenza di clock in ckts sincroni. Quindi anche il calore dovrebbe aumentare.
Mitu Raj,

1
@MITURAJ, il consumo dinamico di energia è proporzionale alla velocità di clock. Non quadrato della velocità di clock. Proporzionale al quadrato di tensione.
mkeith,

Risposte:


14

Oltre alla velocità di clock, tieni presente che in una vera "grande" CPU (una che ha cache, MMU, TLB, esecuzione pipeline, SIMD, ecc.) Un altro fattore importante di quanto calore viene generato sarebbe quanto bene utilizza il flusso di istruzioni le risorse CPU disponibili. Se si esegue un programma che richiede molta memoria, la maggior parte delle volte la CPU muore di fame per i dati, senza fare nulla, quindi il calore prodotto sarebbe relativamente basso. Un codice di calcolo puramente con anelli stretti riscalderebbe di più. Ancora più calore potrebbe essere generato con un codice strettamente ottimizzato che non comporta quasi nessuna previsione errata del ramo, usa le unità SIMD in modo intensivo, fa un uso ottimale delle cache e così via.

Esistono programmi appositamente progettati per far funzionare la CPU in questa modalità, sottolineandola il più possibile, Prime95 è un esempio di spicco per il PC.

In effetti, se un PC esegue già Prime95 su tutti i core della CPU disponibili e quindi si avvia contemporaneamente un'altra applicazione ad alta intensità di CPU (ad esempio il rendering 3D), si noterà che la CPU si raffredda . Questo perché deve condividere in multiproprietà il codice Prime95 molto pesante (che "illumina tutti i transistor" ) con il codice di rendering a domanda relativamente bassa (che probabilmente ha molti errori nella cache e previsioni errate sul ramo - quelli consentono alla CPU di fermarsi per un po 'e rinfrescati).

Un'altra cosa da considerare è che di solito ogni CPU ha una tabella con velocità di clock consentite e tensioni core associate a ciascuna velocità. Anche gli orologi più bassi sono abbinati a una tensione più bassa, poiché il produttore ha stabilito che la CPU sarà stabile a quella tensione. Il consumo di energia varia approssimativamente in modo lineare con la velocità di clock, ma quadraticamente con la tensione.


1
La potenza varia quadraticamente rispetto alla tensione per una determinata velocità di clock . Di solito si utilizza la tensione per variare linearmente la frequenza di clock. Di conseguenza, la potenza è cubica rispetto alla tensione, mentre la velocità di clock è lineare. Quindi il consumo energetico è quadratico rispetto alla velocità di clock.
MooseBoys,

SIMD può generare così tanto calore che alcune CPU si surriscaldano quando si utilizza ampiamente AVX512. +1 per indicare che anche l'aumento di tensione è rilevante.
foresta

1
@MooseBoys, vero, ottimo punto. Ma vale la pena sottolineare che, in realtà, se una CPU a piena velocità ha Vcore = 1.2V, dimezzando la velocità di clock non consentirebbe di Vcore = 0.6, semplicemente non funziona :)
anrieff

@anreiff Potrei non ricordare, ma penso che alcuni moderni chip Intel scenderanno fino a 0,8 V circa mentre sono inattivi. A quel punto sono solo a ~ 700 MHz e probabilmente la cache è disattivata.
mbrig,

Il fatto è che non vanno quasi a 0 V, come ci si potrebbe aspettare se la velocità di clock della CPU e Vcore fossero proporzionali. È più simile a 3,5 GHz@1,2 V e 0,7 GHz@0,8 V. La riduzione della velocità ha un effetto maggiore sulla dissipazione di potenza rispetto alla tensione, anche se la prima influisce "solo" linearmente.
Anrieff

5

L'energia consumata è proporzionale alla velocità di transizione dell'orologio e alle perdite di conduzione con la commutazione di quelle efficaci porte del condensatore. L'aumento della temperatura è tuttavia proporzionale alla potenza termica consumata per tempi effettivi, in gradi C per watt e quindi è indipendente dall'energia, o meglio può funzionare più freddo o più caldo a seconda del consumo di energia e non diffondendo tale potenza per un periodo di tempo più lungo. Potrebbe esserci una formula che mostra che l'aumento di temperatura con la velocità di clock è un potere frazionario di potenza maggiore di uno.


4
  • La potenza sarà inferiore alla frequenza operativa inferiore.

  • Alla stessa tensione centrale l'energia totale sarebbe più alta alla frequenza di clock più bassa.

  • Ma se la tensione del core viene regolata verso il basso con la frequenza, l'energia totale potrebbe essere inferiore.

  • Per gli algoritmi che trascorrono la maggior parte del loro tempo in attesa di operazioni di I / O, il tempo di esecuzione sarà approssimativamente costante indipendentemente dalla frequenza di clock principale. Pertanto l'energia totale richiesta per il calcolo aumenterà in proporzione alla frequenza di clock.


    Il consumo energetico di una CPU è costituito da due parti.

1) Assorbimento di corrente statica (I_static). Per alcune particolari tensioni e temperature di alimentazione questa corrente assorbita è costante indipendentemente da ciò che la CPU sta facendo.

Una CPU realizzata utilizzando la tecnologia CMOS è costituita da migliaia o milioni di transistor MOSFET. L'assorbimento di corrente statica è principalmente dovuto alla corrente di dispersione combinata off-state di milioni di transistor MOSFET.

  • L'assorbimento di corrente statica di solito aumenta all'aumentare della tensione di alimentazione.

  • L'assorbimento di corrente statica di solito aumenta all'aumentare della temperatura della CPU.

  • L'assorbimento di corrente statica è per molti dispositivi molto più piccolo dell'assorbimento di corrente dinamico.

2) Assorbimento di corrente dinamico. Per un processore costruito utilizzando i processi CMOS la corrente dinamica si verifica quando i transistor commutano tra gli stati on / off.

  • Per una tensione di alimentazione specificata l'assorbimento di corrente dinamico è solitamente direttamente proporzionale alla frequenza.

  • L'assorbimento di corrente dinamico aumenta all'aumentare della tensione di alimentazione.

Il motivo è il seguente. Ogni transistor MOSFET nella CPU ha una certa quantità di capacità associata ad esso. Ogni volta che un MOSFET cambia; una carica Q = C * V è necessaria per caricare / scaricare quella capacità.

L'assorbimento di corrente dinamico per ciascun transistor è I_dynamic = C * V * f.

Indipendentemente dalla frequenza con cui vengono eseguite le istruzioni, una particolare serie di operazioni su una particolare CPU (assumendo un comportamento identico dalla cache e dalla memoria) consuma una certa quantità di carica totale (programma Q_) a causa dell'assorbimento di corrente dinamica, indipendentemente dalla frequenza in cui vengono eseguite le istruzioni.

Ma se le istruzioni vengono eseguite più lentamente, la carica totale dovuta all'assorbimento di corrente statica sarà maggiore perché è trascorso più tempo.

Matematicamente si potrebbe scrivere ...

W = (I_dynamic + I_static) * V_supply

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

Possiamo vedere che quando la frequenza di clock si avvicina a 0 la potenza si avvicinerà a un valore fisso, ma l'energia necessaria per calcolare il programma si avvicina all'infinito.

Quindi se (in base alle capacità dei transistor della CPU) il programma Q_ è fissato per una particolare tensione di alimentazione e serie di operazioni, in che modo le moderne CPU risparmiano energia abbassando la frequenza di clock? La risposta è che la maggior parte delle CPU moderne include a bordo (o in un chip associato) un regolatore di tensione del core regolabile. Quando abbassano la frequenza di clock, possono anche abbassare la tensione del core. Q_program (ed E_program) quindi si abbassa proporzionalmente alla tensione di alimentazione.

Si noti che la CPU non può utilizzare la tensione più bassa alle frequenze più alte perché alle tensioni più basse aumenta il tempo di commutazione del transistor.

La potenza è proporzionale alla tensione (al quadrato) e all'assorbimento di corrente. Quindi, se la tensione viene ridotta contemporaneamente alla frequenza, la potenza diminuisce con il cubo della frequenza.


1

I transistor usano energia, che viene sprecata come calore. Esistono due meccanismi, energia statica e dinamica. L'energia statica è costante e l'energia dinamica (di commutazione) si verifica ogni volta che cambia stato (0-> 1 o 1-> 0). L'energia dinamica (di commutazione) è generalmente la maggiore fonte di calore rispetto all'elettricità statica. Il calcolo che si desidera eseguire richiederà lo stesso numero di cicli di clock e fa in modo che lo stesso numero di bit di transistor si capovolga indipendentemente dalla velocità di clock. Quindi il calore dinamico è lo stesso per entrambe le situazioni. Il calore statico è ... statico. Quindi, in sintesi, supponendo che la CPU stia SOLO effettuando questo calcolo 1, il consumo di energia / calore è esattamente lo stesso quando viene mediata in un determinato periodo di tempo.


Stai cavalcando il limite della verità, ma la lascerò passare. Il livello di energia per CMOS sale quasi in una linea lineare con frequenza di funzionamento, ma raddoppia la tensione e i quadrupli di energia. Cattiva equazione I2R, esclusa la velocità.
Sparky256,

L'OP ha semplicemente chiesto la velocità di clock, senza menzionare la riduzione della tensione.
TopCat

Una risposta sopra menzionava la penalità per le tensioni del core. Non ho implicato che tu debba rispondere a quel problema. Stavo solo facendo un commento - in una casella di commento.
Sparky256,

La domanda riguardava il CALORE (misurato in joule), non la potenza o la temperatura. Il calore è una forma di energia. Fatta eccezione per la piccola quantità di energia ricevuta dalle fonti di ingresso e consegnata ai carichi di uscita, tutta l'energia consumata nel dispositivo diventerà calore e alla fine verrà dissipata. Nella logica CMOS, il consumo di energia genera calore quando cambia lo stato della macchina - normalmente una volta per ciclo di clock durante quel momento nel momento in cui le porte sono a metà strada tra 0 e 1. Quindi il RISCALDAMENTO per un determinato compito dovrebbe essere indipendente dalla velocità di clock e totalmente dipendente sul numero di cicli di clock.
richard1941,

1

Nello scenario che hai descritto, l'energia richiesta per il calcolo non dipende dalla velocità di clock. Ma il calore può essere un termine "squishy". Diciamo che il calcolo richiede 1 Joule. Se lo fai in 1 secondo, vale a dire 1 Joule / sec = 1 Watt. Ma se ci vogliono 2 secondi, vale 1 Joule / 2sec = 0,5 Joule / sec = 0,5 Watt.

Il processore raggiungerà sicuramente una temperatura più elevata se il calcolo viene eseguito più velocemente, poiché l'energia viene rilasciata più velocemente. Non penso che ci sia troppo senso in me dire di più.

Oh, tranne per il fatto che i numeri che ti ho dato non sono fatti per essere realistici. È solo il concetto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.