专栏名称: 微型计算机
《微型计算机》杂志精心打造的评测室团队,以专业、严谨、客观公正而闻名,分享各种电子产品的测试数据和结论。让你明白消费,不被坑爹!
目录
相关文章推荐
EETOP  ·  ​芯片工艺过程线上技术交流 ·  18 小时前  
ZOL中关村在线  ·  RTX 5090D会被3台AGON ... ·  昨天  
EETOP  ·  华为成立新军团! ·  昨天  
ZOL中关村在线  ·  iPhone 17 Air轻薄过头:狂砍三项配置? ·  3 天前  
EETOP  ·  半导体制程中的多物理场仿真 ·  3 天前  
51好读  ›  专栏  ›  微型计算机

基础架构大提升!解析ARM Neoverse N1和E1平台

微型计算机  · 公众号  · 硬件  · 2019-03-24 21:17

正文

ARM近期发布的两个全新平台指向了新的市场,甚至有挑战AMD和英特尔的可能。不过历史上ARM多次试图进入利润率更高的服务器或计算市场,然而都铩羽而归,那么这一次ARM会成功吗?新的平台又有哪些特性呢?


在移动计算市场拥有领先地位的ARM,却一直在桌面计算、服务器等对性能要求更高的市场中表现不佳。诚然在过去数年中,ARM不止一次对高性能领域发起冲击,但结果并不理想。回头来看,ARM主要缺乏的是一整套生态系统来适应不同场合下的计算需求。为了解决这个问题,ARM计划设计一整套计算平台,它能够通过大幅提高ARM产品的性能从而获得进入新市场的能力。


在近期的发布会上,ARM推出了2个全新平台——Neoverse N1和Neoverse E1,这两个平台将成为未来几年ARM Ares计算平台的核心。所谓计算平台是一种全新的提法,目前ARM规划的以Cortex-A76为核心——整套产品被称为Cosmos平台,工艺采用14/16nm,2019年将进化至Ares平台,工艺提升至7nm。2020年有Zeus平台,工艺提升到7/5nm+,2021年的Poseidon平台将采用5nm工艺制造。今天我们的重点是Ares平台。


▲ARM发布了全新Neoverse N1和E1平台,并给出了未来数年的发展计划。


Neoverse N1:性能无需妥协

Neoverse N1面向高性能设备,它是平台名称,与之对应的CPU核心架构名称也一样——Neoverse N1处理器。平台包含处理器、总线、多核心系统等。Neoverse N1和相对应的处理器代表了ARM首款专为服务器和基础设施市场设计的专用IP,这是对过去ARM在运营IP方案上的重大改变—消费市场和行业解决方案分离,面向消费市场以Cortex为主,面向行业客户则由Neoverse披挂上阵。


Neoverse N1处理器浅析

首款Neoverse N1处理器的架构和Cortex-A76都是由ARM位于奥斯汀的设计团队所主导,因此它们在内核设计上存在一定相似之处。这一部分本文不再赘述,而将重点放在对Neoverse N1创新设计方面的介绍。


在Neoverse N1的设计目标上,ARM想让它成为一个高性能架构,并拥有未来数年可重复使用的基础。ARM将在这代处理器中重新调校微架构,使其能够以最高频率运行。在这一点上,ARM与AMD、英特尔的路线不同,后两家面向高性能平台的产品受制于功耗、面积等因素,频率相比消费级产品更低,但是在ARM的设计中却是相反的,处理器频率可能更高。


▲Neoverse N1在性能上有望比上代平台提升60%


Neoverse N1处理器的架构采用了4发射读取/解码设计,流水线深度只有11级,ARM将其称为“手风琴”管道。这种设计的特点是根据不同指令,流水线深度可以在运行延迟敏感型指令的时候将长度减少至9个阶段,其中第二预测阶段能够和第一预测阶段重合,并且调度阶段能够和第一个发布阶段重叠。


▲Neoverse N1的处理器特性简图


▲Neoverse N1处理器内部流水线设计简图


执行后端有2个简单ALU,一个复杂的ALU用于计算乘法和除法,两个全宽的128bit SIMD流水线用于处理矢量和浮点计算。在数据吞吐能力方面,ARM依旧设计了2个128位的加载/存储单元,能够维持足够的带宽来满足流水线的需求。


在前端,Neoverse N1拥有大型的低延迟L1和L2。ARM还采用分支预测设计和方向预测缓冲器,使得处理器不仅仅通过宽核心来提高性能,还可以通过最高效率的最小分支化和缓存的高效率来达到这个目的。在这些方面,它与Cortex-A76很类似。


