中国网/中国发展门户网讯芯片是现代信息社会的关键基础设施。绝大部分的电子设备——小到传感器、大到超级计算机,以及我们每天用的手机、电脑,都是建立在芯片基础之上的。从20世纪60年代开始,随着半导体工艺的发展,芯片的复杂度快速增加,从只有少数晶体管的小规模开始快速发展到千百万、数十亿晶体管规模。例如,2020年英伟达(Nvidia)发布的A100芯片集成了500多亿晶体管。芯片制造工艺也已经接近量子领域,台积电(TSMC)的5nm工艺已经开始量产芯片,英特尔(Intel)等厂商已经开展2nm工艺的芯片研究。这些都离不开芯片设计的快速发展。
未来万物互联的智能时代需要大量不同种类的专用芯片。随着智能时代的到来和“摩尔定律”的大幅度放缓,专用芯片的数量和种类大幅度增加,芯片体系结构将要进入新的黄金时代,这对芯片设计提出了更大的挑战。目前,深度学习处理器芯片就有很多种。例如:国外,谷歌(Google)推出了TPU,英伟达推出DLA和包含专用加速TensorCore的多款GPGPU,英特尔收购了Neverana、Movidius等多家公司,ARM、高通(Qualcomm)、苹果(Apple)等公司的系统级芯片(SoC)也各自集成了自家的深度学习加速器硬件;国内,中科寒武纪科技公司推出了Cambricon云边端系列芯片,阿里巴巴公司推出了含光NPU,华为公司推出了达芬奇架构芯片等。据统计,从2014年开始,全球深度学习处理器芯片就从一两款增长到了几百款之多。未来万物互联的智能时代对于大量种类和数量的芯片需求,也对芯片设计效率提出了新的挑战。
芯片设计流程和ChipLearning
芯片设计流程
芯片设计是一个复杂的过程。通常,芯片设计指的是从需求出发最后生成版图(layout)的过程。典型的芯片设计流程可以被简单地划分成5个阶段(图1):①系统定义(chipspecification)。给定需求后,进入系统定义阶段,芯片设计人员确定设计参数,并完成包括结构、接口定义等具体设计。②逻辑设计(logicdesign)。由芯片开发人员根据系统定义进行逻辑设计,通常采用硬件开发语言Verilog、VHDL等实现芯片的硬件代码,包括其中各个功能模块、外部接口和整体连接。③电路设计(circuitdesign)。在得到芯片的硬件程序后,芯片开发人员进行电路设计,把硬件描述转换成为门级的电路表示。④物理设计(physicaldesign)。在得到芯片网表之后,芯片开发人员进行物理设计,把门级网表转换成物理实现表示,即芯片的版图;其常见格式为图数据表示,即graphicdatasystemⅡ(GDSⅡ)。另外,芯片开发人员会在物理设计的各个阶段进行验证测试和迭代设计,以得到符合需求的芯片设计。⑤验证测试(test&verification)。最终完成的芯片版图送至代工厂进行制造,后续再进封装、制板、测试等工序,这样就得到了一颗完整的芯片。
2.ChipLearning
然而,目前全球芯片设计中的深度学习工作还主要停留在采用人工智能技术去辅助解决传统芯片设计流程中的子问题,如评估、预测芯片设计的结果等。与之不同的是,本文提出的ChipLearning技术内涵则是取代传统芯片设计流程,通过AI模型学习专业知识,从而实现无人化(no-man-in-the-loop)芯片设计(图2)。具体而言,类比传统芯片设计流程,ChipLearning可以分成3个重要问题:①功能生成。当用户用模糊的语言确定了系统功能,第一个重要的问题就是根据用户意图确定系统正确的功能,并生成系统的准确表达。这种准确表达可以是硬件代码,也可以是表达式,也可以是真值表。这个问题对应着传统芯片设计流程的逻辑设计。②逻辑图生成。当有了准确表达,第2个重要的问题就是要生成电路的逻辑图表达,并在这张逻辑图上进行优化,最后生成物理无关(包括工艺)的逻辑图表达。这个问题对应着传统芯片设计流程的电路设计。③物理图生成。当有了电路逻辑图后,第3个重要的问题就是要生成电路的具体物理版图,这等价于一种多种约束下(如面积、功耗、物理等限制)的图映射和优化问题。这个问题对应着传统芯片设计流程的物理设计。
芯片学习在芯片设计流程中需要解决的问题
逻辑设计
逻辑设计的核心就是要得到电路的硬件描述。通常这一过程通过人工完成,也就是硬件开发人员采用硬件描述语言如Verilog、VHDL手动编写RTL的硬件程序。还有一种方法就是高层次综合(HLS)。高层次综合指的是通过高层次综合工具把C、C++或者SystemC等高级编程语言描述的硬件功能转化成为硬件描述语言Verilog、VHDL程序。传统高层次综合算法一般通过确定性的方法对高级语言进行变换。近些年来,除了传统的机器学习算法如支持向量机(SVM),最新的人工智能技术如深度神经网络(DNN)、图神经网络(GNN)也被用于高层次综合中,主要用于帮助更快速的HLS设计结果评估(质量估计、性能估计、时序估计、资源开销估计)和FPGA设计空间搜索优化。
与上述2种方法相比,芯片学习更进一步:当用户给定模糊描述后,通过猜测用户意图自动编写硬件程序,或者说自动生成硬件的准确表达——可以是硬件RTL程序,也可以是硬件表达式,还可以是硬件真值表。这其中面临很多挑战,如用户意图的确定,硬件表达的准确性等。在该方面,程序综合(programsynthesis)——自动构建由指定语言构成的、符合用户某种要求的程序,跟芯片学习的功能确定问题具有同样的形式。目前,程序综合已经有了很多进展可供芯片学习借鉴参考。
电路设计
在得到芯片的硬件描述后,芯片开发人员进行电路设计。如图3所示,在电路设计中,电路的硬件描述程序会被转化成为电路图(网表),这个过程也被称为前端设计(front-endprocessing)或者综合(synthesis)。
芯片学习在这个阶段要解决的问题是逻辑图生成,也即在给定电路的硬件描述(如RTL程序、表达式或真值表)和可用节点类型的约束下,生成电路相应的逻辑图。在该逻辑图中,节点是门、宏单元、已知功能模块,连线是有方向的,表示信号从一端流向另外一端。如果是时序电路,逻辑图中还会存在环路。同样的,在该逻辑图上需要做优化,以尽可能地去掉电路中的冗余,保证生成的逻辑图尽量精简。一个思路是采用传统编译的思路完成这个过程,并采用上文类似的GNN和增强学习(RL)方法实现图级别优化。另外一个思路是采用神经编译器(neuralcompiler),直接替代传统的编译技巧,把输入转化成为逻辑图并在图上做进一步的优化,从而得到更简洁的逻辑图表达。
物理设计
芯片学习对应的子问题是物理图生成。可以看到,在物理设计的多个阶段,AI技术被广泛地用来辅助解决其中的子问题,芯片学习则期望能够直接端到端得到一个最终的物理版图。这个子问题的难度可想而知,其中涵盖了多个子问题,也极有可能需要多个模型协同进行工作,才有可能最终解决。利用芯片学习端到端得到最终物理版图的挑战主要有2个方面:①问题和约束形式化较为困难。正如上面芯片物理设计流程中所介绍的一样,问题本身的输入是类似网表的逻辑图,最终输出的是物理版图。不同规模的电路蕴含的功能也不一样,这就意味着统一的模型能够处理变长、变规模的输入和输出。另外,物理设计中的约束也是多种多样的,包括:芯片本身的最大面积、所能容忍的最大延迟等基本约束,以及电源网络构建、crosstalk消除、天线效应等约束。这些约束需要变成结构化的信息从而可以被人工智能模型所接受,也即计合理的数据结构,这也是非常困难的。②问题对应的解空间规模大。电路物理设计过程中本身就包含了很多复杂度很高甚至于是NP完全问题,这也就意味着物理设计本身是一个随着规模增大复杂度急剧上升的问题。
对于解决芯片学习物理版图生成这个非常困难的问题,目前已经看到了一些曙光。谷歌使用RL和GNN替代了传统的布局过程,Liao等、He和Bao也提出了直接替代布线过程的小规模电路上的方案,从而证明了AI技术在传统问题上大有可为。物理版图最终是要针对工艺的,而值得庆幸的是,现在芯片设计流程中的设计规则是抽象出来与工艺无关的约束规则,这也将是芯片学习解决方案未来能够泛化到不同工艺上的基础。
验证测试
验证测试贯穿整个芯片设计流程。在不同阶段,芯片开发人员都需要对得到的设计进行反复验证,如功能测试验证、逻辑测试验证、电路测试验证、网表测试验证、版图测试验证。
对于芯片学习而言,验证测试核心要解决的挑战就是黑盒解决方案的精度保证。现有的AI技术虽然能在很多问题上达到很好的效果,但其为人所诟病的一点就在于这些黑盒模型缺乏可解释性,对于输出结果的精度也无法给出理论的保证。这一点对于芯片学习尤其重要,因为芯片流片的成本非常高,即使未来在工程上芯片学习能够解决问题,AI新技术的可解释性也需要继续深入研究。
未来工作
芯片学习是万物互联的智能时代解决芯片设计需求大和代价高之间矛盾的核心方法。目前,AI新技术在芯片设计流程中已经得到应用(表1),然而这些工作都还是集中在芯片设计各个环节当中的子问题,主要是辅助传统设计流程,完成预测、评估方面的功能,尚未实现AI取代传统芯片设计流程;芯片学习则是希望能够完全取代传统芯片设计流程,用AI模型学习专家知识,大幅度降低芯片设计门槛,提升芯片设计效率,从而实现端到端的快速无人化芯片设计。
芯片学习未来有3点主要工作。全流程。芯片学习在各个流程上实现取代传统算法,同时在各个流程中消除人的参与,从而实现芯片设计全流程无人化以节省人力资源,实现高效率的芯片设计。跨层次优化。利用芯片学习,希望将芯片设计各个环节打通实现跨层次设计与优化,实现大规模芯片统一设计,从而实现更优的芯片设计。并行加速。AI技术以计算量大、数据量大著称,而芯片设计又是非常复杂的任务,芯片学习也需要研究并行和加速方法。例如,采用已经蓬勃发展的人工智能芯片,从而保证芯片设计效率。未来,芯片学习希望实现从设计芯片到自动生成芯片的转变,更好地支撑智能万物互联时代的应用需求。
(作者:陈云霁,中国科学院计算技术研究所计算机体系结构国家重点实验室、中国科学院大学计算机科学与技术学院;杜子东、郭崎、李威,中国科学院计算技术研究所计算机体系结构国家重点实验室;谭懿峻,中国科学院计算技术研究所计算机体系结构国家重点实验室、中国科学院大学计算机科学与技术学院;《中国科学院院刊》供稿)