向下锁冰湖AVX-512

图片


这是一篇简短的文章,内容是有关AVX2和AVX-512新的Intel Ice Lake芯片许可下锁有关的行为的研究



许可的下锁1鲜为人知的效果,当执行某些SIMD指令(尤其是重浮点指令或512位宽度的指令)时,频率限制低于标称值。



您可以在StackOverflow上的此答案中了解有关这种下行锁定的更多信息,并且我们已经详细解释了此类转换的底层机制。您也可以找到说明考虑到此问题,如何利用宽SIMD(单指令多数据:指令集体系结构的一种类型或扩展,例如Intel AVX或ARM NEON,它们能够对SIMD寄存器中封装的元素执行多个相同的操作)2



链接上的信息是在Skylake-SP(SKX,Intel Skylake服务器体系结构,其中包括Skylake-SP,Skylake-X和Skylake-W)的上下文中编写的,它们是支持AVX-512的第一代芯片。



Ice Lake的情况如何-最新的芯片同时支持SKX的AVX-512指令和全新的AVX-512指令集?我们是否将不得不从远处看这些新指令,并且由于锁死而永远无法使用它们?



阅读文章以找出答案,或者直接跳到“摘要”部分。



AVX-涡轮



我们将使用avx-turbo实用程序来测量频率对内核数量和指令集的依赖性。该工具的工作原理很简单:它在给定数量的内核上执行一组给定的指令,测量测试期间达到的频率。



例如,一项测试具有高ILP(指令级并行度:超标量处理器的指令间级并行度的数量)avx256_fma_t重型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 ymm6,ymm10,ymm11
	vfmadd132pd ymm7,ymm10,ymm11
	vfmadd132pd ymm8,ymm10,ymm11
	vfmadd132pd ymm9,ymm10,ymm11
	; repeat 10x for a total of 100 FMAs


总共,我们使用五项测试来测试轻量级和重度256位和512位指令以及标量指令(128位SIMD的行为与标量指令相同)的每种组合:



./avx-turbo --test=scalar_iadd,avx256_iadd,avx512_iadd,avx256_fma_t,avx512_fma_t


冰湖结果



如上所述,我在Ice Lake i5-1035G4上运行了avx-turbo,这是一个运行于3.7 GHz的中档Ice Lake客户处理器。完整的结果隐藏在要点中,在这里我给出了获得的频率最重要的结果(所有值均以GHz为单位):



指令系统 活性核
1个 2 3 4
标量/ 128位 3.7 3.6 3.3 3.3
轻型256位 3.7 3.6 3.3 3.3
重256位 3.7 3.6 3.3 3.3
轻型512位 3.6 3.6 3.3 3.3
重型512位 3.6 3.6 3.3 3.3


正如预期的那样,频率的最大下降是随着活动内核数的增加而发生的,但是请向下看每一列以查看对指令类别的影响。沿该轴几乎没有下锁!仅使用一个活动内核时,使用宽指令的情况会有所减少,只有100 MHz的情况会有所减少:使用任何512位指令的频率从3 700 MHz降低到3600 MHz。



在所有其他情况下,包括几个活动内核以及重度256位内核,许可的向下锁定为零:一切工作都与标量指令一样快。



牌照种类



这里还有另一个变化。SKX体系结构具有三个许可证或下锁指令类别:L0,L1和L2。此处,在客户端ICL中,只有两个3,它们与SKX中的三个类别不完全对应。



SKX中的许可证对应于说明的宽度和重量,如下所示:



宽度
标量/ 128 L0 L0
256 L0 L1
512 L1 L2


特别要注意的是,重度256位指令与轻度512位指令在同一许可证下获得许可。



在客户端ICL中,方案如下:



宽度
标量/ 128 L0 L0
256 L0 L0
512 L1 L1


在这里,重256位和轻512位指令属于不同的类别!实际上,轻指令和重指令的概念似乎在这里不适用:分类完全取决于宽度4



所以呢?



那呢



至少,这意味着我们需要改变有关频率的AVX-512指令成本的思维模型。可以说,该Ice Lake芯片没有说它们“通常会造成严重的锁定”,而是说其AVX-512很少或根本没有许可的锁定,而且我认为这对于其他Ice Lake客户端芯片也是正确的。



但是,我们期望的这种变化有一个重要缺陷:许可下锁并非唯一下锁的根源。我们可能还会遇到功率,热量或电流限制。某些配置只能在短时间内在所有内核上执行宽SIMD指令,然后超过工作功率限制。就我而言,我正在测试的250美元笔记本电脑的散热非常差,而不是限制功率,而是在所有内核上执行大量指令后仅几秒钟就遇到了散热极限(100°C)。



但是,这些其他限制在质量上与许可限制不同。基本上5他们限制了您使用付费原则:如果您使用宽泛的指令或繁重的指令(或同时使用两者),则仅会导致与这些指令相关的功率或热量产生微小的增加。这与某些许可效应不同,在许可效应中,频率变化发生在内核或整个芯片内,从而显着影响与这些类型的指令无关的后续执行。



由于通常较之类似数量的窄操作6而言宽操作耗电较少,因此立即可以知道宽操作是否值得至少在随着宽度增加而很好缩放的情况下。不管怎样,这个问题主要是局部的:它不取决于相邻代码的行为。



结果



这是我的结论。



  • 当执行512位指令时,Ice Lake i5-1035处理器仅展示一个活动内核的100 MHz授权下锁。
  • 在所有其他情况下,都没有锁定。
  • 所有内核上执行512位指令的Turbo频率为3.3 GHz,是一个内核上标量运算的最大执行频率(3.7 GHz)的89%,因此,在功耗和散热限制内,该芯片的频率非常“平坦”瘾。
  • 与SKX架构不同,该Ice Lake芯片不使用“轻”

    和“重”指令的划分来缩放频率:FMA操作的执行方式与更轻的操作相同。


也就是说,无需担心客户端ICL的锁定。只有未来才能告诉我们,这是否也适用于服务器端ICL。



讨论与交流



可以在Hacker News上讨论此帖子



如果您有任何疑问或其他反馈,可以在原始帖子上发表评论我也会对其他ICL芯片(例如i3和i7版本)上的结果感兴趣:让我知道您是否有它们,我们可以得到结果。






笔记



  1. 我已经厌倦了不断重复许可下锁,因此我经常会使用“下锁”一词,但是应该清楚的是,这是许可下的版本,而不是其他类型的频率调节
  2. 需要注意的是丹尼尔写了 关于 这个 超过一次。

  3. : , - ( ) , , .
  4. , , ICL FMA : 512- . , 256- : - 2x256- FMA , , 1x512- FMA . , , 512- .
  5. , , , , , . , , , vzeroupper vzeroall.
  6. 例如,一个512位整数加法通常比计算相同结果所需的两个256位运算的能源消耗少,因为执行开销随着宽度的增加而非线性增长(除了执行本身,它们几乎包括了所有东西)。



All Articles