一种针对ReRAM的神经网络加速器转让专利

申请号 : CN202310049117.8

文献号 : CN115965067B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 景乃峰伍骏董光达熊大鹏李涛

申请人 : 苏州亿铸智能科技有限公司

摘要 :

本发明公开了一种基于ReRAM的神经网络加速器,属于神经网络加速器设计领域,其加速器包括ReRAM原位计算阵列、输入寄存器、累加缓存器、向量逻辑单元、全局缓存器、计算控制单元和特征数据读写DMA;所述输入寄存器和累加缓存器连接ReRAM原位计算阵列。本发明采用一种新颖的神经网络权重的映射方法用于神经网络的推理计算,并采用高效的直接存储器访问和灵活的数据摆放格式,在提高数据流和计算流并行度的同时,解决了推理过程中数据阻塞的问题,提升架构的数据吞吐率。

权利要求 :

1.一种基于ReRAM的神经网络加速器,其特征在于,包括ReRAM原位计算阵列、输入寄存器、累加缓存器、向量逻辑单元、全局缓存器、计算控制单元和特征数据读写DMA;所述输入寄存器和累加缓存器连接ReRAM原位计算阵列;

所述ReRAM原位计算阵列的计算单元组织形式采用交叉电路布局,每个字线和位线的交叉点均为一个映射多比特数据的ReRAM器件;ReRAM原位计算阵列包含多组计算Array,每组Array包含列方向上的多个Bank ReRAM计算单元;

所述输入寄存器为计算流程中输入特征图和阵列计算之间的连接桥,用于数据缓存、布局转换和数据分发;

所述累加缓存器用于缓存和累加ReRAM原位计算阵列输出的部分和数据;

所述向量逻辑单元用于根据神经网络层的需要进行对应的激活函数计算和网络池化计算;

所述全局缓存器的输入端连接向量逻辑单元,全局缓存器的输出端连接输入寄存器;

用于缓存神经网络层间的中间数据;

所述计算控制单元用于管理片上数据存取、搬运和计算全过程;

所述特征数据读写DMA用于对特征数据进行搬运。

2. 根据权利要求1所述的一种基于ReRAM的神经网络加速器,其特征在于,所述ReRAM原位计算阵列在进行权重映射算法时,以Bank作为第一优先级,以Bank Row方向作为第二优先级,并将每个权重数据按照比特位以由高到低或由低到高的特定顺序规则排列在ReRAM原位计算阵列的交叉电路中。

3.根据权利要求1所述的一种基于ReRAM的神经网络加速器,其特征在于,所述ReRAM原位计算阵列的位线逻辑底端连接有输出寄存器和加法器单元,用于进行多位线数据间的累加计算。

4.根据权利要求1所述的一种基于ReRAM的神经网络加速器,其特征在于,所述ReRAM原位计算阵列的每个计算单元之间通过NoC相互连接。

5.根据权利要求1所述的一种基于ReRAM的神经网络加速器,其特征在于,所述输入寄存器在进行布局转换时,根据输入特征数据的需要在iReg中进行数据布局的调整,将各输入通道上的切片数据重新调整布局使其与存储在ReRAM原位计算阵列中的权重数据的计算位置相符。

6.根据权利要求1所述的一种基于ReRAM的神经网络加速器,其特征在于,所述全局缓存器的缓存方式为乒乓缓存。

7.根据权利要求1所述的一种基于ReRAM的神经网络加速器,其特征在于,所述计算控制单元的计算过程为:首先,卷积核在输入特征上的滑动被分为三个方向,分别是沿W方向、IC方向以及H方向;然后在计算过程中,滑动窗口先沿着W方向执行完毕后,再沿着IC方向滑动,最后沿着H方向滑动;每次卷积滑动窗口计算完毕后,对应的输入数据要发送到累加缓存器的相同位置中,这一过程中,计算控制单元计算得到阵列的输出地址,并控制数据的发送过程;当卷积核滑动完成且累加缓存的计算完成后,控制单元将输出结果依次送到向量逻辑单元中执行向量操作,并把结果存储到全局缓存器中。

