设为书签 Ctrl+D将本页面保存为书签,全面了解最新资讯,方便快捷。 您也可下载桌面快捷方式。点击下载 | 新浪科技 | 新浪首页 | 新浪导航

Google的「泛芯片」科技蓝图

2020-10-17 12:57:52    创事记 微博 作者:   

除了芯片本身,在芯片设计工具和方法学上(EDA领域),我们也越来越多的看到Google的影子:把AI引入芯片后端设计[2][3];开展Cloud上的芯片验证,参与CHIP Alliance;CIRCT(MLIR for hardware)[4]和XLS(高层次综合)[5]这样的开源项目。

虽然有些工作还只是一些初步的尝试,但其探索的方向有重要的意义,而Google的系统性技术优势和号召力也让这些探索更具成功的可能。

系统 · 芯片

我们还是先从芯片说起。Google的TPU已经开发了好几代了(最新的TPU4已经在MLPerf露了脸,「AI训练芯片巅峰对决,如何正确『围观』?」),今年的Hot Chips上也介绍了架构的演进「Google’s Training Chips Revealed: TPUv2 and TPUv3」(可以参考Google TPUv2/v3架构及其设计演化」)。

而同样在Hot Chips上,Dan Belov的keynote,「AI Research at Scale - Opportunities on the Road Ahead」,从更宏观的角度分析了未来AI系统和芯片的趋势。

就在一天前,Raja M. Koduri在Hot Chips上介绍了Intel怎么实现到2025年把算力提升1000X,相信很多朋友都看过了,我就不多说了。

source:Intel@Hot Chips 2020

回到Dan Belov的keynote,同样在讲为了支持大规模AI研究,怎样实现1000X的算力提升。结合Google的背景,他很自然的强调系统而非单个芯片的优化,其中有一些观点值得我们思考。

source:DeepMind@HotChips2020

首先是对大规模AI研究任务的总体优化目标的分析。根据他们的观察,优化最好的项目最多能够达到70%的利用率,而平均情况是只能用的峰值算力的20%,而造成这种情况的原因很多,包括硬件限制,比如memory和I/O;软件栈效率问题,比如编译器,python runtime的性能;还有任务本身的问题,比如Startup time,Contention以及Amdahl’s law等等。因此,只看单个设备的峰值效率(perf/$)意义不大,而解决方法是从数据中心规模做自顶向下的系统优化。

当然,我不认同「Chip performance」真的「does not matter」,应该说,除了芯片性能之外,还有很多其它需要优化的地方,或者说有能够优化的机会。

source:DeepMind@HotChips 2020

从硬件角度来看,两个最重要的机会包括,「Move everything into Si」和「Paradigm Shift」。在第一个方向,我们是否可以期待未来出现Datacenter-on-Chip,Datacenter-on-Wafer或者Datacenter-in-Package?也许Chiplet和Wafer-Scale-Engine能够实现。

进一步看所谓「Paradigm Shift」,它会带来巨大的收益,同样也意味着着我们必须付出巨大的代价,即需要设计「significantly different systems」。由于整个软硬件基础设施的复杂性和不灵活性,要进行「Paradigm Shift」当然不是说说这么简单。

source:DeepMind@HotChips 2020

同时,硬件的多样性也会带来很大的软件移植开销。

source:DeepMind@HotChips 2020

当然,好消息是,AI应用本身的特征,在一定程度上简化了问题。到此,其实就是我们这几年面向AI应用优化系统和芯片的一个基本逻辑:应用的需求驱动计算范式的转变,而应用的特征使这种转变成为可能。这后面Dan Belov还给出了一些其它的机会,比如编译技术(MLIR)和把AI用于编译优化等等,感兴趣的朋友可以去看看,我就不赘述了。

TPU引发的EDA试验

我这几年一直有一个观点,就是AI芯片的热潮带来很多side effect,大大促进的相关技术和产业的发展。Google在做TPU的过程中,除了芯片和软件栈(XLA/MLIR等等)的探索,也涉及到了芯片设计工具和方法学。

