这是一篇简短的文章,内容是有关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版本)上的结果感兴趣:让我知道您是否有它们,我们可以得到结果。