揭秘后摩时代芯片产业方向:Chiplet技术

图片
来源:芯砺智能
引言
ChipletSOC是后摩尔定律时代的一种最新芯片设计技术。Chiplet SOC是包含在单一的封装q器件(即一个芯片)中的多个小芯片。每块小芯片(Chiplet)包括一个功能电路块,通常是独立制造的晶粒,被专门设计成与其他小芯片一起工作,以执行更复杂的功能。人们想知道,与单片SOC设计技术相比,Chiplet设计技术的优势是什么?Chiplet设计技术是否普遍优于目前的单片SOC设计技术?
为了回答这些问题,人们需要知道如何对各种设计技术进行Benchmark测试。Benchmark包括:① 性能扩展;② 制造成本;③ 功耗,这些Benchmark对一个普通的商业人士来说可能是显而易见的,但对一个芯片设计师来说可能并非易事,而是挑战。权衡性能、成本和功率的复杂性常常超出人们直觉的猜测。本文就是要揭开ChipletSOC设计中这种权衡的秘诀。
1
单片式SOC与Chiplet SOC的比较
在不考虑制造成本的情况下,人们总是认为单片SOC可以比Chiplet SOC提供更好的性能和功耗。事实上,单片SOC 中每个模块都能以最小的延迟进行通信,这使得前者比Chiplet SOC的性能更好。然而,如果把制造成本作为一个芯片设计目标,那么有些单片SOC设计可能会成为一个不可能完成的任务。
                 
图片
 Figure1  AMD 64核芯片设计
让我们来看看AMD的64核Chiplet芯片设计(如图1所示)。每个CPU Chiplet包含8个CPU Core。在7纳米技术中,CPU Chiplet的尺寸约为81mm^2;在12纳米技术中,I/O芯片的尺寸约为125mm^2。如果采取单片设计方法,单片SOC的裸片尺寸应该在700mm^2到800mm^2之间。在目前的EUV曝光机中,光掩模版尺寸约为858mm^2。在未来的High-NA EUV中,光掩模版可能会小于450mm^2。无论哪种情况,AMD 64核SOC的单片设计都难以生产,即使单片设计能提供卓越的性能和功耗。
如果人们仍然想以单片SOC中完成64个CPU Core的设计,那么如何来实现这一既定目标呢?显而易见的方法是减少高速缓存的大小,比如缩减一半甚至更多。Zen3有32KB的I-Cache和32KB的D-Cache(合计64KB的L1 Cache),每个CPU Core有512KB的L2 Cache,每8个CPU Core有32MB的统一的L3 Cache。如果将L1 Cache从64KB减少到32KB,L2 Cache从512KB减少到128KB,L3 Cache从32MB减少到4MB,这样芯片尺寸就可以减少一半,单片SOC在7纳米中可以达到400mm^2左右。这个芯片尺寸接近于苹果M1 Max SOC的432mm^2。这样,有可能设计出一个生产成本合理的单片式64核SOC。但是,这种设计是否仍能提供比AMD Zen3 Chiplet设计更优越的性能呢?
答案是 "不能"。Chiplet设计将提供比上述 "减少缓存的64核单片SOC "更好的性能。单片式SOC设计不是总比Chiplet设计性能好吗?“单片式SOC总是比Chiplet SOC性能好 ”这种说法只适用于相同规格的设计,而非不同规格的设计。例如,缓存较少的CPU Chiplet设计会比同样缓存较少的CPU单片式设计要差。但是,一个缓存较大的Chiplet设计可以比缓存较少的单片式设计提供更好的性能。
单片式SOC和Chiplet SOC之间的权衡使得这两种设计技术之间的比较成为一种复杂的技术分析。一般来说,性能扩展是衡量性能的一个关键指标。性能扩展意味着性能随着处理单元数量的增加而提高。例如,2个内核的性能应该是1个内核的2倍,64个内核应该是1个内核的64倍。但在SMP(对称多任务/多线程处理)的情况下,性能扩展通常不是一比一的。某些设计可能令64个核心只能提供32倍于单核的性能扩展,而不是64倍。小容量缓存和大容量缓存的CPU之间的性能对比是一个更复杂的分析。缓存是采取Direct Map还是多路Set Associative结构是性能扩展的首要影响因素;缓存是单核独自使用的还是多核共享使用是性能扩展的第二影响因素;每级的缓存大小是性能扩展的第三影响因素。这三个因素的组合会产生许多影响性能扩展的不同场景。
操作系统如何分配CPU Core是影响性能扩展的另一个参数。一般来说,SMP要求硬件架构提供较高的性能扩展倍数。而AMP(非对称多任务处理)更容易实现较高的性能扩展倍数。支持VM(虚拟机)令问题变得更复杂。虚拟机任意分配虚拟CPU Core,可能会造成缓存垃圾问题,导致性能严重下降。大多数的云服务提供如何分配虚拟CPU的方法以避免这种问题,即非均匀内存访问。
下图2显示了一个AMP SOC。每个处理器都拥有自己的私有存储器,其他处理单元不能访问它。在这种情况下,更多的处理单元可以提供更高的性能,与处理单元的数量几乎是线性关系。其优点是,不是每个处理器都必须与另一个处理器分担工作负载。换言之,每个处理器都可以独立工作以提供最高的性能。然而,每个处理器的处理能力的利用率可能低于100%,这取决于操作系统如何分配工作负载。有些处理单元的负载可能比其他单元更重,进而成为性能瓶颈。
图片
     Figure2  AMP SOC
