我们曾经面临一项挑战:当开发出8核2GHz处理器LS2088A,且正开始进行初代芯片的取样,但客户一如往常提出更多的要求。那时我们讨论的话题围绕着:「该增加多少?真的需要吗?如果市场确实需要更多,该升级的是什么?」接下来该怎么做?我们必须找出市场和我们产品组合中缺少的部分,更重要的是,想满足什么样的新兴应用和使用案例?

将所有要素全部升级再塞进芯片内是一个选项,但另一种比较慎重的做法后来胜出。本文将探究新一代处理器LX2160A背后的决策流程,还有我们如何克服重要的挑战。它可能还是2GHz等级的处理器,核心数量或许是上一代LS2088A的两倍,但绝不会是「全面升级」。以下将说明如何按照希望处理器SoC的专用领域来决定I/O接口,以及如何想出SoC架构的各特性,如高速缓存、SRAM和DRAM带宽等。本文也将讨论为何要将特定的工作负载依照加速器和通用型计算核心加以区分,还有如何通过这种做法让新处理器达成效能目标,以完成从无线传输通讯协议处理,到用于云端数据中心的软件定义存储系统等各种工作负载。故事的起点

上一代处理器LS2088A有八个Arm Cortex-A72核,各自的运作频率为2.0GHz。在2016年,Cortex-A72是Arm效能最高的核心,其另一项优点是耗电量低于前一代的Cortex-A57。核心要同时满足提升效能和降低耗电量两种截然不同的目标,很难得可贵。

为每一对Arm核分配了1MB的L2高速缓存,总共有4MB的L2高速缓存,另外LS2088A还具备1MB的L3平台高速缓存。我们为上一代处理器选择容量相对较小的L3高速缓存,是为了有更多芯片空间能拨给L2高速缓存,这样核心在存取时可减少延迟,对核心效能的影响力也高于L3。为了存取主要内存,上一代处理器内建两个72位DDR4控制器,其各自的运作速率为2.1GT/s,加上第三个36位DDR4控制器,供以太网数据路径使用。由于LS2088A的目标应用为网络封包处理,带宽大多为以太网数据路径专属的数据结构(封包数据和路由表)所占用,因此又加入了第四个DDR4控制器。上一代处理器LS2088A设计16个SerDes通道,专供外部高速I/O使用,可设定为支持最多四个PCIe Gen3控制器(PCIe Gen3为当时速度最快的标准)和16个以太网MAC(其中八个支持到最高10Gbps)。在加速方面,新一代处理器有专用的压缩、解压缩、模式匹配和安全协作处理器,以及用于自主封包处理的可编程AIOP(进阶IO处理器)。AIOP是专为网络路由和转寄应用所设计,其中以太网封包可能会经过多次的表格查找和标头操控。

采用此种架构,使新一代处理器LS2088A能够汇聚核心效能,达到约100,000 CoreMark,或在SPEC CPU2006-Int拿下81。使用128字节的封包尺寸进行DPDK IPv4简易转送,速度最高可达40Gbps。或是在使用AIOP下让装置执行19.4Gbps的复杂IPv4转送(所谓复杂转送是指每个封包有三个完全符合的查找、一个长度最长的前缀符合查找,还有一个5-tuple访问控制列表查找的使用案例)。最重要的是,AIOP在达到这个速率时还能完全卸除CPU数据路径,让Cortex-A72核心达到零负载。

新兴应用

推出新一代处理器时,目标是要为各种新兴应用提供支持。就像新处理器是针对网络联机和无线基础架构优化,我们也希望新产品能完美地适用于无线基础设施(正从4G LTE转移为5G)、网络功能虚拟化(NFV)、移动边缘计算,以及新型态的数据中心卸除和存储应用。

DRAM

我们知道,核心效能对这些应用同样重要。无论应用是否用得到,很少有人会不喜欢拥有额外的核心周期。除了数据作业或装置的网络封包移动,NFV和边缘计算应用对高阶应用的核心效能需求也持续增加。但假如增加了过多的核心效能,这些核心必须等着存取内存子系统,同样派不上用场,此现象通常称为「内存撞墙期」。因此,必须先计算目标应用在成本限制内需要多少的DRAM带宽,目标应改成:在最大化利用带宽为前提下,尽量提高核心效能。

有好几项DRAM技术可供选用:LPDDR4、GDDR、HBM和DDR4。LPDDR4具有出色的带宽,因为它是点对点的技术,不会有多重芯片对组选择共享公共数据总线,再加上它基本上是×32技术(每芯片的数据总线宽度),而不是×16、×8或×4技术的DDR4,LPDDR4所能达到的最大DRAM系统容量并不能满足需求使用。有多种版本的GDDR同样具有出色的带宽,但其缺点在于,它只有在长顺序访问时可达到全带宽,对于在由核心启动的快取行大小交易,还有以太网封包一般较小的本系统上,可就不保证能达到全带宽。

