英特尔至强E5 v4关键更新详解Word格式.docx
《英特尔至强E5 v4关键更新详解Word格式.docx》由会员分享,可在线阅读,更多相关《英特尔至强E5 v4关键更新详解Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
概述:
虽然从更新周期上看,此次发布的E5v4属于制程工艺升级的TICK周期,与微核心架构更新的TOCK周期相比,对业界的影响似乎不如后者大,但这次好像英特尔对它更为重视,并给它定义为“为云而生”,这到底是为什么?
本文就尝试解答这一问题,希望能您一个有益的参考,全文10000余字,有较为详细的技术介绍,慢慢看……
(本文图片均可点击放大)
TICK……TOCK……TICK,英特尔经典的CPU更新节拍,如今又迎来了新的乐章——美国时间2016年3月31日,也是英特尔公司2015财年的最后一天,新一代至强E5处理器E5v4家族正式发布,确切的说是数据中心市场的绝对主力E5-2600v4终于亮相了。
本文将尝试解答这一问题。
TICK-TOCK代表了英特尔处理器生产工艺与微架构的交替更新,最新发布的E5v4,代号Broadwell-EP,在更新周期中属于TICK,即核心微架构与上一代Haswell-EP(至强E5V3)基本相同,但生产工艺进化至14nm
E5-2600v4硬件规格与总体架构
率先发布的E5-2600v4(后续应该还会有E5-2400与4600v4上市),一共有27个型号,其中用于主流服务器与工作站的共22个型号(比早前网上泄漏的型号列表多了两个),其他5个则主攻存储与通信市场,官方销售价格跨度为213美元(E5-2603v4)至4115美元(E5-2699v4)。
27款E5-2600v4处理器的基本规格,其中主流服务器型号为15个,面向高频应用市场的(低核心数)有4个,面向低功耗市场的有2个,面向工作站应用的1个,面向存储与通信市场的5个
E5-2600v4相对于v3在主要规格上的差异
与上一代E5-2600v3相比,E5-2600v4在硬件层面的主要升级包括:
核心数量从18个增加至22个,超线程数量也增加至44个,末级缓存(LLC,Last-LevelCache)增加至55MB,均提升了22%;
在内存配置方面,首次增加了对3D堆栈式(3DS)内存DIMM的支持,虽然每个CPU所支持的DIMM数量仍然是12个,但未来借助3DS技术,将会让内存配置容量成倍提高,目前已经有128GB3DSLRDIMM上市,意味着双路E5-2600v4服务器,内存满配时可达3TB,这已经达到了上一代4路E5-4600v3服务器的水平。
此外,在内存的RAS(可靠性、可用性、可维护性)方面支持DDR4写CRC校验,并将最高内存速率从原来的2133MHz提升至2400MHz(当所有DIMM插满3DSLRDIMM时,内存速率将降为DDR4-1600)。
SKhynix推出的128GB3DSLRDIMM,采用硅穿孔技术(TSV,ThroughSiliconVia),实现了芯片内多Die3D堆栈布线
E5v4处理器的内部设计同样分为了三种架构,分别是高核数(HCC,HighCoreCount)、中等核数(MCC,MediumCoreCount)和低核数(LCC,LowCoreCount),主要差别就在于内部的数据总线环路的配置。
而三种不同架构所带来的芯片面积也不一样,最高22核心的芯片面积为456平方毫米(mm2),晶体管数量达72亿个,MCC核心的芯片面积为306mm2,47亿个晶体管;
LCC核心的芯片面积为236mm2,34亿个晶体管。
相比之下,E5v318核的芯片面积为662mm2,晶体管数量为59亿个,由此可见14nm工艺的威力
在处理器内部设计上,总体架构与上一代E5v3处理器基本相同,同样是双环路数据总线设计,也仍然采用了三种架构以针对不同核心数量的型号,具体来说,12-22核心的E5v4内部采用了HCC架构,8核心以上至14核心采用了MCC架构,8核心及以下的型号采用了LCC架构。
不过,细心的看HCC架构会发现,E5v4实际上是“24核”的,按理,从以往E5处理器核心数量升级幅度来说,E5v4也应该是24核的,即比E5v3提升1.5倍,当初E5v3(18核)相对于E5v2(12核)即是如此。
但在HCC架构下,E5v4只有22核,英特尔方面似乎没有给出明确的解释。
其实据透露,在早期的规划中,E5v4是有24核心版本的。
笔者猜测最后放弃两个核心的主要原因,很可能是因为在TDP功耗封顶的情况下,24核心的加入有将会大幅度降低主频,实际的综合性能/能耗比的表现可能并无优势,相较之下22核心是最终权衡的结果。
另一个可能的原因,也许是当两个大数据总线环路连接24个核心时,对于数据延迟以及LLC的数据管理所会带来的负面影响将会增加,尤其是CPU核心在总线环路上对LLC数据的轮询(LLC是分布式的,并不被某一核心独占,所以在E5的规格表上,LLC是按总容量体现的,E5v4每核心可平均分配到的LLC容量与前代相同,是2.5MB)。
目前E5v4LLC命中的最快访问周期为1(核心从最近的LLC访问数据),最慢为12(核心从最远的LLC访问数据),平均访问周期为6,如果核心数量扩展至24个,在某些情况下的确会增加访问周期。
但是理论上分析,这个影响应该很小。
至于到底是什么原因让E5v4最终放弃了两个核心,也许在未来英特尔会给出明确的答案。
总之,如果只看架构设计与硬件层面的参数规格,E5v4相对于E5v3的提升似乎不大,这其实也一直是TICK与TOCK更新之间的一个特点,但这并不是说E5v4没有明显的改进,与以往一样,虽不是微架构级别的升级,但每次TICK更新时,仍然会有不可忽视的亮点,这也正是为什么英特尔此次着重强调E5v4是为云而生的原因。
E5v4为云而生的关键更新:
我认为英特尔敢说E5v4是为云而生,是有一定道理的,虽然在硬件架构与核心设计上,与E5v3差别不大,但在当前“软件定义”的大趋势下,在硬件功能与指令集方面的升级与优化仍然不可忽视,甚至会比硬件参数的改进更有单说意义,E5v4就是如此。
如果非要我让对这次E5v4内部功能性与指令集更新的重要性排序,我认为第一个当属资源调配技术(RDT,ResourceDirectorTechnology)。
RDT让外界对CPU资源的调配能力,首次进入到了CPU缓存层面,为更精细的定制服务质量(QoS,Quality-of-Service)提供了可能,进而可更好的支持并丰富云平台的服务等级协议(SLA,
ServiceLevelAgreement)
现在云计算平台已经日益普及,这其中虚拟机是重要的云应用载体,虽然容器技术正如火如荼的发展着,但在相当长的时期内,虚拟机仍然是云计算的主力平台。
而熟悉云计算,尤其是IaaS领域的人,都会听说过一个非常重要的关键词——Orchestration,在IaaS层面里,它泛指对基础IT资源针对上层应用需求的自动化协同(或者称之为“编排”)。
但在以往,这里所说的Orchestration,其颗粒度并不精细,比如对于服务器,调配的层次一般就在虚拟机逻辑资源的供给,可事实上对于具体的应用来讲,往往需要更进一步的资源调配保证,或者说更高级的源自物理底层的QoS能力。
这是因为在多虚拟机环境下,物理服务器的IT资源是共享的,对于重要的应用有必要进行额外的资源保证与倾斜,确保其执行的效率。
在这些资源中,对虚拟机性能影响巨大,或者说是非常稀缺而关键的IT资源就是CPU的缓存,但在以往这是Orchestration层管理软件无能为力的,RDT的出现则将终结这一历史。
RDT主要由四个技术/功能组成,分别是缓存监测技术(CMT,CacheMonitoringTechnology)、缓存分配技术(CAT,CacheAllocationTechnology)、内存带宽监测技术(MBM,MemoryBandwidthMonitoring)和代码/数据分区技术(CDP,CodeDataPartitioning)。
在上一代E5v3处理器中,已经实现了CMT,但只有对LLC的监测而没有LLC分配的能力,此次则进行了全面的加强。
除了CAT外,还加入了对内存带宽监测的MBM功能,而CDP则是CAT中一个特殊扩展功能,它可以对虚拟机实例的LLC中指定的指令代码与数据进行标记,以便在进行LLC分配时对其进行保护。
需要指出的是,RDT的调节对象是线程,也就是逻辑处理器(LogicalProcessor/CPU),它是分配给虚拟机实例的虚拟处理器(vCPU,VirtualProcessor)的真实CPU资源,从而让上层的Orchestration软件可以进行线程级的缓存调控。
为此,RDT为每个线程分配一个资源监测ID(RMID,Resource
MonitoringID),这个RMID也被用于每个线程的内存带宽的监测。
同时,CAT为每个线程准备了16个服务等级,即LLC保障的优先级,它可由Orchestration软件的QoS需求进行设定。
未来,RDT不排除会加入内存带宽分配技术(MBAT)可能性。
在没有RDT时,关键应用(虚拟机)会受到同一物理平台上其他应用(虚拟机)对缓存资源争用的威胁,而RDT的加入,则确保了高优先级的应用可以稳定的获取更多的缓存资源,从而保证服务质量
在英特尔于北京的发布会上,中国移动研究院的首席科学家易芝玲,就介绍了RDT在C-RAN(RadioAccessNetwork,无线接入网)中的应用效果。
C-RAN是基于集中化处理(CentralizedProcessing),协作式无线电(CollaborativeRadio)和实时云计算构架(Real-timeCloudInfrastructure)的绿色无线接入网构架。
在C-RAN架构中,集中的云化平台上承载着无线协议程序、网络交换控制程序、边缘应用等多种复杂应用,而C-RAN平台上的无线业务会受到共用平台其他应用的资源争用干扰,导致应用性能下降,而利用RDT技术,可以确保无线业务应用分配到稳定的缓存资源,避免其他应用的资源争用干扰,保证了无线业务数据处理的稳定性与实时性。
根据中国移动研究院的内部测试,预期MiniC-RAN平台上的数据包收发处理能力平均可提升18%,上限可达50%。
至强E5v4另一个对于电信行业云应用有较大帮助的改进就是虚拟化增强,这也是我认为的其为云而生的第二大更新。
与RDT一样,它是一组更新的合集,主要就是两个功能的加入和一个性能的改进。
这些改进对于传统的服务器应用有很大帮助,但我认为,其更大的意义在于x86虚拟化平台在网络与电信行业的普及,尤其是网络功能虚拟化(NFV,NetworkFunctionVirtualization)与软件定义网络(SDN,SoftwareDefinedNetwork)。
第一个重要的功能就是硬件支持的中断后置功能(HWPI,HardWaresupportedPostedInterrupts),这个功能主要针对由外部设备向vCPU/逻辑CPU发起的中断请求。
在以往,当虚拟机(VM,VirtualMachine)工作时,如果外部设备发出的中断指向分配给该VM的vCPU时(确切的说,是发给该vCPU下属的某个逻辑CPU),无论多重要的VM都会中断当前操作来响应这一中断请求,而处理外部中断请求需要虚拟机暂时挂起,即VMExit。
之后由虚拟机管理器(VMM,VirtualMachineManager)接管,中断处理完毕后,VMM再把vCPU交还给VM进行后续的操作,即VMEntry。
可以想像,VMExit/Entry的次数越多,就对VM上的应用执行效率产生越多的负面影响,这也就是虚拟化系统开销的一个重要组成部分。
而大幅度降低外部中断对于VM的干扰,就是E5v4在虚拟化增强方面最大的改进之处。
在10Gb单根-IO虚拟化(SR-IOV)环境中,外部中断所造成的VMExit/Entry占到了总VMExit/Entry数量的20%以上,这也正是HWPI所要解决的问题(其他因中断所产生的VMExit/Entry已经得到解决或优化),否则SDN与NFV的性能将受到极大制约
在传统物理环境中,会有一个高级可编程序中断控制器(APIC,AdvancedProgrammableInterruptController)来管理对CPU的中断请求。
在最早的全软件虚拟化环境中,是利用软件虚拟化出了APIC(APIC-V),但每个CPU内部与外部的中断请求都会产生VMExit/Entry。
到了至强E5v2时代,加入了硬件支持的APIC-V功能,此时可以说CPU内部的中断请求的VMExit/Entry问题已经解决,但外部中断还是需要VMExit/Entry,这次E5v4的HWPI功能就是为此而来。
HWPI的原理,简单来说就是将外部中断在内存中记录,并直接发给了目标vCPU,之后再根据中断的需求等级与目标vCPU的状态来决定如何处理中断,这一过程并不惊动VMM,自然也就不会产生VMExit/Entry。
在实际的应用场景中,如果外部中断要求实时处理,或者是目标vCPU完全处于停止状态,那么由VMM接管执行,但也不会发生VMExsit,而是等下一次VMEntry时再执行该中断。
除此情况之外,HWPI会对目标vCPU进行观察,如果目标vCPU内指定的逻辑CPU工作繁忙,则等待后续的vCPU规划再择机自动执行中断操作,从而保证了VM的任务连续性。
由于为了保证系统总体的运行效率,VMM会时刻评估所有的逻辑CPU状态以重新规划vCPU(vCPU内的逻辑CPU并不固定),因此HWPI也会根据情况进行中断迁移(InterruptMigration)——将这个中断请求重定向给另一个逻辑CPU,从而在响应外部中断操作的同时,保证不会影响正在运行的“重要VM”。
为了降低CPU内外中断所引发的VMExit/Entry次数,业界一直在努力完善中断虚拟化的功能,从E5v2开始加入硬件支持的APIC-V的功能,解决了CPU内部中断的问题,而HWPI则实现了外部中断虚拟化,明显降低了VMExit/Entry发生频率
我们可以大概的打个比方,比如一个部门(服务器内所有CPU)由一个主任(VMM)统管,他领导着4个小组(4个VM),每个小组有甲乙丙丁4个人(4个vCPU),他们加上组别的编号为1甲、1乙、1丙、1丁、2甲、2乙……直到第4小组的4丁,共16个人(16个vCPU)。
在以前,部门外的任务请求会通过部门主任,指定给某个小组的某个人执行。
比如外部任务指定了3丁来执行,那么3丁所在第3小组不管自身任务有多急,都要停下手中的活,以接收部门主任分配的新任务(VMExsit)。
当与部门主任一起执行完外部任务后,第3小组才能继续工作(VMEntry),这明显影响了第3小组自身任务的执行。
现在,来了一个部门秘书(HWPI),所有的部门外的任务请求先到秘书这里汇总登记,如果是最高级别的加急任务,则由秘书转交给部门主任进行处理,后者对小组成员工作内容进行重新的规划,并在合适的条件下让相关小组进行该任务。
如果并不是加急任务,秘书则先检查目标人员的工作状态,比如还是3丁,若3丁正忙于小组任务,则等其有空时再分派任务,或者看看该小组其他人员的工作状态,结果发现3甲正闲着没事,则将该任务重新分派给3甲执行(中断迁移),从而在保证3丁所在小组工作的持续性同时,也没有影响外部请求的执行。
由此可以看出,对于那些外部中断请求频繁的应用场景,HWPI的价值十分明显。
据英特尔技术人员的介绍,例如在电信应用中,I/O设备对于CPU的请求就非常频繁,借助于HWPI,相关电信应用的延迟可从4至47μs(微秒)降至2.4-5.2μs,最高提升达9倍。
据悉,目前KVM与Xen虚拟化平台已经支持E5v4的这一功能。
在Netperf测试中,借助HWPI,E5-2600v4平台的网络吞吐量较E5v3平台有了不小的提升,对于不同的网络包容量,最高提升了41%(256字节)
E5v4另一个虚拟化增强的功能是,支持虚拟环境下的内存修改日志(PML,PageModificationLogging),它主要用于加速VM迁移的速度并减少因内存扫描带来的VMExit/Entry,尤其在容错(Fault-Tolerant)环境中,十分有用。
因为在VM容错迁移时,为了达到快速迁移的目的,不可能对所有的内存数据进行迁移,只需传送发生数据修改的页面即可。
所以,在要执行迁移时进行一次内在扫描,以最终锁定需要迁移的内存页。
但以前,这一工作是由软件层面的VMM来完成,这就意味着,在进行内存页扫描时,会产生VMExit/Entry,这在日常工作中不仅影响VM性能,也会影响迁移的速度(存在最后一次的内存扫描)。
硬件辅助的PML则负责随时记录VM内存页的修改状态,对于发生变动的内存页,将其页面ID标上修改符(DirtyBit),并保存在页面修改日志中。
这样做的好处是,由于PML无需VMM参与,也就避免了VMExit/Entry,并能更迅速锁定需要迁移的内存数据,从而实现了VM迁移速度的提升。
另一方面,在日常的VM内存管理中,VMM也经常会进行内存页扫描,以在内存与磁盘间进行数据交换时,确定哪些内存空间可用(或者说哪些内存数据需要回写至硬盘以腾出空间),从而提高内存管理效率。
但软件层面的VMM定期对内存进行扫描,必然会产生VMExit/Entry,影响VM的性能。
因此,PML本身对日常应用中的VM性能也会有较大的帮助。
PML的加入一方面提升了VM本身的性能,在基于KVM环境的测试中,获得了7.6%的性能提升,另一方面也进一步提高了VM迁移的速度
E5v4虚拟化性能增强的最后一个改进之处就是加速了VMExit/Entry的执行速度,从E5v3的约500个处理周期,降低到约400个处理周期。
至此,我们已经能很明确的体会到这次E5v4在虚拟化增强方面的关键用意——大幅度降低VMExit/Entry对VM性能的影响,包括VMExit/Entry的频率与本身的速度,而这显然对于那些原来频率发生VMExit/Entry的场景最有帮助——比如I/O密集的网络(电信)应用,从英特尔的介绍中,以及发布会的用户发言嘉宾的邀请上都体现出了这一点。
如果再与之前介绍的RDT相结合,我们就更能感受到这次E5v4的发布,的确有着更大的视角与野心——CPU资源更精细化的Orchestration与进一步提升虚拟化网络设备的吞吐量和QoS,对于云计算平台的意义无需多言,从这两来说,称E5v4是为云而生,的确不为过。
E5v4的其他主要改进
除了关键的,针对云应用环境的RDT与虚拟化增强外,E5v4还有不少其他的改进之处,以下重点列出对于日常应用与安全较为重要的几点,但不做深入的介绍。
首先就是久违了的交易同步扩展指令集(TSX,TransactionalSynchronizationExtensions)正式回归。
TSX本来应该是E5v3就首发的一个新能力,但发布之后即发现了Bug,所以立刻在芯片内部禁用,至强E5v3亦受到此影响而取消了这一功能,后来在E7v3上正式实现,如今也回到了E5身上。
TSX的目标是针对传统“内存锁”的,所谓的内存锁,是一种防止不同线程操作相同内存区域的机制,以防止数据发生同步问题,这一点在交易处理中非常重要。
在实际的应用中,单一时间段里,内存锁赋予单一线程锁定内存的能力,在这一状态下,其他线程不可以访问相应的内存数据,即使是读取也不可以,所以在并行处理中,其他线程要等到内存锁才能获得内存访问的权限,显然这个设计对于线程关联较为紧密的应用效率是有很大阻碍的。
而TSX则打破了这种传统的束缚,可以让软件在开发者不用再担心如何利用内存锁,而应用的实际效率也获得了明显提升。
TSX分为硬件锁省略(HLE,HardwareLockElision)和受限事务内存(RTM,RestrictedTransactionalMemory)两种模式
其次,E5v4优化了AVX与SSE指令混合执行时的睿频(TurboBoost)控制。
AVX(AdvancedVectorExtensions)是2011年SandyBridge发布时加入的向量计算指令集,将理论浮点性能提升了一倍。
但是,在E5处理器中,AVX执行时的睿频所能达到的最高频率,与以前执行SSE标量指令时所能达到的睿频频率是不一样的,后者会更高。
这就造成了一个后果,当CPU内各核心的负载混合有AVX与传统SSE任务时,所有核心的工作频率以AVX的睿频上限为准,这就限制了SSE任务的性能,而在E5v4中则实现了有的放矢的“混载”,对于SSE负载,相应的核心按SSE睿频上限执行,AVX核心则按AVX的睿频上限执行,这种“因(指)令而异”的睿频设计对于不用类型的多任务(应用)混载环境非常必要。
在E5v4平台上,执行SSE与AVX指令的CPU核心,睿频的上限不再像E5v3那样统一以AVX睿频为准,而是“各自为战”
最后,E5v4进一步加强了在安全领域的运算能力,包括AES加密以及ECDSA、RSA、DSA的签名与校验,这其中包括:
优化了原有的PCLMULQDQ指令,将乘法器的吞吐量加倍并缩减了执行周期(从7降至5)以加速AES加密计算;
新增加ADCX与ADOX指令,以加速ECDSA、RSA、DSA的签名与校验处理。
E5v4在安全应用领域所增强的特性
8核心的BroadwellXeon-D处理器(注意,不是E5v4)配2x8GB内存,在上述安全标准的执行性能,甚至强于顶级的E5v3型号——18核心的E5-2699v3(4x32GB内存),在OpenSSL-1.0.2-beta3onLinux的测试中,前者至少保持着100%的性能领先,有的则接近200%,可见新的改进之威力
好啦,现在对于E5v4关键的更新与主要改进已经介绍完了,下面就看看E5v4的性能到底怎样。
E5v4的整数、浮点、Java与ERP性能表现
在英特尔的官方介绍中强调,从2006年到2016年这10年前,在双路服务器领域,至强平台的整数运算性能已经提升了28倍,年均复合增长率达到了40%,不过就CPU本身单核心性能的提升来说,E5v4与历史的型号相比,增长并不明显,相较E5v3提升幅度约为5%,但这对于TICK更新周期的产品实属正常,甚至是第一的水平。
从2006年到2016年这10年前,以整数性能为基准,在双路服务器市场,至强平台的性能已经提升了28倍,年均复合增长率达到了40%
E5v3相对于E5v2的单核性能有超过10%的提升,而E5v4相对于E5v3只有5%左右的提升,不过E5v3相对于v2是核心架构改变的TOCK产品,在TICK周期更新的产品中,E5v4增幅是第一,相比于2003年的Dothan处