这种非对称多任务处理是GPU处理器设计中的一种常见技术。AMD RX Vega64 GPU包含4096个GPU Core,Nvidia GTX 1080包含2560个Core。大量的处理器内核依赖于设备驱动程序和编译器来执行非对称多任务处理。图3是Nvidia RTX 2080 Ti的一个例子。
           
图片
  Figure3   Nvidia RTX 2080 Ti 
在AMP系统中,人们可以将更多的处理单元集成到单片SOC中来进行性能扩展,直到达到制造能力的瓶颈。在GPU中,SLI是一种类似于Chiplet的设计技术,用于进一步扩大处理能力。SLI技术依靠AMP技术,将来自不同GPU的处理器内核结合起来,形成更大数量的GPU Core,用于并行任务处理。
从对称处理与非对称处理架构的对比分析中,我们可以看到性能扩展的共同瓶颈是在内存性能方面。对称处理需要支持数据一致性,而非对称处理则不需要。对内存性能的不同要求使得性能的扩展性也有所不同。人们可以通过增加处理单元的数量来扩展非对称处理的性能。因此,我们可以看到Chiplet设计技术更容易在这个架构中实现。
与前面两种架构设计情况不同,另一种设计不会影响性能的扩展:就是关于特性和功能的集成。例如,是否应该把Modem功能集成到单片SOC还是Chiplet SOC中?是否应该把RF前端和相位阵列天线集成到单片SOC还是Chiplet SOC中?或者是否应该把DRAM集成到单片SOC还是Chiplet SOC中?
在一个系统中,不同的功能和特性所需要的工艺技术往往是不兼容的。例如,DRAM和RF工艺技术与逻辑SOC就不兼容。在这种情况下,单片SOC是不可能的。如果想把这些功能块集成到一个封装中,Chiplet SOC是唯一的解决方案。
2
几种Chiplet设计技术
Chiplet SOC设计总是从单片SOC设计开始的。例如针对AMD Chiplet的设计,人们会问,如何将最初的单片SOC设计分割成一个Chiplet SOC设计?这是芯片设计中最具挑战性的任务,因为人们希望在SMP要求下提供较高的性能扩展性。
SMP对硬件性能的要求比GPU或NPU的AMP要高。SMP设计依赖于较低的内存延迟来同步所有的并发任务,这通常依赖于高效的缓存设计。因此,小芯片之间可能的边界或接口是在高速缓存的边界。片间互连必须是低延迟的,以避免由于芯片互连造成的额外延迟。片间互连还必须保留原有的缓存协议,如总线pipeline和cache snooping,以避免所有Chiplet之间的cache pipeline丢失。这样的要求迫使Chiplet SOC的设计采用并行总线来实现片间互连。这种并行总线互连不仅消耗了太多的芯片面积,而且也增加了封装成本。图4-5显示了AMD如何通过L3高速缓存边界线来划分他们的chiplet。其片间互连接口,也就是GMI,展示了L3高速缓存如何连接到Infinity总线网络,以及Infinity总线网络如何连接到DRAM。
请注意,片间互连不一定需要高带宽,但是片间互连一定需要Infinity总线网络的低时延响应。Infinity总线网络需要支持所有Chiplet之间的硬件cache snooping,以保持数据的一致性。Snooping的结果将决定是否从其他小芯片或从DRAM中获取数据。片间互连的延迟将决定CPU将因此停顿多长时间。人们需要避免长时间的CPU停顿,以提高性能的扩展性。这种低延迟的要求在单片设计和Chiplet设计中都适用。AMD采用一个额外的V-cache连接到CPU Chiplet,以提供一个更大的L3 Cache,以减少访问DRAM的需要,也就是说用一个低延迟SRAM访问路径取代高延迟的DRAM访问路径,以进一步提高性能。这种Chiplet设计展示了一个正确的方法,即在一个不需要高带宽、但具有低延迟的边界上划分Chiplet。
图片
图片
Figure4-5 AMD通过L3高速缓存边界线划分Chiplet
与上述架构相比,苹果公司采取了另一种Chiplet设计技术。AMD的Chiplet设计要求在最初的架构设计阶段就认真考虑系统架构,而苹果采取的方法与AMD Zen1架构或英特尔Xeon架构类似,这是一种类似主板上的很成熟的多处理器系统架构:他们没有采用AMD那种创新的内存结构和片间互连,而是像英特尔Xeon双处理器主板一样,简单地将两个现有的处理器芯片粘合起来。英特尔Xeon主板上的CPU插座之间采用了QPI接(如图6所示)。
在苹果的Chiplet设计中,QPI被一条很宽的并行总线取代,以连接两个Chiplet。苹果公司在M1 Ultra的芯片设计中就采取了这种成熟的路线。基本上M1 Ultra使用了超过一万个芯片互连通道来粘合两个M1 Max芯片。M1 Ultra的芯片照片(如图7所示)显示在M1 Max芯片的顶部边缘有大约2~3%的硅片面积被用于片间互连。然而,当一个芯片的CPU需要访问另一个芯片的DRAM时,这种设计会出现众所周知的性能下降问题。通过片间互连进入由另一个芯片控制的总线结构,内存访问的延迟会变得特别长。
图片
Figure6  英特尔Xeon主板CPU插座之间采用了QPI接口
图片
  Figure7 苹果公司M1 Ultra设计