Neoverse N1当然有着一些独特设计,比如缓存设计上。它的L1数据缓存和指令缓存部分都是64KB、4-way设计,其中最重要的改变是整个缓存完全采用了一致性设计,它大幅度简化了虚拟环境的实现并且极大地提高了性能。而且这一设计对ARM在超大规模计算中保持竞争力也是必须的,因为这可以很方便地扩展核心数量。ARM宣称Neoverse N1处理器的架构可以应对核心数量超过16个的处理器设计方案,并具有良好的扩展性。


▲Neoverse N1的缓存设计方案


L2缓存方面,ARM提供了512KB或者1MB两种选项。512KB的配置方案和传统的Cortex-A76配置方案相当,而1MB缓存主要针对基础架构领域中对存储空间较为敏感的应用。需要注意的是,将缓存增加到1MB并不是没有代价的,这种配置中缓存的延迟会提升2个周期,从而带来一定程度的性能下降,考虑流水线延迟,使用这种配置方案时最大延迟可能会达到11个周期。


Neoverse N1和Cortex家族的根本差异来自于内存方案,前者采用网状Mesh连接,而不是直接连接至CPU集群。这一点在CMN-600的网状连接中已经有体现。这种连接首先通过CAL或者组件聚合层进行,每个CAL最多支持2个连接接口,这就是为什么ARM会为每个“集群”配置2个CPU核心(实际上并不是一个集群,只是为了满足连接端口的需求)。然后CAL会连接到网络的交叉点,它基本上是由网络的交换机或者路由器构成。每个交叉点都有2个端口可用,A一个端口用于连接别的交叉点,剩余一个端口用于连接系统级高速缓存,也就是SLC。


在64核心、32个区块(每个区块有2个CPU核心和具有2MB SLC)的系统中,整个64MB缓存的平均负载使用延迟为22ns。ARM以秒而不是常见的周期来显示延迟的原因主要是因为SLC和通讯网络运行在不同的时钟频率下,这个频率通常为核心的2/3,和核心处于异步运行的状态。


从Neoverse N1在核心连接架构上所体现出的功能来看,直接连接是新架构或者CMN-600总线所带来的不可或缺的设计,这在之前的处理器上从未出现过。直连设计删除了之前DSU上所有的通讯逻辑,转而采用CPU核心直接连接到CMN的CHI接口。因此,存储控制器和CPU之间也需要经过网状网络,而不是直连,这在桌面超多核心的设计中是比较常见的内容。考虑到ARM移动处理器背景,这种转变幅度还是很大。


在这种新的架构中,内存控制器和CPU之间的数据存储关系会有一些变化。当CPU向内存控制器发出数据请求时,CPU也会同时向后者发出一个预取类型的请求,这个请求会更早地抵达内存控制器。此时,正常的数据请求命令会通过监听过滤器,开始向交叉主节点传输,然后交叉节点会将请求命令路由给内存控制器。


由于预取的指令更为快捷,因此内存控制器将提前获取请求即将到来并且有可能开始准备数据,从而隐藏部分存储器延迟,而不是以串行的方式一步步获取数据,这将带来更高的延迟。预取设计方案将显著影响系统性能,优秀的处理器设计方案会智能管理数据预取,以优化系统级带宽。


在具有64个核心和8个DDR-3200内存通道的Neoverse N1参考系统中,其实现了高达175GB/s的DRAM带宽。在LMBench测试结果的对比中,Corrtex-A72的延迟为110ns,Neoverse N1只有83ns,这个测试配置了256MB深度测试和2MB的大页面缓存。大页面的选择减少了TLB未命中并且更接近实际的内存延迟,因此这个测试数据只代表某些情况下的延迟信息。


▲Neoverse N1平台的组合方案,包括多核心实现。


与此类似的是AMD的EPYC 7610,采用LRDIMM DDR4-2666 19-19-19,相似场景的测试成绩显示延迟大约为73ns,DRAM负载应用大约为57ns。英特尔的W-3175X,采用RDIMM DDR-2666 24-19-19,相似场景下的测试大约为94ns和64ns。当然这里的测试无法和ARM的相关测试直接比较,但是了解一下延迟数量级和相对的场景,就能大概判断ARM的设计处于一个什么层次。


另外一点是工艺和具体的实现,ARM给出了一些参考值,单Neoverse N1核心,所用工艺全部是TSMC 7nm的情况下,当采用512KB L2配置方案的时候,裸片尺寸为1.2平方毫米,和Cortex-A76基本相当,后者为1.26平方毫米。当L2缓存提升至1MB时,每个内核占位面积会提升至1.4平方毫米,面积依旧很小。


▲一个单独的Neoverse N1核心配置情况


