En una CPU, ¿la velocidad de un cálculo afecta el calor generado?

9

Tomemos como ejemplo una CPU que es capaz de cambiar su velocidad de reloj, como una CPU de computadora moderna (Intel, AMD, lo que sea). Cuando realiza un determinado cálculo a una velocidad de reloj particular, ¿genera la misma cantidad de calor que cuando realiza el cálculo idéntico a una velocidad de reloj más lenta? Sé que la disipación de calor y la acumulación de calor son temas diferentes, por lo que vamos a hablar sobre el calor bruto generado.

    
pregunta user3629081

5 respuestas

14

Además de la velocidad del reloj, tenga en cuenta que en una CPU "grande" real (una que tiene cachés, una MMU, TLB, ejecución canalizada, SIMD, etc.), otro factor importante de la cantidad de calor que se genera sería qué tan bien El flujo de instrucciones utiliza los recursos de CPU disponibles. Si ejecuta un programa que requiere mucha memoria, la mayoría de las veces la CPU solo estará hambrienta de datos, sin hacer nada, por lo que el calor producido será relativamente bajo. Un código puramente computacional con bucles apretados calentaría más. Incluso se podría generar más calor con un código muy optimizado que casi no genera predicciones erróneas de las ramas, utiliza las unidades SIMD de forma intensiva, hace un uso óptimo de las memorias caché, etc.

Hay programas diseñados específicamente para operar la CPU en este modo, enfatizándola tanto como sea posible, Prime95 siendo un prominente Ejemplo para la PC.

De hecho, si una PC ya ejecuta Prime95 en todos los núcleos de CPU disponibles y luego usted inicia simultáneamente otra aplicación de uso intensivo de CPU (por ejemplo, renderizado 3D), notará que la CPU se enfría . Esto se debe a que tiene que compartir el código Prime95 muy pesado (que "enciende todos los transistores" ) con el código de representación de demanda relativamente más baja (que probablemente tenga muchos errores de caché y predicciones erróneas de sucursales) que permiten que la CPU se detenga por un tiempo y se enfríe).

Otra cosa que debes tener en cuenta es que generalmente cada CPU tiene una tabla con velocidades de reloj permitidas y voltajes de núcleo asociados con cada velocidad. Los relojes inferiores también se combinan con un voltaje más bajo, ya que el fabricante ha determinado que la CPU se mantendrá estable a ese voltaje. El consumo de energía varía aproximadamente linealmente con la velocidad del reloj, pero de forma cuadrada con voltaje.

    
respondido por el anrieff
5

La potencia consumida es proporcional a la tasa de transición del reloj y las pérdidas de conducción al conmutar esas compuertas de condensadores efectivas. Sin embargo, el aumento de la temperatura es proporcional a la potencia consumida por la resistencia térmica efectiva, en grados C por vatio y, por lo tanto, es independiente de la energía o, más bien, puede ser más frío o más caliente según el consumo de energía y no distribuir esa energía durante un período de tiempo más largo. Puede haber una fórmula que muestre que el aumento de la temperatura con la velocidad del reloj es un poder de potencia fraccional mayor que uno.

    
respondido por el Tony EE rocketscientist
4
  • El vataje será menor a la frecuencia de operación más baja.

  • Al mismo voltaje de núcleo, la energía total sería mayor en la frecuencia de reloj más baja.

  • Pero si la tensión del núcleo se reduce con la frecuencia, entonces la energía total puede ser menor.

  • Para los algoritmos que pasan la mayor parte del tiempo esperando operaciones de E / S, el tiempo de ejecución será aproximadamente constante, independientemente de la frecuencia del reloj central. Por lo tanto, la energía total requerida para el cálculo aumentará proporcionalmente a la frecuencia de reloj.


    El consumo de energía de una CPU consta de dos partes.

1) consumo de corriente estática (I_estático). Para una tensión de alimentación y una temperatura particulares, este consumo de corriente es constante independientemente de lo que esté haciendo la CPU.

