网页客服,欢迎咨询
联系我们
      工作时间
  • 周一至周五:09:00-17:30
  • 周六至周日:10:00-16:00
Chiplet,如何破壁?
2024-09-17 21:51:42 2
  • 收藏
  • 管理

    (原标题:Chiplet,如何破壁?)

    如果您希望可以时常见面,欢迎标星收藏哦~

    来源:内容转自知乎,作者:其实我是老莫,谢谢。

    在上一篇文章《四十年来家国,三千里地山河》中介绍了我们研究的CIP协议和CIP协议的载体“赛柏1号”芯粒。但尽管这半年我讲了很多回,但发现还是有很多朋友没有听懂CIP是为了解决什么问题以及“赛柏1号”芯粒到底解决了什么问题。甚至很多朋友听完了讲座以后觉得我们“就是做了一个片上网络”。

    由于视频讲PPT受到很多限制,文字对于视频还是有很强的补充作用的,所以我准备再写一个新的文字来介绍CIP协议和“赛柏1号”芯粒。在这里我针对很多朋友看完视频的疑问,来重新组织一下讲解顺序。

    首先,我们需要讨论这样一个问题:“我们(中国大陆)需要什么样的Chiplet技术?”很多朋友可能认为这个问题不需要讨论,Chiplet技术就是Chiplet技术,世界上难道还有不止一个Chiplet技术?既然UCIe这种“标准”都出来了,照着做不就行了。这个话如果放在2018年以前也许是对的。那个时候全球化还在,全球化的产业链还在。而现在显而易见的全球产业链割裂,产业链变成了“猜忌链”。Chiplet的概念之所以能够在国内爆火,很大原因还是其被鼓吹成“弯道超车”、“超越摩尔定律”、“不需要先进光刻技术”等等能够破解当前产业链脱钩的困局不无关系。但事实上Chiplet技术面临的问题,尤其是国内发展Chiplet面临的问题要复杂、困难得多。因此要回答“我们(中国大陆)需要什么样的Chiplet技术?”,需要首先简要回顾一下Chiplet技术发展的几个阶段。

    简单的来说,Chiplet技术或者说“商业模式”大致可以分为三个阶段:

    第一阶段,以良率提升、“降本增效”为主。其核心的做法就是把大硅片切小,然后从中筛选出好的小硅片(Good Die)再用高密度的“先进封装”把这些小硅片拼起来。具体如下图所示:

    Chiplet技术发展的第一阶段

    这一阶段的几个典型芯片有Xilinx的Virtex-7 2000T 大容量FPGA,划分成4个Die互联。Nvidia做的AI加速芯片Simba,搞了36个Die互联。以及苹果的M1 Ultra的2个Die互联。

    这一阶段Chiplet的主要特征是同构划分、相邻互联、平铺结构。同构划分主要是指大Die切出来的小Chiplet基本都是相同结构(或者是镜像)的。这种同构划分的好处就是做硅片“筛选”的时候相对容易,筛完了以后再组合也相对简单。组合的时候就是Chiplet和相邻的Chiplet相互连接就可以了。所以最后互联的时候通常呈现出一种“平铺结构”,或者更简单直白一点就是“摊大饼结构”。把各个Die依次的“铺”到基板或者中介层上面就行了。

    由于Chiplet是先把大的裸Die拆成小的Chiplet再用先进封装拼起来,这些已经被拆出制造好的Chiplet如果只用一次很显然太过浪费。如果可以把这些已经制造好的Chiplet充分的“复用”,就可以起到缩短研发周期、加快新产品投入市场进度。


    Chiplet发展的第二阶段

    Chiplet发展的第二阶段3个典型的产品包括了Intel的FPGA(如今改回了Altera)Nvidia发布的某个验证型GPU、以及AMD近几年的处理器产品。

    Intel Agilex9、7系列的FPGA基本都采取了核心的FPGA Fabric+IO Tile Die的设计。封装技术用的是EMIB,接口用的是Intel当年给DAPAR交差用的AIB。Intel把通用性很高、高度可编程的FPGA Fabrci独立出来成为一个大的Chiplet,然后外围的接口电路按需可以封装集成PCIe、高速ADC、高速以太网等等接口。这样面对不同应用领域的时候,Intel的FPGA就可以封装上不同的Tile。比如面向桌面/服务器加速卡应用的时候就封一个PCIe/CXL接口方便做卡,面向网络交换应用的时候就封几个高速以太网接口做交换,做无线/信号处理应用的时候就封几个高速ADC做宽频带的采样。通过不同Chiplet的封装组合就构造了面向不同产品线的FPGA,而不用为了每个应用再去单独流片。后期如果有新的应用还可以灵活的调整接口的Chiplet,“按需封装”出适应新应用的FPGA。

    Nvidia的这个GPU是说面向深度学习和面向高性能计算两个应用对于Cache容量的需求不一样。通过搭配不同大小的Cache来适应不同的应用。具体不用展开多说。

    AMD的处理器更是经典的案例。通过划分IOD(IO-Die)和Core Chiplet Die(CCD,CPU及其附属)。在同一代处理器中可以通过IOD搭配不同的数量的CCD形成从高端服务到低端桌面机不同配置的处理器。在不同代的处理器可以只升级CCD和继续保留使用上一代的IOD来加快研发进度。但如果我们回顾一下历史,就会发现其实所谓的IOD不过是南北桥芯片组在Chiplet时代的“复兴”而已。保留芯片组(主板)而升级CPU实现电脑的升级那是以前电脑发烧友的“基操”。

    Chiplet发展的第二阶段已经形成的不同形态的Chiplet灵活搭配形成“系列化”产品的趋势。其实这个就是把以前的“攒机器”演变成了“攒芯片”。但第二阶段的“攒芯片”仅限于某个企业内部自己的产品线里面复用各种Chiplet。但既然已经可以发展到企业内部复用,自然就有人想到可以通过一些方式发展成为企业间的复用。于是Chiplet发展可以进入到第三阶段。

    要实现企业间的复用,实现接口标准统一是前提。这一点在上一个时代的SoC设计中得到了充分的体现,不同的IP核遵循同样的片上总线协议就可以互联起来。更上一个时代的“PC设计”方法其实也是这样,通过同样的一套芯片组和总线体系,Intel公司的CPU,Nvidia公司的GPU卡,XX公司的主板以及YY公司的网卡等攒到一起凑成了一台个人计算机。


    Chiplet发展的第三阶段

    在这个阶段,Chiplet可以是不同公司生产的,然后可以非常灵活和方便的集成到一起。先进封装起了一个“装机工”的角色,把不同的Chiplet在同一个“主板”(基板/中介层)上面“攒”在了一起。不同的模块要“攒”在一起必然需要有一整套互联体系的支持。但是在互联体系的背后是支撑这套互联体系的生态圈和这个生态圈的维护者。在PC机时代,Intel是这套生态圈的维护者。Intel定义了x86CPU、芯片组、PCIe接口等一系列组成PC机的核心要素,其它厂商或者是为了它代工的“生产厂”,或者是围绕它的核心生态分工的“外设厂”。SoC时代是因为Arm为主的一帮IP厂商维护了这套生态体系,再加上设计服务公司、EDA公司的助力才让SoC设计方法学广泛流行开来。同样的,Chiplet如果像要达到三阶段的效果,依然需要构造这样一套生态。从之前PC和SoC的经验来看,需要有一个核心公司或者机构来构造这个生态,而标准/协议是作为这个生态的“底座”或者说是“抓手”。OSDA由于没有足够强大的核心公司或者机构来推动生态建设,所以协议也就是说说而已。PCIe之所以能被广泛接受是因为Intel再PC时代的强势决定的。AMBA协议蔟能够在SoC上独步天下,是因为Arm成功造就的。

    当然,协议的完善程度也是能否被广泛应用的关键。同样脱胎于Intel并用于给DAPAR“交账”的协议AIB,就由于其协议过于简单、可扩展性不强的原因只适用于主从结构明显的场景。最典型的就是前面说的FPGA场景中,中间最大的那一坨FPGA Fabric作为“大主”,周围一圈接口Chiplet都是“小从”。而UCIe由于可以很好的承载PCIe和CXL的协议,后面应该会有很大的应用前景。要值得注意的是,UCIe包含了物理层和数据链路的一部分,本质上是一个接口标准。但除了接口之外,两个实体之间要能够实现信息交互需要的东西还很多。而这部分上层协议实际上是由PCIe和CXL承担了。UCIe只不过是把电脑主板上PCIe物理接口转变成了适应先进封装的形式。如果只关注UCIe协议就好像只关心电脑主板上那些PCIe的连接器一样,实际上就“上当”了。


    主板上各种PCIe的接口

    真正核心的PCIe互联体系包含在芯片组、驱动里面,被Intel这类的处理器公司牢牢掌握。Intel的“野望”是想在Chiplet的第三阶段,依然可以像PC时代一样它来主导生态。别的厂家嘛,可以做个PCIe的卡插在主板上“做接口”或者“做外设”也都挺好。


    完整的PCIe体系

    当然,UCIe上面也可以不光跑PCIe和CXL,把它当成点对点的数据流传输线也可以跑很多别的协议。比如就可以用来泡AMBA的CHI。这样就把CHI协议变成的CHI-C2C协议。


    CHI C2C

    CHI-C2C要求切分点在CHI互联上,因此被拆出来的若干Chiplet本质上也是基于CHI协议的小SoC。要基于这套东西完成Chiplet的设计本质上还是围绕Arm的生态以及在CHI互联体系恰当的地方划拉两刀。

    前面说了那么多“国际情况”,后面把视线转回国内。2018年以后由于国际形势急剧变化,导致了我国集成电路产业的很多实际困难。因此Chiplet作为一种“后摩尔时代技术”被鼓噪起来,那帮炒股的券商对这个技术“涂脂抹粉”造了不少言过其实的舆论。在这些舆论里面,大部分的牛B都吹在了Chiplet的第三阶段。这是一种美好的想象,通过不同机构/企业之间的协作,可以发挥我们“集中力量办大事”的“举国体制”优势。大家各管一摊,分别把自己手头的Chiplet做好,然后再拼到一起就实现了力量的整合。至于还有吹什么弯道超车、不需要先进制程之类低级的牛B就不值一驳,不再展开了。

    然而,理想很丰满现实很骨干。如果我们仔细看看在现在的国际局势下要如何进一步发展先进芯片时,我们会发现国内对Chiplet的需求以及发展路径和老美是完全不同的。我们面临以下的特殊挑战:

    1、工艺制程落后:未到达“良率瓶颈”而拆分的动机不足,但“多芯堆叠”突破光罩极限的需求迫切。所以和老美发展Chiplet“先切后拼”的思路不同,国内发展Chiplet更需求“拼”,以“拼”的方式去堆出来更多的晶体管。

    2、产业链整合能力不足:即缺乏成熟、稳定、高效的设计队伍,又缺乏完整的软硬件生态和改变生态的能力;u缺乏“说了能算”的机构或“说了就信”的“头部企业”,研发力量整合难度很大。Intel搞了个UCIe,虽然联盟里有很多Intel的“对头”但大家也只有捏着鼻子参加。Intel搞一个CXL,其它类似的协议就纷纷的“举手投降”。

    3、并不存在的“换道超车”:Chiplet技术不是“换道”,只是各种集成电路技术发展到一定程度引发了产业分工和设计方法学自然革新;所以以前存在的差距依然存在,只是换了个形式表现出来而已。所以希望通过发展Chiplet技术就能“抢占制高点”甚至于“反过来卡别人的脖子”那基本都是痴心妄想。

    所以现在国内到底需求什么样的Chiplet技术路线?我认为主要是满足下面两项诉求:

    1、突破光罩极限实现“大芯片”(小系统):极紫外光刻机的最大光罩面积在858 mm^2(26 mm×33 mm)左右,而目前最先进的基板尺寸可以达到10000 mm^2(100mm×100mm),后续还可能继续扩大。在基板上平铺就已经可以铺7-8颗裸Die,若采用3D堆叠则可以容纳的裸Die数量更多。如果再加上容纳进去部分非硅元件(被动元件、光电元件、MEMS元件等),可以在封装内实现“整机系统小型化/集成化”。现阶段以先进封装能力突破工艺极限实现“功能多样化”需求远大于提升良率/降低成本。

    2、通过快速设计来“存量盘活”:经过多年“筚路蓝缕”的发展,国内现在已经积累了一些“家底”。由于历史原因和现实条件的限制,这些家底的“技术来源”和“技术路线”不同,往往形成了“七国八制”的局面。以自主可控的CPU为例,现在国内就形成了“三条技术路线,六大企业品牌”的局面。再加上现在“蓬勃发展”的RISC-V和背后的一大堆希望吃“自主饭”的企业。其它的如FPGA、GPU等等产品也是同样的局面。如何把多年来攒下来的“家底”利用好,实现快速设计+短周期制造,才能实现对既有技术力量的整合。

    对于以上两点诉求,如果真有那么一个理想的、说了就能算、说完就能干的机构推动。让这国内这些“七国八制”的企业都按统一的标准和协议把自己的芯片打散了重新设计成Chiplet,然后东家出个CPU,西家出个GPU,打南边来个FPGA,打北边再来个NPU。然后先进封装企业居中协调,把大家的能力都攒到一起。这不就造出了有7、8个Chiplet高密度集成的“大芯片”了嘛。

    但很可惜,这理想中机构并不存在。因此目前国内Chiplet发展的技术路线,尤其是强调“自主可控”应用的技术路线(不需要自主的可以随意,拥抱Intel还是拥抱Arm都可以)需要走以“拼”为主的路线,实现成熟裸芯“芯粒化”。通过“小步快跑、逐步迭代、渐进完善”的方式,以更接近一种“高级版”的SiP方式实现向理想的“第三阶段Chiplet”过渡。正如移动通信当年从3G向4G过渡的时候搞出来了一个LTE(长期演进计划),国内的Chiplet也需要有类似的演进方式。

    这种演进首先是要保护好、利用好这些好不容易积攒下来的“坛坛罐罐”,而不是能够说轻易去打破这些“坛坛罐罐”。妄想打破这些“坛坛罐罐”从头再造的,也不是说不能成功。目前部分国内的企业的部分产品按“第二阶段”阶段甚至是“第一阶段”的做法,在自己公司内部的部分产品线甚至就是部分的产品上用用可以。但要靠这些企业重走一遍发展路线,厮杀出来一个类似于Intel或者Arm这样的公司再来“重整河山”。那黄花菜也就凉得差不多了,现实中大家不会有耐心等着慢悠悠的走。

    要做到保护好、利用好这些好不容易积攒下来的“坛坛罐罐”的要点有几点:

    1、要将成熟裸Die转变成Chiplet。Chiplet和成熟的裸Die的最大不同在于,Chiplet是有目的预先设定好被“切分”下来的裸片,所以Chiplet天然的就具有互连的接口和能够支撑多个Chiplet之间信息交互的机制。而成熟的裸Die一开始并不是为了去和别的裸Die拼的,因此先天并不具备“拼”的能力。如何让裸Die具备来这种能力,其实就让这些原本不是Chiplet的裸Die实现了“Chiplet化”。

    2、统一不同裸Die之间的信息交互机制。这个很好理解,UCIe上面靠CXL实现多节点互联,而CHI-C2C本身就依靠CHI的互联体系构建的信息交互机制而只是插进去一个UCIe接口而已。而已经成熟的Die本身并没有考虑多Die集成以后的互联机制,需要在上面额外增加一套。不过这也不算困难,因为有现成的东西可以参考,具体的后面会解释。

    3、要抽象出不同Die上面的应用层接口或者说编程模型。有了了这套编程模型以后,异构的、成熟的裸Die上运行的功能(通常是某种形式的软件,但也可能是定制化逻辑,如果参与集成的裸Die是FPGA需要用纯逻辑的方式实现)才有能够方便的和别的Die的功能之间交互协同。

    4、有足够的先进封装的实现能力和与之配套的设计流程。这个涉及的内容较多且不是本文的重点,就先暂时略过不提。

    那么要解决前面3点问题,我们之前做了哪些工作呢?

    首先谈熟裸Die转变成Chiplet的问题。我们采用的方法是“外部接口内部化,内部接口外部化”的方法。在下图中给出了这种方法的实现形式。


    将成熟裸Die通过适配器构造成“虚拟Chiplet”

    这里面的“设备”,其实就是裸Die。无论哪种裸Die必然是有和外部连接的接口,这种接口一般也是标准化的。例如目前大部分CPU其实都已经将北桥芯片的功能大部分集成了进去,因此一般都配有PCIe接口。而DSP这种经典的“协处理器”一般配有SRIO接口。至于FPGA,由于其高度可编程的特性,可以用SRIO接口也可以直接用别的什么接口。

    所谓的“外部接口内部化”,是指通过设计一个协议适配器和设备一起来构成一个“节点”,把这样的外部接口是设备和适配器之间的连接接口。其实这些所谓的节点就变成了一个个“虚拟Chiplet”,这些裸Die的外部接口编程了“虚拟Chiplet”内部的接口了。

    所谓“内部接口外部化”是只通过经过适配器包装后的接口(也就是图中的CIBD接口)而非逻Die自身的接口对外完成各个节点间也就是“虚拟Chiplet”间的通信。从上图可以看出,CIBD的接口是拓展互联芯粒的内部接口,但是对于各个节点间也就是“虚拟Chiplet”而言,这是它们之间相互通信、传递消息的外部互联接口。

    构造了“虚拟Chiplet”只是能实现异构集成的第一步,接下来CIP协议还规定了以下内容:

    1、以“包”(Packet)为单位进行信息传递:使用包含自描述信息的“包”作为信息的载体进行通信,每个“包”中包含操作的发起者、执行的操作内容、校验码等信息。这个也很正常,由于网络通信技术的巨大成功,以“包”为基础的通信组织方式现在已经“下沉”到片上了,那种传统的“三总线分离”方式现在用的很少了。

    2、以内存语义进行操作:每个包中包含的操作都可以划分为读/写或加载/存储,而且所用的“从节点”本质上被抽象成一种“虚拟化内存池”。不同的主节点/对等节点之间可以通过对“共享内存池”的访问来实现信息的交互,而这个交互的过程可以看作是不同的主节点/对等节点对“虚拟化内存池”内特定地址空间的读/写或加载/存储。类比的就是用专属的“储物柜”来进行数据交换。A分别拥有A0、A1、A2等N个“储物柜”,其中A1储物柜是专门用于和C交换信息的。基本的方法是A写C读。当A把数据存进“储物柜”以后,给C发个信息让C去储物柜去取数据。C收到信息以后就可以去“储物柜”取数据。同样的,C分别也拥有C0、C1、C2等N个“储物柜”。C用C0号储物柜和A交换信息。基本的方法就变成了C写A读。过程和上面A传到C的过程类似。

    3、以事务为基础进行信息交互:事务信息由“包”携带,指明操作的类型以及完成操作所需的数据等,使用不同事务实现不同身份的节点间的信息交互。在第2条实现的整个数据交互的过程由各种事务来具体承载。事务可以认为是一种“会话层”协议。定义读、写、DMA、共享、中断事务以及对应的事件、数据包。基于事务能够完成节点间所有内存语义互操作和信息传送。

    下面是对于事务的具体介绍:


    CIP协议中定义的各种事务以及对应的事件、请求

    更多的协议细节就不过多的介绍了,具体的大家可以去深入看一下已经公布的CIP协议。

    再回到“构造虚拟Chiplet”,可以看到要用成熟裸Die来构成“构造虚拟Chiplet”需要一个拓展互联芯粒。所以就有了“赛柏1号”。但其实从我们研发的过程来说,是先有“赛柏1号”,后有CIP协议。CIP协议实质上是对“赛柏1号”的总结和提炼。每颗赛柏1号支持4路SRIO、1路PCIe、1路DDR3和1路NANDFLASH。


    带2颗赛柏1号的验证板

    目前我们正在基于赛柏1号的验证板和其它的外围验证板卡构造多个应用Demo。打通包含国产CPU、DSP、FPGA、DDR、NANDFLASH等不同裸Die的微系统原型,为后面基于CIP协议和赛柏1号(以后也许有2、3、4、5、N号)的集成芯片设计方法学奠定基础。

    我们团队在片上通信与互联体系上有10多年的研发积累,但此前一直未能找到非常对口的应用场景。此次和中国电科58所合作,让我们有机会将多年理论研究和应用基础研究的积淀运用到实际的芯粒设计中。双方的研究人员从一开始的技术路线制定到方案设计再到关键电路的设计和验证经过了反复打磨。最终完善了架构、适配器、事务、信息传送过程等全部的关键环节,并以拓展互联芯粒设计为依托全面验证了整个协议。所以目前CIP并不是一个纸面上的标准,而是一个有真实应用场景、有配套支撑芯粒、有完整验证流程的可实用化并且正在使用的标准。而这也是本篇文章标题“十年面壁图破壁”的由来。

    以上正文就写完了,先分割线一下

    在正文写完了以后,再最后谈两点认为未来国内Chiplet的发展路线。

    首先需要说明的是,基于CIP和“赛柏1号”的这套技术路线是要兼容现有的国产成熟裸Die而搞出来的。如果说国内哪个单位确实牛逼,愿意重走一遍老美Chiplet的发展路线也是可以的。无非就是先在自己的机构/企业内部来走一下“第二阶段”嘛。

    但就目前我接触到的很多情况来说,狠多单位/企业对于利用Chiplet来构成异构集成的集成芯片有兴趣,但碍于自身实力的问题根本不足以像“第二阶段”那样以自己一个企业之力来构造Chiplet所需的芯粒库、设计方法学、互联体系等支撑。由于过去几年不同机构的夸张宣传,让他们认为好像“第三阶段”已经可以实现。可以像设计SoC那样自己搞个专用IP那样搞个自己的Chiplet,然后用一整套Arm或者别的什么的体系加上EDA公司和设计服务公司的协助就能完成。甚至很多单位/企业还误认为基于Chiplet的设计方法是一种“省钱”的设计方法,准备先“唠个50块的嗑”。其实这都是一些错误又不切实际的想法。

    目前无论是Intel还是Arm,都无法做到像SoC设计一样提供基于Chiplet设计的良好生态。而至于想要走“自主可控”的Chiplet路线,那近期就更是不太可能。等着什么时候国内养出来一个Intel或者Arm再说吧。所以回过头来看,CIP虽然是带着非常明显“SiP色彩”的Chiplet技术路线,但应该是目前走“自主可控”可行的技术路线。未来也许有一天CIP终将淘汰,但是在这之前其应该会有足够的生存空间。

    写得比较匆忙,想到哪里写到哪里。成一家之言,供大家参考。

    半导体精品公众号推荐

    专注半导体领域更多原创内容

    关注全球半导体产业动向与趋势

    *免责声明:本文由作者原创。文章内容系作者个人观点,半导体行业观察转载仅为了传达一种不同的观点,不代表半导体行业观察对该观点赞同或支持,如果有任何异议,欢迎联系半导体行业观察。

    今天是《半导体行业观察》为您分享的第3888内容,欢迎关注。

    『半导体第一垂直媒体』

    实时 专业 原创 深度

    公众号ID:icbank

    喜欢我们的内容就点“在看”分享给小伙伴哦



    上一页:将英伟达拉下马,芯片公司出招 下一页:摩尔定律,如何延续
    全部评论(0)