8.根据权利要求1所述的一种基于ReRAM的神经网络加速器,其特征在于,所述特征数据读写DMA包括RDMA和WDMA;所述RDMA用于并行从多个Bank上搬运多笔数据到输入寄存器,保证输入寄存器处于满负荷状态工作;所述WDMA用于将计算好的数据从向量逻辑单元的buffer中的结果搬运到全局缓存器中。

说明书 :

一种针对ReRAM的神经网络加速器

技术领域

[0001] 本发明涉及神经网络加速器设计领域,尤其涉及一种基于ReRAM的神经网络加速器。

背景技术

[0002] 随着数据规模的飞速增长,存算密集型的神经网络应用对硬件算力和数据存储容量的需求也相应增大。为了突破传统冯诺依曼架构中计算存储分离造成的访存带宽瓶颈,越来越多的研究开始关注高密度的存算一体计算架构,以期通过将计算和存储紧密耦合,减少由于数据在存储部件和计算部件间频繁搬运而额外增加的访存能耗和带宽需求,从而最大化硬件架构的能效比。
[0003] 新兴的非易失性存储器——阻变存储器(ReRAM)利用电导值进行存储,通过欧姆定律组织乘法累加计算,形成了传统存储器不具备的原位计算功能。传统的加速对基于冯·诺伊曼体系结构,需要同时搬运Weight与Feature才能进行计算。而基于ReRAM的神经网络加速器将输入向量转变成电压施加在RRAM的字线(Word‑line)上,再将另一个权重输入预先映射为ReRAM各个单元的电导,利用位线(Bit‑line)上的累积电流表征为两个向量的数量积,实现原位存内处理,大大减缓数据带宽压力以提高性能。
[0004] 现阶段,主流存算一体加速器常采用层次化的拓扑结构,电路被自顶而下划分成不同规模的功能模块。架构中最小粒度计算模块为ReRAM交叉阵列与算术逻辑单元,基本单元组合形成上层运算模块,上层模块间仍可以相互组合,以此类推直至架构顶层。根据模块的调度和驱动方式,现有的加速器体系可以分成两类:数据流驱动型和指令流驱动型。
[0005] 数据流驱动型结构指在计算执行过程中,各功能模块的数据存取和交互均由状态机控制完成,过程无指令干涉。神经网络推理中,一旦网络的结构和权重确定,整个运算中数据的规模和执行模式也随之确定。数据流驱动型存算一体结构正是瞄准这一特性,在执行前将网络层的结构、连接关系以及权重值映射到对应的功能阵列上,通过执行时输入输出控制,即可实现网络推理过程。此类结构中,典型的加速器有ISAAC,PRIME等。
[0006] 目前业界主流的加速器结构也存在问题:1.权重映射算法模式较为单一固定,灵活度较差;2.现有的计算架构在进行网络推理过程中,常出现数据流的阻塞情况。

发明内容

