Em uma CPU, a velocidade de um cálculo afeta o calor gerado?


9

Tomemos como exemplo uma CPU capaz de alterar sua velocidade de clock, como uma CPU de computador moderna (Intel, AMD, qualquer que seja). Quando faz um certo cálculo em uma determinada velocidade do relógio, gera a mesma quantidade de calor que quando faz o mesmo cálculo em uma velocidade mais lenta? Eu sei que a dissipação de calor e o acúmulo de calor são questões diferentes, então vamos falar sobre o calor bruto gerado.


Um cálculo feito com uma velocidade mais alta está demorando mais tempo.
Eugene Sh.

4
Em um computador ideal no sentido de Landauer , acho que o cálculo produziria a mesma quantidade de energia térmica. Mas em computadores do mundo real, provavelmente vai diferir. Principalmente porque a quantidade de calor que já foi gerada e ainda não foi dissipada (ou seja, a temperatura do semicondutor) afetará suas propriedades e, portanto, o calor que ele gera.
Hearth

É claro que sim, eu projetei alguns projetos de FPGAs e precisávamos que fosse de baixa potência. Portanto, usamos uma fonte de clock de 10kHz em vez da fonte de 1MHz, pois não precisávamos de tanto poder de processamento.
Lucas92

2
O consumo dinâmico de energia é proporcional ao quadrado da frequência do relógio em ckts síncronos. Portanto, o calor deve aumentar também.
Mitu Raj

11
@MITURAJ, o consumo dinâmico de energia é proporcional à velocidade do relógio. Não é quadrado da velocidade do relógio. Proporcional ao quadrado de tensão.
Mkeith 10/05

Respostas:


14

Além da velocidade do relógio, lembre-se de que em uma CPU "grande" real (uma que possui caches, uma MMU, TLBs, execução em pipeline, SIMD etc.), outro fator importante de quanto calor é gerado seria o quão bem o fluxo de instruções utiliza os recursos de CPU disponíveis. Se você executa um programa que consome muita memória, na maioria das vezes a CPU fica sem informações, sem fazer nada, portanto o calor produzido é relativamente baixo. Um código puramente computacional com loops apertados aqueceria mais. Ainda mais calor poderia ser gerado com um código altamente otimizado que incorre em quase nenhuma previsão incorreta de ramificação, usa intensamente as unidades SIMD, faz o uso ideal dos caches e assim por diante.

Existem programas projetados especificamente para operar a CPU nesse modo - enfatizando o máximo possível, sendo o Prime95 um exemplo proeminente para o PC.

De fato, se um PC já executa o Prime95 em todos os núcleos de CPU disponíveis e você inicia simultaneamente outro aplicativo com uso intenso de CPU (por exemplo, renderização em 3D), você perceberá que a CPU esfria . Isso ocorre porque é necessário compartilhar o código Prime95 muito pesado (que "acende todos os transistores" ) com o código de renderização de demanda relativamente menor (que provavelmente tem muitas falhas de cache e previsões incorretas de ramificações - que permitem que a CPU pare por um tempo e esfrie).

Outra coisa que você deve levar em consideração é que geralmente cada CPU possui uma tabela com velocidades de clock permitidas e tensões principais associadas a cada velocidade. Os relógios inferiores também são compatíveis com a voltagem mais baixa, pois o fabricante determinou que a CPU permanecerá estável nessa voltagem. O consumo de energia varia aproximadamente linearmente com a velocidade do relógio, mas quadraticamente com a tensão.


11
A potência varia quadraticamente em relação à tensão para uma determinada velocidade do relógio . Normalmente, você usa a tensão para variar linearmente a taxa de clock. Como resultado, a energia é cúbica versus a tensão, enquanto a velocidade do relógio é linear. Portanto, o consumo de energia é quadrático versus velocidade do relógio.
MooseBoys

