芯片设计是一项非常挑战且耗费人力和资源的工作——通常需要由工程师团队编写代码,然后在电子设计自动化(EDA)工具的辅助下生成电路逻辑;针对人工编写的代码,工程师团队需反复对其进行迭代的功能验证和性能、功耗进一步优化。整个过程通常需要数以百计的研究团队、迭代数月或数年才能完成。
人工智能能否帮助人们自动化地设计芯片?对此,中国科学院计算技术研究所(以下简称计算所)近年来开展了一系列探索,并于近期取得了重要进展。
计算所处理器芯片全国重点实验室主任、研究员陈云霁介绍说,芯片全自动设计的目标是由机器代替人自动生成满足功能和性能需求规范的电路逻辑,从而极大减少人力和资源投入,加速设计迭代。自计算机科学奠基人之一阿隆佐·邱奇(A. Church)在1957年提出“邱奇问题”以来,处理器芯片的全自动化设计成为人工智能领域的长期愿景。但由于处理器芯片电路准确率要求高、设计空间大,处理器逻辑必须由人类专家进行逻辑设计,这成为了整个流程中的设计效率瓶颈。
聚焦解决处理器芯片自动设计所面临的精度和规模两大挑战,计算所处理器芯片全国重点实验室团队提出了“以验证为中心”的处理器智能设计方法学:从随机电路出发,由机器全自动完成包括验证、调试和修复的反复迭代,直到获得满足设计需求的目标电路。
具体而言,团队将处理器自动设计问题转化成从验证程序的输入输出(IO)出发自动生成大规模的二元决策图(BDD)表示问题。针对该问题,团队设计了二元猜测图(BSD),将传统BDD中的确定性子图替换成BSD中通过对IO的蒙特卡洛采样来确定的猜测节点。通过对二元猜测图的不断展开和归并,使得其生成的电路能够逐步逼近目标电路逻辑。
团队运用上述方法,在5小时内自动设计出了超过4百万个逻辑门的32位RISC-V 通用处理器——启蒙1号,将现有工作能自动设计的电路规模提升了3~4个数量级。
“启蒙1号”芯片是世界上首颗无人工干预、全自动设计的处理器芯片,可以正常运行Linux操作系统,实测性能达到了Intel 486的水平。相关论文“Automated CPU Design by Learning from Input-Output Examples”已被CCF-A类会议IJCAI 2024接收。
为进一步提升自动生成处理器的性能,团队提出了一种基于门级依赖关系分析的自动流水线设计方法。与传统数据依赖分析只能在寄存器等高层次进行不同,该方法可在细粒度的门电路级别自动进行数据流分析。在分析结果基础上通过二元猜测图构建了细粒度的流水线控制单元,在保证功能正确前提下,利用门级前递和猜测提升了程序执行效率;更重要的是,在某些情况下可以找到比人类设计更优的流水设计,平均吞吐效果提升了31%。
相关论文“Revisiting Automatic Pipelining: Gate-level Forwarding and Speculation”已被CCF-A类会议DAC 2024接收。
(责编:赵珊)