首先是一个大家可能都听过的新闻:「Google用AI设计芯片」。当然,这个说法有很多夸大的成分,这项工作更准确的说法是「Reinforcement Learning for Placement Optimization」,即用增强学习的方法进行布局(芯片设计流程中的后端设计的一个任务)优化。Jeff Dean在今年的ISSCC专门介绍了这项工作。

source:JeffDean@ISSCC2020

关心更详细信息的朋友可以去看看[3],有这个项目的开发者的讲解和相关讨论。

source: Azalia Mirhoseini and Anna Goldie @DAWN event1 

作者Azalia Mirhoseini之前就尝试用增强学习来优化计算系统里的任务分配(Hierarchical Planning for Device Placement),我在之前的文章(ML + System = ?)中也提到过。这项工作本身只是解决芯片后端布局布线中的一个问题,并不像宣传的那么夸张。

但这个工作是近几年「把AI用于EDA这个大愿景里面的一个比较成功的例子,再加上Google的背景,所以受到很大关注。我还记得之前在一个EDA学者群里,对这项工作有过很热烈的讨论。当然,不管大家怎么评价,Google应该还是会继续探索下去。毕竟Jeff Dean已经说了「Anywhere  We're Using Heuristics To Make a Decision」都是机器学习的用武之地。

第二个可能会对芯片和EDA产业产生更深远影响的是Google所作的Cloud EDA尝试,这个我之前做过一个简单的分析,「为云而生又生于云中的芯片给我们的启示」。这中间的一个核心实践是利用cloud上近乎「无限」的资源进行芯片验证,可以大大加速芯片开发的时间,这可能也是TPU系列芯片能够相对快速迭代的原因之一。Cloud EDA最近的关注度也很高,下面这张slide,介绍它的优势,来自Chips Alliance最近的一个workshop。

source: Dan Ganousis, Metrics@CHIP Alliance workshop 

最近,我的一个在EDA公司工作了十多年的前同事加入Google Cloud,做相关工作,这可能也是Google的系统性优势的一点体现吧。总之,在Cloud EDA方向,Google的推动值得关注。

除了Cloud商业项目,Google还非常积极的参与了开源EDA的工作,是CHIP Alliance的发起者。相信大家都关注到Google和Skywater的开源PDK项目,以及Google支持的免费投片。此外还有例如RISCV-DV的开源项目,有兴趣的读者可以看看最近的Chip Alliance Workshop。

source: CHIPS Alliance Workshop - September 17, 2020

编译器开发者跨界芯片设计工具

下面要介绍的开源项目CIRCT时间不长,相对也小众很多,不过很有意思,值得关注。

严格的说,这个项目并不是Google主导的项目,但却和Google发起的MLIR项目关系密切,也是MLIR Ecosystem的一部分。大家知道,MLIR是Chris Lattner在Google发起的编译器项目,我在之前的文章中也多次提到。Chris Lattner之后离开了Google,加入SiFive,并对硬件设计产生了极大兴趣,因此发起了CIRCT项目。CIRCT的基本思路就是利用MLIR/LLVM中的编译器技术和基础设施来改进硬件设计语言和工具(特别是开源工具)

我们知道,EDA工具的目标是产生可生产的芯片设计。一个芯片设计流程,一般从一个DSL(Domain Specific Language),比如System Verilog/VHDL这样的硬件描述语言开始;然后会经过几个抽象层次的变化(类似软件编译的过程);在每个层次需要进行相应的验证,层次间的转换需要进行等价性验证。这个过程中的几个要素:编程语言,编译技术,验证技术,并不是硬件设计独有,很多都是和软件领域相通的。CIRCT这个项目最有趣的地方是软件编译器的开发者开始关注硬件设计工具,而且是从DSL/IR/Compiler这个角度切入,肯定不会只是修修补补的工作。