[0007] 本发明的目的在于克服现有技术的不足,提出一种基于ReRAM的神经网络加速器。
[0008] 本发明的目的是通过以下技术方案来实现的:
[0009] 一种基于ReRAM的神经网络加速器,包括ReRAM原位计算阵列、输入寄存器、累加缓存器、向量逻辑单元、全局缓存器、计算控制单元和特征数据读写DMA;所述输入寄存器和累加缓存器连接ReRAM原位计算阵列;
[0010] 所述ReRAM原位计算阵列的计算单元组织形式采用交叉电路布局,每个字线和位线的交叉点均为一个映射多比特数据的ReRAM器件;ReRAM原位计算阵列包含多组计算Array,每组Array包含列方向上的多个Bank ReRAM计算单元;
[0011] 所述输入寄存器为计算流程中输入特征图和阵列计算之间的连接桥,用于数据缓存、布局转换和数据分发;
[0012] 所述累加缓存器用于缓存和累加ReRAM原位计算阵列输出的部分和数据;
[0013] 所述向量逻辑单元用于根据神经网络层的需要进行对应的激活函数计算和网络池化计算;
[0014] 所述全局缓存器的输入端连接向量逻辑单元,全局缓存器的输出端连接输入寄存器;用于缓存神经网络层间的中间数据;
[0015] 所述计算控制单元用于管理片上数据存取、搬运和计算全过程;
[0016] 所述特征数据读写DMA用于对特征数据进行搬运。
[0017] 进一步的,所述ReRAM原位计算阵列在进行权重映射算法时,以Bank作为第一优先级,以Bank Row方向作为第二优先级,并将每个权重数据按照比特位以由高到低或由低到高的特定顺序规则排列在ReRAM原位计算阵列的交叉电路中。
[0018] 进一步的,所述ReRAM原位计算阵列的位线逻辑底端连接有输出寄存器和加法器单元,用于进行多位线数据间的累加计算。
[0019] 进一步的,所述ReRAM原位计算阵列的每个计算单元之间通过NoC相互连接。
[0020] 进一步的,所述输入寄存器在进行布局转换时,根据输入特征数据的需要在iReg中进行数据布局的调整,将各输入通道上的切片数据重新调整布局使其与存储在ReRAM原位计算阵列中的权重数据的计算位置相符。
[0021] 进一步的,所述全局缓存器的缓存方式为乒乓缓存。
[0022] 进一步的,所述计算控制单元的计算过程为:首先,卷积核在输入特征上的滑动被分为三个方向,分别是沿W方向、IC方向以及H方向;然后在计算过程中,滑动窗口先沿着W方向执行完毕后,再沿着IC方向滑动,最后沿着H方向滑动;每次卷积滑动窗口计算完毕后,对应的输入数据要发送到累加缓存器的相同位置中,这一过程中,计算控制单元计算得到阵列的输出地址,并控制数据的发送过程;当卷积核滑动完成且累加缓存的计算完成后,控制单元将输出结果依次送到向量逻辑单元中执行向量操作,并把结果存储到全局缓存器中。
[0023] 进一步的,所述特征数据读写DMA包括RDMA和WDMA;所述RDMA用于并行从多个Bank上搬运多笔数据到输入寄存器,保证输入寄存器处于满负荷状态工作;所述WDMA用于将计算好的数据从向量逻辑单元的buffer中的结果搬运到全局缓存器中。
[0024] 本发明的有益效果:本发明提出的新型ReRAM存算一体神经网络加速器结构,极大程度上挖掘了卷积和矩阵乘法计算的并行性。不同于传统的神经网络映射算法,新型的权重映射算法以ReRAM阵列的Bank作为第一优先级,以Bank Row方向作为第二优先级,并将每个权重数据按照比特位以由高到低或由低到高的特定顺序规则排列在计算阵列的交叉电路中。基于上述算法,架构中采用多阵列多Bank的ReRAM计算单元模式,通过高效的数据搬运和布局重整模块,对输入特征图执行高并行度的矩阵乘法计算。输出结果通过累加后进行无阻塞的激活和池化操作,极大程度上提高了网络推理流水线的吞吐效率。

附图说明

[0025] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
[0026] 图1是本发明的加速器架构模块设计图。
[0027] 图2是计算控制单元的控制模式示意图。
[0028] 图3是一种典型的卷积执行模式示意。
[0029] 图4是Resnet50中卷积权重映射示例图。

具体实施方式