这种跨越Chiplet边界的内存访问路径与AMD Zen3架构不同。Zen3的Chiplet边界是在L3 Cache接口。苹果M1 Ultra的Chiplet边界是在两个内存总线上。其内存访问延迟包括芯片到芯片的延迟和总线到总线的延迟。对于SMP应用而言,由于需要经常访问另一个Chiplet上的DRAM,其性能扩展性并不理想。
除了这两种Chiplet设计技术外,还有另一种方法。当人们处理GPU设计时,将基于SLI非对称多处理器的成熟架构转换为Chiplet。在这种情况下,AMP对内存延迟的要求比SMP要小:它主要依靠软件将任务平均分配给所有处理执行单元。一个可能的架构如图8所示,该COPA-GPU架构包括HBM Chiplet互连、L3互连,以及MSM互连。
图片
        Figure8  COPA-GPU Chiplet架构示意图
我们已经分析了Chiplet设计的几种可能性,并聚焦其性能扩展。如何找到Chiplet的边界对于避免从单片设计到Chiplet设计的性能下降是很重要的。对性能下降的根本原因的分析指向了内存性能,特别是内存延迟。存储器的带宽问题很容易解决,因为我们可以增加互连通道的数量或增加互连总线的宽度。但是没有简单的方法来处理内存延迟问题。通过互连流水线来减少内存延迟是一种可能的选择,并行总线的互连流水线很容易实现。但是,现有的SerDes,即串行互连,不能支持总线流水线以减轻芯片互连造成的延迟。如果不能使用这种串行的片间互连,人们就需要支付高额的成本来使用并行总线。一种创新的流水线式片间串行互连是同时节省成本和避免性能下降的可能途径。这种类型的片间互连将成为一个成功的Chiplet设计的关键技术。
03
与性能扩展无关的Chiplet设计
不是所有的Chiplet设计都会对性能产生影响。在这种情况下,没有必要深入研究Chiplet设计方法。举个例子,如果现有的设计是通过PCIe或MIPI连接一个外围设备子系统,那么在Chiplet设计中,如果外设子系统芯片有UCIe互连接口,人们可以简单地用UCIe取代PCIe或MIPI。这种类型的Chiplet设计可以减少由PCIe或MIPI引起的IO功耗。
外设子系统是一个相对独立的系统,对内存数据交换没有太高的实时性要求。因此,人们可以通过UCIe取代PCIe来集成Modem或Ethernet Switch。通过采用单一的封装,这样的Chiplet设计可以节省功耗,提高可靠性,但未必能节省生产成本,因为封装成本可能比PCB更高。但UCIe互连接口并不能满足CPU、GPU或NPU等应用的性能扩展要求。
04
总结回顾与进一步思考
回顾上文,我们来进一步思考三个问题:
如何使用Chiplet来提高内存性能?
AMD通过SRAM Chiplet增加L3 Cache的大小,获取了巨大的性能提升。而HBM通过Chiplet设计展示了另一种性能改进方式。下一个问题是,人们是否可以通过Chiplet设计来取代现有的内存DIMM或SODIMM?Micron曾经尝试过一种HybridMemory Cube(HMC)技术,通过Chiplet设计来完成这一使命。虽然它可以提供高带宽,但由于内存延迟过长,在性能上是失败的。
如何看待UCIe的片间互连标准?
尽管UCIe声称支持与内存芯片的互连、高速缓存的一致性等,现实情况是,高性能的扩展需要以最小的延迟和总线流水来处理高速缓存和内存访问。因此,即使UCIe可以成为一种标准的接口技术,但由于多层软件协议的开销,它并没有解决延迟问题。AMD、苹果和英特尔在其设计中不会使用UCIe来连接CPU Chiplet,原因很简单,UCIe不能支持低延迟和总线流水。但它可以用于智能手机或移动设备,以减少PCIe、MIPI或USB等接口的高功耗。此外,这些应用通常需要较小的面积。
如何为NPU设计Chiplet?
NPU更像GPU,依靠软件或编译器来完成执行单元的并行处理。NPUChiplet的关键性能要求是低内存延迟,这一要求与CPU类似。NPU和CPU的主要区别是,NPU在执行过程中不需要数据一致性。因此,我们可以沿着与NPU芯片相关的SRAM来划分Chiplet边界。如果采取与AMDZen3类似的设计,那么芯片与芯片之间可以实现短时延内响应,并支持总线流水线。并行互连可以满足这一要求,但是成本较高。为了降低成本,需要一种具有总线流水线和低延时的创新的串行互连设计。
Chiplet设计需要在架构上做出重大努力,以避免性能下降。不幸的是,标准的互连接口如UCIe,在对性能敏感的Chiplet应用上并不是一个合适的选择。业界由AMD牵头,已经成功地展示了Chiplet设计如何提高系统性能。芯片设计者可以从AMD的芯片架构中得到启发。
作者:Chiplego首席技术顾问
图片
图片
图片
 一键三连