SMCA: A Framework for Scaling Chiplet-Based Computing-in-Memory Accelerators
-
摘要: 基于可变电阻式随机存取存储器(ReRAM)的存算一体芯片已经成为加速深度学习应用的一种高效解决方案。随着智能化应用的不断发展,规模越来越大的深度学习模型对处理平台的计算和存储资源提出了更高的要求。然而,由于ReRAM器件的非理想性,基于ReRAM的大规模计算芯片面临着低良率与低可靠性的严峻挑战。多芯粒集成的芯片架构通过将多个小芯粒封装到单个芯片中,提高了芯片良率、降低了芯片制造成本,已经成为芯片设计的主要发展趋势。然而,相比于单片式芯片数据的片上传输,芯粒间的昂贵通信成为多芯粒集成芯片的性能瓶颈,限制了集成芯片的算力扩展。因此,该文提出一种基于芯粒集成的存算一体加速器扩展框架—SMCA。该框架通过对深度学习计算任务的自适应划分和基于可满足性模理论(SMT)的自动化任务部署,在芯粒集成的深度学习加速器上生成高能效、低传输开销的工作负载调度方案,实现系统性能与能效的有效提升。实验结果表明,与现有策略相比,SMCA为深度学习任务在集成芯片上自动生成的调度优化方案可以降低35%的芯粒间通信能耗。Abstract: Computing-in-Memory (CiM) architectures based on Resistive Random Access Memory (ReRAM) have been recognized as a promising solution to accelerate deep learning applications. As intelligent applications continue to evolve, deep learning models become larger and larger, which imposes higher demands on the computational and storage resources on processing platforms. However, due to the non-idealism of ReRAM, large-scale ReRAM-based computing systems face severe challenges of low yield and reliability. Chiplet-based architectures assemble multiple small chiplets into a single package, providing higher fabrication yield and lower manufacturing costs, which has become a primary trend in chip design. However, compared to on-chip wiring, the expensive inter-chiplet communication becomes a performance bottleneck for chiplet-based systems which limits the chip’s scalability. As the countermeasure, a novel scaling framework for chiplet-based CiM accelerators, SMCA (SMT-based CiM chiplet Acceleration) is proposed in this paper. This framework comprises an adaptive deep learning task partition strategy and an automated SMT-based workload deployment to generate the most energy-efficient DNN workload scheduling strategy with the minimum data transmission on chiplet-based deep learning accelerators, achieving effective improvement in system performance and efficiency. Experimental results show that compared to existing strategies, the SMCA-generated automatically schedule strategy can reduce the energy costs of inter-chiplet communication by 35%.
-
Key words:
- Chiplet /
- Deep learning processor /
- Computing-in-Memory (CiM) /
- Task dispatching
-
1. 引言
随着智能化技术的提高,深度学习模型的层数不断加深,结构更加复杂,对芯片的计算能力提出了更高的要求[1]。为了满足大模型时代的算力需求,传统单芯片上系统(System-on-Chip, SoC)通过提高集成度和扩大芯片面积的方式来提升算力。然而,随着摩尔定律的放缓,单芯SoC面临面积墙的限制。芯片制造面积接近极限。芯片面积增加导致制造成本提升、芯片良率下降[2,3]。随着可变电阻式随机存取存储器(Resistive Random Access Memory, ReRAM)和基于ReRAM的存算一体加速器[4,5]等新兴设备的出现,面积墙对芯片算力的制约更加明显。由于纳米级制造技术的不成熟和忆阻器的固有特性[6],随着芯片规模的扩大,ReRAM器件受到非理想因素的影响更加严重,严重阻碍了大规模深度学习模型的高效部署[7]。
随着算力需求大与芯片算力提升困难的矛盾日益凸显,国内外研究学者结合新型设计模式,将大规模芯片拆分成小规模芯粒(Chiplet),再通过有机衬底(organic substrates)[8]、2.5D硅中介基板(2.5D silicon interposers)[9]、硅桥(silicon bridges)[10]等方式将多个芯粒连接成完整的系统(System-in-Package, SiP),缩小了单个芯片的面积与规模。多芯粒集成的芯片(集成芯片)突破了单芯SoC的性能与能耗瓶颈,具有更强的灵活性和更低的芯片设计成本与制造成本。一方面,已知良好(Known Good Die, KGD)的芯粒可以在多种系统设计中重复利用,降低了芯片设计的周期与成本。另一方面,芯粒缩小了单个芯片的规模,避免了局部微小故障导致的整个芯片报废,提升了整个芯片的良率。
尽管集成芯片具有高灵活性、高可扩展和低成本等优点,但也存在一些亟需解决的问题。集成芯片引入了昂贵的芯粒间通信。相比于片上通信,芯粒间数据在基板层传输,传输带宽更低,延迟和能耗却更高[11]。深度学习任务计算密度高,当任务的计算需求超出单芯粒可提供的算力时,就需要多个芯粒协同完成计算。由于神经网络层与层之间存在数据依赖,在将网络映射到集成芯片上时,无论采用何种任务划分方法,都不可避免会产生芯粒间数据通信。文献[12]指出,芯粒间数据传输的能耗占据了系统总能耗的30%。随着神经网络规模不断增加,这种高开销的数据搬运成为制约多芯粒集成的深度学习系统性能的瓶颈。
为了解决上述问题,一些研究工作对传统基于CMOS的深度学习芯片做出了优化。Simba[13]设计了一个由36片芯粒集成的推理加速器,并提出了一种通信感知的数据映射方法来降低芯粒间数据传输开销。NN-Baton[14]提供了一个在集成芯片上部署深度神经网络(Deep Neural Network, DNN)的框架,较Simba实现了超过22%的能耗节省。与基于CMOS的传统处理器相比,基于ReRAM的深度学习加速器具有存内计算的优势。数据可以在ReRAM交叉阵列(crossbar)中并行计算。这种计算方式不仅可以提高数据处理的并行度,同时减少了数据在处理器与存储器之间的交换,提高了处理器的吞吐量和能量效率[15]。然而,深度学习应用在基于ReRAM的集成芯片的数据传输模式与传统CMOS芯片完全不同,给突破芯粒间通信瓶颈对芯片性能的制约提出了新的挑战,为扩展存算一体集成芯片的算力增加了难度。
第1个挑战是为基于存算一体集成芯片设计一种合理的深度学习计算任务适应性划分策略。在将神经网络推理任务映射到集成芯片上时,权重和数据存在多种划分方式,不同的划分方式将引发不同的并行计算行为,从而对处理器性能和功耗产生不同的影响。因此,需要设计一种芯片友好的深度神经网络计算负载划分策略,在充分利用存内计算提供的高计算并行度的同时,减少芯粒间的数据同步和通信开销。
第2个挑战是在将复杂深度学习计算任务划分成芯片友好的子任务后,为存算一体集成芯片找到一个最优的任务调度和映射方案。实际上,芯粒间的通信成本不仅取决于子任务之间的数据交换量,还受到部署子任务的芯粒间的物理距离以及通信链路的影响。因此,设计高可扩展的存算一体集成芯片需要一种考虑芯粒位置和封装布局的DNN调度方法,以有效降低传输能量消耗。
针对上述挑战,本文提出了面向多芯粒集成的存算一体加速器的自动化调度框架—SMCA。该框架通过优化任务调度,提升系统能效,进一步增强集成芯片的可扩展性。本文的主要贡献包括以下3个方面:
(1) 提出一种自适应集成芯片架构的任务划分方法,将深度神经网络划分为适合集成芯片架构的多个通信友好的子任务。充分考虑芯粒间通信的代价,为给定的网络模型和大规模多芯粒集成的存算一体深度学习系统生成芯片友好的任务划分方案。
(2) 提出基于可满足性模理论(Satisfiability Modulo Theories, SMT)的深度学习任务自动化映射策略。该策略充分考虑各网络层之间的数据依赖关系以及存算一体芯粒在封装内的物理位置和布局,为深度学习任务在多芯粒集成的存算一体加速器上生成最佳映射方案。
(3) 在7种典型的DNN应用上对SMCA框架进行评估。实验结果表明,SMCA能够在基于ReRAM的多芯粒集成加速器上找到最佳DNN调度方案,减少35%的芯粒间通信能耗,有效缓解复杂片间通信对集成芯片算力扩展的制约。
2. 研究背景和动机
2.1 存算一体深度学习计算
首先,以常用的卷积神经网络(Convolutional Neural Network, CNN)为例说明DNN的推理过程。CNN的核心运算是卷积核Wi与输入特征ai的矩阵向量乘(Matrix Vector Multiplication, MVM),通过卷积操作从输入特征图中提取特征并将特征向上层ai + 1传播,其计算过程可以表示为
ai + 1=Wiai (1) 近年来,ReRAM凭借其低读写延时、高存储密度的优点以及支持MVM运算的交叉阵列结构,被广泛用于加速深度神经网络应用[13,15]。图1显示了将卷积计算映射到ReRAM交叉阵列的一个示例。在每次卷积操作中,多维的卷积核在输入特征图上滑动执行MVM计算。输入特征图被展开成1维向量,并转换为ReRAM阵列的字线(Wordline, WL)上的电压V。卷积核参数则表示为ReRAM单元的电阻值G存储在交叉阵列中。根据欧姆定律和基尔霍夫定律,当一组输入电压V同时施加到ReRAM交叉阵列行时,V⋅G的MVM运算结果将在每根位线(Bitline, BL)以电路求和的方式自动计算完成。
2.2 多芯粒集成的芯片架构
与单片大芯片相比,集成芯片由多个小规模芯粒封装而成。这种设计模式一方面降低了芯片的制造成本,有效避免了大规模芯片面临的低良率问题,另一方面通过在封装中连接不同数量、不同大小的芯粒实现了芯片规模的扩大,大大降低设计成本,提升了芯片的灵活性。Intel公司提出的Ponte Vecchio芯片通过集成47个芯粒降低了芯片的制造成本[16]。COMB-MCM[17]通过在多芯粒模块(Multi-chiplet Modules, MCM)中集成不同数量的芯粒,设计了一个可以支持不同规模深度学习任务的可扩展系统。文献[18]提出了一种稀疏与密集型模式混合的深度学习芯片, 通过异构集成的方式显著提升了芯片的性能与能效。除此之外,AMD, ARM等公司也在积极推进基于芯粒的集成芯片研究工作[11]。
2.3 基于芯粒的存算一体加速器
随着摩尔定律的发展逐渐趋缓,传统冯·诺依曼架构的单芯大芯片受到面积墙和存储墙制约,遭遇算力和性能的瓶颈。在这一背景下,多芯粒集成的存算一体芯片成为打破芯片设计僵局的关键技术。文献[19]针对云端深度学习任务的巨大算力需求,设计了一款基于ReRAM的2.5D集成芯片。文献[5]考虑神经网络算法的计算不均匀性,设计了一款集成不同规模存算一体芯粒的加速器,提升了系统能效。为了评估存算一体集成芯片的性能,SIAM[12]设计了一款支持多种存算一体架构设计与网络模型的模拟器。复旦大学的研究团队探索了存算一体集成芯片在缓解带宽瓶颈的优势,通过存内压缩,设计了一款高能效大模型专用处理器[20]。目前已有的研究往往采用较为简单的通信模型,对芯粒间昂贵通信的优化不足。因此,本文致力于深入探索芯粒间通信的优化策略,为深度学习任务构建自动化任务调度和资源分配框架。
2.4 任务划分与调度研究
处理器的性能很大程度取决于任务和资源的调度。之前的研究人员通过优化数据流加速部署在多核处理器上的深度学习应用,提出了输入固定、权重固定、输出固定以及行固定等数据流来提升计算资源的利用率[21]。此外,为了减少片间通信开销,文献[22]探索了一种张量划分策略以减少在异构阵列上进行DNN训练的计算和通信成本。文献[11]针对深度学习集成芯片提出了一种自动化任务调度框架。然而,这些研究通常集中在传统冯诺依曼架构的CMOS加速器。在这些加速器中,数据在PE(Processing Element)阵列上进行计算,网络参数并不固定在PE阵列,而是在需要的时候从权重缓冲区中取出。此外,单个Chiplet集成的PE阵列有限,DNN计算往往需要时分复用计算单元。因此,在传统CMOS加速器中,多个网络层会被划分并映射到多个相同的Chiplet上以提升计算的并行度。Chiplet在不同的时间片依次执行不同网络层的一部分运算。所有Chiplet间都存在数据交互。而在基于ReRAM的加速器中,ReRAM具有存内计算能力,输入与固定在ReRAM阵列的权重值可以进行原位运算。此外,ReRAM交叉阵列具有高集成度和并行计算能力。因此,网络层的计算不需要时分复用计算资源。与传统冯·诺依曼架构的CMOS加速器不同,芯粒间数据的传输大多只来自部署相邻两层网络的Chiplet。考虑到ReRAM的高能效、高计算并行度,本文提出的SMCA框架考虑网络层间的数据传输关系与集成芯片架构,对基于ReRAM的存算一体集成芯片的芯粒间通信进行优化,进一步提升了处理器性能。
3. 多芯粒集成的存算一体芯片调度框架
3.1 SMCA工作流程
本节主要介绍面向多芯粒集成的存算一体智能芯片的调度框架SMCA。如图2所示,SMCA的输入包括深度学习负载的详细信息以及集成芯片的架构。SMCA由两个关键功能部件组成,包括网络划分引擎(Network Partition Engine, NPE)和负载映射引擎(Workload Mapping Engine, WME)。其中,NPE首先根据芯粒的计算能力以及网络层的计算需求,将每一层网络li的计算任务在逻辑上划分成若干个通信友好的子任务{ti0,ti1,⋯,tik}。划分完成后,WME模块根据层间数据依赖关系以及NPE生成的任务划分,搭建深度学习任务的计算图。接下来,WME模块通过分析计算图和集成芯片的硬件资源图,将划分好的子任务映射到集成芯片的分布式芯粒中。当逻辑上相互依赖、数据交换频繁的任务映射到多个芯粒上执行时,数据需要在芯粒间同步与通信。为了尽可能降低芯粒间数据通信的开销,WME基于可满足性模(SMT)理论,结合波前并行计算结构自动优化了DNN在存算一体集成芯片上的调度。
3.2 深度学习计算任务适应性划分策略
如图3所示,SMCA考虑的基于ReRAM的存算一体多芯粒集成处理器架构包括以下4个层次:封装(package)、芯粒、计算核(core)和集成了原位计算单元(In-situ Multiply-Accumulate Units, IMA)的ReRAM 交叉阵列。芯粒通过NoP(Network-on-Package)互连。具体来说,ReRAM交叉阵列的大小为128×128,每一个计算核包含16个交叉阵列。深度神经网络的矩阵乘运算在交叉阵列中进行,运算结果通过ADC转换成数字信号,并在移位累加单元进行累加。单个Chiplet包含16个计算核。DNN权重以阻值的形式存储在ReRAM交叉阵列上。当某一层的参数量超过了单个Chiplet上ReRAM交叉阵列的容量范围时,该参数需要映射到多个Chiplet上进行计算。芯粒内部的计算核间通过片上网络(Network-on-Chip, NoC)连接并进行数据交互。此外,芯粒内还集成了激活部件和池化部件以完成激活操作和池化操作。模型计算产生的部分和在Chiplet内通过累加器进行累加。芯粒间传输的数据主要来源于网络层间的中间特征图。每个Chiplet上集成了输入输出缓冲区,用来存放该Chiplet计算所需要的输入特征图以及存储该Chiplet计算完成的特征图。
当某一网络层的计算需求超过单个芯粒的处理能力时,该网络层需要被网络划分引擎(NPE)分割然后再映射到多个芯粒上并行计算。具体来说,NPE以网络层为单位逐层划分推理计算任务。在划分前,首先需要分析每一层网络的结构和属性,以确定其计算需求。假设一个卷积神经网络的卷积层的大小如
W=Kx×Ky×C×M (2) 其中,Kx,Ky表示卷积核的高和宽。C,M分别表示输入特征图和输出特征图的通道(channel)数。
映射该卷积层需要Nrow行,Ncol列大小的ReRAM交叉阵列。Nrow,Ncol可以由式(3)和式(4)计算得出。其中,XBx,XBy表示ReRAM交叉阵列的行数和列数。Nbit表示权重的精度。B表示单个ReRAM单元能保存的数据位数。
Nrow=⌈Kx×Ky×CXBx⌉ (3) Ncol=⌈M×NbitXBy×B⌉ (4) 式(5)和式(6)可以进一步计算出容纳该网络层共需要t个计算核和c个芯粒。其中,Tx,Ty分别表示每个计算核内ReRAM交叉阵列的行数和列数。n表示芯粒中计算核的个数。
t=⌈NrowTx⌉×⌈NcolTy⌉ (5) c=⌈tn⌉ (6) 假设卷积核按照输出通道的维度映射到芯粒上。如图4所示,当K个卷积核被均匀地划分成M个子任务并部署在M个芯粒上时,执行计算的每一个芯粒将并行计算出K/M个通道的激活值。计算出来的输出特征图将通过芯粒间通信链路传递给部署下一层网络计算任务的所有芯粒。为了提升单个芯粒上计算资源的利用率,SMCA允许将多个网络层映射到同一芯粒。
关于网络层的计算任务划分,NPE首先考虑了一种平均划分(Uniform Partition, UP)策略,将计算任务平均划分成多个子任务并映射到多个芯粒上,利用集成芯片的高并行计算能力提升任务的计算效率。如图4所示,将第i个网络层和第i+1个网络层的参数均匀划分并部署到M个芯粒上并行计算。在UP模式下,任意一个芯粒在完成第i层网络子任务的计算后,需要将中间计算结果通过NoP传递给其他M−1个参与计算的芯粒来执行下一层网络任务的计算。UP策略划分的子任务越多,芯粒间数据传输的复杂性与数据传输通路拥堵的可能性越大。
考虑到UP策略在实际应用中的执行效率并不十分理想,本文提出了通信感知的划分(Communication-Aware Partition, CAP)策略和匹配算力的划分(Capacity-Matched Partition, CMP)策略。其中,CAP充分考虑了神经网络层之间的数据交互,尽量将相邻网络层部署在同一芯粒上,从而将网络层间的数据交流控制在传输开销更小的芯粒内部。如图5所示,在映射完前一层网络li−1之后,li−1层映射的芯粒上可能存在空闲的计算核。CAP首先对li层的子任务进行划分以匹配前一层映射芯片的剩余的可用计算核。然后,根据芯粒的固定算力对li层剩余未划分的计算任务进行分割,从而增加了将连续两层网络的计算任务部署到同一芯粒上的可能性,减少了芯粒间数据传输的需求。与CAP策略不同,CMP策略在任务划分时优先考虑划分计算需求与整个芯粒的算力相匹配的子任务,从而充分利用芯粒上的全部计算资源。CMP方法相比UP和CAP减少了子任务的划分数量,降低了芯粒间数据交换的强度,进一步减少了芯粒间通信的能耗。
无论基于CAP还是基于CMP的任务划分,计算的中间数据都需要从前一层网络的映射芯粒传输到下一层网络的映射芯粒上。基于CAP的任务划分使得任务在集成芯片上全局稠密但局部稀疏。如果li−1层网络映射芯粒的空闲计算资源与当前网络层li的需求不匹配,CAP将导致资源碎片化,划分的子任务数增多,从而增加了数据交换的强度。此外,虽然CMP策略尽可能减少对任务的划分,但是在网络层的计算任务与芯粒算力不匹配的场景下,CMP策略将会导致计算资源分配不均,造成资源的浪费。
由于CAP与CMP这两种任务划分模式在加速器架构和模型结构不同的情况下各有优点,本文提出了一种自适应层级网络划分策略(Adaptive Layer-wise network Partition, ALP)以确保深度学习推理任务在存算一体集成芯片上的最优划分。ALP按照网络层顺序对计算任务进行划分。对于当前网络层的划分,ALP首先尝试将该层网络部署到与前一层网络相同的芯粒上,以降低相邻两层网络层间的数据传输开销。因此,ALP首先比较前一层网络部署的芯粒上的剩余计算资源Cidle与当前网络层的计算需求wi(算法1第5行)。如果Cidle≥wi,说明li层可以与li−1层网络部署在同一个芯粒上。在这种情况下,li层网络的计算任务不需要被划分(算法1第6行)。如果Cidle<wi,则首先判断采用CAP划分li层计算任务是否会导致子任务数量的增加(算法1第7行)。如果是,ALP选择采用CMP策略划分li层(算法1第8行),从而充分利用空闲芯粒的计算资源,并避免子任务数量增加导致的通信复杂度增加。反之,ALP采用CAP策略划分以增加li层与li−1层网络部署在同一个芯粒上的可能性(算法1第10行)。
表 1 自适应层级网络划分策略1: 输入:单个芯粒的固定算力M;网络l(l0,l1,⋯,lL−1)的算力
需求w(w0,w1,⋯,wL−1)。2: 输出:网络划分策略bestP。 3: Cidle=M; /*初始化Cidle*/ 4: for i=0,1,⋯,L−1 5: if Cidle≥wi then 6: bestP←NoPartition(i,wi); 7: else if ⌈wiM==wi−CidleM⌉ then 8: bestP←CMP(i,wi); 9: else 10: bestP←CAP(i,wi); 11: Update(Cidle) 3.3 基于SMT的深度学习负载映射策略
集成芯片的芯粒间通信开销不仅与任务划分有关,还与任务在芯片上的映射有关。然而,神经网络模型在多核处理器上的映射优化问题是一个NP难问题。因此,我们提出了一种基于可满足性模理论(SMT)的方法,利用SAT求解器(例如Z3 [23])自动优化DNN任务在集成芯片上的部署。SMT是一种用于解决复杂可满足性问题的先进技术。在SMCA中,负载映射引擎首先根据神经网络的层间依赖生成如图2所示的有向计算图。其中,图的每一个节点t表示一个子任务,节点间连接的边E代表任务之间的数据依赖关系,包含节点间需要同步或传输的数据量等信息。由n个同构芯粒组成的存算一体芯片可以表示为C={c1,c2,⋅⋅⋅,cn},其中ci表示第i个芯粒。芯粒间通过Mesh网络结构的NoP相连。深度学习任务在集成芯片上的最优化问题可以描述为找到映射M:T→C,使得芯粒间数据传输的能耗最小。我们将优化过程描述为由以下目标函数和约束条件组成的约束满足问题。表1中定义了目标与约束函数中用到的符号。
表 1 SMT约束中的符号表示符号 含义 T,E,C 计算任务集合,计算图中边的集合以及
芯片封装的芯粒集合t,c 计算任务t,芯粒c ei,j 计算图中,任务i到任务j的有向边 xc,yc 芯粒c在芯片上的(x,y)坐标 wt 任务t的计算需求 ot 任务t计算产生的中间数据量 st 任务t的开始执行时间 dt 完成任务t所有前置任务所需的芯粒间最小数据传输开销 τt 任务t的执行时间 swc 芯粒c所在的波前编号 dis(ci,cj) 芯粒i到芯粒j的距离 目标函数:最小化存算一体集成芯片的芯粒间数据传输的能耗,其中dtrans(ti,tj)指中间数据从任务ti所在芯粒传输给任务tj所在芯粒的能耗。
∀e{i,j}∈E,∀cl,ck∈C,∀ti,tj∈T,m(ti,ck)∧m(tj,cl)min (7) 其中,{d_{{\text{trans}}}}({t_i},{t_j}) = {o^i} \times {\text{dis}}({c_k},{c_l})。{{m}}(t,c) = 1表示任务t被映射到芯粒c上。反之,{{m}}(t,c) = 0。
约束C1:芯粒的实际位置约束:芯粒位置不能超过芯片封装范围。给定一个由m \times n个芯粒集成的深度学习芯片,任务映射的芯片的坐标x,y受到m和n的约束。
\forall c \in {{C}},1 \le {x^c} \le m;1 \le {y^c} \le n (8) 约束C2:任务的开始约束:所有任务的开始时间不早于零时刻并且完成任务的数据传输开销不小于零。
\forall t \in {{T}},0 \le {s^t},0 \le {d^t} (9) 约束C3:任务先决时间约束:如果两个任务之间存在数据依赖关系,当这两个任务被映射到同一个芯粒上时,后一个任务{t_j}应在其先决任务{t_i}完成计算任务后执行。如果两个任务映射到不同的芯粒上,任务{t_j}还需要等待收到从任务{t_i}传输的数据后才能开始执行。其中,{t_{{\text{trans}}}}({t_i},{t_j})指任务{t_i}计算完成后,计算结果传输给任务{t_j}的时间
\left. \begin{gathered} \forall {e_{\{ i,j\} }} \in {{E}},\forall {c_l},{c_k} \in {{C}},\forall {t_i},{t_j} \in {{T}} \\ {{m}}({t_i},{c_k}) \wedge {{m}}({t_j},{c_l}) \to {s^{{t_j}}} \ge {s^{{t_i}}} + {\tau ^{{t_i}}} + {t_{{\text{trans}}}}({t_i},{t_j}) \end{gathered} \right\} (10) 其中,如果 {c_k} = {c_l} , {t_{{\text{trans}}}}({t_i},{t_j}) = 0 。
约束C4:任务执行的累计开销约束:本约束描述了完成任务所需的芯粒间最小数据传输开销。
\left. \begin{gathered} \forall {e_{\{ i,j\} }} \in {{E}},\forall {c_l},{c_k} \in {{C}},\forall {t_i},{t_j} \in {{T}} \\ {{m}}({t_i},{c_k}) \wedge {{m}}({t_j},{c_l}) \to {d^{{t_j}}} \ge {d^{{t_i}}} + {d_{{\text{trans}}}}({t_i},{t_j}) \end{gathered} \right\} (11) 如果 {c_k} = {c_l} , {d_{{\text{trans}}}}({t_i},{t_j}) = 0 。
约束C5:芯粒计算能力约束。部署在同一芯粒上的任务的总计算需求不能超过单芯粒的计算能力W。
\forall c \in {{C}},t \in {{T}},{\text{if }}m(t,c) = 1,\sum {{w^t}} \le W (12) 约束C6:波前并行约束。波前并行是一种常用的并行计算结构 [24]。在波前并行结构中,数据流被组织成一系列连续的波前,每一个波前的任务同步并行执行,并将计算结果传给下一个阶段的波前,从而实现任务的并行化和流水化执行。利用波前并行结构可以有效地缩小最优化映射问题的求解空间。
\left. \begin{gathered} \forall {e_{\{ i,j\} }} \in {{E}},\forall {c_l},{c_k} \in {{C}},\forall {t_i},{t_j} \in {{T}} \\ {{m}}({t_i},{c_k}) \wedge {{m}}({t_j},{c_l}) \to {x^l} + {y^l} \ge 2 \times {\text{s}}{{\text{w}}^k} \end{gathered} \right\} (13) 在上述条件C1—C6的约束下,将SMT问题输入到求解器中,SMCA可以自动生成适应存算一体集成芯片的最优DNN资源调度方案。此外,SMCA可以结合贪心策略,依次对一个或多个子任务进行部署,从而降低复杂网络在大规模集成芯片上的调度映射时间。
4. 实验评估
4.1 实验设置
表2显示了本文模拟的基于ReRAM的多芯粒集成的加速器配置。芯粒以2D Mesh结构连接。芯粒间的通信遵循X-Y路由算法。通过将文献[4]中的存算一体阵列从32 nm缩放到16 nm,模拟了存算一体阵列的能耗与延迟。通信开销由Booksim 2.0模拟器模拟。测试的深度学习应用负载包括7个代表性的神经网络: NIN, VGG11, VGG16, ResNet18, ResNet34, ResNet50以及ResNet152。网络的全部卷积层映射在Chiplet上的ReRAM阵列中。数据集是ImageNet。
表 2 系统配置架构层次 属性 参数 封装 频率 1.8 GHz 芯粒间互联网络带宽 100 Gb/s 芯粒间通信能耗 1.75 p/bit 芯粒 工艺制程 16 nm 单个芯粒包含的计算核个数 16 单个计算核包含的ReRAM交叉
阵列个数16 计算核
ReRAM交叉阵列大小 128 \times 128 ADC 1 bit DAC 8 bit 一个ReRAM单元存储的位数 2 权重精度 8 bit 数据流 权重固定型 4.2 实验结果与分析
为了验证SMCA对优化深度学习任务在集成芯片上通信开销的有效性,本文将以下调度方式作为基准并进行了比较:(1) SM(Sequent Mapping, SM),与SIAM[12]相同,SM首先将大规模网络层均匀地分割成多个子任务。划分完成后,SM将子任务依次映射到芯粒上。(2) 均匀映射(Uniform Mapping, UM),网络层在Chiplets上均匀地划分,并采用本文提出的基于SMT的网络映射方式来优化应用负载在芯粒上的映射。(3) 通信感知的网络映射方式(Communication-aware Network Mapping, CAM),使用3.2节提出的CAP策略划分网络层,并采用基于SMT的网络映射。
图6和图7显示了不同调度策略在部署不同深度学习应用的集成芯片上的NoP能耗与时延比较。其中,S表示5×5的芯粒集成芯片;M表示6×6的芯粒集成芯片;L表示10×10的芯粒集成芯片;V表示VGG网络;R表示ResNet网络;AVG表示平均值。显然,SMCA在性能上显著优于其他3个基准,平均在所有应用负载上降低了35%的NoP能耗,节省了18%的芯粒间数据通信时间。这主要是因为SM对芯粒间通信距离对通信开销的影响考虑不足,无法避免远距离芯粒之间的数据通信,从而导致NoP成为系统的主要性能瓶颈。此外,正如在3.2节中讨论的那样,计算感知的映射方法并不总是最优的,因为存在数据依赖关系的两个网络层被映射到同一芯粒的可能性不高,这种划分方式反而会导致任务的碎片化划分,增加了芯粒间数据传输的复杂度。SMCA充分考虑了网络层间的数据依赖关系和芯粒间距离对传输开销的影响。即使UM, CAM和SMCA都使用了本文提出的基于SMT的网络映射策略,SMCA由于其自适应的层间划分方法,在性能上仍然显著优于其他策略。此外,SMCA在ResNet18, VGG16, ResNet34以及ResNet50上测试的集成芯片架构相同,分别实现了25%, 26%, 39%, 41%的NoP能耗提升。而在ResNet152网络中,SMCA实现了53%的能耗降低。这一结果表明,随着模型规模的增大,SMCA在能效提升方面的表现越来越显著,进一步证明了SMCA应用在处理大型深度学习模型的存算一体集成芯片的潜力和可扩展性。
为了探究SMCA框架的可扩展性,本文考虑了不同规模的集成芯片,在包含36, 49, 64, 81, 100, 121, 144个Chiplet的集成芯片上模拟部署了ResNet50网络,并测试了SMCA框架的性能。实验结果如图8所示。与SM相比,SMCA框架平均降低了37%的芯粒间数据传输能耗。通过计算任务的适应性划分与负载优化映射,随着集成芯片中Chiplet数量的增加,SMCA框架的性能提升逐渐明显。在由144个Chiplet的集成芯片上,SMCA实现了42%的NoP能耗节省。其次,通过模拟集成不同规模芯粒的集成芯片,进一步考虑了不同规模的芯粒对SMCA框架可扩展性的影响。如图8所示, SMCA框架能够灵活地适应不同规模的芯粒,并在不同配置下保持高效的性能,这进一步验证了SMCA的可扩展性和适应性。
SMCA框架的核心设计思想是通过优化任务划分、数据布局,提升集成芯片的能效。这种设计思想并不依赖于特定的硬件平台或技术。虽然SMCA框架在基于ReRAM的存算一体集成芯片上进行了实验验证,但其设计原理和实现方式并不局限于特定硬件类型,具有广泛的通用性,可以支持其他类型的存算一体硬件平台。
5. 结论
芯粒集成技术与存算一体技术突破了传统超大规模集成电路与高性能处理器面临的面积墙与存储器瓶颈,具有显著的能效、成本与扩展性优势。然而,高开销的芯粒间通信已经成为制约集成芯片性能的瓶颈。本文提出了一种面向存算一体集成芯片的深度神经网络自动化调度框架SMCA。SMCA首先利用自适应网络划分方法,将神经网络计算任务划分成规模小、通信友好的子任务。然后,通过基于SMT的计算任务自动化映射机制,优化计算任务在集成芯片上的部署。实验结果证明, SMCA能够在基于ReRAM的多芯粒集成的芯片上生成最佳的深度学习计算任务调度方案,与现有的调度策略相比减少了约35%的NoP能耗。
-
1 自适应层级网络划分策略
1: 输入:单个芯粒的固定算力M;网络l({l_0},{l_1}, \cdots,{l_{L - 1}}) 的算力
需求w({w_0},{w_1}, \cdots ,{w_{L - 1}}) 。2: 输出:网络划分策略bestP。 3: {C_{{\text{idle}}}}{{ = M}} ; /*初始化{C_{{\text{idle}}}} */ 4: for i = 0,1, \cdots ,L - 1 5: if {C_{{\text{idle}}}} \ge {w_i} then 6: {\text{bestP}} \leftarrow {\text{NoPartition}}(i{\text{,}}{w_i}) ; 7: else if \left\lceil {\dfrac{{{w_i}}}{{{M}}} = = \dfrac{{{w_i} - {C_{{\text{idle}}}}}}{{{M}}}} \right\rceil then 8: {\text{bestP}} \leftarrow {\text{CMP}}(i{\text{,}}{w_i}) ; 9: else 10: {\text{bestP}} \leftarrow {\text{CAP}}(i{\text{,}}{w_i}) ; 11: Update({C_{{\text{idle}}}} ) 表 1 SMT约束中的符号表示
符号 含义 {T},{E},{C} 计算任务集合,计算图中边的集合以及
芯片封装的芯粒集合t,c 计算任务 t ,芯粒 c {e}_{i,j} 计算图中,任务 i 到任务 j 的有向边 {x}^{c},\;{y}^{c} 芯粒 c 在芯片上的 \left(x,y\right) 坐标 {w}^{t} 任务 t 的计算需求 {o}^{t} 任务 t 计算产生的中间数据量 {s}^{t} 任务 t 的开始执行时间 {d}^{t} 完成任务t所有前置任务所需的芯粒间最小数据传输开销 {\tau }^{t} 任务 t 的执行时间 \mathrm{s}{\mathrm{w}}^{c} 芯粒 c 所在的波前编号 \mathrm{d}\mathrm{i}\mathrm{s}({c}_{i},{c}_{j}) 芯粒 i 到芯粒 j 的距离 表 2 系统配置
架构层次 属性 参数 封装 频率 1.8 GHz 芯粒间互联网络带宽 100 Gb/s 芯粒间通信能耗 1.75 p/bit 芯粒 工艺制程 16 nm 单个芯粒包含的计算核个数 16 单个计算核包含的ReRAM交叉
阵列个数16 计算核
ReRAM交叉阵列大小 128 \times 128 ADC 1 bit DAC 8 bit 一个ReRAM单元存储的位数 2 权重精度 8 bit 数据流 权重固定型 -
[1] THOMPSON N C, GREENEWALD K, LEE K, et al. The computational limits of deep learning[EB/OL]. https://arxiv.org/abs/2007.05558, 2022. [2] HAN Yinhe, XU Haobo, LU Meixuan, et al. The big chip: Challenge, model and architecture[J]. Fundamental Research, 2023. doi: 10.1016/j.fmre.2023.10.020. [3] FENG Yinxiao and MA Kaisheng. Chiplet actuary: A quantitative cost model and multi-chiplet architecture exploration[C]. The 59th ACM/IEEE Design Automation Conference, San Francisco, USA, 2022: 121–126. doi: 10.1145/3489517.35304. [4] SHAFIEE A, NAG A, MURALIMANOHAR N, et al. ISAAC: A convolutional neural network accelerator with in-situ analog arithmetic in crossbars[C]. 2016 ACM/IEEE 43rd Annual International Symposium on Computer Architecture, Seoul, the Republic of Korea, 2016: 14–26. doi: 10.1109/ISCA.2016.12. [5] KRISHNAN G, GOKSOY A A, MANDAL S K, et al. Big-little chiplets for in-memory acceleration of DNNs: A scalable heterogeneous architecture[C]. 2022 IEEE/ACM International Conference on Computer Aided Design, San Diego, USA, 2022: 1–9. [6] LI Wen, WANG Ying, LI Huawei, et al. RRAMedy: Protecting ReRAM-based neural network from permanent and soft faults during its lifetime[C]. 2019 IEEE 37th International Conference on Computer Design (ICCD), Abu Dhabi, United Arab Emirates, 2019: 91–99. doi: 10.1109/ICCD46524.2019.00020. [7] AKINAGA H and SHIMA H. ReRAM technology; challenges and prospects[J]. IEICE Electronics Express, 2012, 9(8): 795–807. doi: 10.1587/elex.9.795. [8] IYER S S. Heterogeneous integration for performance and scaling[J]. IEEE Transactions on Components, Packaging and Manufacturing Technology, 2016, 6(7): 973–982. doi: 10.1109/TCPMT.2015.2511626. [9] SABAN K. Xilinx stacked silicon interconnect technology delivers breakthrough FPGA capacity, bandwidth, and power efficiency[R]. Virtex-7 FPGAs, 2011. [10] WADE M, ANDERSON E, ARDALAN S, et al. TeraPHY: A chiplet technology for low-power, high-bandwidth in-package optical I/O[J]. IEEE Micro, 2020, 40(2): 63–71. doi: 10.1109/MM.2020.2976067. [11] 王梦迪, 王颖, 刘成, 等. Puzzle: 面向深度学习集成芯片的可扩展框架[J]. 计算机研究与发展, 2023, 60(6): 1216–1231. doi: 10.7544/issn1000-1239.202330059.WANG Mengdi, WANG Ying, LIU Cheng, et al. Puzzle: A scalable framework for deep learning integrated chips[J]. Journal of Computer Research and Development, 2023, 60(6): 1216–1231. doi: 10.7544/issn1000-1239.202330059. [12] KRISHNAN G, MANDAL S K, PANNALA M, et al. SIAM: Chiplet-based scalable in-memory acceleration with mesh for deep neural networks[J]. ACM Transactions on Embedded Computing Systems (TECS), 2021, 20(5s): 68. doi: 10.1145/3476999. [13] SHAO Y S, CEMONS J, VENKATESAN R, et al. Simba: Scaling deep-learning inference with chiplet-based architecture[J]. Communications of the ACM, 2021, 64(6): 107–116. doi: 10.1145/3460227. [14] TAN Zhanhong, CAI Hongyu, DONG Runpei, et al. NN-Baton: DNN workload orchestration and chiplet granularity exploration for multichip accelerators[C]. 2021 ACM/IEEE 48th Annual International Symposium on Computer Architecture (ISCA), Valencia, Spain, 2021: 1013–1026. doi: 10.1109/ISCA52012.2021.00083. [15] LI Wanqian, HAN Yinhe, and CHEN Xiaoming. Mathematical framework for optimizing crossbar allocation for ReRAM-based CNN accelerators[J]. ACM Transactions on Design Automation of Electronic Systems, 2024, 29(1): 21. doi: 10.1145/3631523. [16] GOMES W, KOKER A, STOVER P, et al. Ponte vecchio: A multi-tile 3D stacked processor for exascale computing[C]. 2022 IEEE International Solid-State Circuits Conference (ISSCC), San Francisco, USA, 2022: 42–44, doi: 10.1109/ISSCC42614.2022.9731673. [17] ZHU Haozhe, JIAO Bo, ZHANG Jinshan, et al. COMB-MCM: Computing-on-memory-boundary NN processor with bipolar bitwise sparsity optimization for scalable multi-chiplet-module edge machine learning[C]. 2022 IEEE International Solid-State Circuits Conference (ISSCC), San Francisco, USA, 2022: 1–3. doi: 10.1109/ISSCC42614.2022.9731657. [18] HWANG R, KIM T, KWON Y, et al. Centaur: A chiplet-based, hybrid sparse-dense accelerator for personalized recommendations[C]. 2020 ACM/IEEE 47th Annual International Symposium on Computer Architecture (ISCA), Valencia, Spain, 2020: 968–981. doi: 10.1109/ISCA45697.2020.00083. [19] SHARMA H, MANDAL S K, DOPPA J R, et al. SWAP: A server-scale communication-aware chiplet-based manycore PIM accelerator[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2022, 41(11): 4145–4156. doi: 10.1109/TCAD.2022.3197500. [20] 何斯琪, 穆琛, 陈迟晓. 基于存算一体集成芯片的大语言模型专用硬件架构[J]. 中兴通讯技术, 2024, 30(2): 37–42. doi: 10.12142/ZTETJ.202402006.HE Siqi, MU Chen, and CHEN Chixiao. Large language model specific hardware architecture based on integrated compute-in-memory chips[J]. ZTE Technology Journal, 2024, 30(2): 37–42. doi: 10.12142/ZTETJ.202402006. [21] CHEN Yiran, XIE Yuan, SONG Linghao, et al. A survey of accelerator architectures for deep neural networks[J]. Engineering, 2020, 6(3): 264–274. doi: 10.1016/j.eng.2020.01.007. [22] SONG Linghao, CHEN Fan, ZHUO Youwei, et al. AccPar: Tensor partitioning for heterogeneous deep learning accelerators[C]. 2020 IEEE International Symposium on High Performance Computer Architecture (HPCA), San Diego, USA, 2020: 342–355. doi: 10.1109/HPCA47549.2020.00036. [23] DE MOURA L and BJØRNER N. Z3: An efficient SMT solver[C]. The 14th International Conference on Tools and Algorithms for the Construction and Analysis of Systems, Budapest, Hungary, 2008: 337–340. doi: 10.1007/978-3-540-78800-3_24. [24] PAPAIOANNOU G I, KOZIRI M, LOUKOPOULOS T, et al. On combining wavefront and tile parallelism with a novel GPU-friendly fast search[J]. Electronics, 2023, 12(10): 2223. doi: 10.3390/electronics12102223. -