希望DRAM技术在一致化存取及从核心存取(这两种都会产生快取行大小的交易)时也能发挥出色效能,因此选择DRAM技术时必须将这点纳入考虑。我们也需要这项DRAM技术在小型以太网封包上发挥出色效能,正如同许多其他应用,系统需要有充足的效能,来响应可能收到的任何大小的以太网封包。与主要SoC(如HBM)采用相同封装基板的3D堆栈DRAM也在考虑范围内,但它会增加不少封装成本,而且DRAM需要嵌入到封装内(非与系统相依的设计参数),因此也会限制DRAM的容量。此外,处理器会运用到各种不同的应用上,想要在生产前事先预测内存的实际大小,显然并不容易。

如此一来,早已熟悉的DDR4便成为获选的技术。好消息是,新一代处理器推出时,3.2GT/s DDR4已快要问世。在DDR4接口数量和宽度相同的情况下,其传输量比新一代处理器的2.1GT/s DDR4接口高出50%以上。为了使客户的PCB设计成本和产品成本维持在合理水平,装载两个以上的DRAM控制器显然不可行。因此,决定支持两个速度3.2GT/s的72位DDR4接口。

核心与高速缓存

回到核心的选择,在考虑核心架构时,再度考虑Cortex-A72,以及在它之后发表的一些其他核心。无论选择为何,它都必须兼容Arm-v8 AARCH64,以达到与新一代处理器和产品组合中其他产品的软件兼容性。每个核心都必须达到与新处理器内的Cortex-A72相同的效能水平,回头使用单个线程程序代码无法被接受。但无论应用程序如何针对跨多重核心平行运行所设计,应用内总是多少会存在一些单个线程程序代码(例如用于例外处理或网络控制平面)。

高速缓存上的ECC保护(例如Cortex-A72上)对维持可靠度来说是不可或缺的功能。只要保留一定的芯片面积(还有成本)给CPU,就能维持住效能。神奇的是,考虑到这些需求的情况下,最好的核心仍旧是Cortex-A72。只不过,稍微调整了一下频率速度,从2.0GHz提高到2.2GHz,但其实还是同一个核心。

建立芯片的DRAM带宽和所要使用的核心后,为了计算所需要的核心数量,分析包括公开和内部的好几项基准检验。公开基准检验的重点在于CPU、高速缓存和DRAM子系统,方式有些微的不同。内部基准检验则包含特别为封包处理建立的多个验证点应用程序。这些结果整体来说与SPEC CPU2006-Int软件包的部分结果一致,其高速缓存命中次数较少,因此最重视DRAM(例如xalankbmk和gcc)。我们从中导出了一项黄金定律:每GHz的CPU频率需要大约0.9GB/s的带宽。运用这条黄金定律,并考虑DRAM的使用效率后,发现可以将16个Cortex-A72核心(16×0.9GB/s×2.2GHz)容纳到DRAM实际可用的31GB/s带宽内(3.2GT/s×8字节/周期×2个DDR控制器×60%平均DRAM使用率)。

为了善加利用宝贵的DRAM带宽,我们决定大幅增加一致性互连中平台高速缓存的大小,从1MB提高到8MB。这个高速缓存大小确实能为核心流量带来些许好处(做为核心丛集八个1MB L2高速缓存的受害者高速缓存),但LX2160平台高速缓存的主要优点还是减少I/O启动器(以太网和PCI Express)对DRAM带宽造成的压力。某一启动器将数据写入DRAM,之后可能由其他启动器读取,然后才会从高速缓存中逐出。一般来说,小容量高速缓存遭到辗转(先前写入的数据由新数据取代)的机率要比大容量高速缓存来得高。换句话说,LX2160较大的高速缓存容量,可让数据停留在高速缓存内更长的时间。数据停留在高速缓存内的时间越长,当下次需要使用数据时,数据还会在高速缓存内的可能性便越高。

PCIe、SerDes和压缩

要决定由核心主宰的工作负载需要哪些功能,相对来说是比较简单的,难的是决定其余工作负载需要的功能。

一开始要应付的挑战之一,就是为每瓦单位效能、数据中心卸除,以及企业存储解决方案设计出正确的组合。需要遵守现有存储系统最严格的高可用性设计和双控制器架构,而其刚好也符合新一代高阶热存储解决方案,以及较新的对象存储系统和高扩充性软件设计存储(SDS)系统的基本设计。

新处理器的设计适用于高效能的数据路径架构,其I/O通过新的高带宽接口连接,包括像是网络端的25G/50G/100G聚合式网络卡(CNA)、企业存储适用的序列连接SCSI(SAS)控制器或NVMe SSD适用的PCIe交换器等接口。DMA控制器的大小设计也适用于支持非透明桥接(NTB)功能的控制器对控制器数据复制。

通过结合16个Cortex-A72核心,加上可执行压缩、加密和去重复化的硬件加速功能,我们找出了效能、功率和功能的绝妙平衡点,足以应付新型数据中心的计算卸除挑战,和智能型SSD等让计算接近存储的需求。随着固态存储的虚拟化需求不断提高,和SSD容量不断成长的情况下,让计算接近存储(compute-closer-to-storage)逐渐变成必要条件。