[0030] 应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0031] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0032] 在本实施例中,一种基于ReRAM的神经网络加速器,整体架构有以下模块构成:
[0033] (1)ReRAM原位计算阵列;
[0034] (2)输入寄存器;
[0035] (3)面向阵列输出的累加缓存器;
[0036] (4)面向激活、池化等操作的向量逻辑单元;
[0037] (5)面向网络层间结果存储的全局缓存器;
[0038] (6)计算控制单元;
[0039] (7)特征数据读写的DMA(RDMA/WDMA)。
[0040] 如图1所示,给出了具体的模块设计和连接表示的示意。架构各模块间通过NoC互联,支持灵活的数据流以面向不同权重映射方式。
[0041] (1)ReRAM原位计算阵列是本加速器架构设计中最重要的核心模块之一,与传统的ReRAM神经网络加速器中计算阵列不同,本架构的计算阵列不仅支持传统的神经网络权重摆放方式,还对一种新的权重映射算法进行了对应优化。ReRAM加速器领域里,卷积计算的权重映射模式基于卷积核的展开来实现。以一个(O,I,H,W)的卷积核为例,O、I为卷积核输出通道和输入通道大小,H、W为卷积核的高度和宽度。卷积核展开时,不同输出通道的卷积核按照一定顺序展开为I*H*W的向量数据,便可得到O列这样形状的展开向量,以映射到交叉电路不同行列中。这样以来,卷积计算被转换为矩阵乘法计算,通过原位计算阵列即可实现计算过程的加速。
[0042] 由此一种新型的映射算法,以ReRAM阵列的Bank作为第一优先级,充分利用了Bank间的并行性,以放置更多的卷积输入通道;映射算法以Bank Row方向作为第二优先级,在卷积输出通道这一维度,将不同通道的卷积核摆放置不同的Bank Row位置上,直到完成所有输入和输出通道的数据映射要求。同时,每个权重数据按照比特位由高到低或由低到高的特定顺序规则排列在计算阵列的交叉电路中,以保证计算流和数据累加过程的正确性。以上述形状为(O,I,H,W)的卷积核为例,首先一个卷积核先沿着输入通道维度进行展开,该维度上的每个(H,W)的数据切片被转换为尺寸为H*W的向量数据,不同输入通道的向量被放置在不同的Bank上。其次,沿着输出通道,卷积核的数据按照上述展开方案被映射到阵列Bank Row方向,相邻卷积核中对应位置的数据被放置在相邻Bank Row上。
[0043] 本架构中ReRAM计算阵列模块设计基于上述映射算法原理,进行了结构和规模上的适配以满足映射算法需要。单ReRAM计算单元来看,计算单元组织形式采用传统交叉电路布局,每个字线和位线的交叉点均为一个映射多比特数据的ReRAM器件;每条位线的逻辑底端连接有输出寄存器和加法器单元,用于进行多位线数据间的累加计算。整体布局上,原位计算阵列包含多组计算Array,每组Array包含列方向上的多个Bank ReRAM计算单元,典型值如128 Bank。单元间通过NoC相互连接。该设计利用大规模并行化的Bank结构提升了卷积计算流在输入维度上的并行计算能力,也通过双Array的阵列规模也提高了对大规模卷积核的部署能力和通用性。
[0044] (2)输入寄存器是计算流程中输入特征图和阵列计算之间的连接桥,起到数据缓存、布局转换和数据分发的作用。其中,布局转换是其中最重要的一项功能。本发明中提出的映射算法,将卷积计算中的卷积核按输入通道维度展开,每个展开后向量需要和对应的输入特征数据进行乘累加计算。因此输入特征数据的需要在iReg中进行数据布局的调整,将各输入通道上的切片数据重新调整布局使其与存储在ReRAM阵列中的权重数据的计算位置相符。
[0045] 具体原理为:地址生成模块会根据卷积层的输入数据、卷积核尺寸、padding、stride等信息,计算出卷积流程中数据的源地址和目标地址,并从全局缓冲器的源地址中取数发送到输入寄存器的目标地址上,完成数据布局的对应转换。
[0046] (3)累加缓存器通过NoC模块与ReRAM计算阵列连接,主要负责缓存和累加计算阵列输出的部分和数据。“部分和”数据(Partial‑sum),指阵列的输出数据只是实际输出数据的一部分,真实数据需要全部的“部分和”数据累加后得到。
[0047] 实际的神经网络部署和推理过程中,由于加速器所采用的映射算法的特性,卷积核的输入通道尺度上的数据被分散在不同Bank上,再加上卷积核的输入通道切片或权重矩阵的数据大小会超出单个ReRAM计算单元容量,需要多个ReRAM计算单元负责同一块数据,因此每个ReRAM阵列的计算输出往往是需要累加的部分和结果。
[0048] 输出特征图上同一位置的部分和数据,会经由NoC转发,从不同的ReRAM计算阵列的输出端口存储至累加缓存器的同一地址位置。累加缓存器结构设计中包含128 Bank,每Bank容量为2KB,最多容纳512个32位浮点或定点数据,总体容量为256KB。理想情况下,一个Bank只负责存放输出特征图的一个输入通道切片的数据,若输出特征图较大,则需要采用多个Bank存放一个通道切片数据。
[0049] (4)向量逻辑单元在神经网络流水线中负责执行输出数据的激活、池化等向量操作,位于全局缓冲器之后。
[0050] 累加缓存器完成部分和的累加操作后,将结果发送到向量单元中。向量单元根据神经网络层的需要进行对应的激活函数计算和网络池化计算。
[0051] (5)全局缓存器用于缓存神经网络层间的中间数据,采用乒乓缓存的设计,容量大小共4MB。全局缓存的输入端连接到向量单元上,输出端与输入寄存器相连。全局缓存设计逻辑上包含两组缓存区,第一组缓存区负责放置当前网络层的输入特征数据,后一组放置网络层的输出数据。当输入特征数据不再使用后,全局缓存会把该数据清除,数据随之进行移位填充该数据位置,为网络层输出提供额外空间。
[0052] 在推理计算过程中,DMA单元首先会从DRAM上获取输入特征图,放置在网络输入的缓冲区。每次卷积计算过程中,全局缓存会执行乒乓操作,移位数据,并缓存新的网络输出数据,等该神经网络层的计算执行完毕后,缓冲区内只剩下输出特征数据,这些数据会被当作下一层网络的输入数据进行计算。
[0053] (6)计算控制单元负责管理片上数据存取、搬运和计算全过程。
[0054] 首先,控制单元决定了卷积层的计算流程。本架构中卷积计算流程如下:首先,卷积核在输入特征上的滑动被分为三个方法,分别是沿W方向、IC方向、H方向。计算过程中,滑动窗口先沿W方向执行完毕后,再沿着IC方向滑动,以此类推。控制单元中设计了六组信号,用来控制这一计算过程,分别为:isFirstSlice,isLastSlice,isSilceDone,isPlaneDone,isCubeDone,isDone。isFirstSlice,isLastSlice两个信号标志Slice在W方向所处的位置,isPlaneDone 、isCubeDone标记Plane和Cube的计算是否完成,isDone标记整个输入特征图是否计算完成。图2给出了不同信号的控制模式和控制域。
[0055] 每次卷积滑动窗口计算完毕后,对应的输入数据要发送到累加缓存的相同位置中,这一过程中,控制单元计算得到阵列的输出地址,并控制数据的发送过程。当卷积核滑动完成且累加缓存的计算完成后,控制单元将输出结果依次送到向量单元中执行向量操作,并把结果存储到全局缓存中。
[0056] 以一种典型的卷积执行模式示意,图3给出了神经网络中卷积层的执行模型示意图。卷积计算在本发明中被拆分成五个步骤,如图中标示。具体的执行流程如下:
[0057] ①按照长、宽、输入通道数为3*3*16的三维尺寸计算滑动中的数据;
[0058] ②切换计算行,重复步骤①,完成卷积滑动窗口中所有行的计算;
[0059] ③切换卷积计算块,重复步骤②,输入特征图所有通道上的计算;
[0060] ④重复步骤③,完成滑动窗口内所有列的计算,在行维度上移动滑动窗口,完成输入特征图行方向上数据的计算;
[0061] ⑤输入特征图的列维度上移动滑动窗口,重复步骤④,完成所有列维上数据计算。
[0062] (7)特征数据读写的DMA(RDMA/WDMA),RDMA负责将特征数据搬运到输入寄存器,RDMA支持并行从多个bank上搬运多笔数据到输入寄存器,保证输入寄存器处于满负荷状态工作。
[0063] WDMA负责将计算好的数据从向量逻辑单元的buffer中的结果搬运到全局缓存中。
[0064] 选取经典神经网络模型Resnet50第9个残差块中第一层卷积层以实施案例,该层的网络结构为:卷积核的长宽为3*3,输入、输出通道大小均为256。
[0065] 假设加速器的Array大小为4,Bank数量为64。
[0066] 计算开始前,权重以长、宽、输入通道为3*3*16的Cube为粒度展开成一维数据,映射到交叉电路的一行中,不同输入通道和输出通道维度的数据被映射到多Bank和多Array中。如图4所示,每种颜色的Cube被映射到不同的Array中,图中仅给出了前三个Cube的映射实例,不同的输出通道权重放在不同的Bank中。同时,输入特征图会存放在全局缓冲的首地址处。
[0067] 推理过程中,输入寄存器以Cube为粒度从全局缓存首地址处取数,通过整型电路调整数据布局,以匹配ReRAM阵列中权重的布局,转换后,Cube形式的数据被展开成一维向量,大小为144。改向量通道NoC转发至对应ReRAM阵列中,与权重进行乘累加计算,得到输出特征度上某一点数据的部分和,随即发送到累加缓存中。当收个Cube的数据完成计算后,系统沿着输入特征图的输入通道获取下一个数据Cube,发送至输入寄存器重复上述计算。需要注意的是,同一输入维度上的数据Cube在进行乘累加操作后会被放置在累加缓存的同一位置。
[0068] 当输入通道维度上共16个Cube完成计算后,滑动窗口会切换到下一个滑动位置重复上述计算。同时,累加缓存中的数据会被发送到激活单元执行ReLU操作,缓存内数据会被刷新,等待下一轮计算的数据存储。经过激活单元的数据被发送回全局缓存器中,全局缓存也会通过乒乓模式冲刷掉不再需要的数据。
[0069] 当所有数据完成计算后,全局缓存中仅存在当前层的输出特征图,并开始下一层网络层的计算。
[0070] 本发明与现有技术相比:
[0071] (1)无阻塞的数据流,辅以高效的DMA及数据摆放格式,可以高效的读出Feature与写入结果。
[0072] (2)计算结构简单高效,加速器结构仅包含三处缓存结构,即乒乓缓存器进行数据布局调整、累加缓存进行部分和累加、全局缓存器进行中间数据的缓存。
[0073] (3)灵活的权重摆放方式和广泛的算子结构支持,本加速器结构中ReRAM阵列设计灵活性高,能支持多种权重的摆放方式,因此具有多种卷积算子的支持能力。
[0074] (4)高效率卷积计算通路与向量计算通路,卷积计算结果可以无阻塞串行输出到协处理器中做激活等操作,协处理器也可独立处理激活,池化,量化等操作。
[0075] 本发明针对性的提出一种基于ReRAM的神经网络加速器结构,采用一种新颖的神经网络权重的映射方法用于神经网络的推理计算,并采用高效的直接存储器访问(Direct Memory Access,DMA)和灵活的数据摆放格式,在提高数据流和计算流并行度的同时,解决了推理过程中数据阻塞的问题,提升架构的数据吞吐率。架构中缓存层次设计简单且灵活性高,在完备支持常见神经网络中多种算子的加速计算的同时,便于硬件电路的实现。
[0076] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
[0077] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、ROM、RAM等。
[0078] 以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。