芯片设计的一个新兴趋势是,不再追求像摩尔定律所设想的那样,每18个月晶体管数量翻倍的更大、更宏伟的设计。相反,人们越来越关注针对人工智能和机器学习等特定任务的专用芯片,这些领域的进展速度是以周和月来衡量的。
但芯片的设计耗时远不止于此,这意味着新的微处理器无法足够快地反映当前的思考,从而进行设计。“如今的芯片设计需要数年时间,这让我们不得不猜测性地优化它们以适应两到五年后的机器学习模型,”谷歌的 Azalia Mirhoseini、Anna Goldie 及同事们感叹道,他们提出了一种加速这一过程的新方法。
他们的新方法是利用人工智能本身来加速芯片设计过程。其结果令人印象深刻。他们的机器学习算法可以在六小时内完成人类芯片设计师使用现代芯片设计软件也需要数周才能完成的工作。
其影响深远。“我们相信,人工智能本身将提供缩短芯片设计周期的手段,从而在硬件和人工智能之间建立一种共生关系,两者相互促进、共同进步,” Mirhoseini、Goldie 及同事们表示。
微芯片设计是一个复杂而漫长的过程。首先,人类设计师会设定芯片的基本要求:尺寸、功能、测试方法等等。然后,团队会规划数据如何在芯片中流动以及必须对其执行的逻辑操作的抽象设计。
极其复杂的网络
由此产生的抽象但极其复杂的逻辑门及其组合(具有特定已知功能的组合称为宏)构成的网络,被称为“网表”,可能包含数十亿个组件。
下一阶段是将抽象的网表转化为物理设计,即在芯片的二维表面上布局组件。然而,这一过程必须以最小化芯片功耗并确保设计可制造的方式进行。
这并非易事。降低功耗的一种方法是最小化连接所有组件的布线长度。事实上,设计师使用“线长”来衡量其设计的功耗。但即使是计算特定芯片设计的线长和其他性能指标,在计算上也要求很高且成本昂贵。
一旦知道了线长,就会出现线长是否可以缩短以及如何缩短的问题。找到最短距离在形式上等同于旅行商问题,这个问题没有已知的快速解决方案。但是,芯片设计师多年来积累了一些经验法则。
因此,谷歌研究人员提出的问题是,机器是否能够学会这些规则,然后以更快的速度应用它们来设计最优芯片。
第一步是创建一个能够将所有组件放置到可用区域的算法。谷歌团队分两步来编程他们的算法。
第一步,算法将宏放置在芯片上。这些是具有已知功能的电路,通常占据特定尺寸的矩形空间。程序只是根据尺寸对它们进行排序,然后将最大的宏放在表面上。
下一步更具挑战性。标准逻辑门比宏小,它们共同构成一个网络,团队将其建模为一组由弹簧连接的节点。节点相互吸引,从而缩短它们之间的线长。然后,算法将这个杂乱的门网络放置在芯片表面的宏之间的剩余空间中。然后,它们让它“放松”,弹簧将节点拉近,从而缩短线长。
结果是潜在的电路图。然后必须根据其线长和其他需要避免的良好芯片设计的因素(例如拥塞,即穿过同一狭窄间隙的导线数量的度量)来评估该电路图。然后系统重新开始创建新的设计,依此类推。
超人性能
通过这种方式,团队构建了一个包含 10,000 个芯片设计及其线长、拥塞级别等的数据库。然后,他们使用该数据库来训练机器学习算法,以预测给定设计的线长、拥塞级别等。然后,它进一步学习如何微调设计以使其更好。
这些设计与人类能达到的水平相当,甚至更好。该算法甚至学会了人类专家设计师通过直觉长期以来所知的相同经验法则。例如,机器会将较大的宏放置在芯片的边缘周围,在中心区域留出空白,用于放置更杂乱的标准逻辑门网络。对于人类来说,这直观上可以减少线长。
结果是,机器学习算法可以在大约六小时内将一个庞大而复杂的网表转换为优化的物理芯片设计。相比之下,目前高度自动化但仍需人工干预的传统芯片设计需要几周时间。
这项有趣的研究可能会大大缩短生产专用芯片设计的时间周期。因此,它可能对人工智能和其他专用计算任务的未来产生重大影响。
参考:Chip Placement with Deep Reinforcement Learning arxiv.org/abs/2004.10746














