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