3 votos

¿Cómo se calculan la potencia y la temperatura de la CPU?

  1. Desde Wikipedia

    La potencia consumida por una CPU es aproximadamente proporcional a la frecuencia y al cuadrado del voltaje de la CPU: $$ P = C V^2 f $$ (donde C es la capacidad, f es la frecuencia y V es la tensión).

    Me pregunto cómo se deriva eso de la teoría básica de los circuitos.

    ¿Cómo se modela una CPU como circuito? ¿Por qué se modela como una capacitancia, ¿qué tal una mezcla de resistencia, capacitancia e inductancia?

    ¿Es la fórmula anterior para $P$ relacionado con que la energía/trabajo de un capacitancia es $$ W = \frac{C V^2}{2}? $$

    ¿Hay que distinguir aquí entre circuitos de corriente alterna y corriente continua?

  2. Desde otra fuente la temperatura de una CPU se estima como factor constante $$ \text{Processor Temperature} = ( \text{C/W Value} \times \text{Overclocked Wattage}) + \text{Case Temperature} $$ donde, si lo he entendido bien, $\text{Overclocked Wattage}$ es el $P$ en mi primera fórmula, y $\text{C/W Value}$ es el factor constante multiplicado por $P$ .

    Me pregunto por qué podemos modelar la temperatura como una función lineal de $P$ ? En concreto, ¿por qué hay una constante factor $\text{C/W Value}$ ?

  3. En la práctica, me he encontrado con dos casos.

    Cuando reduzco la frecuencia de la CPU, la temperatura de la CPU disminuye. Si la frecuencia de la CPU es $f$ en mi primera parte (¿lo es?), entonces la primera fórmula explica bien este caso.

    Pero hay otro caso al que no encuentro explicación en las partes anteriores. Cuando estoy ejecutando un programa pesado, si uso otro programa llamado cpulimit en Linux para limitar el porcentaje de uso de la CPU a, por ejemplo $50\%$ para el programa de proceso (originalmente no hay ninguna limitación, es decir, el uso de la CPU puede ser del 100% para el programa), la temperatura de la CPU puede también bajar. ¿Cómo se explica esto?

    He publicado mis preguntas en https://superuser.com/questions/432377/whats-more-harmful-to-a-cpu-high-load-or-high-temperature pero las respuestas (especialmente la de Dennis) no parecen convincentes.

¡Gracias y saludos! ?

5voto

JRT Puntos 97

Pregunta 1 : Un procesador es obviamente un objeto muy complejo, pero está hecho de estructuras básicas llamadas puertas lógicas . Una puerta lógica consume energía principalmente cuando cambia de estado, y la frecuencia con la que cambia de estado será probablemente, en promedio, proporcional a la frecuencia del reloj. Para calcular el trabajo realizado cada vez que la puerta cambia de estado se puede modelar como un condensador con cierta capacitancia efectiva, $C_g$ y tú lo consigues:

$$W = \frac{1}{2}C_gV^2$$

y la potencia es el trabajo por cambio de estado multiplicado por el número de cambios de estado por segundo, así:

$$P_g \propto C_gV^2f$$

Si se suman todas las puertas lógicas del procesador se puede definir una capacitancia total efectiva, $C$ que será la suma de todas las capacitancias de la puerta, $C_g$ Así que..:

$$P \propto CV^2f$$

Habría que establecer la constante de proporcionalidad mediante un experimento.

Pregunta 2 La ecuación de la CPU está conectada a un disipador y la ecuación dice que el flujo de calor hacia el disipador (es decir, hacia la CPU) es proporcional a la diferencia de temperatura entre la CPU y la temperatura (presumiblemente constante) del disipador. Parece una aproximación razonable, pero sólo es una aproximación.

Pregunta 3 La respuesta a esta pregunta es: hay un par de mecanismos posibles. Las CPUs modernas escalan sus frecuencias de reloj dependiendo de la carga, por lo que al cargar sólo al 50% la CPU puede estar funcionando por debajo de su velocidad máxima de reloj. Debo admitir que no sé cómo funciona el escalado de reloj en las CPUs modernas y los chicos de Stack Overflow o Superuser probablemente sabrán más sobre esto.

La otra posibilidad depende de lo que haga la CPU en el 50% del tiempo que no está ejecutando su programa. Al principio de esta respuesta dije que la frecuencia con la que las puertas lógicas cambian de estado será probablemente, en promedio, proporcional a la frecuencia del reloj. Sin embargo, la constante de proporcionalidad probablemente dependerá de lo que la CPU esté haciendo. Una CPU que está en reposo puede estar moviendo menos puertas lógicas por segundo que la misma CPU cuando está haciendo números, por lo que una CPU en reposo utilizará menos energía. Eso explica por qué el uso de la energía y, por tanto, la temperatura disminuye cuando se limita la CPU utilizada por el programa.