在进一步讨论CIRCT项目之前,我们先看看另一个Google发起的项目XLS[5],这是一个高层次综合(HLS:High Level Synthesis)项目。HLS是EDA领域中学术研究比较多的内容,其目标是通过提升设计输入的抽象层次来实现算法/应用直接到硬件的自动化设计实现,从而提高芯片开发的效率,我在之前的一篇文章中(在体系结构黄金期,ESL设计方法学能否「焕发青春」?)简单介绍过这个方向。

首先,这个项目自己定义了一个DSL来描述硬件。这里使用了类似Rust语言的DSLX。此外,XLS项目设计了自己的IR和编译工具,验证工具(包括Logic Equivalence),最终生成Verilog语言,进入传统的芯片设计流程。其实,和XLS项目类似的HLS项目在EDA学术界挺多的。

由于HLS的抽象层次高于RTL级的硬件描述,不合适使用Verilog/VHDL来作为DSL的,一般会直接使用描述算法的C/C++这样的语言,但直接使用这些语言也有很多困难,这里就不展开讲了。最近几年,大家比较喜欢参考(或基于)有函数式编程特征的语言(Scala,Rust或者Haskell)来设计DSL,出现各式各样的语言([6]中就有「Golden Age of Hardware Description Languages」的提法)。

这也是吸取软件领域经验的一种方式,但目前还没有一种高层次的DSL能够真正成为主流。顺便提一下,Chisel语言(基于Scala)可能是近几年在硬件设计语言上最成功的尝试,但Chisel还是RTL层次的语言,并不是为HLS任务设计的。

另一个可以参考的学术项目是斯坦福的Agile Hardware Project[7]。其目标是自动化设计面向图像处理的CGRA(Coarse-Grained Reconfigurable Architecture),使用Halide作为DSL,自己定义的CoreIR作为中间表达,并在此基础上建立相应的工具链。

通过XLS和AHA的两个例子,我想强调的是设计一个好的DSL/IR系统对于一个特定领域的EDA任务是至关重要的。而目前的芯片设计工具和方法,主要还是围绕抽象层次比较低的Verilog/VHDL来建立的。除了设计和验证效率低的问题,对于软硬件的联合优化也非常不友好。这个问题并不是什么新问题,十几年前就有很多讨论,但到目前为止并没有太多的变化。

一些尝试,比如SystemC,Bluespec,都不怎么成功。这个现象有很多的原因,其中之一是设计DSL/IR和相应的编译器(包括验证工具)的门槛和成本很高。这有点类似于本文第一部分说的,我们要做面向“新的计算范式”的硬件,其软件栈开发的难度和成本很高。

这就回到我想讨论的CIRCT这个项目的意义:是否可能利用MLIR的多层IR的思想及其提供编译器基础架构来拉低建立一个DSL/IR系统和相应的编译器的成本?从而让我们有可能在芯片设计工具和方法学上做更多的创新。现在CIRCT这个项目还是刚刚开始,很难说能未来发展到什么程度,但它至少让我们看到更多的可能。

参考资料

[1] Dan Belov, "AI Research at Scale - Opportunities on the Road Ahead", Hot Chips 2020

[2] Jeff Dean, "The Deep Learning Revolution and Its Implications for Computer Architecture and Chip Design", ISSCC 2020

[3] Azalia Mirhoseini, Anna Goldie, "Reinforcement Learning for Placement Optimization", Design Automation WebiNar (DAWN), https://duke-cei-lab.github.io/DAWN/event1

[4] "CIRCT" / Circuit IR Compilers and Tools", https://github.com/llvm/circt

[5] "XLS: Accelerated HW Synthesis", https://github.com/google/xls

[6] Lenny Truong, Pat Hanrahan, "A Golden Age of Hardware Description Languages: Applying Programming Language Techniques to Improve Design Productivity", SNAPL 2019

[7] "Stanford AHA! Agile Hardware Center",https://aha.stanford.edu/

AI Chip List

https://basicmi.github.io/AI-Chip/

AI Chip Paper List

https://github.com/BirenResearch/AIChip_Paper_List

(声明:本文仅代表作者观点,不代表新浪网立场。)

分享到:
保存   |   打印   |   关闭