icelake介紹

8个opmask寄存器中的7个(k1-k7)可与EVEX编码的Intel AVX-512F指令集结合使用,以提供条件处理,例如仅部分填充寄存器的矢量化余数。 当需要对所有数据元素进行无条件处理时,Opmask寄存器k0通常被视为“无掩码”。 另外,opmask寄存器也用作向量标志/元素级向量源,以引入新的SIMD功能,AVX512 SIMD寄存器和操作掩码寄存器由操作系统使用XSAVE / XRSTOR / XSAVEOPT指令进行管理。 之前文章出现的除法延迟因为用基准频率计算,但实际运行存在睿频,所以有偏差,该数据进一步修正了结果而在乘法器上,端口5新增了一个MulHi单元,这是处理一种乘法指令的专用单元,它旨在进行无符号或者有符号的整形乘法计算后取高位的结果。

icelake

在2019年Q3,Intel终于如期提供了完整的10nm和全新IceLake微架构的产品线,产品包含了i7/i5/i3的U和Y系列产品,归类为第十代酷睿i系列处理器,不过遗憾的是,因为频率较低,产量略有不足的情况下,Intel依旧提供了基于Skylake微架构的14nm第十代酷睿i系列产品,即Code name为CometLake的U系列,如i U/10510U,和Code Name为AmberLake的Y系列,如i Y处理器,也就是目前处于14nm与10nm,新架构与旧架构交替的时期。 而在SHA测试上,支持AVX512,SHA指令集的1065G7可谓拳打脚踢,不过AVX512的性能明显好于使用SHA指令集的情况,这也难怪Intel并不急于为主流处理器搭配SHA指令集。 2,μop微指令缓存由1.5K指令数提高到2.25K指令数,提高50%,分支预测性能也有一定提升(待测定),指令译码进入乱序区的指令队列深度从每线程64队列提高到每线程70队列。 仍然有2个项目无法编译运行,这是C++项目,显然新的C++编译器似乎在抛弃旧有的一些标准,导致较老的代码无法运行。 目前Intel公司使用Intel Compiler 16.0在Windows上运行SPEC06,并且也将停止SPEC06的测试。 Ice Lake 是第十代Intel酷睿处理器代号 ,基于新微架构Sunny Cove微架构,使用第二代10nm工艺制造。

icelake: 处理器列表

可以看出14nm产品如此之多,Server端也有Cascadelake/CooperLake这样的怪异名字产品,所以,什么是IceLake? ICL是采用最新10nm工艺产品后的第一代真正全新微架构设计的处理器产品的Code Name,但由于用于名称为IceLake产品的微架构设计实际将不止用于IceLake产品,还会采用14nm重新制造,获得更高频率,用于未来桌面产品,所以该架构也被称为Sunny Cove,至此,Intel的微架构名字将不再与实际产品的名字挂钩。 icelake IceLake产品是Intel第一代大规模生产的10nm产品,也是Intel第三代Finfet技术产品,之前的文章已经提到,实际ICL-U/Y 4C芯片面积为121.98平方毫米,一个4核+64EU的芯片共有46亿个晶体管,尽管Intel宣称其10nm的密度可达1亿晶体管每平方毫米,Intel将单位面积上的晶体管数量划分为2输入NAND单元和扫描触发器单元,其中2输入NAND单元的晶体管密度是90.78MTr/mm? (百万晶体管每平方毫米),扫描触发器单元的密度为115.74 icelake MTr/mm,在为其赋予60/40的权重后计算出10nm工艺的晶体管密度为100.8MTr/mm,是14nm工艺37.5MTr/mm的2.7倍。

Y-cruncher圆周率测试软件采用SIMD优化的楚德诺夫斯基Chudnovsky算法来计算极高位数的圆周率,并在今年使用该软件计算出了31.4万亿的有记录的圆周率最长位数,我们使用2.5亿和25亿位的计算规模来对比,2.5亿位实际上对于现在的高频多核处理器来说已经遇到了并行加速比下滑的瓶颈,10亿位以上的数量对现代高性能处理器的并行性有更好的发挥,而在不同的支持程度上,AVX512FMA+AVX512DQ指令针对Skylake-Server架构设计的运行程序的表现,相比AVX2的执行程序受制于浮点吞吐峰值没变,优化到一定程度后两者基本相当,单线程因为均能满睿频,显示同频有一定优势,但多线程运行则受制于功耗,两者运行在相同功耗时AVX512F/DQ频率要更低些,在该应用上显然两者两相抵消,基本没什么差异。 icelake 这些已经不是什么新鲜事了,在Skylake-Server中,端口0和端口1的FMA单元可以单独各自执行一条256位AVX指令,或融合执行一条512位指令,端口5的FMA单元只能用于512位计算,这实际上是一种浪费,因为这会使得这个单元在执行256/128位SIMD的时候无法发挥作用,而且并非所有型号都会开启端口5的512位FMA单元,这在之前的文章我们称其为半吞吐的AVX512处理器,而这一区分情况在IceLake的client和server产品上依旧会存在,目前本次发布的ICL-U/Y产品均为半吞吐512FMA处理器,这导致依托于端口5的512位FMA操作,向量整数乘法,浮点计算均只能依靠端口0和端口1的256为单元融合执行(从端口0发射),但整数向量加法,逻辑和shuffle操作则与其他全吞吐处理器一样。 而上文图上标明的执行单元诸如向量ALU,FMA,Mul,Add,Div单元均表明为其是执行常见的整数和浮点型的加减乘除或融合乘加操作,这些基本运算和之前AVX2指令集转变为512位的指令这都被归为AVX512 Foundation指令集。 icelake SIMD是代码现代化中的重要组成部分—向量化的标志性指令,在IceLake微架构上,SIMD的支持从最高处理256位数据的AVX2 FMA来到512位的AVX512 FMA。 更宽的单次数据宽度使得其相比过去,功耗会略有提高,这使得IceLake-U在标称的基础频率上,低于不支持AVX512的14nm版本,这是因为在同样功耗下,由于要考虑运行AVX512指令和负载,所以此时频率会低一些,但在大多数情况来说,同样功耗,在频率不是非常高的情况下,使用AVX512的能耗是要好于AVX2的,这一点在之后接下来的测试中可以仔细对比。 尽管依旧是4个功能指令执行端口,IceLake在0,1,5,6四个端口上均增加了多个功能单元,所以Intel的后端执行单元实际上依旧高度复用,Intel认为,如今程序更多的瓶颈位于访存和前端指令分派上,能利用4个功能端口同时并行发射执行的机会极少,实际上绝大多数程序也很难测出IPC接近4的情况,但intel认为在单个情况下,尽可能增加某种功能的执行单元会提高整体效率,intel将LEA从2个扩大到4个,这旨在帮助计算内存地址移位计算的速度,并且新增了专用的IDIV除法器,这将大大提高64位整数除法的计算,实际上这应该是CannonLake微架构加入的。

icelake: IceLake微架构CPU介绍与性能分析

SHA指令集:其实并非AVX512扩展,其本质与AES指令集同类型,基于XMM寄存器,已经在Gemimi icelake Lake/ApolloLake/Cannon Lake上使用,IceLake是一个大规模在高性能处理器上使用的世代,但本身没有新意,其支持SHA-1和SHA2-256的计算,但SHA3并不受支持,更重要的是IceLake使用AVX512指令执行并不会处于劣势。 在位于0,1,5三个端口的向量执行部分,也发生了明显的变化,而向量部分便是引出我们的第二个提升部分,即专用型特定算法或者通用计算但需要特殊优化的提升部分,这一部分的提升需要通过改写和重新编译代码才能获得明显收益。 在使用3.1 RC+19版本的X265编码器转码1080P H265视频的测试中,使用AVX2与–Asm AVX512进行转码,最终结果来看受制于相同功耗,AVX512的表现仅仅是略好于AVX2,但相比于AVX,提升较为明显,1065G7在AVX2与AVX512的成绩总体与7700HQ相当。 在AES性能上,均使用AES指令集,在AIDA64上,1065G7发挥出了四倍AES单元的威力,但在内存负载更高的sisoftware的AES测试中,甚至出现了AES与VAES相比,AES速度更快的情况。

icelake

但很显然IceLake-U的总体密度是远低于这个数据的,实际制造的密度取决于处理器适用的功能,10nm工艺的逻辑库有10种类型,包括短库(高密度库),中高库(高性能库)和高库(超高性能库)等。 因此Intel的10nm工艺其实有多种不同的密度,实际上只有密度最高的短库可以达到100.8MTr/mm。 CPUZ 19.0测试可支持SSE,AVX2与AVX512的性能测试,目前AVX512提升并不多,可以看出半吞吐的1065G7并没有与其他全吞吐AVX512处理器在AVX512提升上有明显差异。 测试时间较短,其性能表现相当于AVX512成绩接近8600K AVX2成绩。 而在基于曼德勃罗分形图集合算法的SIMD多媒体计算测试中,1065G7在AVX512的加持下,32位和64位浮点的提升在30%左右,属于比较好的提升,这意味着相比Cometlake的同行们,IceLake不仅有执行AVX2指令的IPC优势,还能额外通过AVX512优化在这方面进一步提高30%,足以提高一个性能档次,而整数部分,64位整数并无AVX优化,所以成绩较低,而16/32位整数的提升在4-17%,幅度相对浮点较低。

icelake: IceLake微架构CPU介绍与性能分析

由于这些好处,在不久的将来,尤其是对于卷积神经网络,使用低精度运算有望成为标准做法,在CascadeLake上已经被支持。 在使用SVT VP9编码器的VP9编码测试中,使用SVT编码器进行VP9编码,并使用开源项目中的AVX512文件,目前AVX512只是覆盖部分功能,测试同时使用MSVC编译器与Intel编译器进行测试,从结果来看同样功耗下,1065G7使用AVX512会比AVX2的版本快一些,但快的不多,Intel编译器的速度会快过MSVC版本,1065G7性能达到3700X的45%,目前该项目我只有少数几个平台进行过测试,所以此次对比的都是高阶平台的成绩。 AVX512新增了8个新的opmask寄存器用于条件执行和目标操作数的高效合并。

  • 在使用3.1 RC+19版本的X265编码器转码1080P H265视频的测试中,使用AVX2与–Asm AVX512进行转码,最终结果来看受制于相同功耗,AVX512的表现仅仅是略好于AVX2,但相比于AVX,提升较为明显,1065G7在AVX2与AVX512的成绩总体与7700HQ相当。
  • SHA指令集:其实并非AVX512扩展,其本质与AES指令集同类型,基于XMM寄存器,已经在Gemimi Lake/ApolloLake/Cannon Lake上使用,IceLake是一个大规模在高性能处理器上使用的世代,但本身没有新意,其支持SHA-1和SHA2-256的计算,但SHA3并不受支持,更重要的是IceLake使用AVX512指令执行并不会处于劣势。
  • 从2017年的Skylake-Server产品开始另外拥有AVX512CD/DQ/BW/VL这几个子集,用于更精细的字节/单字/双字/四字操作,如AVX512DQ主要是加速对高精度运算需求的HPC业务如石油和天然气,地震建模,金融服务行业,分子动力学,光线追踪,双精度矩阵乘法,快速傅里叶变换和卷积,和RSA密码学,AVX512BW指令组支持字节/字操作,这可以使某些企业应用程序,多媒体应用程序受益,还有支持EVEX编码下的128/256位矢量计算(AVX512VL)的指令。
  • 因此Intel的10nm工艺其实有多种不同的密度,实际上只有密度最高的短库可以达到100.8MTr/mm。

AVX512 VBMI/VBMI2:VBMI1(置换,移位)和VBMI2(扩展,压缩,移位),用于列式数据库访问,字典的解压缩,离散数学,和数据挖掘负载(bit位的置换和位操作的矩阵乘法)。 5,一级数据缓存被提高到48KB每核心,但L1延迟达到5周期,二级缓存提高到512KB每核心,但三级缓存依旧为包含式设计且仅有2MB/每核心,4核一共8M L3,这对L3的空间是个不小的挑战。 总结起来便是,在19瓦的情况下,IceLake与Cometlake相比频率差距较大,尤其是SSE的频率要明显低于Cometlake,但到25瓦后(10510U是26瓦多),频率差距被缩小,基本持平了Comet lake,凭借IPC优势可以顺利击败Comet lake。 测试以AIDA64 FPU为准,分别运行AVX512,AVX256和SSE128三种情况,观察其25瓦下频率水平。 1065G7基本与3700X战平,3.9Ghz的1065G7在内存劣势的情况下,基本相当于4.4Ghz的Zen2. 另外在store address端口上也从之前的一个端口变为两个。

icelake: 处理器列表

完成该测试对系统环境有一定需求,Windows系统并不带有C/C++和Fortran编译器,所以我们需要安装编译器,同时SPEC CPU测试的代码本身为跨平台代码,但在Windows平台不需专门选择平台构建,但在安装完成后运行shrc.bat,将存在的编译器路径或者环境变量加入,以便运行测试时可以找到编译器编译相应的测试。 本次测试使用的是X86平台上的高性能编译器Intel C/C++&Fortran Compiler 19.0 Update4,由于Intel编译器安装的前提是需要有一个已有的IDE,所以测试平台还安装了Visual Studio IDE和C/C++环境。 AVX512 VAES:将原本的AES指令改为Vector(助记符+V)并可使用Zmm寄存器,可以实现4个128bit或者1个512bit吞吐,但实际上ICL-U本身的非Vector AES单元也获得了升级,从CannonLake开始,不使用VAES而使用传统的AES指令也相当于原本的2倍,VAES则是原来Skylake架构的4倍吞吐峰值。 从2017年的Skylake-Server产品开始另外拥有AVX512CD/DQ/BW/VL这几个子集,用于更精细的字节/单字/双字/四字操作,如AVX512DQ主要是加速对高精度运算需求的HPC业务如石油和天然气,地震建模,金融服务行业,分子动力学,光线追踪,双精度矩阵乘法,快速傅里叶变换和卷积,和RSA密码学,AVX512BW指令组支持字节/字操作,这可以使某些企业应用程序,多媒体应用程序受益,还有支持EVEX编码下的128/256位矢量计算(AVX512VL)的指令。 要想取得IPC提升,改进通用性能,往往便是“更宽,更深,更多”。 我们之前也说道,CPU目前可将流水线路径分为前端—(乱序)缓冲区—后端,前端为取指译码,缓冲区为调度和暂存乱序执行下的微指令,后端为执行指令,获取操作数并写回结果,而改进就发生在这些部分。

icelake

其计划在2019和2020年替代基于Skylake微架构的处理器。 由于Intel 10nm 节点产能不足和时钟频率低等原因,Intel被迫发布Comet Lake系列。 icelake 与以往的指令格式类似,指令助记符依旧为V开头,如VaddPS,Vpmdd+3个操作数,配合新增的512位ZMM寄存器使用,AVX512相比AVX2的YMM寄存器,可用的数量也从16个增加到32个。

icelake: 处理器列表

由于使用了Intel编译器,自然可以有Intel处理器专用优化选项,不过由于Intel的流水线结构已经保持了较大的可靠性和持续性,所以微架构本身更多的是量变而不是结构的变化,专用选项往往是为了尝试更新的X86扩展指令的使用,在针对全新的IceLake微架构中,Intel提供了两个选择,Qx+IceLake-Client或者IceLake-Server,针对目前的主流端ICL和会采用Mesh结构,支持CLWB等指令的服务器IceLake产品,不过由于会涉及比较一下AMD的成绩,但这种选项AMD处理器是无法运行的,所以还会运行Arch-AVX2的选项,以通用性的优化代码路径来运行,这样无论是Intel还是AMD都无法取得最佳优化,但这里会更凸显各个微架构在最普通的应用类型的差距。 AVX512 VNNI:主要适应以较低精度实现推理和训练的AI计算模型,较低精度的操作有两个主要好处。 在这些情况下,降低的精度使得数据格式更短,可能会更好地使用缓存并减少内存瓶颈。

icelake

柯文思

柯文思

Eric 於國立臺灣大學的中文系畢業,擅長寫不同臺灣的風土人情,並深入了解不同範疇領域。