最后来看看频率,ARM的预期是2.6GHz到3.1GHz,其中前者是0.75V电压时所能实现的频率,后者则采用了1V驱动。值得注意的是,频率提高19%会带来44%的功耗提升,因此实际应用中会仔细调教,使得频率尽可能接近功率曲线的极值。功耗方面,单核心依旧只有1W到1.8W。如此低的功耗为64核心的实现提供了充足的功率空间,64核心Neoverse N1的参考功耗仅为105W,随后本文还会进一步讨论这个问题。


采用Neoverse N1架构的超大规模处理器参考设计

之所以在一开始提到平台有关内容,是因为ARM提供了一整套方案,包括超大规模处理器的参考设计方案,这在之前是从未出现过的。面对实际应用,ARM提供了三种选择,一种就是本节需要详细叙述的超大规模处理器方案,另外两种分别是边缘计算方案和另一种核心,也就是本文另一个主角Neoverse E1的边缘设计方案。那么先来看第一个。


Neoverse N1的超大规模方案有64核心和128核心两种配置,分别继承了64MB或者128MB的SLC缓存,采用的是CMN-600网状总线实现,这个配置还提供了128个通道可以用于PCI-E 4.0或者CCIX接口用于提供足够的I/O带宽。


▲Neoverse N1超大规模处理器参考设计方案


内存控制器方面,ARM选择的是8通道DDR4 3200方案。ARM实际上已经放弃了内存控制器的开发,因为客户一般都会拥有自己的内部设计,或者从第三方供应商中选择成熟IP。对于目前的参考设计而言,ARM给出的方案采用了DMC-520,如果未来使用更新的DDR5内存的话,可能又将引入第三方供应商了。


在具体的核心架构排布方面,ARM采用的是可复制的分层构建方案。具体来说,最基本的单元就是前文叙述过的CPU区块,每个CPU区块中包含了2个CPU内核和一个SLC缓存、CMN交叉节点和组节点的一部分构成。这个CPU区域可以通过不断的复制生成一个超级区域,超级区域中还加入了部分I/O单元和内存控制器。然后超级区域通过不断的镜像复制或者翻转复制,形成了一个CPU的Top级别的Mesh网络系统,完成了整个超大规模处理器的构建。


▲从区块到Mesh,Neoverse N1的扩展过程。


这种基于Mesh的构建方法的一个显著特色就是它可伸缩性能非常好。用户可以根据情况来选择配备核心数量,或者在其它情况下选择处理器的搭配方案。举例来说,当生产制造对面积较大的晶圆不够友好时,比如64核心的处理器面积接近400平方毫米,此时厂商可以通过生产多个小芯片,再通过CCIX链路将这些小芯片连接在一起的方法实现处理器规模的扩展。


当然,究竟如何做最终还是取决于应用人员和具体使用环境。另外,SmartNIC集成功能也是设计的重要方面,这个功能是实现最大化系统规模、加速网络和实现高效吞吐的关键。


总线上的一些功能也有助于类处理器的实现,比如CMN-600的总线交叉端口上的MMU连接速度高达128GB/s,因此,附加固定功能的硬件单元将非常容易。此外,CCIX的出现也使得ARM能够轻松组合第三方IP。为外部IP启用高速缓存一致性是非常有吸引力的,因为它能够大大简化供应商的软件设计。高速缓存一致性意味着软件需要面对的就是一个巨大的内存块,而不是非一致性下相关系统需要集成驱动程序并且跟踪内存数据才能判断哪个部分是有效的,这无疑大幅度降低了效率。


▲Neoverse N1能够支持更多的第三方IP


目前Xilinx将成为首批在2019年第三季度推出支持CCIX的中端产品供应商之一,由于AMD也采用CCIX,因此第三方加速器的潜力非常巨大,可能出现之前完全不曾出现的搭配方案,令人充满期待。


▲Neoverse N1目前支持CCIX,支持高速缓存一致性。


虽然这是面向高性能计算的产品,但是相应的功耗控制和电源管理还是能带来效能的提升。ARM在设计时加入了专用的微控制器,能够提供极细粒度的DVFS机制从而实现对频率和电源的控制。有这个设计以后,供应商在电源方面就可以采用比较宽泛的方案,从而节约成本。


性能指标:超越,继续超越

在拥有如此规模后,我们自然对这款处理器能达到怎样的性能充满了兴趣。ARM首先展示了和相同频率Cortex-A72处理器的性能对比,Neoverse N1在性能上实现了对前代处理器大幅度的超越。在单线程性能中,整数工作负载的每时钟性能大约是前代产品的1.7倍和1.6倍,浮点性能则大幅度提升至Cortex-A72的2.2倍和2倍。


