这是一篇简短的帖子,调查了英特尔最新的冰湖芯片上AVX2和AVX-512相关的基于许可证的降频行为。
基于许可证的降频1指的是当执行某些SIMD指令时,尤其是重浮点指令或512位宽指令时施加低于标称频率限制的半著名效应。
有关这种类型的降频的更多详细信息,请参阅StackOverflow解答,我们已经详细介绍了这些转换的低级机制。您还可以找到一些关于如何使用Wide SIMD的指南,给出了这个问题2。
所有这些都是在Skylake-SP(SKX)的环境下编写的,Skylake-SP(SKX)是支持AVX-512的第一代芯片。
那么冰湖(Ice Lake)呢,这款最新的芯片既支持AVX-512的SKX风格,又有一整套新的AVX-512指令?我们会不会被困在遥远的地方长时间凝视这些新的指令,而永远不会因为降频而被允许实际使用它们?
我们将使用avx-turbo实用程序来测量CPU的内核计数和指令混合相关频率。该工具以一种简单的方式工作:在给定数量的内核上运行给定的指令混合,同时测量测试期间达到的频率。
例如,avx256_fma_t测试(该测试测量具有高ILP的256位繁重指令的成本)运行以下FMA序列:
Vfmadd132pd ymm0,ymm10,ymm11 vfmadd132pd ymm1,ymm10,ymm11 vfmadd132pd ymm2,ymm10,ymm11 vfmadd132pd ymm3,ymm10,ymm11 vfmadd132pd ymm4,ymm10,ymm11 vfmadd132pd ymm5,ymm10,ymm11 vfmadd132pd ymm4
总共,我们将使用以下命令行,使用五个测试来测试256位和512位指令的每种轻重组合,以及标量指令(128位SIMD的行为与标量相同):
如上所述,我在Ice Lake i5-1035G4上运行了AVX-turbo,这是运行速度高达3.7 GHz的中等Ice Lake客户端CPU。全部输出隐藏在要点中,但以下是最重要的频率结果(所有值均以GHz为单位):
正如预期的那样,最大频率随着活动核计数的增加而降低,但向下扫描每列以查看指令类别的影响。沿着这个轴,几乎没有任何降频!只有对于单个活动内核计数,更宽的指令才会有任何减少,并且仅为100 MHz:当使用任何512位指令时,从3,700 MHz减少到3,600 MHz。
在任何其他场景中,包括任何时候多个内核处于活动状态,或者对于繁重的256位指令,都没有基于许可证的降频:一切都运行得和标量一样快。
这里还有另一个变化。在SKX中,与降频有关的许可证或指令类别有三种:L0、L1和L2。这里,在客户端ICL中,只有2个3,它们与SKX中的3个不完全一致。
更清楚地说,在SKX中,许可证映射到指令宽度和权重如下:
现在,256重型和512轻型在不同的类别!事实上,轻与重的整个概念似乎并不适用于这里:分类纯粹基于宽度4。
至少,这意味着我们需要调整我们对AVX-512指令的频率相关成本的心理模型。在这个冰湖芯片上,我们可以说AVX-512导致了微不足道的或零的基于许可证的降频,而不是“通常导致显著的降频”,我预计在其他冰湖客户芯片上也是如此。
现在,这种预期的调整伴随着一个重要的警告:基于许可证的降频只是降频的一个来源。也有可能达到功率、热量或电流限制。在超出运行功率限制之前,某些配置可能只能在所有内核上运行宽SIMD指令一小段时间。在我的例子中,我正在测试的250美元的笔记本电脑的散热性能非常差,我在几秒钟内就达到了热限制(100°C限制),而不是功率限制,在所有内核上运行任何重的东西。
然而,这些其他限制与基于牌照的限制在性质上是不同的。它们主要是按您使用的方式付费的:如果您使用一两条宽大或繁重的指令,仅与这些指令相关的额外电力或热量成本微乎其微。这与一些基于许可证的转换不同,在这些转换中,核心或芯片范围的转换会在很长一段时间内影响不相关的后续执行。
由于较宽的操作通常比同等数量的较窄操作6的功耗更低,因此您可以预先确定一个较宽的操作是值得的-至少对于随宽度扩展很好的情况是这样。在任何情况下,问题都是最局部的:不依赖于周围代码的行为。
Ice Lake i5-1035CPU在运行512位指令时,仅有100 MHz基于许可证的下行时钟,具有1个活动内核。
3.3 GHz的全核512位Turbo频率是最大单核标量频率3.7 GHz的89%,因此在功率和热量限制下,该芯片的频率剖面非常“平坦”。
与SKX不同的是,这款冰湖芯片不区分“轻”和“重”指令用于频率调节目的:FMA操作与较轻操作的行为相同。
因此,在ICL客户端上,您不必担心宕机。只有时间会告诉我们这是否也适用于ICL服务器。
如果您有问题或任何类型的反馈,您可以在下面留言。我也对其他ICL芯片的结果感兴趣,比如i3和i7变种:如果你有这样的芯片,请告诉我,我们可以收集结果。
不断重复基于许可证的下行时钟会让人感到疲惫,所以我通常会简单地使用“下行时钟”,但这仍然应该被理解为指的是基于许可证的品种,而不是其他类型的频率节流。-↩。
只有两个可见:这三个(或更多)类别可能仍然存在,但它们只导致电压转换,而不是任何频率转换。-↩。
有人可能会认为这是ICL客户端在所有SKU上只有一个FMA单元的结果:非常繁重的FP 512位操作是不可能的。然而,这并不意味着256位重型仍然很快:您仍然可以在每个周期执行2x256位FMA,这与每个周期1x512位FMA的FP强度相同。更像是,在这个芯片上,FP操作不需要更多的基于许可证的保护,不受相同宽度的其他操作的影响,主要成本是512bit的宽度。--↩。
例如,一个512位的整数加法通常比计算相同结果所需的两个256位操作在能源使用上更便宜,因为执行开销不会随宽度线性扩展(这几乎是执行本身之外的所有事情)。-↩