Una CPU hecha con tecnología CMOS consta de miles o millones de transistores MOSFET. El consumo de corriente estática se debe principalmente a la corriente combinada de fuga de estado de millones de transistores MOSFET.

  • El consumo de corriente estática generalmente aumenta a medida que aumenta la tensión de alimentación.

  • El consumo de corriente estática generalmente aumenta a medida que aumenta la temperatura de la CPU.

  • El consumo de corriente estática es para muchos dispositivos mucho más pequeño que el consumo de corriente dinámico.

2) Sorteo dinámico de corriente. Para un procesador construido utilizando procesos CMOS, la corriente dinámica se produce cuando los transistores cambian entre los estados de encendido / apagado.

  • Para una tensión de alimentación especificada, el consumo dinámico de corriente suele ser directamente proporcional a la frecuencia.

  • El consumo dinámico de corriente aumenta a medida que aumenta la tensión de alimentación.

El motivo es el siguiente. Cada transistor MOSFET en la CPU tiene una cierta cantidad de capacitancia asociada. Cada vez que un MOSFET cambia; se necesita una carga Q = C * V para cargar / descargar esa capacitancia.

El consumo de corriente dinámico para cada transistor es I_dynamic = C * V * f.

Independientemente de la frecuencia con la que se ejecuten las instrucciones, un conjunto particular de operaciones en una CPU particular (asumiendo un comportamiento idéntico de la memoria caché y la memoria) consume una cierta cantidad de carga total (programa Q) debido al consumo dinámico de corriente, independientemente de de la frecuencia con la que se ejecutan las instrucciones.

Pero si las instrucciones se ejecutan más lentamente, entonces la carga total debida al consumo de corriente estática será mayor porque ha pasado más tiempo.

Matemáticamente se podría escribir ...

W = (I_dynamic + I_static) * V_supply

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

Podemos ver que a medida que la frecuencia del reloj se acerca a 0, el vataje se aproximará a un valor fijo, pero la energía requerida para calcular el programa se acerca al infinito.

Entonces, si (en función de las capacidades de los transistores de la CPU) el Q_program es fijo para una tensión de alimentación y un conjunto de operaciones en particular, ¿cómo ahorran energía las CPU modernas al reducir su frecuencia de reloj? La respuesta es que la mayoría de las CPU modernas incluyen un regulador de voltaje central ajustable integrado (o en un chip complementario). Cuando disminuyen su frecuencia de reloj, también pueden disminuir su voltaje central. Q_program (y E_program) luego disminuye proporcionalmente con la tensión de alimentación.

Tenga en cuenta que la CPU no puede usar el voltaje más bajo en las frecuencias más altas porque a menores voltajes el tiempo de conmutación del transistor aumenta.

El vataje es proporcional al voltaje y al consumo de corriente. Por lo tanto, si la tensión se reduce simultáneamente con la frecuencia, el vataje disminuye con el cuadrado de la frecuencia.

    
respondido por el user4574
1

Los transistores usan energía, que se desperdicia como calor. Hay dos mecanismos, energía estática y dinámica. La energía estática es constante, y la energía dinámica (conmutación) se produce cada vez que cambia de estado (0- > 1 o 1- > 0). La energía dinámica (de conmutación) suele ser la mayor fuente de calor que la estática. El cálculo que desea realizar tomará el mismo número de ciclos de reloj, y hará que el mismo número de bits de transistor se invierta independientemente de la velocidad del reloj. De ahí que el calor dinámico sea el mismo para ambas situaciones. El calor estático es ... estático. Entonces, en resumen, asumiendo que la CPU SOLO realiza este cálculo, entonces el consumo de energía / calor es exactamente el mismo cuando se promedia en un período de tiempo determinado.

    
respondido por el TopCat
1

En el escenario que describiste, la energía requerida para el cálculo no depende de la velocidad del reloj. Pero el calor puede ser un término "blando". Digamos que el cálculo toma 1 julios. Si lo haces en 1 segundo, es 1 Joule / s = 1 vatio. Pero si tarda 2 segundos, es 1 Joule / 2sec = 0.5 Joule / s = 0.5 Watt.

El procesador definitivamente alcanzará una temperatura más alta si el cálculo se realiza más rápido, porque la energía se libera más rápido. No creo que tenga mucho sentido decir más que eso.

Oh, excepto que los números que te he dado no son para ser realistas. Es solo el concepto.

    
respondido por el mkeith

Lea otras preguntas en las etiquetas