在这类应用中,新处理器可作为服务器处理器(通过PCIe的主机总线转接器连接)和存储装置(通过PCIe型IO控制器连接的HDD或SSD)之间的存储控制器使用。这类的企业级系统极重视系统备援,存储控制器可能有多个复本,数据的备援复本在存储控制器之间传送,即使某一系统故障,数据也不会遗失。基本上,大量数据会经由PCIe(某些情况下也包含以太网)进出SoC,还有加密/解密、压缩/解压缩和DMA复本的数据在不同的位置间移动。区块大小相比下较大(单位为千字节,而非字节),因此DRAM效率会比用于网络交易时更高,另外相较于数据传输时间,判断如何处理封包或数据区块的负载更是微乎其微。因此可以更专心将新处理器优化,通过PCIe Gen4接口让大型数据区块进出SoC。

20180606-processor-1

图1:存储控制器。

在定义新处理器期间,我们早知道PCIe Gen4会在其使用寿命期间内受到广泛运用,因此加入这项功能是无庸置疑的。其每信道速度理论上达到16Gb/s,相较之下,上一代处理器的Gen3只能达到8Gb/s,且其有16个SerDes信道,供PCIe和以太网共享。但就算有双倍数据率,16个SerDes通道的带宽似乎也不够新处理器使用。为了迎合存储使用案例,产品目标订为支持八个PCIe Gen4通道,以用在进出服务器的流量,但这些流量最终还是得从存储装置流出,因此需要另外八个通道,以将I/O控制器连接至存储装置(HDD或SSD)。此外,为了提供备援,还需要额外八个SerDes通道,以连接到完全相同的新处理器。如此看来,新处理器需要的不只是PCIe Gen4,而是24个能达到此速率的信道。

为了应付来自服务器的流量,还有来自完全相同的备援新处理器的流量,设计必须要能支持大量的压缩/解压缩流量,也因此带动硬件数据压缩和解压缩引擎扩充其大小。虽然安全性引擎也使用在存储使用案例,但其大小决策需要通过IPSec的DPDK IPv4转送使用案例来说明,待后续说明。

以太网与安全性

我们选择优化新处理器LS2088A的另一个关键使用案例,就是通过IPSec来进行DPDK IPv4转送,这尤其适合5G无线网络基础架构等应用。IPSec非常类似于新处理器优化所适用的DPDK IPv4转送使用案例,只不过IPSec还需要将每个封包加密或解密。随着随来越多的私有数据存储于云端,并通过因特网传送,安全性也变得更加重要。IPSec可确保所有酬载数据都经过加密,以防止不法之徒拦截机密信息。

但是和新处理器不同的是,这项产品刻意不针对复杂的转送进行优化,而且可查找最多5个表格。这是因为我们发现,在许多应用中可以使用数据流快取,如此就只有数据流中的第一个封包,需要经过复杂转送机制的表格查找程序。如果平均而言,在数据流的生命周期中存在许多封包,则该数据流可以建立快取,以避免需要对每个封包进行查找的动作。由于这项应用的重点转移,因此在本产品中就不需要AIOP的表格查找加速功能,让新处理器的设计能够更聚焦于其他关键使用案例。

此外,虽然我们设计让上一代处理器能够处理各种封包大小,但是我们针对新处理器进行了优化,使其能够以峰值的IPsec数据速率,来处理较大型的封包。新的处理器可以高达50Gb/s的速度,使用IPsec进行IPv4转送。这是既有处理器LS2088A最高数据速率的2.5倍。我们着眼于这项设计切入点,因为某些网络处理市场,虽然可能会有涵盖平均封包大小较小的应用,但是新处理器优化所针对的存储和5G无线网络基础架构应用,则通常会具有较大的平均封包大小。配合不同的应用来设计新处理器,并维持较低的封包速率,可让芯片针对这些高数据速率进行优化,不会因为处理封包而变得负担过重。

不过,从以太网的角度来看,效能的目标是达到和超过上一代处理器MAC所支持的10Gb/s速率。25G、40G、50G和100G以太网正变得日益普及,因此需要支持这些以太网。我们提供了两种以太网MAC,可支持40G、50G和100G的速度,以太网的这个最高速度,是上一代处理器10G的10倍,让先前不可能实现的高带宽使用案例成为可能。在企业应用中经常需要两个最高速度的端口(一个是以太网的传入端口,另一个是传出埠),这是为了提供备援或支持「嵌入式线路串接」。在新处理器上总共提供了16个MAC。这项特色所支持的使用案例包括:16个1G以太网,用来联机到单一系统中的各种装置(处理器的硬件支持L2交换);或是最多6个25G以太网,适合经常部署25G以太网的数据中心等应用。

20180606-processor-2

图2:最终的芯片设计

总结

深思熟虑的分析和评估客户的需求,让新一代处理器LX2160A得以诞生。相较于上一代,新处理器拥有双倍的核心数量、8倍的平台高速缓存、1.5倍的DRAM带宽、3倍的PCIe带宽,和10倍的以太网最高速度。这套综合的功能并非只是采用「每一样都变更多」的设计方式,其实是在针对目前和未来的使用案例,进行详尽分析之后,才建置了SoC实现这些应用。