(Asumo que no es una CPU de doble núcleo y que el 50% significa usar sólo un núcleo).

2voto

franga2000 Puntos 106

La respuesta anterior es mayormente correcta. Añadiré algunos puntos más finos aquí. Soy un diseñador de CPUs que se ha jubilado recientemente, y he hecho los cálculos de potencia muchas veces (para ordenadores a escala de servidor y no para móviles, aunque son muy parecidos).

La pérdida de CV2F se describe de forma razonablemente correcta. Recuerde que un condensador ideal no quema realmente ninguna energía; la energía se gasta en la "resistencia" que está cargando o descargando el condensador. En una CPU, esta "resistencia" es en parte la resistencia efectiva del transistor que controla el condensador, y en parte la resistencia en serie de los cables metálicos del circuito.

Como se ha descrito anteriormente, el cálculo es exacto y no proporcional, simplemente porque la "C" es efectivamente una capacitancia efectiva y no real. Lo de "efectiva" engloba varios factores. En primer lugar, y lo más importante, no todos los nodos se encienden en cada ciclo de reloj, ni mucho menos. Para ahorrar energía (lo que es muy importante en las CPUs de hoy en día), los ingenieros de diseño de las CPUs dedican mucho tiempo a averiguar cómo realizar los cálculos conmutando el menor número de nodos posible. En segundo lugar, la "CV2" es, por supuesto, simplemente la potencia necesaria para cargar un condensador. No todos los nodos de una CPU se cargan/descargan al mismo voltaje. Esto se debe en parte a que diferentes partes de la CPU funcionan con diferentes fuentes de alimentación, y en parte a que las complejidades de la física de los semiconductores (por ejemplo, el efecto de cuerpo MOS) impiden que algunos nodos oscilen hasta su tensión de alimentación completa. Así que, sí, las capacitancias efectivas suelen calcularse simplemente para que coincidan con una simulación previa.

Sin embargo, no se mencionó un punto importante. Sin duda ha oído hablar de la "Ley de Moore", por la que los dispositivos semiconductores reducen su tamaño cada pocos años. Uno de los desafortunados efectos secundarios de este escalamiento es que, en cada generación, la potencia CV2F ocupa cada vez menos del presupuesto total de energía y la simple potencia estática ocupa cada vez más. Los nombres elegantes para este tipo de gasto de energía suelen ser "fuga de puerta" y "fuga subumbral". Sin embargo, el resultado final es que este tipo de gasto de energía es insensible a la frecuencia: los circuitos consumen energía tanto si conmutan como si no, siempre que estén conectados a una fuente de alimentación. Como ya se ha dicho, esto supone cada vez más el presupuesto total de energía.

También hay que tener en cuenta que, en el caso de las CPU, se trata de un fenómeno puramente de CC. Salvo un número muy reducido de excepciones, las CPU no utilizan en absoluto la corriente alterna.

Por último, un poco más de detalle sobre su última pregunta. Como ya se ha dicho, los diseñadores de CPUs se esfuerzan mucho por hacer que el menor número de nodos conmute. Si todos los nodos de la CPU conmutaran a la vez, el presupuesto de energía se dispararía. Una de las técnicas de "gran martillo" que se utilizan a menudo es limitar la cantidad de instrucciones que se emiten. Por ejemplo, una CPU de doble núcleo puede utilizar sólo un núcleo. O bien, cualquier núcleo que sea capaz de emitir cuatro instrucciones por ciclo puede limitarse a emitir sólo dos. O bien (dado que el cálculo en coma flotante consume mucha energía), una CPU podría desactivar las instrucciones de coma flotante durante un breve periodo de tiempo. Sea cual sea el mecanismo utilizado, hay varias formas de activar y desactivar las restricciones. Algunas CPUs tendrán la capacidad de controlar su capacidad efectiva sobre la marcha y restringirse en consecuencia. Otras pueden depender de que el sistema operativo lea un sensor de temperatura en algún lugar y acelere la CPU cuando sea necesario. En otras CPUs, el mecanismo de control de la energía no tiene nada que ver con el estrangulamiento; en su lugar, reducen tanto su voltaje como su frecuencia de reloj. (Hay que tener en cuenta que al bajar el voltaje de una CPU se reduce la corriente que pueden suministrar los transistores, lo que obliga a bajar también la frecuencia). También es bastante común que un programa externo (como el "cpulimit" del que hablas) pueda decirle al chip que se estrangule. Cualquiera que sea la razón, este estrangulamiento limitará la potencia de la CPU (y por lo tanto bajará la temperatura) por las razones obvias. Esta limitando el trabajo que la CPU esta haciendo, y por lo tanto reduciendo el numero de nodos que conmutan, y por lo tanto bajando la capacitancia efectiva. O, de nuevo, dependiendo de la CPU, obligará a la CPU a bajar el voltaje y la frecuencia, con el mismo efecto.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X