在 Prime95 中,尽管所有选项的 CPU 都为 100%,但为什么小的 FFT 会产生最多的热量?

Chr*_*isA 9 cpu cpu-usage throttling prime95

我刚刚构建了一台新的 Skylake PC,我将看到使用 Prime95 作为压力测试器进行一些超频。

它在正常使用中工作正常,但使用 Prime95 我注意到在某些负载下 CPU 节流。

如果所有 4 个内核(8 个线程)都以 100% 的速度阻塞,为什么 Prime95 中的 Small FFT 设置比“混合”选项的温度更高?

bwD*_*aco 13

矢量化代码,尤其是 AVX,自然会增加 CPU 的热量输出,因为处理器必须在更高的电压下运行才能执行这些指令。与混合模式相比,小型 FFT 需要更少的内存,因此处理器花更多的时间处理数据,而等待数据的时间更少。

  • x86-64 架构提供了广泛的矢量处理能力,尤其是在最新的处理器上。矢量处理允许应用程序一次对多个数据项执行数学运算,并且被许多较新的计算密集型应用程序用于提高处理吞吐量。

  • 矢量化代码,尤其是Prime95 使用的AVX指令,要求处理器在比正常电压更高的电压下运行。这导致功耗和热量输出高于正常工作负载下的情况。出于这个原因,英特尔警告说,AVX 重负载会导致处理器节流或无法维持完整的 Turbo Boost 时钟速率(脚注 1):

    英特尔® 高级矢量扩展(英特尔® AVX)旨在为某些整数和浮点运算实现更高的吞吐量。由于处理器功率特性的变化,使用 AVX 指令可能会导致 a) 某些部件以低于额定频率运行,以及 b) 某些采用英特尔® 睿频加速技术 2.0 的部件无法达到任何或最大睿频频率。

    英特尔在本白皮书中更详细地解释了这一点。它特别指出:

    英特尔 AVX 旨在为某些整数和浮点运算实现更高的吞吐量。使用这些指令可能会导致处理器以低于标记的 TDP 频率运行。这些频率降低是因为高功率英特尔 AVX 指令需要额外的电压和电流。

    • 我对为什么AVX 指令需要提升 V核的猜测是 AVX 执行单元比处理器的其他部分更复杂,导致相应的流水线阶段需要更长的时间才能完成(有关流水线的更多技术信息,请参阅此答案和处理器设计的其他方面)。如果特定流水线阶段很慢,则整个处理器的最大时钟速率将受到限制,因为流水线中的每个阶段都必须在每个时钟周期内完成。

    • 出于同样的原因,在超频时更高的电压会增加最大可达到的频率(晶体管可以在更高的电压下更快地切换),增加电压有助于确保更长的流水线阶段可以按时完成。

  • 小 FFT 模式仅使用可以放入CPU 缓存的较小数据项,这与混合模式不同,混合模式对可能无法放入缓存的小值和大值都进行操作。由于相对于简单地处理数据而言,访问内存的速度较慢,因此处理器在混合模式下实际处理数据所花费的时间将更少,从而减少热量输出。小型 FFT 不需要接近尽可能多的内存访问,从而导致 CPU 执行更多实际工作,从而增加功耗和热量输出。