MCPLive > 杂志文章 > Intel众核处理器战略解析与技术前瞻

Intel众核处理器战略解析与技术前瞻

2014-02-18黄博文《微型计算机》2014年1月下

独立运行的72核心Knights Landing

随着越来越多的超级计算机开始尝试采用众核架构,天平重新向英特尔一侧倾斜,英特尔显然不愿意给对手太多机会。仅仅一年半后,英特尔就赶在新一届超级计算大会上公布了下一代产品Knights Landing的消息。面向超级计算机的Knights Landing将同时完成ticktock,也就是使用下一代14nm工艺制造的同时,也实现一次微架构的大幅度改进,将核心数目从61扩张到72,这样的消息不得不说是颇为令人心动的。依据眼下的情报,Knights Landing的变化主要可以归结为两大亮点:

在独立处理器与协处理器两种模式下运行

对于下一代众核架构的产品格局来说,可能这个变化是意义深远的。Knights Landing一举去掉了“协处理器”这个帽子,这款众核处理器可以继续在协处理器模式下运行,也可以作为独立处理器,整台超级计算机都使用Knights Landing来构建,不再需要Xeon的主导。依据目前英特尔放出的口风,新的独立CPU模式可能会摆脱PCI-E插槽,转而插在CPU插槽上,可独立启动自己的操作系统。使用协处理器模式的话,Knights Landing则仍然将工作在PCI-E插槽上,让已经部署了Knights Corner的机器能够快速升级。不过总体来看,以独立处理器模式工作时,Knights Landing的性能可以达到优化。毕竟在甩脱Xeon作为独立处理器之后,Knights Landing将解决数据在Xeon和Xeon Phi两种CPU之间迁移的问题。

在超级计算机中,数据迁移的开销非常高昂。与普通民用领域不同,超级计算机上运行的代码里,仅仅一个数组的规模可能就达到TB级别,这样大规模的数据搬移到协处理器上所需要的延迟和功耗开销都不可忽视。性能调优时甚至需要考虑在搬移数据的同时进行计算,以求重叠数据搬移所浪费的时间。若Xeon Phi能够独立工作在可引导的独立处理器模式下,数据搬移的开销就可以免除,这是一项不小的优势。为了使更多的数据能够保存在本地,Knights Landing还在封装内部集成了一层内存,提供500GB/s的超高带宽以应对访存密集型的应用。

KnightsLanding集成一层片上内存,PCB板上还有外置DDR4内存。

基础核心架构从P54C转向Silvermont

国外著名技术咨询站点Realworldtech曾于本次国际超级计算大会前刊登了一篇文章,预测Knights Landing的基础核心选择。该文认为Silvermont核心并没有像Haswell一样极致地追求单线程性能,而是走轻量级小核心的路线,核心设计时对单线程性能有所倚重,但并不激进,对注重多线程吞吐的Knights Landing来说可以接受,并且Silvermont自身已经是一个x86可引导核心,满足构建独立处理器的条件,因此可能会成为Knights Landing选择基础核心时的选项之一。但是若将这一架构搬迁至众核上,需要进行很大幅度的修改,绝非易事。Realworldtech据此认为,英特尔会选择再度重新出发,设计一个全新的核心。但是这一回,一向以内容专业、分析独到而著称的Realworldtech也犯错了。英特尔终选择了Silvermon,这是为什么?

第一:让Knights Landing作为独立处理器工作,虽然能应对数据迁移难题,但也同时意味着代码中的并行和串行部分都要搬移到Knights Landing上完成,如果仍旧坚持P54C,众核处理器将要以极度孱弱的单线程能力来应对x86-64代码中的串行部分。Silvermont的切入刚好使得单线程能力往前跃进了几乎一个时代,转向Silvermont的设计决策与独立CPU工作模式这二者是相辅相成的,可以说转向Silvermont就是Knights Landing引而不发的“独立宣言”。