O SIMD pode gerar tanto calor que algumas CPUs superaquecem ao usar o AVX512 extensivamente. +1 por apontar que o aumento de tensão também é relevante.
forest

11
@MooseBoys, é verdade, é um ponto muito bom. Mas é importante ressaltar que, na realidade, se uma CPU full-speed tem Vcore = 1.2V, reduzir para metade a velocidade do clock não iria permitir Vcore = 0,6, ele simplesmente não vai funcionar :)
anrieff

@ anreiff Posso estar me lembrando errado, mas acho que alguns chips modernos da Intel vão até 0,8V enquanto estão ociosos. Eles estão apenas a ~ 700MHz nesse ponto, e o cache provavelmente está desativado.
mbrig

O problema é que eles não chegam perto de 0V, como seria de esperar se a velocidade do clock da CPU e o Vcore fossem proporcionais. É mais parecido com 3.5GHz@1.2V e 0.7GHz@0.8V. A redução na velocidade tem mais efeito na dissipação de energia do que na tensão, mesmo que a primeira a afete "apenas" linearmente.
anrieff

5

A energia consumida é proporcional à taxa de transição do relógio e às perdas de condução com a comutação dos portões efetivos do capacitor. O aumento da temperatura, no entanto, é proporcional à energia consumida vezes a resistência térmica efetiva, em graus C por watt e, portanto, é independente da energia, ou melhor, pode ficar mais frio ou mais quente, dependendo do consumo de energia e não espalhar essa energia por um longo período de tempo. Pode haver uma fórmula que mostre que o aumento da temperatura com a velocidade do relógio é uma potência fracionária maior que uma.


4
  • A potência será menor na frequência operacional mais baixa.

  • Na mesma tensão de núcleo, a energia total seria maior na freqüência de clock mais baixa.

  • Mas se a tensão do núcleo for ajustada para baixo com frequência, a energia total poderá ser menor.

  • Para algoritmos que passam a maior parte do tempo aguardando operações de E / S, o tempo de execução será aproximadamente constante, independentemente da frequência do clock principal. Portanto, a energia total necessária para o cálculo aumentará proporcionalmente à frequência do relógio.


    O consumo de energia de uma CPU consiste em duas partes.

1) consumo de corrente estática (I_estatic). Para alguma tensão e temperatura de fornecimento em particular, esse consumo de corrente é constante, independentemente do que a CPU esteja fazendo.

Uma CPU feita usando a tecnologia CMOS consiste em milhares ou milhões de transistores MOSFET. O consumo de corrente estática deve-se principalmente à corrente combinada de fuga de milhões de transistores MOSFET.

  • O consumo de corrente estática geralmente aumenta à medida que a tensão de alimentação aumenta.

  • O consumo de corrente estática geralmente aumenta à medida que a temperatura da CPU aumenta.

  • O consumo de corrente estática é para muitos dispositivos muito menor que o consumo de corrente dinâmica.

2) consumo dinâmico de corrente. Para um processador construído usando processos CMOS, a corrente dinâmica ocorre quando os transistores alternam entre os estados liga / desliga.

  • Para uma tensão de alimentação especificada, o consumo de corrente dinâmica é geralmente diretamente proporcional à frequência.

  • O consumo dinâmico de corrente aumenta à medida que a tensão de alimentação aumenta.

O motivo é o seguinte. Cada transistor MOSFET na CPU possui uma certa quantidade de capacitância associada. Cada vez que um MOSFET muda; uma carga Q = C * V é necessária para carregar / descarregar essa capacitância.

O consumo dinâmico de corrente para cada transistor é I_dynamic = C * V * f.

Independentemente da frequência com que as instruções são executadas, um conjunto específico de operações em uma CPU específica (assumindo um comportamento idêntico do cache e da memória) consome uma certa quantidade de carga total (programa Q_) devido ao consumo dinâmico de corrente, independentemente da frequência que as instruções são executadas em.

Porém, se as instruções forem executadas mais lentamente, a carga total devido ao consumo de corrente estática será maior porque mais tempo se passou.

