Intel Skylake-SP处理器评测(二) 原创

AVX-512将SIMD宽度从256位增加到了512位。

  AVX-512是典型的SIMD(Single Instruction Multiple Data,单指令多数据)指令集,它可以认为是256位的AVX 2.0的扩展,SIMD宽度达到了512位。AVX(Advanced Vector Extensions,高级矢量扩展)当中的Vector矢量(也就是向量)一词就已经标明了其为一个SIMD指令集。矢量化,或者说向量化,是提升数据处理能力的一个重要手段。

Intel Skylake-SP处理器评测(二)
AVX-512 - KNL and future Xeon:是的,一切早有预谋

  我们先来看AVX-512要求的根本性架构改变:

Intel Skylake-SP处理器评测(二)
SSE->AVX-2->AVX-51216xXMM->16xYMM->32xZMM,笔者担心的是,未来的AVX-1024的寄存器该叫什么?

  如果你了解过AVX 1.0(通常简略为AVX或AVX1)和AVX 2.0(AVX2或AVX-2),那么AVX-512也很好理解:数据处理宽度翻倍,在硬件上,它需要将处理器的AVX寄存器的宽度和数量都进行翻倍。新的AVX-512指令集将使用被称为ZMM0-31的32个512位寄存器,其中,16个就是原有的AVX 2.0使用的256位YMM寄存器加宽,然后新增加了16个新的512位寄存器。需要特别注明的是,新增加的寄存器必须运行在64位模式才能进行存取。

Intel Skylake-SP处理器评测(二)
Intel AVX-512 on Intel Skylake-SP:AVX-512-(F, VL, BW, DQ, CD)

  说到寄存器必须说到的是,在Skylake-SP的微架构设计当中,使用的是寄存器重命名,实际上是将操作数当中的寄存器重定位到寄存器当中的某些寄存器上,这种虚拟的对应可以消除大量的寄存器move操作——只需要建立新的指向即可。因此,AVX-512指令集要求的32个ZMM寄存器,实际上没有必要反映出来,当然,寄存器的宽度最好实装,如下图所示,实际增加了12个整数寄存器,浮点寄存器并没有变化,就这样支持了AVX-512指令集。

Intel Skylake-SP处理器评测(一)

Intel Skylake-SP Core Microarchitecture:增加了12个整数寄存器

  这12个整数寄存器可能包含了8个64位的mask寄存器,这些寄存器用来精细控制SIMD指令执行的对象,披露,只对512位总长数据中的某几个数据进行操作,而掠过某几个其他的数据。Skylake-SP的AVX-512还内置了广播和取整功能,在以往,使用什么规格的浮点取整方式是全局设定的,现在,每一条指令都可以设置自己的取整方式,这可以让指令的执行变得更为灵活。

  AVX-512当中最让人迷惑的可能就是其包含的众多子集合了,Intel Skylake-SP搭载的是AVX-512-(F, VL, BW, CD):

Intel Skylake-SP处理器评测(二)

  F指Foundation,基础。AVX-512F就是基础的AVX-512指令集,为MIC与Xeon当中通用的部分(到了未来,就变成Xeon SP的基础部分了)。CD则是Conflict Detection,冲突检测,类似的机制在Core微架构的MOB(Memory Ordering Buffer)复合体中存在,实质上是以地址冲突检测搭配机遇性执行来充分发掘指令的执行度(上图中说的是向量化循环)。ER和PR则是Exponential指数操作和Prefetch预取操作,前者还包含了倒数操作(或者说,以-1为幂的指数),这两个指令集扩展不受SKL-SP支持而存在于KNL当中。

Intel Skylake-SP处理器评测(二)

  DQ这是Double and Quad word指令——双字/四字指令,包含了AVX-512F当中不具备的所有packed 32位/64位操作。BW这是Byte and Word指令,字节/字指令,将packed指令扩展到字节和字(8位和16位),如此一次性可以处理64个/32个数据。这个指令集也给出了MMX/SSE2/AVX2指令对应的AVX-512原语。VL这是Vector Length扩展——向量长度扩展,它的含义是,AVX-512指令集也可以对128位或者256位数据进行处理。

  接下来可能是比较少为人知的几个新指令集:

Intel Skylake-SP处理器评测(二)

  请允许我们暂时忽略其他,只介绍最后一个:XSAVE{S,C},它用来保存扩展的处理器状态,包括AVX-512指令集在内,需要新的XSAVE指令集支持,以在线程切换的时候,保存/恢复这些新寄存器的数据。

  关于AVX-512暂时介绍到这里,接下来我们将会展开对其进行的测试。

来源:至顶网CBSi企业方案解决中心频道

0赞

好文章,需要你的鼓励

2017

07/13

11:51

分享

点赞

邮件订阅
白皮书