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

电器工程 热的 处理器
2022-01-18 19:56:15

以能够改变时钟速度的 CPU 为例,例如现代计算机 CPU(英特尔、AMD 等)。当它以特定的时钟速度进行特定计算时,它会产生与以较慢的时钟速度进行相同计算时相同的热量吗?我知道散热和热量积聚是不同的问题,所以我们只谈谈产生的生热。

4个回答

除了时钟速度,请记住,在真正的“大”CPU(具有缓存、MMU、TLB、流水线执行、SIMD 等)中,产生多少热量的另一个重要因素是指令流的利用程度可用的 CPU 资源。如果你运行一个内存密集型的程序,大多数时候 CPU 只是在缺乏数据,什么都不做,所以产生的热量会相对较低。具有紧密循环的纯计算代码会发热更多。通过严格优化的代码可以产生更多的热量,这些代码几乎不会导致分支错误预测,密集使用 SIMD 单元,优化使用缓存等等。

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

事实上,如果一台 PC 已经在所有可用的 CPU 内核上运行 Prime95,然后您同时启动另一个 CPU 密集型应用程序(例如,3D 渲染),您会注意到 CPU冷却了这是因为它必须将非常繁重的 Prime95 代码(“点亮所有晶体管”)与需求相对较低的渲染代码(可能有很多缓存未命中和分支错误预测——这些代码允许 CPU 停止一会儿冷却下来)。

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

功耗与时钟的转换速率和切换这些有效电容器栅极时的传导损耗成正比。然而,温升与消耗的功率乘以有效热阻成正比,单位为摄氏度/瓦,因此与能量无关,或者更确切地说,可能会根据功耗运行得更冷或更热,并且不会在更长的时间段内传播该功率。可能有一个公式表明,温度随时钟速度的升高是大于 1 的部分功率。

  • 工作频率越低,瓦数就越低。

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

  • 但如果核心电压随频率降低,那么总能量可能会更少。

  • 对于大部分时间都在等待 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_supply

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

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

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

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

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

晶体管使用能量,这些能量以热量的形式浪费掉。有两种机制,静态能量和动态能量。静态能量是恒定的,而动态(切换)能量只要改变状态(0->1 或 1->0)就会出现。动态(开关)能量通常是比静态能量更大的热源。您要执行的计算将采用相同数量的时钟周期,并导致相同数量的晶体管位翻转,而与时钟速度无关。因此,两种情况下的动态热量是相同的。静态热量是……静态的。所以总而言之,假设 CPU 只进行这 1 次计算,那么在给定时间段内平均时,能量/热量消耗完全相同。