Matematicamente, pode-se escrever ...

W = (I_dynamic + I_estatic) * V_supply

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

Podemos ver que, quando a frequência do relógio se aproxima de 0, a potência se aproxima de um valor fixo, mas a energia necessária para calcular o programa se aproxima do infinito.

Portanto, se (com base nas capacitâncias dos transistores da CPU) Q_program for fixado para uma tensão de alimentação específica e um conjunto de operações, como as CPUs modernas economizam energia diminuindo sua frequência de clock? A resposta é que a maioria das CPUs modernas inclui onboard (ou em um chip complementar) um regulador de tensão de núcleo ajustável. Quando eles abaixam a freqüência do relógio, eles também podem diminuir a tensão do núcleo. Q_program (e E_program) diminui proporcionalmente com a tensão de alimentação.

Observe que a CPU não pode usar a tensão mais baixa nas frequências mais altas, porque em tensões mais baixas o tempo de comutação do transistor aumenta.

A potência é proporcional à tensão (ao quadrado) e ao consumo de corrente. Portanto, se a tensão cair simultaneamente com a frequência, a potência cai com o cubo da frequência.


1

Os transistores usam energia que é desperdiçada como calor. Existem dois mecanismos: energia estática e dinâmica. A energia estática é constante e a energia dinâmica (de comutação) ocorre sempre que muda de estado (0-> 1 ou 1-> 0). A energia dinâmica (comutação) é geralmente a maior fonte de calor que a estática. O cálculo que você deseja executar terá o mesmo número de ciclos de clock e fará com que o mesmo número de bits do transistor seja invertido, independentemente da velocidade do clock. Portanto, o calor dinâmico é o mesmo para as duas situações. O calor estático é ... estático. Então, em resumo, supondo que a CPU SOMENTE esteja fazendo esse cálculo 1, o consumo de energia / calor é exatamente o mesmo quando a média é feita em um determinado período de tempo.


Você está no limite da verdade, mas eu vou deixar passar. O nível de energia do CMOS sobe quase em uma linha linear com a frequência de operação, mas o dobro da tensão e a energia quadruplicam. Equação desagradável de I2R, sem incluir a velocidade.
Sparky256

O OP perguntou puramente sobre a velocidade do relógio, nenhuma menção à tensão reduzida.
TopCat

Uma resposta acima mencionou a penalidade para as tensões do núcleo. Não sugeri que você precisava responder a essa questão. Eu estava apenas fazendo um comentário - em uma caixa de comentários.
Sparky256

A questão era sobre o calor (medido em Joules), não sobre potência ou temperatura. O calor é uma forma de energia. Exceto pela pequena quantidade de energia recebida das fontes de entrada e entregue às cargas de saída, toda a energia consumida no dispositivo se tornará calor e, eventualmente, será dissipada. Na lógica do CMOS, o consumo de energia gera calor quando o estado da máquina muda - normalmente uma vez por ciclo do relógio durante aquele momento em que os portões estão no meio do caminho entre 0 e 1. Portanto, o HEAT para uma determinada tarefa deve ser independente da velocidade do relógio e totalmente dependente no número de ciclos de relógio.
Richard1941

1

No cenário que você descreveu, a energia necessária para o cálculo não depende da velocidade do relógio. Mas calor pode ser um termo "mole". Digamos que o cálculo leva 1 Joule. Se você fizer isso em 1 segundo, isso significa 1 Joule / s = 1 Watt. Mas se levar 2 segundos, isso significa 1 Joule / 2seg = 0,5 Joule / s = 0,5 Watt.

O processador definitivamente alcançará uma temperatura mais alta se o cálculo for feito mais rapidamente, porque a energia é liberada mais rapidamente. Acho que não há muito sentido em dizer mais do que isso.

Ah, exceto que os números que eu lhe dei não são para ser realistas. É apenas o conceito.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.