第二:Realworldtech的分析没有错误,设计决策虽好,但是工程实现是另外一回事。在众核架构上引入Silvermont,从工程上来说确实有很多挑战。首先,为了适应高性能计算需求并且与前代产品保持一致,Silvermont需要引入至少512 bit位宽的SIMD阵列;为了具备多线程能力,流水线需要大幅翻新以控制多个执行线程。Silvermont的缓存系统对Knights Landing来说太过于寒酸,连Knights Corner都具备64字节/周期的读写带宽,但Silvermont只有区区16字节/周期。同时,Knights Corner的指令缓存是32KB 8路组关联,而Silvermont只有4路组关联,在多个线程代码争抢指令缓存时,恐将无法做到性能隔离。解决这些问题需要投入的工程努力是值得敬意的,很高兴看到英特尔的众核工程团队成功完成了一次跨越式进步。随着这一次改进,Knights Landing不仅能够维持x86前向兼容,还将自己的SIMD指令集也统一到AV X之上,英特尔此后的产品都将以AVX指令集作为SIMD扩展的基准。

外媒公布的Knights Landing PPT,显示这款下一代众核处理器将基于Silvermont架构构建
外媒公布的Knights Landing PPT,显示这款下一代众核处理器将基于Silvermont架构构建

谁将成为后的赢家?多核 VS 众核 VS GPU

新一代众核处理器面世之后,高性能计算市场上将呈现一种非常有趣的三足鼎立格局:首先是来自英特尔的多核CPU,正在谋求扩张的英伟达GPGPU,以及奋起直追的众核CPU。这三者究竟是什么关系?

多核CPU与GPU是比较成熟的概念,让我们首先来对比一下英特尔所选择的的多核心CPU与英伟达的GPU路线有什么不同。CPU核心中普遍使用了激进的分支预测,乱序多发射技术,单线程的执行能力远远强于GPU,而GPU的单线程性能虽然低下,但是大规模并行架构造就了卓越的吞吐量。英特尔虽然在CPU领域具备统治力,但是架构的不同使得CPU无法在高吞吐的环境下与英伟达的GPGPU竞争,为后者留下可乘之机。

对于当下的GPGPU发展现状,业界大体存在两种观点,其一是保守派。他们认为GPGPU较难编程,且所有GPGPU代码本质上都能在CPU上运行。同时GPGPU的硬件架构与编程模型都在持续改进,今天花费很大力气调优的GPGPU加速代码,到了下一次产品更新时可能就已经丧失优势,GPGPU的高吞吐特性也只有面对一部分应用时才能发挥,所以GPGPU加速尚不急着上马。其二是乐观派,GPGPU在科学计算中非常活跃,其性能优势确实显著,花费额外精力进行GPGPU的调优是值得的。为了更好地配合GPGPU的硬件架构特点,甚至有一些领域的专用编程语言已被提出(例如专门用于计算化学问题)。显然乐观派对GPGPU的前途是相当看好的,这两种观点都有自身道理。

一头是在单线程性能上臻至巅峰,同时扩展少量核心提供少量并行性的多核CPU;另一头是在并行性上追求极致,但单线程性能上很差的GPGPU,这两者共同构成了现今的编程模型。而英特尔希望打破这一局面,利用一个新的架构,同时吸收多核CPU与GPGPU的长处,在CPU与GPGPU之间的空地上寻找立足点,这就是众核CPU。

回头分析众核CPU,我们能够从中找到一些明显属于GPGPU的特色。例如基于简单核心构建,以SIMD扩展为基本手段,强调吞吐量等等。同时也有不少来自CPU世界的理念,例如基于硬件管理的缓存一致性等。而众核CPU也吸收了多核CPU在编程方法上的长处,继承了OpenMP,MPI等编程语言,不会给程序员带来更大的代码迁移负担。OpenMP只需要给予相对简单的编译指导,程序代码就能实现半自动的并行化。其优点是开发难度小,缺点是编译器自动生成的并行代码不能完全发挥性能。而传统的GPGPU编程,如OpenCL和CUDA,都需要手动编写专用的并行代码,开发难度更高,但是性能表现通常较好。综上来看,众核CPU是定位在多核CPU与GPGPU之间的产物,吸收了多核CPU与GPGPU的长处,力图基于CPU核心提供大规模并行计算的能力。从目前的格局来看,从多核到众核到GPGPU,并行能力依次增强,串行能力则依次减弱,众核与多核CPU的市场重叠区间不算很大,但是与GPGPU却形成了正面交锋,形成针尖对麦芒的局势。这二者在未来几年内的竞争毫无疑问地将愈演愈烈。

