在CPU中,计算速度会影响产生的热量吗?


9

以一个能够更改其时钟速度的CPU为例,例如现代计算机CPU(Intel,AMD等)。当它以特定的时钟速度进行特定计算时,是否会产生与以较低的时钟速度进行相同计算时产生的热量相同的热量?我知道散热和热量积聚是不同的问题,所以让我们只谈谈产生的原始热量。


以较高速度进行的计算花费的时间更短。
尤金(Eugene Sh)。

4
兰道尔(Landauer)理想的计算机中,我认为计算将产生相同量的热能。但是在实际计算机中,它可能会有所不同。特别是因为已经产生但尚未消散的热量(即半导体的温度)将影响其性能,从而影响其产生的热量。
炉边堡

当然可以,我已经设计了一些FPGA设计,我们需要低功耗的设计。因此,我们使用10kHz时钟源而不是1MHz时钟源,因为我们不需要那么多的处理能力。
lucas92

2
动态功耗与同步时钟信号中时钟频率的平方成正比。因此热量也应该增加。
Mitu Raj

1
@MITURAJ,动态功耗与时钟速度成正比。不是时钟速度的平方。与电压的平方成正比。
mkeith

Answers:


14

除了时钟速度外,请记住,在真正的“大型” CPU(具有高速缓存,MMU,TLB,流水线执行,SIMD等的CPU)中,产生大量热量的另一个重要因素是指令流的利用效率可用的CPU资源。如果您运行的程序占用大量内存,那么大多数时候CPU只会饿死数据,什么也不做,因此产生的热量会相对较低。带有紧密循环的纯计算代码会发热更多。严格优化的代码甚至可以产生更多的热量,几乎不会引起分支预测错误,大量使用SIMD单元,优化利用缓存等。

有一些专门设计用于在这种模式下运行CPU的程序-尽可能强调它,Prime95是PC的突出示例。

实际上,如果PC在所有可用的CPU内核上都已经运行Prime95,然后同时启动另一个占用大量CPU的应用程序(例如3D渲染),则会注意到CPU 冷却了。这是因为它必须与需求相对较低的渲染代码(可能有很多缓存未命中和分支错误预测)分时共享非常繁重的Prime95代码(“点亮所有晶体管”),这些代码会导致高速缓存未命中和分支错误预测-那些使CPU停止运行一段时间,然后冷静下来)。

您应该考虑的另一件事是,通常每个CPU都有一个表,其中包含允许的时钟速度以及与每个速度相关的核心电压。较低的时钟也与较低的电压匹配,因为制造商已确定CPU将在该电压下保持稳定。功耗随时钟速度大致呈线性变化,但随电压呈二次变化。


1
在给定的时钟速度下,功率与电压呈二次方变化。通常,您使用电压来线性改变时钟速率。结果,功率是电压的三次方,而时钟速度是线性的。因此功耗是时钟频率的平方。
MooseBoys

广泛使用AVX512时,SIMD会产生大量热量,以致某些CPU过热。+1表示电压升高也很重要。
森林

1
@MooseBoys,是的,非常好。但值得指出的是,实际上,如果全速CPU的Vcore = 1.2V,将时钟速度减半将不会导致Vcore = 0.6,那么它将无法正常工作:)
anrieff

@anreiff我可能记错了,但是我认为一些现代的Intel芯片在空闲时会一直下降到0.8V左右。不过,此时它们的频率仅为700MHz,并且缓存可能已关闭。
mbrig

事实是,它们不会接近0V,就像人们可能期望的,如果CPU时钟速度和Vcore成正比。它更像是3.5GHz@1.2V和0.7GHz@0.8V。速度的降低对功耗的影响要大于电压,即使前者只是“线性地”影响电压。
anrieff

5

消耗的功率与时钟的转换速率和切换这些有效电容器栅极时的传导损耗成比例。然而,温升与功耗乘以有效热阻成正比,以每瓦特C为单位,因此与能量无关,或者取决于功耗,其温度可能更低或更热,并且该功率不会在更长的时间内散布。可能存在一个公式,表明温度随时钟速度的升高是大于一的部分功率。


4
  • 在较低的工作频率下,瓦数将较低。

  • 在相同的内核电压下,总的能量在较低的时钟频率下会更高。

  • 但是,如果将内核电压随频率调低,则总能量可能会更少。

  • 对于花费大部分时间等待I / O操作的算法,无论内核时钟频率如何,执行时间都将近似恒定。因此,计算所需的总能量将与时钟频率成正比。


    CPU的功耗由两部分组成。

