胜算在“芯” 全新至强E5v3系列处理器解析

  • 来源:微型计算机
  • 关键字:芯,处理器,解析
  • 发布时间:2014-10-11 09:45

  在服务器领域,英特尔的领先地位无可动摇。但英特尔并没有因此而放松研发的进程,在2012年3月发布至强E5系列、2013年9月发布至强E5v2之后,至强E5v3又在今年9月到来。至强E5v3全新的、针对软件定义基础设施优化的Haswell-EP核心究竟带来了哪些变革?会对服务器性能产生怎样的影响?我们联合ZDnet企业方案解决中心对这款产品进行了测试,为大家带来关于它的最新技术细节。

  一路高歌的x86服务器芯片

  如今的服务器市场已经是x86服务器的天下。在和RISC架构服务器的竞争中,x86架构凭借其开放性和成本优势,已经成为企业构建服务器与数据中心的首选。在x86服务器市场中,英特尔至强CPU的出货量又遥遥领先,根据IDC统计的结果显示,其市占率超过了90%。在消费级市场PC增长乏力,平板还在全力拼份额的情况下,服务器市场已经成为英特尔利润最稳定、市场地位最牢固的根基。正因为如此,英特尔对于服务器级产品的重视也与日俱增。

  出于稳定性与优化的考虑,服务器CPU产品的更新速度会稍后于消费级产品。虽然同样是基于Tick-Tock策略,服务器级产品的功能优化与更新比消费级产品更复杂,所以更新的周期不一定很准时。比如从2010年3月的Westmere-EP至强5600系列到2012年3月的Sandy Bridge-EP至强E5,花了差不多两年时间,再到2013年9月的Ivy Bridge-EP至强E5v2,其间隔又是18个月。

  显然,在当前消费级市场低迷的情况下,服务器市场已经成为英特尔的重中之重。而至强E5是服务器和数据中心的主力产品,所以在英特尔去年正式提出软件定义基础设施的数据中心策略之后,只用了短短12个月,至强E5v3就正式发布,而且针对软件定义的服务器架构进行了大量的优化。

  事实上,如今英特尔的x86服务器产品线已经覆盖了整个市场,从工作站到低密度的互联网、冷存储系统,再到企业级高性能服务器、云计算数据中心以及高性能计算超算中心等,无所不在。而英特尔的对手们也在试图找出对抗它的方法。

  比如,在去年8月,IBM宣布携手NVIDIA、Mellanox等厂商成立“Open POWER联盟”,向第三方授权POWER芯片的技术与架构,成立Open POWER基金会为基于POWER的生态系统服务,今年又宣布三星加入该联盟等,都是为了稳住RISC架构服务器的下滑趋势。但即使如此,IBM因为种种原因,在国内的市场份额仍在不断下滑。

  另一些挑战者则来自ARM阵营,凭借低功耗的优势,ARM芯片正在试图由最开始的通信市场向低端服务器领域扩张。从2011年起,ARM就透露了进军服务器市场的时间规划,目前AMD、英伟达、Marvell、Calxeda等公司已基于ARM架构对其芯片做出改进,以适用于服务器。虽然ARM的低功耗特性确实契合目前的一些需求,但要想打造出一个全新的服务器生态链显然并非易事,再加上英特尔在去年已经发布了低功耗的凌动C2000系列处理器进行狙击,ARM阵营的前景还不可预测。

  大数据与云计算带来的新制高点

  2010年10月,由英特尔协调发起,70多家行业用户代表组成的开放式数据中心联盟(Open Data Center Alliance,ODCA)宣告成立(目前已超过300家),这个联盟的意图在于推动数据中心和云计算的开放化和标准化,英特尔也因此提出了软件定义基础设施的数据中心创新愿景。而要实现这个云愿景,开放式数据中心的基础作用至关重要,它可以在用户的需求与平台优化之间形成良性循环。

  那么,新的至强E5v3平台针对以软件定义基础设施建设进行了哪些优化?首先是性能,云计算带来海量数据处理挑战,各个计算节点间的调用和处理器使用效率成为影响数据处理快慢的重要因素,E5v3增加了内核数量以及高速缓存,同时扩展了高级矢量扩展指令集和虚拟化密度,相比上一代产品,其每台服务器运行的虚拟机数量可以多出70%;其次是可见性,数字服务经济讲究灵活性,至强E5v3具备高速缓存监控特征,此外还具有平台遥测传感器,包括相关的CPU、内存、I/O利用率等指标参数,可更紧密地监控、管理和控制系统的利用率;再次是可扩展性,E5v3平台已经增至20多款芯片型号,针对大小厂商以及不同云计算平台采取定制化服务,实现资源最佳匹配;最后是网络,全新的英特尔以太网控制器XL710产品家族能够满足对网络日益增长的需求,其万兆及4万兆以太网控制器能够在能耗减半的情况下提供更高的带宽。此外,E5v3可与支持英特尔Quick Assist技术的通信芯片组89XX系列配合使用,提升加密和压缩性能,增强工作负载的安全特性。

  至强E5v3的优化细节新家族

  新一代的至强E5v3代号Haswell-EP,属于“工艺不变,架构革新”的一代。从Nehalem开始,英特尔开始将处理器分为核心(core)和非核心(uncore)两个部分。Haswell-EP的核心(core)部分和上一代IvyBridge-EP核心相比改进不大,这在接下来的篇幅中会解答。非核心部分(uncore)包括最重要的总线和接口设计,都面向服务器应用做出了大量优化与改进,不同核心与非核心的搭配就形成不同家族产品。E5v3主要划分为三个产品区间、高级版、标准版与基础版,主要的区分因素是核心数目、主频、TDP、总线速度与内存支持。Haswell-EP能够支持最多18核心的配置,并将引入AVX2.0指令集提供更宽的SIMD操作,内存支持也从原先的DDR31866大幅度提升为DDR42133,并实现了更加灵活的每核心独立功耗管理。

  单核心微结构

  此前的一代至强E5v2是基于Ivy Bridge-EP核心构建,而新一代的至强E5v3是基于Haswell-EP核心构建。随着英特尔的Tick-Tock战略稳步推动,传统的CMOS工艺和单核心微结构都越来越难再有很大幅度的进步,Haswell-EP这一代处理器在单核心微结构上几乎没有什么实质性变化,只是加大了乱序执行引擎中的各个性能指标,允许从更大范围内的指令中挑选出不相关的指令进行乱序执行,也允许更大数目的指令同时执行,这些改进有助于提升IPC(CPU每一时钟周期内所执行的指令多少),但幅度不会太大。

  可能有读者会心生疑惑,为何这些指标提升得如此缓慢?受限于篇幅,我们以可同时执行的load指令数和store指令数为例来做一个说明。可重叠执行的load与store指令数代表着处理器能够同时发出多少个访存请求,考虑到大约3成左右的指令需要访存,而每一次访问一级缓存,即便命中的情况下处理器也需要4个周期左右(不同的处理器上这个数值可以不同)才能拿到缓存递来的数据,因此如果我们不做任何优化的情况下,每遇到一次访存,这条访存指令和所有的后继相关指令都要至少停顿4个周期,这是一个难以接受的性能损失。为了避免这一损失,乱序执行调度引擎会选择一些不受当前访存指令影响的不相关指令开始执行,等到这条访存指令拿到自己需要的数据时再执行它以及受它影响的后继指令,这能够帮助处理器容忍访存带来的延迟,但是仍然不够,因为在一个4发射的处理器上,大约每个周期里都会碰到一条访存指令,处理器还得允许多个访存指令重叠执行。也就是说,在一条访存指令还在缓存当中查找数据尚未返回的时候,处理器就要有能力发出第二条访存指令,而缓存也得有能力同时服务多个访存请求。

  为了让这项优化成为现实,处理器在发出一条访存指令之前,必须检查这条访存指令与先前的访存指令是否存在相关关系,是否会违反访存规定。现在的处理器往往允许重叠执行几十条甚至更多的访存指令,这就意味着在一次访存指令发出以前要检查几十条指令的相关关系,而检查50条指令是否与当前指令相关,和检查60条指令是否与当前指令相关,所需要的时间是不同的。在时钟速度不允许妥协的情况下,电路逻辑和晶体管切换速度都需要改良,才能在较高的运行频率下实现更多的指令相关性检查,可重叠指令数才能够提高。在SandyBridge上,可重叠执行的访存指令数目已经较高,所以Haswell也仅能在它基础上提升10%左右。

  在指令集上,英特尔继续在宽SIMD的道路上前行着。继AVX1.0代之后,Haswell上的AVX2.0指令集宽度提高到了256bit,并且支持整数向量计算、乘加计算、全宽度的元素位置运算以及Gather操作,还针对性地加强了密码学相关的指令,相信这一改进将令高性能计算,视音频编码以及游戏渲染获益更多。

  全新的环形总线和缓冲交换机

  在之前的Ivy Bridge-EP以及以前的SandyBridge-EP上,英特尔通过环形总线方案来实现多核心之间的通讯。在Haswell-EP上,英特尔抛弃了在不同组的核心间设计“大循环”环形总线的方式,而是将处理器核心以组区分,同组内核心仍旧通过总线互通,但是为了保证组间核心的通讯,英特尔设计了被称为“缓冲器”的Buffered Switch开关,缓冲器挂接在环状总线的节点上,可以使得环状总线中的数据通过缓冲器自由流动,实现了高效率的数据交换。

  之所以抛弃了上代的“大循环”总线而采用了分组环形总线+缓冲器设计,原因在于Haswell-EP拥有多达18个核心,采用原来的总线设计无法顾及到所有核心之间的数据交换需求。Buffered Switch将CPU分为了两个区域,从而让处理器可以容纳更多的CPU核心。不过,Buffered Switch会有4~5个时钟周期的延迟,针对Haswell-EP的这种情况,英特尔采用Cluster-on-Die的工作方式实现。Buffered Switch的存在让两个不同的核心组/分区对其它不同的部件有着不同的延迟,这实际上就和NUMA架构一样,因此Cluster-on-Die的做法就是在CPU里面实现NUMA—每个CPU组各自拥有各自的内存控制器、Home Agent等,L3Cache也同时进行分割。整体来说,Cluster-on-Die模式用于降低两个CPU分区之间的通信,从而提升性能。

  根据英特尔的说明,Haswell-EP拥有三个不同的核心方案,分别是High Core Count,Medium Core Count以及Low Core Count,分别简称HCC、MCC和LCC。其中HCC可以配置14~18个核心,拥有两组分别导通为8和10个核心的环形总线,两个缓冲器,这是英特尔面向顶级市场设计的方案;接下来的MCC则有10~12个核心,也分为两组,每组8个核心,两个缓冲器,面向中端市场;最后的LCC方案可以配置4~8个核心,没有缓冲器,只配置了环型总线。

  访存子系统

  在新一代Haswell的访存子系统上,一级、二级缓存除了部分指标的提升之外,并没有结构性的改变,但读者们可能注意到,新一代的处理器无论是一级、二级缓存还是一级、二级TLB,都走向了高度组关联结构,比如Haswell的一级缓存都已经统一为8路组关联,所谓的组关联是一种什么样的结构呢?

  组关联是一种通用的缓存结构,一般的计算机体系结构和处理器微结构教科书上介绍组关联时通常会拗口地将之表示为“进入同一个组内的数据块可以被散列到几个位置上”,这一定义非常不便于理解,我们在本文中采用麻省理工学院Daniel Sanchez教授在处理器微结构的顶级学术会议MICRO 2010上提出的另一种定义:当缓存装不下更多的数据,需要将冷数据块踢出,腾出空间给即将载入的新数据块使用时,可以寻找到多少个踢出候选块(victimblock)。我们经常提及的8路组关联、4路组关联等,其实际含义是,8路组关联缓存中,缓存控制器能够从8个踢出候选块中进行选择,而在4路组关联缓存中,这一选择范围就降到了4个。一般来说,选择范围越大,缓存控制器才越能找到使用频率较少的数据块踢出。

  既然高关联度缓存有助于提高访存子系统的性能,那么为什么不把关联度继续往上提高呢?因为做到更多的组关联度将冲击到缓存的取用延迟,在并行存取式的缓存上,高关联度的做法还将进一步推高缓存功耗。作为与英特尔的对比,AMD Bulldozer的一级指令缓存仅仅2-way关联(后来提升到3-way),一级数据缓存也只有4-way,如果AMD没有使用skewed-associativecache或者类似技术的话,这样的关联度很容易导致过高的冲突缺失率,缓存也难以正确挑选出使用频率较少的块,踢回下一级存储器。

  在Haswell的消费级旗舰型号上,三级缓存的组关联度可以达到16,意味着每次三级缓存控制器能够从16个踢出候选块中寻找一个近期使用频率最少的,这一组关联度对于大多数应用来说都已足够,但是在多核心多线程运行的环境下,尤其是在对线程并行度要求较高的服务器上,仅有高度组关联的缓存还是不行的,原因在于“吵闹的邻居”问题。

  吵闹的邻居

  在英特尔的访存子系统上,一级、二级缓存为各个核心私有,不会受到来自其他核心的干扰,但是到了三级缓存上,这一级存储器就变成了所有核心通用,无法向某一个核心上运行的某一个线程提供性能保障。对于大规模部署服务器的数据中心而言,这种资源干扰成为了一大难题。当前的数据中心服务器中已经大量采用类似Ivy Bridge-EP或是Haswell-EP这样的多核心处理器,三级缓存往往被四个以上乃至十几个核心共享,因此当一个以上的核心运行一些访存密集型的应用时,就可能出现对共享式三级缓存的争抢,核心C上运行的应用不断地冲刷核心A和B存储在三级缓存上的内容,将核心A与核心B存储在三级缓存上的数据踢出,使得核心A与核心B的性能降低,此时的核心C就成了“吵闹的邻居”。

  这种现象在至强主攻的服务器市场上越来越受到重视,如果在多核心上同时运行多个应用,相互之间的缓存争抢就会导致性能下滑,而且下滑程度不可预期,但如果不运行多个应用,多核心处理器的优势就荡然无存,给数据中心的运营者带来巨大的资源浪费。部分地出于避免资源争抢的原因,业界的数据中心处理器利用率普遍不超过50%,如果强行运行多个应用提高对多核心处理器的资源利用率,应用性能就会得不到保障,从而影响用户体验,降低公司营收。例如微软曾经在自己的搜索引擎Bing上进行过测试,当服务响应时间为200ms时,用户点击下一个链接的时间也变长,用户的点击数与满意度都在下降。当服务响应时间增加到2000ms时,用户满意度下降了3.8%,而每个用户带给企业的收益下降了4.3%。由于这个实验结果对公司产生了负面影响,最终不得不永久终止实验,多数厂商都在这个问题上采取了保守做法。

  服务质量感知的缓存划分

  为了解决这个问题,就必须对三级缓存做出某种程度的资源隔离,对多个核心上正在运行的各个应用程序所能使用的三级缓存容量做出划分,并且这个容量划分必须动态进行,以适应各种不同需求。

  在三级缓存上进行容量划分的方法有许多,其中开销最小、最容易实现的是按路划分(way-partition),依据目前的信息,我们相信英特尔在自己的E5v3处理器上也使用了这种划分方法。在双核心双线程环境下按路划分的实现方法是,当缓存控制器需要从8路组关联缓存中的一组8个数据块当中挑选出一个踢出候选块时,强制线程0只能踢出第0、1、2、3这四路中的数据块,强制线程1只能踢出第4、5、6、7这四路中的数据块,于是这两个线程的缓存存储量达到稳定状态时,必定是一个50∶50的公平划分,所有线程0的数据都存储在三级缓存的第0、1、2、3这四路上,所有线程1的数据都存储在第4、5、6、7这四路上,这一情况可以容易地推广至更多核心更多线程数目的场景下。

  按路划分只需要对缓存替换算法做略微修改,这一修改基本不会引入额外的延迟开销,但是这并不意味着按路划分没有任何缺点。按路划分意味着组关联度的降低,例如在上面的例子中,两个线程共享一个8路组关联缓存,每个线程实际上能使用的缓存只有四路,这会不可避免地抬升缓存的冲突缺失率,出现更多的缓存不命中情况。因此按路划分对底层缓存的组关联度要求是比较高的,英特尔在Haswell上装配了一个16路组关联度的三级缓存,却要应付十几个核心,这是不太够的,但是继续提高组关联度也有难题,很期待见到英特尔的后继解决方案。需要说明的是,LLC的按路划分目前只明确会出现在Haswell-EP上,Haswell是不是相同暂不清楚。

  更强大的电源管理技术

  Haswell-EP的电源管理技术也得到了加强。首先,Haswell-EP处理器内部集成了电压调节模块,这使得主板上的供电设计得以简化,对主板制造商来说成本控制会更为出色。其次,Haswell-EP还带来了更为出色的电源管理能力,包括Per CoreP-States(PCPS)、Energy Efficient TurboMode(EET)、Uncroe Voltage/Frequency Scaling(UFS)三项技术的加入,使得Haswell-EP能够有更为出色的能耗比表现。

  那么,PCPS、EET和UFS三项技术的特点是什么呢?先来看PCPS,它的意思是可以允许核心部分的每个核心之间都运行在各自不同的电压和频率下。接下来是EET,EET的功能是控制频率和电压,它可以根据目前核心的运行情况,来自动控制核心电压和频率,并监控核心的工作情况。最后是UFS,UFS主要是指核心和非核心部分可以运行在不同的核心和电压下。这三个技术单看都没什么意思,但是联合起来就不一样了。举例来说,之前的Sandy Bridge-EP处理器的核心部分和非核心部分在运行时必须使用相同的电压和频率,但实际上处理器各个部分又不会同时满载,这样就带来了一定的能耗损失。在Haswell-EP上,通过解除各个部分的电压、频率锁定并加入适合各自模块的电压和频率控制,各个模块能够根据自己当前的工作任务来调整频率和电压,最大限度的节约电能、提高效率。

  实际性能测试

  我们使用SPEC CPU 2006对拥有18核心的旗舰型号E52699 v3进行了测试,同时与上一代产品E52697 v2进行对比。SPEC CPU是一个应用广泛的大型CPU性能测试项目。它是由计算机厂商、系统集成商、大学、研究机构、咨询等多个机构组成的非营利性组织,这个组织的目标是建立并维护一套用于评估计算机系统的标准。SPECCPU目前最新版本是SPEC CPU 2006,它包括CINT2006和CFP2006两个子项目,主要包括了12项整数运算和17项浮点运算,它以一台Sun Ultra Enterpirse 2工作站作为基准参考系统,系统基于一颗296MHz的Ultra SPARCII处理器,测试的得分就表明这个项目中测试系统相对基准系统性能的比值。

  SPEC CPU 2006会给出8组测试数据,每组数据包含不同的测试内容,我们一般关心SPECint_base2006和SPECfp_base2006、SPECint_rate_base2006和SPE Cfp_rate_base2006这4个得分,前一组得分衡量平台完成单个任务的快慢,后一组得分衡量平台的运算吞吐性能。此外,SPECCPU测试还会给出两种类型的结果:Base基准测试结果和Peak峰值测试结果,Base测试要求编译器套件按照指定的规则进行优化,而Peak测试则可以允许使用更多地优化技术,作为平台对比,我们均选择Base测试结果。最终测试结果显示:E52699v3平台的SPE Cint_base 2006得分为59.7,SPE Cfp_base2006得分为91.7,SPE Cint_rate_base 2006得分为1230,SPE Cfp_rate_base2006得分为814,对比对象上一代E52697v2的测试得分分别为51.2、80.8、897和636。通过对比可以知道,E52699 v3的单个任务处理能力相比上一代产品提升16.6%和13.5%,由于该项测试大部分时候仅使用到单个核心,E52699 v3(3.6GHz)相比E52697v2(3.5GHz),在频率接近的情况下,性能确实有所提升,证明了Haswell-EP架构增益的存在,同时吞吐性能相比上一代产品提升37.1%和30.0%,在满负荷测试时,E52699 v3工作在2.8GHz,E52697 v2工作在3.0GHz,前者频率更低,但凭借架构以及更多核心的优势,获得了与历次升级情况相符—至少30%的综合性能提升。

  写在最后

  从E5v2到E5v3差不多一年的时间,虽然与上一代产品的18个月的发布间隔时间相比显得有些“着急”,但从架构改进、规格提升以及实际性能表现来看,E5v3的发布并没有仓促的味道,英特尔仍然在遵循其Tick-Tock发展规律。步入云计算时代,软件定义已经成为构建数据中心的重要手段,通过虚拟化技术,用软件管理的方式将物理资源自定义,让资源调配智能化已经成为趋势。单纯追求处理器性能已经无法满足以软件定义基础设施(SDI)的需求,从E5v2到E5v3,都在围绕能效和智能化进行革新。对于英特尔而言,软件定义基础设施的战略将不仅仅局限于服务器本身的领域,E5v3更为丰富的产品型号以及定制化服务也将在各种需求领域施展拳脚,并最终形成整体的软件定义数据中心生态环境,而至强E5v3正是实施战略的先驱和核心平台。

关注读览天下微信, 100万篇深度好文, 等你来看……