采用14nm工艺生产,可独立运行的Knights Landing处理器势必和NVIDIA TESLA这类产品展开激烈角逐。
采用14nm工艺生产,可独立运行的Knights Landing处理器势必和NVIDIA TESLA这类产品展开激烈角逐。

高性能大战才刚刚拉开序幕

随着Knights Landing的曝光,英特尔针对性地抛出了“ 同构计算”理念,认为众核CPU在未来有能力取代GPGPU,基于GPGPU的异构计算只不过是计算机体系结构发展中的一条分岔,主旋律终还会回到CPU核心上来。至此,英特尔已是“图穷匕见”,其众核架构战略蓝图已经有了比较明显的轮廓。下一代众核处理器Knights Landing将同时完成架构和工艺的双重进化,对于英伟达来说压力不可谓不大。针对英特尔的反击,英伟达也在做出调整,在近日公布的CUDA6中,无需程序员手动干预的自动化数据迁移也赫然在列。众核处理器与GPGPU的龙争虎斗现在才刚刚进入第二回合,孰胜孰负依旧难料。

Tips:什么是GPGPU的可编程性

GPGPU的底层架构与CPU有较大区别,这种架构的强大并行能力若想发挥出来,必须满足一些先决条件,让我们以SIMD处理为例来说明可编程性的概念。GPGPU的每一个核心实质上都是一个SIMD处理器,能够并行地计算几十组不相关数据的结果,但要求操作这几十组数据的指令都是相同的。若这些数据中的一半想做乘法,另一半想做除法,则在目前的架构中无法实现并行。GPGPU必须先发射一套乘法指令做完乘法运算,再发射一套除法指令去完成除法计算,这就对程序员们的编程提出了制约。程序员们必须将种类相同的计算尽可能地组合打包,才能发挥GPGPU的长处。相比之下CPU就没有这种限制,CPU能够同时发射多种类型的指令,这是GPGPU的可编程性不如CPU的原因之一。为了提高GPGPU的可编程性,包括CUDA,OpenCL在内的编程语言被相继提出,新的编程工具也在不断问世。

Tips:古老的P54C核心

P54C是一个完稿于1995年以前的老旧架构,距今已有近20年,P54C曾主要在Pentium 75到200处理器上得到广泛使用。选择它作为XeonPhi的主要原因在于其具备流水线短、核心简单的特性,具备较高的能耗效率,并通过后期改进,令其并行运算能力得到突破性提升,但其串行运算能力十分低下。

P54C核心早在古老的Pentium处理器上就得到了使用
P54C核心早在古老的Pentium处理器上就得到了使用

Tips:Xeon Phi的数据迁移

作为协处理器的Knights Corner,其运行模式与NVIDIA的GPGPU有类似之处。程序员都需要指定哪一部分代码在GPGPU/协处理器上运行,依据这个指示,相关的代码和数据将通过PCI-E总线传递至GPGPU/协处理器的片上内存当中。

Tips:Silvermont一为凌动处理器引入乱序架构的先驱

此前的凌动处理器一直采用顺序执行架构,这在一定程度上是为了降低功耗,但确实对性能有影响。因此在其代号为“BayTrail”的新一代凌动处理器上(主要用于平板电脑、手机、轻薄台式机等低功耗平台),它采用了首次引入乱序执行流水线的Silvermont架构。英特尔宣称Silvermont相比前代Saltwell凌动处理器单线程性能提高了1倍,其实际性能大约为台式机Core微架构的一半。

Tips:Silvermont一为凌动处理器引入乱序架构的先驱

Tips:Silvermont将大幅提升能效比

选择Silvermont还有着值得玩味的一点:如同我们在2013年15期《英特尔XeonPhi的x86微异构技术解析》一文中分析的,众核处理器的基础核心需要具备高能效,不允许像Haswell那样激进地追求单线程性能。Silvermont核心虽然不比Haswell,但也是一个乱序双发射架构,它能被选中成为众核的基础核心,表明英特尔对Silvermont在14nm上的能效很有自信。

分享到:

用户评论

用户名:

密码: