目前半导体行业的发展可以用冰火两重天来形容,传统的桌面及移动SOC市场已经基本停止增长了,而云计算成了各大巨头的兵家必争之地,这点笔者在前文《英特尔火线换帅、苹果搅动乾坤,国芯路在何方》已经有过详细论述了。
在行业整体突飞猛进的基础上,技术之魂帕特.基辛格从Vmware回归以后,英特尔便开始了史无前例的颠覆式革新,最近他们拿出了一款从头到脚本全面升级的重磅产品Alder Lake,可以说Alder Lake的发布不但告慰了葛洛夫、欧德宁等前任CEO的在天之灵,同时也宣告英特尔戏彻底摘掉了“牙膏厂”的帽子。
Alder Lake是一款从上到下全面升级的处理器,采用大小核设计,其小核拥有拥有5000个条目的分支目标缓存区,实现更准确的分支预测;并将指令缓存扩冲到64K;簇乱序执行解码器,可在保持能效的同时,每周期解码多达6条指令,并支持AVX指令集。
大核的升级则更加明显,指令解码器由4个增至6个,发射宽度由6µop增加到8µop,分配由5路增至6路,执行端口由10个增至12个,提高了分支预测准确度。
Alder Lake几乎是对前代X86架构芯片从上到下的全面升级,其颠覆效应非常明显,个人认为以下方面非常的升级非常令人惊喜。
牙膏的配方都换在哪了
大小核入云值得期待:big.LITTLE大小核架构是ARM在移动SOC领域引入的概念,虽然本次英特尔将其命名为能效核与性能核,但其本质上就是大小核,从直观感受来看能效核、性能核的叫法,听起来不如大小核那么容易理解。简单来说大小核就是让小核去处理那些对算力要求比较低的问题,大核则专注于处理计算密集型的任务。在手机上这个概念非常容易理解,在手机熄屏待机时用小核工作,而当用户进行游戏或者观看视频时则启动大核。
之前英特尔一般使用睿频技术,也就是通过调节主频来进行能耗的优化。没有引入大小核来解决问题的主要原因在于一般来说小核不支持AVX等SIMD矩阵加速的指令集,但SIMD对于云计算应用领域几乎是无处不在的,也就是说支持AVX512的大核几乎没有休息的可能性。不过这次英特尔的能效核直接支持了AVX指令集,并且还能在性能保持一样的情况下,将能耗控制在前代的40%,这样大小核的设计引入云计算领域就变得颇为合理了。
在AI训练等云计算的典型领域中,在初始的数据清洗、数据整理、以及前20%的神经网络结构建立过程中对于算力的要求都不是很高,这时候支持一定矩阵加速的小核完全可以应对,这同时也给大核以休整的机会,大小核的协同作战的确给了云计算领域增加了不小的可能性。
AMX打开AI云的新天地:虽然目前我没还没有真实感受过AMX的威力,但是其上一代技术AVX-512和VNNI都是业界口碑极佳的技术,比如在TensorFlow跑ResNet,那么英特尔的AVX512优化版就是你不二的选择,因为相较于默认版来说,英特尔的AVX-512优化版本,速度提升了10倍。
在经典神经网络中常使用FP32也就是32位的数据来作为输入,但是很多研究表示,如果使用int8类型做为输入,计算量至少可以下降75%。但精度损失却可以低于1%的。而VNNI则致力于FP32到int8的加速过程,从我掌握的情况看腾讯通过VNNI技术实现了一个可以实时生成用户3D头像的模型,在精度降低1%的情况下,性能还提升了4.23倍。另外英特尔和阿里云在Ice Lake上也针对自然语言处理的Transformer模型进行了深度优化,通过VNNI的加速实现了3倍的性能提升。
根据目前英特尔关于AMX的资料上看,这项技术可以在每个周期内进行2000次 INT8运算和1000次 BFP16运算,与之前的AVX-512 和VNNI指令的相同微基准测试版本相比,使用新的英特尔AMX指令集扩展优化的内部矩阵乘法微基准测试的运行速度提高了7倍以上,如果这个性能指标是准确的话,那么AMX也是相当值得期待。
融合计算平台,未来演进方向:从近几年形势看,CPU,GPU,FPGA,ASICs等芯片共同构成了IT技术栈的算力底层,每种结构的芯片似乎都不能单独承担重任。从目前的资料上看,Alder Lake更像是CPU,GPU,FPGA,ASICs的多架构融合体系,是CPU、GPU与协处理器的混合体,堪称融合式计算平台的典范。
当然这种程度的颠覆升级难免会出现这样或者那样的问题,这里我个人也对英特尔有一些建议。
哪些方面的牙膏还得再挤狠一点
Thread Director需要加快与Linux的融合:大小核虽然是一项比较成熟的技术,但是在X86架构的处理器中还是首次引入,我们知道在ARM刚刚引入大小核设计时经常会出现一核有难,八核围观的现象,为解决调度难题,Intel在Alder Lake处理器中引入了Thread Director的软、硬结合技术,他在处理中集成了一个专用的MCU,用来监控当前处理器内核的运行情况,能够监测到每个线程的特征,比如它运行什么样的指令集、它的性能需求如何等等。在收集完信息之后,它会将收集到的信息反馈给操作系统,操作将会把这些信息与自己线程调度器相结合,判断是否应该将线程转移到别的核心上。如果与操作系统结合的好,那么一轮信息采集工作仅需要30微秒就能完成,而传统的调度器可能需要100多毫秒才能判断出结论。
从目前的情况看Thread Director已经与Windows 11进行了结合优化,但是在云服务器领域Windows的份额几乎可以忽略不计,Linux内核的操作系统才是主力军,不过我目前还没有看到有关Thread Director的优化被Merge到Linux的主分支上。如果没有Linux的优化加持那么Alder Lake的大小核在云计算市场上的表现很可能不会尽如人意,因此与Linux的结合优化需要提速了。
CPU和GPU的通信能力需要加强:CPU和GPU通信速度的重要性,可以用苹果M1的例子来加以说明,我们知道苹果M1显卡与内存加在一起只有16个G,对比上一代MAC PRO内存128G,光是显存都有16G,不过搭载M1的入门版MAC在进行图像处理等需要CPU与GPU进行协同的运算任务时,至少比上一代顶配的MAC性能高出近一倍。其中的秘决就是将内存与显卡进行统一管理,从而大大提高了CPU与GPU的通信效率。类似于DMA控制器在磁盘与内存之间搭建了一条快速通道一样,英伟达之前发布的Grace处理器也采用了和M1比较类似的思路,但是在Alder Lake中似乎并没有借鉴这项设计,建议后续可以考虑。
加大生态建设方面的投入:我们知道英伟达之所以能在AI及区块链方面有着如此出彩的表现,高性能计算框架CUDA绝对是居功至伟,正是在CUDA的帮助下英伟尔的GPU进可以AI训练、区块链挖矿;退可以玩大型游戏,爽得不亦乐乎。英特尔其实在软件生态方面的贡献做得不少,比如在机器学习领域使用最多的开源框架Scikit-Learn方面,通过英特尔的优化工作,也让这个使用程度最广泛的机器学习框架获得了100倍的提升,而且这次也推出了oneAPI的整合框架,基于oneAPI开发你的软件,无需考虑是CPU还是GPU还是TPU的问题,oneAPI会自动让你的代码在最适合的设备上运行。
不过问题还是在于生态方面,用得人不多,再好的技术效果也出不来,因此建议英特尔加强针对oneAPI框架的专项优化,只要oneAPI的生态能建立起来,再加Alder Lake这样的融合计算平台,英特尔的未来值得期待。