1)静态电流消耗(I_static)。对于某些特定的电源电压和温度,无论CPU在做什么,此电流消耗都是恒定的。

使用CMOS技术制成的CPU由数千或数百万个MOSFET晶体管组成。静态电流消耗主要归因于数百万个MOSFET晶体管的截止状态泄漏电流。

  • 静态电流消耗通常随着电源电压的增加而增加。

  • 静态电流消耗通常随着CPU温度的升高而增加。

  • 对于许多设备而言,静态电流消耗比动态电流消耗小得多。

2)动态电流消耗。对于使用CMOS工艺构造的处理器,动态电流会在晶体管在开/关状态之间切换时发生。

  • 对于指定的电源电压,动态电流消耗通常与频率成正比。

  • 动态电流消耗随着电源电压的增加而增加。

原因如下。CPU中的每个MOSFET晶体管都具有一定的电容值。每次MOSFET切换时;需要电荷Q = C * V来对该电容进行充电/放电。

每个晶体管的动态电流消耗为I_dynamic = C * V * f。

无论指令以何种频率执行,特定CPU上的一组特定操作(假定来自缓存和内存的行为相同)由于动态电流消耗而消耗一定数量的总电荷(Q_program),而与频率无关执行指令的位置。

但是,如果指令执行得更慢,则由于消耗了更多的时间,由于静态电流消耗而产生的总电荷会更高。

数学上可以写...

W =(I_dynamic + I_static)* V_电源

E = W *时间= Q_program * V_supply + I_static * V_supply *时间

我们可以看到,随着时钟频率接近0,瓦数将接近固定值,但是计算程序所需的能量接近无穷大。

因此,如果针对特定的电源电压和一组操作(基于CPU晶体管的电容)Q_program是固定的,那么现代CPU如何通过降低其时钟频率来节省功率?答案是,大多数现代CPU要么在板载(或在配套芯片中)包括一个可调节的核心电压调节器。当它们降低时钟频率时,它们也可以降低其内核电压。然后,Q_program(和E_program)随电源电压成比例降低。

请注意,CPU不能在较高的频率下使用较低的电压,因为在较低的电压下,晶体管的切换时间会增加。

功率与电压(平方)和电流消耗成正比。因此,如果电压与频率同时下降,则功率随频率的立方下降。


1

晶体管使用能量,这些能量被浪费为热量。有两种机制,静态和动态能量。静态能量是恒定的,而动态(切换)能量只要它改变状态(0-> 1或1-> 0),就会发生。动态(开关)能量通常比静态能量更多。您要执行的计算将花费相同数量的时钟周期,并且无论时钟速度如何,都会导致相同数量的晶体管位翻转。因此,两种情况下的动态热量是相同的。静电是...静电。因此,总而言之,假设CPU仅执行此1计算,则在给定时间段内进行平均时的能量/热量消耗完全相同。


您正站在真理的边缘,但我会让它过去。CMOS的能量水平几乎随工作频率呈线性增长,但电压加倍,能量翻两番。讨厌的I2R方程式,不包括速度。
Sparky256 '18

OP仅询问时钟速度,没有提及降低电压。
TopCat

上面的答案提到了内核电压的损失。我并不是说您需要回答这个问题。我只是在评论框中发表评论。
Sparky256 '18

问题是关于热(以焦耳为单位),而不是功率或温度。热是能量的一种形式。除了从输入源接收并传递给输出负载的少量能量外,设备中消耗的所有能量都将变热并最终被耗散。在CMOS逻辑中,当机器状态改变时,能量消耗会产生热量-通常在门处于0到1之间的那一瞬间,每个时钟周期一次。时钟周期数。
richard1941

1

在您描述的场景中,计算所需的能量不取决于时钟速度。但是热量可能是一个“糊涂”的名词。假设计算需要1焦耳。如果您在1秒钟内完成,则为1焦耳/秒= 1瓦。但是,如果花费2秒,则为1焦耳/ 2秒= 0.5焦耳/秒= 0.5瓦。

如果更快地执行计算,则处理器肯定会达到更高的温度,因为能量释放得更快。我认为我所说的没有太多意义。

哦,除了我给你的数字并不是真实的。这只是概念。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.