中文 英语
18lickc新利
的意见

面向民主化IC设计和定制化计算

如何让IC设计更容易为更多人所接受。

受欢迎程度

集成电路(IC)设计通常被认为是一种“黑魔法”,只局限于那些拥有高等学位或多年电气工程培训的人。鉴于半导体行业正在努力扩大其劳动力,IC设计必须更容易获得。

定制计算的好处
通用计算机被广泛使用,但由于电源扩展、散热、空间和成本方面的挑战,它们的性能改进已经显著放缓——从20世纪90年代的每年超过50%下降到近年来的只有几个百分点。

相反,研究团体和工业界已经转向定制计算,通过将定制架构与某些应用程序领域的工作负载相匹配来获得更好的性能。一个很好的例子是张量处理单元(TPU)是谷歌在2017年宣布的,用于加速深度学习工作负载。TPU采用28nm CMOS技术设计,是一种专用集成电路(ASIC),与通用Haswell中央处理器(CPU)相比,其性能/瓦功率效率优势接近200倍,后者是目前领先的服务器级CPU。这种自定义的加速器,或领域特定的加速器(DSA),通过自定义的数据类型和操作、自定义的内存访问、大量的并行性和大大减少的指令和控制开销来实现效率。

然而,这种定制的代价是巨大的7纳米技术3亿美元这是大众无法承受的。现场可编程门阵列(fpga)为DSA实现提供了一种有吸引力的、经济高效的替代方案。由于FPGA具有可编程逻辑、可编程互连和可定制的构件(块随机存储器(BRAM)和数字信号处理(DSP)),因此可以定制实现DSA,而无需经过漫长的制造过程,并且可以在几秒钟内重新配置为新的DSA。此外,fpga已经在公共云中可用,如亚马逊AWS F1和Nimbix。人们可以在这些云中的FPGA上创建DSA,并以每小时1- 2美元的速度使用它来加速所需的应用程序,即使在本地计算设施中无法使用FPGA。我的研究实验室为多种应用开发了高效的基于fpga的加速器,如数据压缩、排序和基因组测序,与最先进的cpu相比,性能/电源效率提高了10 - 100倍。

定制计算的障碍
然而,在asic或fpga中创建dsa被认为是硬件设计,通常使用寄存器传输级(RTL)硬件描述语言,如Verilog或VHDL,大多数软件程序员都不熟悉这些语言。根据2020年美国劳工统计局的数据数据年,美国有超过180万软件开发人员硬件工程师不足7万人

高级合成(HLS)的最新进展表明,它有望使电路设计更易于访问,因为它可以自动将C、c++或OpenCL中的计算内核编译成RTL描述,以进行ASIC或FPGA设计。现有HLS工具生成的电路质量很大程度上取决于输入C/ c++代码的结构和设计人员提供的硬件实现提示(称为“pragmas”)。例如,对于深度学习中广泛使用的一层卷积神经网络(CNN)的简单7行代码,如图1所示,现有的商用HLS工具生成的基于fpga的加速器比单核CPU慢108倍。然而,在对输入的C代码进行适当的重构(例如,对计算进行平铺)并插入28个pragmas之后,最终的FPGA加速器比单核CPU快89倍(比最初未优化的HLS解决方案快9000倍以上)。


图1:广泛应用于深度学习的单层卷积神经网络(CNN)的简单7行代码

这些pragmas(硬件设计提示)告诉HLS工具在哪里并行化和流水线化计算,如何划分数据数组以映射到片上内存块,等等。然而,大多数软件程序员不知道如何执行这些特定于硬件的优化。

我们的解决方案
为了让更多的人能够基于软件程序员友好的代码来设计dsa,我们采取了三个方面的方法:

•架构引导的优化
•自动代码转换和pragma插入
支持高级领域特定语言(dsl)

体系结构引导优化的一个很好的例子是收缩阵列(SA)的自动生成,这是一种高效的体系结构,它只使用相邻处理元素之间的本地通信。一个2017年英特尔研究表明即使使用HLS工具,设计高质量SA也需要4-18个月。我们最近的工作,AutoSA,提供完全自动化的解决方案。一旦程序员将一段C或c++代码标记为要在SA架构中实现,AutoSA就可以生成一组处理元素和一个相关的数据通信网络,从而优化计算吞吐量。对于CNN示例,AutoSA生成了一个优化的SA,其中包含9,600行C代码(包括pragmas),在单核CPU上实现了超过200倍的加速。

对于不容易适应常见计算模式的程序(例如SA或模板计算,对此我们使用架构引导优化有很好的解决方案),我们的第二种方法是执行自动代码转换和pragma插入,以重复并行化或基于瓶颈分析或基于图的深度学习引导的计算。基于AMD/Xilinx的开源Merlin编译器(最初由Falcon Computing Solutions开发),我们的工具命名为AutoDSE-可以消除大部分(如果不是全部的话)专家硬件设计师插入的pragmas,并实现相当甚至更好的性能(正如Xilinx的Vitis HLS库用于视觉加速所演示的那样)。

第三项工作是进一步提高设计抽象级别以支持dsl,以便某些应用程序领域的软件开发人员可以轻松地创建dsa。例如,基于开源HeteroCL我们可以支持Halide,这是一种广泛使用的图像处理DSL,具有将算法规范与性能优化解耦的优点。对于用8行Halide代码编写的blur-filter示例,我们的工具可以生成1,455行优化的HLS C代码和439行pragmas,在28核CPU上实现3.9倍的加速。

这些努力结合起来,实现了一个对软件程序员友好的编程环境和编译流程,使他们能够高效且经济地创建dsa(特别是在fpga上)。这对于定制计算的大众化至关重要。

扩大参与
在2018年的图灵奖演讲中,计算机架构的新黄金时代John L. Hennessy和David a . Patterson总结道,“下一个十年将见证新型计算机架构的寒武纪爆发,这对学术界和工业界的计算机架构师来说都是激动人心的时刻。”我们希望将这一激动人心的旅程扩展到面向性能的软件程序员,使他们能够在fpga甚至asic上创建自己的定制架构和加速器,以实现显著的性能和能效改进。

本文基于Jason Cong最近的愿景演讲第35届超大规模集成电路设计国际会议.整个演讲都可以在网上找到在这里



留下回复


(注:此名称将公开显示)

Baidu