这里的数据来自于建模和仿真估计,考虑到软件方面的改进,实际数值可能还会更高。计算性能方面,Neoverse N1的矢量工作负载是Cortex-A72的2.2倍,机器学习性能则达到了接近5倍,也就是4.7倍的数值。值得注意的是,Neoverse N1所采用的ARMv8.2 ISA意味着它支持8位点计算和半精度浮点指令,这些指令特别适合机器学习,因此性能能到巨大的提升。


▲ARM展示了Neoverse N1性能情况,远超对比产品。


除了一些倍数上的比较外,ARM还给出了一些具体数字。比如2.6GHz,64核心的Neoverse N1处理器,ARM给出的SPECint2006单线程性能是37,多线程性能是1310,TDP功耗为105W,需要注意的是,这里的数据并不是实际运行SPECint2006而得来的,这是在带有RTL仿真环境中的ARM服务器上估算而得到的数据。


▲Neoverse N1 64核心方案的一些具体功耗和性能数据。


除了硬件外,ARM还给出了一些软件性能提升,尤其是编译器。在过去的几年,ARM花费了大量的精力在开源工具和编译器上,比如GCC,最新的GCC9和之前老的GCC5相比,整数和浮点性能的改进大约为13%~15%,值得注意的是,这里的改进是实际的改进,并不是测试成绩的分数。


总的来看,ARM的新处理器在性能上的提升是非常巨大的,再加上多核心方面的优化,这有助于ARM在服务器市场实现自己的目标。


用于数据平面的小型SMT核心:Neoverse E1

除了Neoverse N1外,ARM还发布了一个相对轻量的处理器核心,称作Neoverse E1。从研发关系上来看,Neoverse E1实际上来自于Cortex-A65AE的深度改进,后者是一款定位于Cortex-A76AE之下的面向自动驾驶市场的处理器核心,因此两者架构存在不少相似点。从定位上来看,Neoverse E1更注重高效性和经济性。


SMT上阵:小而美的核心

很多人对SMT的认知来自英特尔超线程技术,其主要目的在于改善大型处理器的后端资源利用率,但SMT对小型处理器依旧有意义。一般来说,处理器在数据处理中,缓存未命中将主导处理器的工作周期。这是因为数据并没有在处理器核心中停留很长时间。无论是在之前Cortex-A65AE的相关用例中描述的流式传输,还是在处理器工作负载的情况下,网络数据传输的情况,都反映了处理器必须面对存储器的访问延迟,这才是引发CPU管线停顿的原因。


Neoverse E1处理器是一种带有SMT的小型乱序设计方案。在数据平面繁重的工作负载中,引入处理器内核上的辅助线程实际上代表了微架构几乎可实现免费的吞吐量增益,因为在这种情况下,微架构可以填充更多的执行周期。


▲Neoverse E1专为5G时代的数据平面设计,性能更强,吞吐量更大。


在最佳工作负载中,除了Neoverse E1本身微架构所能带来的性能增益外,SMT甚至可能会带来吞吐量翻倍。在集群级别,Neoverse E1的配置选项和之前DynamIQ系统中可以部署的配置非常相似,集群看起来像DSU,拥有最多8个内核,还包括侦听过滤器以及4MB的L3缓存等。


▲Neoverse E1的核心设计方案总览


▲典型的Neoverse E1的核心配置方案


Neoverse E1的管线设计

Neoverse E1采用了全新的设计方案,它更像是基于顺序执行的Cortex-A55微架构、通过深度调整而设计的小型乱序执行微架构。乱序执行是处理器非常重要的能力之一,它能够避免负载周期很长的情况下停止整个流水线,从而使得核心能够拥有更多的数据吞吐量大幅度提升。


Neoverse E1的指令获取、解码和分派单元都采用了双发射设计,乱序窗口则设计了一个40深度的ROB。后端则和Cortex-A55一样采用了类似的执行单元方案和布局。不过Neoverse E1的整数ALU采用了不同的分区,一个用于简单的算术运算,另一个则接管了整数乘法和除法。Neoverse E1的SIMD和NEO流水线和Cortex-A55几乎完全一样,不过ARM还是有可能改动一些指令循环以提高性能。


▲Neoverse E1的核心管线总览


在SMT功能方面,Neoverse E1的SMT加倍了部分核心资源,这意味着CPU具有2倍的通用、矢量和系统寄存器。在软件级别,这样的设计自然是作为2个独立的CPU核心呈现,可以执行不同任务,处于不同的级别甚至执行不同的操作系统。








请到「今天看啥」查看全文