本文对arm neoverse系列服务器cpu做一些初步调研,并尝试比较服务器cpu与手机ap cpu的异同。
首先看一下arm neoverse系列cpu的全家福,其中一些主要的cpu会在下文重点介绍。
(图源:anandtech)
1. arm neoverse n1
arm在2019年2月首次发布面向服务器的cpu产品:arm neoverse n1。neoverse n1跟cortex-a76是同一时代的产品,所以下面重点对比neoverse n1与cortex-a76的异同。
1.1 流水线结构
从cpu core的流水线结构上来看,neoverse n1采用最短11级的流水线,取指/译码的宽度为4,具有3个64-bit整数alu和1个branch单元,2个128-bit的advanced simd(负责浮点/向量运算)单元,以及两个128-bit load/store的单元。从流水线结构上看,与cortex-a76没有明显差异。
(图源:anandtech)
1.2 cache
在cache结构上,neoverse n1的instruction cache可以通过配置选择是否支持硬件一致性,这个配置选项是针对服务器这种多核的应用场景所添加的。arm在架构上并不要求instruction cache具有硬件一致性的能力。所以对于之前的arm cpu,如果memory里面的指令被修改了,那么软件需要进行cache maintenance操作(如i cache invalidation)。这些cache maintenance操作通常会以广播的形式发给与当前core保持一致性的其他所有core。这种广播的形式对于核数较多的系统而言会造成较大的性能开销。而在服务器场景下,arm提到vm的setup/teardown会导致memory里面的指令被修改的情况。
(图源:arm, hotchips 2019)
如果配置neoverse n1支持i-cache的硬件一致性,则节省了软件进行i-cache maintenance的开销。为了保证软件的兼容性,在支持i-cache硬件一致性的neoverse n1上,如果执行的旧版本软件依然执行i-cache maintenance指令,neoverse n1会将这些指令当作“no operation”(即nop)来处理。对于新开发的软件,neoverse n1提供一个寄存器bit可以供软件查询当前neoverse n1是否配置了i-cache的硬件一致性选项。(以上内容参考arm的白皮书《the arm neoverse n1 platform: building blocks for the next-gen cloud-to-edge infrastructure soc》)
另外neoverse n1可配置的l2 cache size与a76存在差异。neoverse n1的l2 cache size为256kb ~ 1024kb,而cortex-a76的l2 cache size为128kb ~ 512kb。如果neoverse n1配置支持i-cache的硬件一致性,那么l1 instruction cache会与l2 cache保持完全的inclusive关系,即所有l1 instuction cache中的内容都必须放在l2 cache里面,此时arm建议l2 cache size配置成1024kb。如果配置成512kb,由于被l1 instruction cache的严格inclusive关系占用部分cache空间,可能会有1% ~ 2%的性能损失。(以上内容参考arm neoverse n1 technical reference manual)
1.3 neoverse n1与下游的连接
从集成的角度,arm neoverse n1可以选择以direct-connect的形式直接连接到cmn-600总线上。
(图源:anandtech)
direct connect是arm dsu (dynamiq shared unit)的一个配置选项,当dsu配置成direct connect这种模式的时候,dsu内部的l3 cache,snoop filter和snoop control unit (scu)将不再存在。由于此时dsu内部没有任何负责一致性的逻辑,所以一个dsu cluster最多只支持一个core。多个dsu cluster之间的一致性由dsu外部的一致性总线(如cmn600)来维护。由于direct connect模式下dsu内部没有l3 cache,所以通常需要外部的一致性总线(如cmn600)配置一定量的system cache来满足cpu的性能需求。
作为对比,可以看一下a76的dsu结构,dsu内部的l3 cache、snoop control unit等模块通常都是存在的。从a76的technical reference manual里面也没有看到描述a76支持像neoverse n1那样的direct connect模式:
(图源:anandtech) 除了direct connect这种配置外,neoverse n1 ip本身也支持dsu cluster里面最多配置4个neoverse n1,然后在dsu内部把这几个core的一致性处理做掉,然后多个dsu之间再通过一致性总线相连。下图就是dsu里面配置4个neoverse n1 core的一个例子:
(图源:neoverse n1 trm) 1.4 基于neoverse n1的soc结构 下面是arm的一个基于neoverse n1 cpu的大型soc芯片的参考设计。使用了64个nerverse n1 cpu,利用cmn-600一致性总线进行互联,再配合ddr controller、pcie controller等ip组成整个soc。
(图源:arm, hotchips 2019) 上图中有大量的单元挂在mesh的节点上,在下图中可以看到这些挂在mesh网络中的cross point(xp)节点上的单元为2个n1 cpu,和system level cache。cmn可以支持从1x2到8x8的mesh结构,在latency上,每一个cycle可以进行一次hop,即从一个xp跳到相邻的xp:
(图源:arm, hotchips 2019) 两个n1 cpu连接到xp上的时候可以配置成direct connect形式,利用cmn600里面的cal(component aggregation layer)组件,能够将最多两个相同的rnf(request node full)连接到xp上。
(图源:arm, cmn600 trm) 除了提供上述的大型芯片reference design外,arm还为neoverse n1做了一套硬件开发板,用于软件的开发验证。开发板的n1 soc芯片包含4个neoverse n1,这4个neoverse n1是分成2个dsu cluster连接到cmn-600上的,并且配备了1mb l3 cache。soc架构中除了n1 cpu之外,其他像mmu-600、debug and trace component的使用也值得关注。
(图源:arm, arm neoverse n1 system development platform trm) 1.5 neoverse n1的ppa 基于7nm工艺,配置512kb l2的neoverse n1面积为1.15mm2,配置1mb l2的面积为1.4mm2。整数运算workload(大概率是指dhrystone)的功耗为1.0w @ 2.6ghz和1.8w @ 3.1ghz。
(图源:arm, hotchips 2019) 1.6 基于neoverse n1的服务器产品 ampere computing,由软银、微软、甲骨文投资,英特尔前总裁renee james创立的服务器芯片独角兽公司,截至2023年推出3代服务器产品: ampere altra:80个neoverse n1 core,1mb per-core l2,32mb slc,max 3.3ghz ampere altra max:128个neoverse n1 core,1mb per-core l2,16mb slc,max 3.0ghz。specint2017跑分336分。 ampereone(2023年5月发布):192个arm架构自研核 下图为128核neoverse n1的ampere altra max框图:
(图源:ampere, ampere altra max 64-bit multi-core processor datasheet) 2. arm neoverse v1 arm移动端的cortex-a系列cpu分为超大核cortex-x系列,大核cortex-a7x系列以及小核cortex-a5x系列。相应地,neoverse服务器的产品线也分为追求极致性能的v-series、追求性能与功耗平衡的n-series以及追求功耗面积的e-series。
(图源:anandtech) arm在2020年9月发布的neoverse v1,对应移动端的cortex-x1。
(图源:anandtech) 根据arm的ppt,neoverse v1相比neoverse n1会有50%的单核性能提升。
(图源:anandtech) 由下图可见,neoverse v1的取值、译码、发射单元宽度都显著高于n1,alu等
(图源:arm) 但根据2022年底的新闻,由于neoverse v系列cpu性能太高,受美国和英国的出口管制,中国企业无法购买arm neoverse v系列的cpu,包括neoverse v1以及后续的neoverse v2等。 3. arm neoverse n2 neoverse n2是arm首款armv9系列的服务器cpu。与移动端的cortex-a710是同一代的cpu。相比neoverse v1,增加了sve2、memory tagging extension(mte)等armv9一代cpu的新feature。
(图源:arm,arm neoverse n2 platform: industry-leading performance and power efficiency for cloud-to-edge infrastructure) 根据arm的ppt,neoverse n2相比n1有40%的ipc提升:
(图源:anandtech) 3.1 基于neoverse n2的服务器产品 2021年10月,平头哥发布倚天710,基于tsmc 5nm工艺,采用128核的neoverse n2,最高频率3.2ghz,8通道ddr5,峰值总带宽281gb/s,96通道pcie 5.0。specint 2017跑分440分。倚天710分为两个die,每个die包含64个cpu core和4个通道的ddr。根据网上信息,每个die size约310mm2。倚天710采用2.5d封装进行多die合封,总计600亿晶体管。所使用的总线大概率是与neoverse n2同一时期的cmn-700,每个die上有一个cmn总线。 4. arm neoverse v2 arm于2022年9月发布neoverse v2 cpu。相比neoverse v1,所支持的最大l2 cache size从1mb提升到2mb。另外支持arm v9.0的新feature,如sve2 4x128b。
(图源:anandtech) 5. arm cmn700 vs cmn600 除了arm neoverse系列cpu之外,cmn总线也是arm服务器架构中的重要组件。cmn-700相比cmn-600提升了每个die上支持的core数量、mesh的node数量以及system level cache的容量等。
(图源:anandtech) 其中cmn-700所支持的256 cores per die是这样计算的,cmn-700可以支持128个rn-f(full coherent的requesting node),每个rn-f可以是两个neoverse cpu core经过cmn-700的cal(component aggregation layer)组件汇聚成一路。所以总共支持128 * 2 = 256 cores。 理论上来说,cmn-600可以支持64个rn-f,所以理论上能够支持的core数量应该也能到64 * 2 = 128 cores(实际上会略小于这个值)。因为ampere altra这一代服务器芯片就已经有80个neoverse n1 core,超出了arm给出的64 core per die。arm给出的说法是这个64 core per die是指直连到node上的core数量,如果采用cal的话,可以实现更高的core数量。请留意下图中最下面一行小字:
便携式叶绿素测定仪的实际使用效果怎么样
MiniLED是什么?有怎样的发展前景
如何给一颗芯片加上指纹?
国产首款四摄手机金立S10怎么样?
智能驾驶的“ChatGPT时刻”在哪?一套通用的智驾方案,足以迎来智驾的“ChatGPT时刻”
ARM Neoverse系列服务器CPU研究分析
初学者常见的51单片机
sumif函数的使用技巧
OLCD——柔性显示器的未来
如何强调Pcb测试
一种防泄漏键盘设计方案
治理大气环境污染,扬尘在线监测系统在行动!
SAP携手新松将为中国企业提供软件与硬件相结合的智能制造解决方案
特斯拉自动驾驶添新功能 自动识别红绿灯并提示停车位置
食用农产品合格证检测打印一体机的介绍
什么是游戏设备
2021年Mini LED背光电视规格战开启
安泰ATA-4011B高压功率放大器在超声换能器医疗超声研究中的应用
三星有望全球首发自发光的QLED电视
三星失势的主要原因在于失去了我国的中低端智能手机市场