CN113052299B - 基于通信下界的神经网络存内计算装置及加速方法 - Google Patents

基于通信下界的神经网络存内计算装置及加速方法 Download PDF

Info

Publication number
CN113052299B
CN113052299B CN202110283214.4A CN202110283214A CN113052299B CN 113052299 B CN113052299 B CN 113052299B CN 202110283214 A CN202110283214 A CN 202110283214A CN 113052299 B CN113052299 B CN 113052299B
Authority
CN
China
Prior art keywords
input
data
characteristic diagram
output
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110283214.4A
Other languages
English (en)
Other versions
CN113052299A (zh
Inventor
陈敏珍
刘鹏
王维东
周迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN202110283214.4A priority Critical patent/CN113052299B/zh
Publication of CN113052299A publication Critical patent/CN113052299A/zh
Application granted granted Critical
Publication of CN113052299B publication Critical patent/CN113052299B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明涉及神经网络算法及计算机硬件设计领域,具体为提出一种基于通信下界的神经网络存内计算装置及加速方法。本发明公开了一种基于通信下界的神经网络存内计算装置,包括处理器、外部存储器和神经网络加速装置。本发明还同时公开了利用上述基于通信下界的神经网络存内计算装置进行的加速方法。本发明以片外‑片上通信下界分析为理论支撑,利用输出特征图复用和卷积窗口复用,平衡权重复用和输入特征图复用,提出存内计算架构下的神经网络加速装置以及对应的数据流方案,从而减少片外‑片上数据访问量。

Description

基于通信下界的神经网络存内计算装置及加速方法
技术领域
本发明涉及神经网络算法及计算机硬件设计领域,具体为提出一种基于通信下界的神经网络存内计算装置及加速方法。
背景技术
随着神经网络技术的高速发展,涌现出大量神经网络算法在图像处理、医学诊断、自动驾驶等应用上都有着非常好的表现,展现出了巨大的优势。同时,为了获得更好的性能表现,神经网络的层数和规模逐渐变大,权重参数的个数也逐渐增多,导致神经网络算法在计算中的数据移动量大大增加。为了使得神经网络算法能够在实际场景中得以应用,由于带宽限制、时延需求、功耗限制、隐私保护等原因,神经网络算法的计算需求逐渐从云端转向边缘端的嵌入式系统、物联网、可穿戴设备等应用场景;边缘端的神经网络加速器设计要求在计算和存储资源有限的情况下,满足低功耗、高能效的同时,保证神经网络的计算精度和实时性,神经网络的发展趋势和神经网络加速器的应用需求对高能效的边缘端神经网络加速器的设计提出了挑战。
在神经网络加速器中,数据移动所带来的能耗和计算相比是相当高的,例如在一款传统的全卷积神经网络加速器中,数据移动所占的能耗高达62%。神经网络加速器的数据移动主要由两部分组成,分别是片外-片上间的内存访问和片上的数据移动。为了降低数据移动带来的能耗,神经网络加速器针对神经网络算法设计特定的数据流,算法-硬件协同设计通过剪枝、量化、轻量级网络模型等方法对网络规模进行压缩。然而,由数据移动所带来的对处理器的计算性能和能效的限制——“内存墙”的问题,仍然无法解决。
存内计算架构的提出试图从本质上解决“内存墙”问题,使得计算单元和存储单元一体化,从而减少在计算过程中,数据在存储单元和计算单元之间移动所带来的能耗。很多研究在存内计算架构下提出了神经网络加速装置以及对应的数据流方案,例如权重固定、输入特征图固定、行固定-输入特征图固定等,然而这些工作都是基于直观的观察所提出的,无法保证数据流方案的最优性,且缺乏理论分析支持。
因此,通过分析片外-片上通信下界,提出一种面向神经网络的存内计算装置以及对应的数据流方案。
发明内容
本发明要解决的技术问题是存内计算架构下的边缘端神经网络加速器设计过程中的数据访问优化问题,提出存内计算架构下的神经网络加速装置以及对应的数据流方案,通过片外-片上通信下界分析指导数据流方案的设计,从而降低片外-片上的数据访问。
为了解决上述技术问题,本发明提供基于通信下界的神经网络存内计算装置,包括:处理器、外部存储器和神经网络加速装置;
所述神经网络加速装置包括输入/输出端口、输入特征图缓冲、至少一个存内计算单元、加法树、输出特征图寄存器、激活模块、池化模块;处理器和外部存储器均通过输入/输出端口与输入特征图缓冲信号相连,输入特征图缓冲分别与各个存内计算单元、池化模块信号相连,各个存内计算单元均与加法树信号相连,加法树通过输出特征图寄存器与激活模块信号相连,激活模块和池化模块均与输入/输出端口信号相连。
作为本发明的基于通信下界的神经网络存内计算装置的改进:
所述存内计算单元均包括数模转换模块、存内计算阵列、模数转换模块和移位加法模块;数模转换模块分别与输入特征图缓冲、存内计算阵列信号相连,存内计算阵列依次经过模数转换模块、移位加法模块与加法树信号相连。
作为本发明的基于通信下界的神经网络存内计算装置的进一步改进:
所述存内计算阵列的列数为p,行数为q,数量等于
Figure BDA0002979395820000021
其中weight_bit为权重数据位宽,cell_bit为存内计算阵列中的每个单元存储位宽;
所述数模转换模块输入到存内计算阵列的输入特征图数据需要经过
Figure BDA0002979395820000022
次加载,其中ifmap_bit为输入特征图数据位宽,DAC_bit为每次经过数模转换模块输入到存内计算阵列进行计算的输入特征图数据位宽。
作为本发明的基于通信下界的神经网络存内计算装置的进一步改进:
所述输出特征图寄存器共p组,总容量为p×x×y×psum_bit,其中psum_bit为存储加法树计算得到的经过分块的输出特征图的中间计算结果的位宽,x为经过分块的输出特征图的宽,y为经过分块的输出特征图的高。
作为本发明的基于通信下界的神经网络存内计算装置的进一步改进:
所述输入特征图缓冲的容量大小:
Figure BDA0002979395820000024
其中input_buffer_size为:
Figure BDA0002979395820000023
其中x、y在满足
Figure BDA0002979395820000033
Figure BDA0002979395820000034
的情况下,取使得片外-片上数据访问量最小的(x,y),stride为卷积的步长,WK和HK分别为卷积核的宽和高。
本发明还提供了利用基于通信下界的神经网络存内计算装置的加速方法,包括如下步骤:
步骤1、经过分块的权重数据从外部存储器中读取并存储在存内计算阵列中;
步骤2、经过分块的输入特征图数据从外部存储器读取并存储在输入特征图缓冲中;
步骤3、从输入特征图缓冲中读取部分经过分块的输入特征图数据,同时经过所有的数模转换模块输入到所有的存内计算阵列,同时与经过分块的权重数据进行乘累加计算;
步骤4、每个存内计算阵列输出的中间乘累加计算结果经过模数转换模块处理输入到移位加法模块,移位加法模块把每DAC_bit位输入特征图数据和存储在一个存内计算阵列中的cell_bit位权重数据的乘累加结果进行移位和累加;
判断是否遍历WK×HK×k个特征图数据的ifmap_bit位,如是,则进入步骤5;如否,则回到步骤3,需要重复
Figure BDA0002979395820000031
次,得到ifmap_bit位输入特征图数据和cell_bit位权重数据的乘累加结果;
步骤5、ifmap_bit位输入特征图数据和cell_bit位权重数据的乘累加结果从每个移位加法模块传输到加法树,不同存内计算阵列的中间计算结果通过加法树进行累加,得到k个输入通道的weight_bit位权重数据和ifmap_bit位输入特征图乘累加的结果;
步骤6、更新输出特征图寄存器的值,判断是否遍历经过分块的输出特征图的x×y个滑动窗口,如是则进入步骤7,如否则回到步骤3,最终输出特征图寄存器中得到经过分块的输出特征图的所有像素点的前k个输入通道乘累加所得的部分和结果;
步骤7、判断是否遍历输入通道Cin,如是则进入步骤8,如否则重复步骤1到步骤6,得到下k个输入通道的权重数据和输入特征图数据的乘累加结果,和输出特征图寄存器中的部分和结果进行累加,并更新全部输出特征图寄存器中的值;
对输出特征图寄存器中的值更新
Figure BDA0002979395820000032
次,直到全部输入通道的乘累加都遍历完成后得到经过分块的输出特征图的结果,其中Cin表示该层的输入通道数;
步骤8、输出特征图寄存器中的经过分块的输出特征图的结果根据需要选择是否经过激活模块处理,经过输入/输出端口传输到外部存储器中;
步骤9、判断是否遍历该卷积层的权重数据和输入特征图数据的所有分块,如否,则重复步骤1到步骤8,直到把该卷积层的权重数据和输入特征图数据的所有分块都遍历,得到该卷积层的全部输出特征图数据;输出特征图数据包含HO×WO×Cout个输出特征图数据,需要重复以上步骤
Figure BDA0002979395820000041
次,其中HO和WO分别为输出特征图的高和宽,Cout为输出通道数。
作为本发明的基于通信下界的神经网络存内计算装置的加速方法的改进:
所述步骤1中所述经过分块的权重数据包含z个卷积核,每个卷积核的尺寸为:WK×HK×k,z表示输出通道维度的分块尺寸,且z=p,k表示输入通道维度的分块尺寸,且
Figure BDA0002979395820000042
一个经过分块的权重数据的z个输出通道分别映射到存内计算阵列的p列;
所述分块的方式为:经过分块的输出特征图的宽x和分块的输出特征图的高y在满足
Figure BDA0002979395820000044
Figure BDA0002979395820000045
的情况下,取使得片外-片上数据访问量最小的(x,y);
所述步骤2中所述经过分块的输入特征图数据的尺寸为k×x’×y’,其中,k为输入特征图数据包含的输入通道数,每个输入通道的特征图的宽x′=(x-1)×stride+WK,每个输入通道的特征图的高y′=(y-1)×stride+HK
作为本发明的基于通信下界的神经网络存内计算装置的加速方法的进一步改进:
所述步骤3包括:读取输入特征图缓冲中用于经过分块的输出特征图的z个输出通道的第一个像素点的计算的输入特征图数据,按照和存内计算阵列的同一列中权重数据排列的顺序展开成一维数组,一维数组中的每个输入特征图数据加载到存内计算阵列的每一行中,同时和这一行的所有列的权重数据进行乘累加计算,同一个时刻内存内计算阵列的每一列进行乘累加的结果分别对应z个输出通道的输出特征图的同一位置的像素点;一个ifmap_bit位的输入特征图数据分成
Figure BDA0002979395820000043
次输入到存内计算阵列中进行计算。
本发明的有益效果主要体现在:
本发明以片外-片上通信下界分析为理论支撑,利用输出特征图复用和卷积窗口复用,平衡权重复用和输入特征图复用,提出存内计算架构下的神经网络加速装置以及对应的数据流方案,从而减少片外-片上数据访问量。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细说明。
图1为本发明基于通信下界的存内计算神经网络加速装置的结构示意图;
图2为神经网络卷积层的分块计算的示意图;
图3为图1中存内计算阵列108存储权重数据和加载输入特征图数据的示意图;
图4为基于通信下界的存内计算神经网络加速装置的加速方法的流程示意图;
图5为经过分块的输入特征图数据和权重数据计算映射的示意图。
具体实施方式
下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此:
实施例1、基于通信下界的神经网络存内计算装置,如图1-5所示,包括神经网络加速装置100、处理器200和外部存储器300,神经网络加速装置100与处理器200、外部存储器300分别信号相连;处理器200用于对神经网络加速装置100进行流程控制以及进行一些特殊层(比如Softmax层等)的计算;外部存储器300中存放用于神经网络计算过程中所需的权重数据、输入特征图数据以及逐层计算过程中每层的输出特征图数据。
处理器200和外部存储器300相互之间信号相连,且处理器200和外部存储器300属于现有技术,故不对其做详细介绍。
神经网络加速装置100包括输入/输出端口102、输入特征图缓冲104、至少一个存内计算单元1000、加法树114、输出特征图寄存器116、激活模块118、池化模块120;处理器200和外部存储器300均通过输入/输出端口102与输入特征图缓冲104信号相连,处理器200通过输入/输出端口102向神经网络加速装置100发送控制信号,进行流程控制;输入特征图缓冲104分别与各个存内计算单元1000、池化模块120信号相连,各个存内计算单元1000均与加法树114信号相连,然后加法树114通过输出特征图寄存器116与激活模块118信号相连,激活模块118和池化模块120均与输入/输出端口102信号相连;
每个存内计算单元1000均包括数模转换模块106、存内计算阵列108、模数转换模块110和移位加法模块112;数模转换模块106分别与输入特征图缓冲104、存内计算阵列108信号相连,存内计算阵列108依次经过模数转换模块110、移位加法模块112与加法树114信号相连。
神经网络的卷积层可以通过将输入特征图数据重组得到输入特征图矩阵,将权重数据展开成权重矩阵,输入特征图矩阵和权重矩阵进行矩阵乘得到输出特征图,如图2所示;由于边缘端的神经网络加速器的片上计算资源和存储资源有限,并且神经网络不同层的特征图尺寸和权重数量变化非常大,因此难以设计一个固定规模的计算单元和存储单元使得神经网络的所有层都能够不经过分块而在神经网络加速器上完成计算,边缘端的神经网络加速器要求将计算任务分块进行,在本发明提出的基于通信下界的神经网络存内计算装置的加速方法中,将卷积层的输入特征图数据、权重数据、输出特征图数据进行分块,输入通道维度的分块尺寸为k,输出通道维度的分块尺寸为z,经过分块的输出特征图的宽和高分别为x和y;因此经过分块的输出特征图包含z个输出通道,每个输出通道的特征图尺寸为x×y,经过分块的输出特征图尺寸为z×x×y;经过分块的权重数据包含z个输出通道,每个输出通道包含k个输入通道的WK×HK个权重数据,经过分块的权重数据的尺寸为z×k×WK×HK,其中WK为卷积核的宽,HK卷积核的高;经过分块的输入特征图包含k个输入通道,每个输入通道的特征图宽和高分别为x’、y’,其中x′=(x-1)×stride+WK,y′=(y-1)×stride+HK,stride为卷积的步长,经过分块的输入特征图尺寸为k×x’×y’;遍历输入特征图数据和权重数据所有的分块,即可完成整个卷积层的计算,得到该卷积层的输出特征图;
存内计算阵列108用于存储权重数据,在存内计算模式下进行权重数据和输入特征图数据的乘累加运算;权重数据位宽为weight_bit,如图3所示,存内计算阵列108中的每个单元存储cell_bit位数据,本发明通过多个存内计算阵列108来进行weight_bit位权重数据的存储和计算,存内计算阵列108的数量等于
Figure BDA0002979395820000061
多个数模转换模块106同时加载相同的输入特征图数据,每次经过数模转换模块106加载到存内计算阵列108进行计算的输入特征图数据为DAC_bit位,输入特征图数据位宽为ifmap_bit,则一个输入特征图数据需要经过
Figure BDA0002979395820000062
次加载,每个存内计算阵列108的列数为p,行数为q;
数模转换模块106用于将输入特征图数据从数字信号转化成模拟信号,模数转换模块110用于将存内计算阵列108的计算结果从模拟信号转化成数字信号;
移位加法模块112用于把ifmap_bit位输入特征图数据的每DAC_bit位数据和存储在一个存内计算阵列108中的cell_bit位权重数据的乘累加结果进行移位和累加,从而得到ifmap_bit位输入特征图数据和存储在一个存内计算阵列108中的cell_bit位权重数据的乘累加结果;
加法树114用于将weight_bit位权重数据的每cell_bit位数据和ifmap_bit位输入特征图的中间计算结果进行累加,并且完成输入通道维度上的累加,从而得到weight_bit位权重数据和ifmap_bit位输入特征图乘累加的结果;
输出特征图寄存器116用于存储加法树114计算得到的经过分块的输出特征图的中间计算结果,中间计算结果位宽为psum_bit,输出特征图寄存器116一共有p组,每组分别对应存内计算阵列108的一列的计算结果,每组输出特征图寄存器116的容量为x×y×psum_bit,则输出特征图寄存器116的总容量为p×x×y×psum_bit;
输入特征图缓冲104用于存储从外部存储器300读取的经过分块的输入特征图数据,输入特征图缓冲104的容量大小为
Figure BDA0002979395820000074
其中input_buffer_size为:
Figure BDA0002979395820000071
其中x、y在满足
Figure BDA0002979395820000075
Figure BDA0002979395820000076
的情况下,取使得片外-片上数据访问量最小的(x,y),stride为卷积的步长;
激活模块118用于对输出特征图数据进行激活函数计算,根据神经网络的结构,卷积层后面若没有激活函数,则可以旁路跳过该模块;
池化模块120用于对池化层的输入特征图进行池化处理,根据神经网络的结构,选择是否调用该模块。
在本发明提出的基于通信下界的存内计算架构下的神经网络加速装置及加速方法中,对于给定存内计算阵列108的尺寸p和q,以及片上存储资源限制S(单位为bit)的时候,能够确定分块方式:输入通道维度的分块尺寸为
Figure BDA0002979395820000072
输出通道维度的分块尺寸为z=p,经过分块的输出特征图的宽x和高y在满足:
Figure BDA0002979395820000077
的情况下,取使得片外-片上数据访问量最小的(x,y),其中input_buffer_size为:
Figure BDA0002979395820000073
所述经过分块的输入特征图数据包含k个输入通道,每个输入通道的输入特征图的宽为x’,高为y’,其中:
x′=(x-1)×stride+WK
y′=(y-1)×stride+HK
使用基于通信下界的神经网络存内计算装置的加速方法,包括如下步骤:
步骤1、经过分块的权重数据从外部存储器300中读取并存储在存内计算阵列108中;
经过分块的权重数据包含z个卷积核,每个卷积核的尺寸为WK×HK×k,如图5所示,同一个输出通道的权重数据按照输入通道递增的顺序展开成一维数组,长度为WK×HK×k,映射到存内计算阵列108的一列中,因此经过分块的权重数据的z个输出通道分别映射到存内计算阵列108的p列;
步骤2、经过分块的输入特征图数据从外部存储器300读取并存储在输入特征图缓冲104中,输入特征图缓冲104中存储的是未经过数据重组的经过分块的输入特征图数据,尺寸为k×x’×y’;
步骤3、从输入特征图缓冲104中读取WK×HK×k个特征图数据的DAC_bit位,同时经过所有的数模转换模块106输入到所有的存内计算阵列108,同时与经过分块的权重数据进行乘累加计算;
输入特征图缓冲104中存储的经过分块的输入特征图数据对应经过分块的输出特征图的x×y个像素点,需要通过x×y个滑动窗口的数据和存内计算阵列108中存储的经过分块的权重数据进行乘累加计算,首先,读取输入特征图缓冲104中第一个滑动窗口的输入特征图数据的DAC_bit位,用于计算经过分块的输出特征图的z个输出通道的第一个像素点,如图5所示,按照和存内计算阵列108的同一列中权重数据排列的顺序展开成一维数组,长度为WK×HK×k,一维数组中的每个输入特征图数据加载到存内计算阵列108的每一行中,同时和这一行的所有列的权重数据进行乘累加计算,同一个时刻内存内计算阵列108的每一列进行乘累加的结果分别对应z个输出通道的输出特征图的同一位置的像素点;
步骤4、每个存内计算阵列108输出乘累加计算结果,中间的乘累加计算结果经过模数转换模块110处理输入到移位加法模块112,移位加法模块112把每DAC_bit位输入特征图数据和存储在一个存内计算阵列108中的cell_bit位权重数据的乘累加结果进行移位和累加;
判断是否遍历WK×HK×k个特征图数据的ifmap_bit位,如是,则进入步骤5;如否,则回到步骤3,需要重复
Figure BDA0002979395820000081
次,直到ifmap_bit位的输入特征图数据的所有位都加载到存内计算阵列108中进行计算为止;
经过
Figure BDA0002979395820000082
次存内计算阵列108的计算和移位加法模块112的处理后,得到ifmap_bit位输入特征图数据和cell_bit位权重数据的乘累加结果;
步骤5、ifmap_bit位输入特征图数据和cell_bit位权重数据的乘累加结果从每个移位加法模块112传输到加法树114,不同存内计算阵列108的中间计算结果通过加法树114进行累加,得到k个输入通道的weight_bit位权重数据和ifmap_bit位输入特征图乘累加的结果;
步骤6、更新输出特征图寄存器116的值:加法树114的计算结果传输到输出特征图寄存器116中进行保存;
判断是否遍历经过分块的输出特征图的x×y个滑动窗口,如是则进入步骤7,如否则回到步骤3,直到输入特征图缓冲104中所有的经过分块的输入特征图数据都和存内计算阵列108中的经过分块的权重数据进行乘累加运算,输出特征图寄存器116中得到经过分块的输出特征图的所有像素点的前k个输入通道乘累加所得的部分和结果;
步骤7、判断是否遍历输入通道Cin,如是则进入步骤8,如否则重复步骤1到步骤6,得到下k个输入通道的权重数据和输入特征图数据的乘累加结果,和输出特征图寄存器116中的部分和结果进行累加,并更新全部输出特征图寄存器116中的值;直到全部输入通道的乘累加都遍历完成后,输出特征图寄存器116中的值完成更新,在输出特征图寄存器116中得到经过分块的输出特征图的结果;
每次存内计算阵列108进行计算只能对k个输入通道的经过分块的权重数据和经过分块的输入特征图数据进行乘累加,并对输出特征图寄存器116中的值进行更新,要完成全部输入通道的数据的乘累加,需要对输出特征图寄存器116中的值更新
Figure BDA0002979395820000091
次才能得到经过分块的输出特征图结果,其中Cin表示该层的输入通道数;
步骤8、输出特征图寄存器116中的经过分块的输出特征图的结果根据需要选择是否经过激活模块118处理,经过输入/输出端口102传输到外部存储器300中;
步骤9、判断是否遍历该卷积层的权重数据和输入特征图数据的所有分块,如否,则重复步骤1到步骤8,直到把该卷积层的权重数据和输入特征图数据的所有分块都遍历,得到该卷积层的全部输出特征图数据;输出特征图数据包含HO×WO×Cout个输出特征图数据,需要重复以上步骤
Figure BDA0002979395820000092
次,其中HO和WO分别为输出特征图的高和宽,Cout为输出通道数。
实验1:
本发明所提出的基于通信下界的神经网络存内计算装置及加速方法所对应的数据流方案以片外-片上通信下界分析为理论支撑,利用输出特征图复用和卷积窗口复用,平衡权重复用和输入特征图复用,从而减少片外-片上数据访问量。在计算一个卷积层的过程中片外-片上数据访问量QDRAM为从片外的动态随机存取存储器(Dynamic random-accessmemory,DRAM)读取输入特征图的数据量Qifmap、从DRAM读取权重的数据量Qweight和向DRAM写输出特征图的数据量Qofmap的总和,即:
QDRAM=Qifmap+Qweight+Qofmap (公式1)
在本发明所提出的数据流方案中,公式1中的Qifmap、Qweight和Qofmap分别为:
Figure BDA0002979395820000101
Figure BDA0002979395820000102
Qofmap=HO×WO×Cout
其中Hin和Win是该卷积层输入特征图的高和宽。
将本发明提出存内计算架构下的神经网络加速装置所对应的数据流方案和其他三种主流的数据流方案的片外-片上数据访问量进行对比,对于权重固定的数据流方案公式1中的Qifmap、Qweight和Qofmap分别为:
Figure BDA0002979395820000103
Qweight=HK×WK×Cin×Cout
Figure BDA0002979395820000104
对于输入特征图固定的数据流方案公式1中的Qifmap、Qweight和Qofmap分别为:
Figure BDA0002979395820000105
Figure BDA0002979395820000106
Figure BDA0002979395820000107
对于行固定-输入特征图固定的数据流方案公式1中的Qifmap、Qweight和Qofmap分别为:
Figure BDA0002979395820000108
Figure BDA0002979395820000109
Figure BDA0002979395820000111
以输入尺寸为224×224的全卷积网络YOLOv3为例,在存内计算阵列规模为128×128,片上容量限制为64KB,输入特征图数据、权重数据、输出特征图数据的位宽均为8-bit的情况下,其他三种主流的数据流方案通过搜索得到片上容量限制下片外-片上数据访问量最小的分块尺寸,权重固定、输入特征图固定、行固定-输入特征图固定三种数据流方案的片外-片上数据访问量分别是本发明提出的加速装置所对应的数据流方案的1.23倍、1.82倍、7.90倍;本发明提出存内计算架构下的神经网络加速装置以及对应的数据流方案,相比于其他主流的数据流方案,可有效减少片外-片上数据访问量。
最后,还需要注意的是,以上列举的仅是本发明的若干个具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。

Claims (6)

1.基于通信下界的神经网络存内计算装置,包括处理器(200)和外部存储器(300),其特征在于,包括神经网络加速装置(100);
所述神经网络加速装置(100)包括输入/输出端口(102)、输入特征图缓冲(104)、至少一个存内计算单元(1000)、加法树(114)、输出特征图寄存器(116)、激活模块(118)、池化模块(120);处理器(200)和外部存储器(300)均通过输入/输出端口(102)与输入特征图缓冲(104)信号相连,输入特征图缓冲(104)分别与各个存内计算单元(1000)、池化模块(120)信号相连,各个存内计算单元(1000)均与加法树(114)信号相连,加法树(114)通过输出特征图寄存器(116)与激活模块(118)信号相连,激活模块(118)和池化模块(120)均与输入/输出端口(102)信号相连;
所述存内计算单元(1000)均包括数模转换模块(106)、存内计算阵列(108)、模数转换模块(110)和移位加法模块(112);数模转换模块(106)分别与输入特征图缓冲(104)、存内计算阵列(108)信号相连,存内计算阵列(108)依次经过模数转换模块(110)、移位加法模块(112)与加法树(114)信号相连;
所述存内计算阵列(108)的列数为p,行数为q,数量等于
Figure FDA0003578909240000011
其中weight_bit为权重数据位宽,cell_bit为存内计算阵列(108)中的每个单元存储位宽;
所述数模转换模块(106)输入到存内计算阵列(108)的输入特征图数据需要经过
Figure FDA0003578909240000012
次加载,其中ifmap_bit为输入特征图数据位宽,DAC_bit为每次经过数模转换模块(106)输入到存内计算阵列(108)进行计算的输入特征图数据位宽。
2.根据权利要求1所述的基于通信下界的神经网络存内计算装置,其特征在于:
所述输出特征图寄存器(116)共p组,总容量为p×x×y×psum_bit,其中psum_bit为存储加法树(114)计算得到的经过分块的输出特征图的中间计算结果的位宽,x为经过分块的输出特征图的宽,y为经过分块的输出特征图的高。
3.根据权利要求2所述的基于通信下界的神经网络存内计算装置,其特征在于:
所述输入特征图缓冲(104)的容量大小为
Figure FDA0003578909240000014
其中input_buffer_size为:
Figure FDA0003578909240000013
其中x、y在满足
Figure FDA0003578909240000015
Figure FDA0003578909240000016
的情况下,取使得片外-片上数据访问量最小的(x,y),stride为卷积的步长,WK和HK分别为卷积核的宽和高。
4.利用如权利要求1-3任一所述的基于通信下界的神经网络存内计算装置的加速方法,其特征在于,包括如下步骤:
步骤1、经过分块的权重数据从外部存储器(300)中读取并存储在存内计算阵列(108)中;
步骤2、经过分块的输入特征图数据从外部存储器(300)读取并存储在输入特征图缓冲(104)中;
步骤3、从输入特征图缓冲(104)中读取部分经过分块的输入特征图数据,同时经过所有的数模转换模块(106)输入到所有的存内计算阵列(108),同时与经过分块的权重数据进行乘累加计算;
步骤4、每个存内计算阵列(108)输出的中间乘累加计算结果经过模数转换模块(110)处理输入到移位加法模块(112),移位加法模块(112)把每DAC_bit位输入特征图数据和存储在一个存内计算阵列(108)中的cell_bit位权重数据的乘累加结果进行移位和累加;
判断是否遍历WK×HK×k个特征图数据的ifmap_bit位,如是,则进入步骤5;如否,则回到步骤3,需要重复
Figure FDA0003578909240000021
次,得到ifmap_bit位输入特征图数据和cell_bit位权重数据的乘累加结果;
步骤5、ifmap_bit位输入特征图数据和cell_bit位权重数据的乘累加结果从每个移位加法模块(112)传输到加法树(114),不同存内计算阵列(108)的中间计算结果通过加法树(114)进行累加,得到k个输入通道的weight_bit位权重数据和ifmap_bit位输入特征图乘累加的结果;
步骤6、更新输出特征图寄存器(116)的值,判断是否遍历经过分块的输出特征图的x×y个滑动窗口,如是则进入步骤7,如否则回到步骤3,最终输出特征图寄存器(116)中得到经过分块的输出特征图的所有像素点的前k个输入通道乘累加所得的部分和结果;
步骤7、判断是否遍历输入通道Cin,如是则进入步骤8,如否则重复步骤1到步骤6,得到下k个输入通道的权重数据和输入特征图数据的乘累加结果,和输出特征图寄存器(116)中的部分和结果进行累加,并更新全部输出特征图寄存器(116)中的值;
对输出特征图寄存器116中的值更新
Figure FDA0003578909240000022
次,直到全部输入通道的乘累加都遍历完成后得到经过分块的输出特征图的结果,其中Cin表示卷积层的输入通道数;
步骤8、输出特征图寄存器(116)中的经过分块的输出特征图的结果根据需要选择是否经过激活模块(118)处理,经过输入/输出端口(102)传输到外部存储器(300)中;
步骤9、判断是否遍历该卷积层的权重数据和输入特征图数据的所有分块,如否,则重复步骤1到步骤8,直到把该卷积层的权重数据和输入特征图数据的所有分块都遍历,得到该卷积层的全部输出特征图数据;输出特征图数据包含HO×WO×Cout个输出特征图数据,需要重复以上步骤
Figure FDA0003578909240000031
次,其中HO和WO分别为输出特征图的高和宽,Cout为输出通道数。
5.根据权利要求4所述的基于通信下界的神经网络存内计算装置的加速方法,其特征在于:
所述步骤1中所述经过分块的权重数据包含z个卷积核,每个卷积核的尺寸为:WK×HK×k,z表示输出通道维度的分块尺寸,且z=p,k表示输入通道维度的分块尺寸,且
Figure FDA0003578909240000032
一个经过分块的权重数据的z个输出通道分别映射到存内计算阵列(108)的p列;
所述分块的方式为:经过分块的输出特征图的宽x和分块的输出特征图的高y在满足
Figure FDA0003578909240000034
Figure FDA0003578909240000035
的情况下,取使得片外-片上数据访问量最小的(x,y);
所述步骤2中所述经过分块的输入特征图数据的尺寸为k×x’×y’,其中,k为输入特征图数据包含的输入通道数,每个输入通道的特征图的宽x′=(x-1)×stride+WK,每个输入通道的特征图的高y′=(y-1)×stride+HK
6.根据权利要求5所述的基于通信下界的神经网络存内计算装置的加速方法,其特征在于:
所述步骤3包括:读取输入特征图缓冲(104)中用于经过分块的输出特征图的z个输出通道的第一个像素点的计算的输入特征图数据,按照和存内计算阵列(108)的同一列中权重数据排列的顺序展开成一维数组,一维数组中的每个输入特征图数据加载到存内计算阵列(108)的每一行中,同时和这一行的所有列的权重数据进行乘累加计算,同一个时刻内存内计算阵列(108)的每一列进行乘累加的结果分别对应z个输出通道的输出特征图的同一位置的像素点;一个ifmap_bit位的输入特征图数据分成
Figure FDA0003578909240000033
次输入到存内计算阵列(108)中进行计算。
CN202110283214.4A 2021-03-17 2021-03-17 基于通信下界的神经网络存内计算装置及加速方法 Active CN113052299B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110283214.4A CN113052299B (zh) 2021-03-17 2021-03-17 基于通信下界的神经网络存内计算装置及加速方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110283214.4A CN113052299B (zh) 2021-03-17 2021-03-17 基于通信下界的神经网络存内计算装置及加速方法

Publications (2)

Publication Number Publication Date
CN113052299A CN113052299A (zh) 2021-06-29
CN113052299B true CN113052299B (zh) 2022-05-31

Family

ID=76512760

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110283214.4A Active CN113052299B (zh) 2021-03-17 2021-03-17 基于通信下界的神经网络存内计算装置及加速方法

Country Status (1)

Country Link
CN (1) CN113052299B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113642724B (zh) * 2021-08-11 2023-08-01 西安微电子技术研究所 一种高带宽存储的cnn加速器
CN116167424B (zh) * 2023-04-23 2023-07-14 深圳市九天睿芯科技有限公司 基于cim的神经网络加速器、方法、存算处理系统与设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3637326A1 (en) * 2018-10-12 2020-04-15 Western Digital Technologies, Inc. Shifting architecture for data reuse in a neural network
CN111178519A (zh) * 2019-12-27 2020-05-19 华中科技大学 卷积神经网络加速引擎、卷积神经网络加速系统及方法
CN111626412A (zh) * 2020-05-12 2020-09-04 浙江大学 复数神经网络的一维卷积加速装置及方法
CN111783967A (zh) * 2020-05-27 2020-10-16 上海赛昉科技有限公司 一种适用于专用神经网络加速器的数据双层缓存方法
CN111814973A (zh) * 2020-07-18 2020-10-23 福州大学 一种适用于神经常微分方程网络计算的存内计算系统
WO2020258529A1 (zh) * 2019-06-28 2020-12-30 东南大学 一种基于bnrp的可配置并行通用卷积神经网络加速器

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11443176B2 (en) * 2018-05-17 2022-09-13 International Business Machines Corporation Acceleration of convolutional neural networks on analog arrays

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3637326A1 (en) * 2018-10-12 2020-04-15 Western Digital Technologies, Inc. Shifting architecture for data reuse in a neural network
WO2020258529A1 (zh) * 2019-06-28 2020-12-30 东南大学 一种基于bnrp的可配置并行通用卷积神经网络加速器
CN111178519A (zh) * 2019-12-27 2020-05-19 华中科技大学 卷积神经网络加速引擎、卷积神经网络加速系统及方法
CN111626412A (zh) * 2020-05-12 2020-09-04 浙江大学 复数神经网络的一维卷积加速装置及方法
CN111783967A (zh) * 2020-05-27 2020-10-16 上海赛昉科技有限公司 一种适用于专用神经网络加速器的数据双层缓存方法
CN111814973A (zh) * 2020-07-18 2020-10-23 福州大学 一种适用于神经常微分方程网络计算的存内计算系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
RAPIDNN:In-Memory Deep Neural Network Acceleration Framework;Mohsen lmani;《Computer Science》;20190411;全文 *

Also Published As

Publication number Publication date
CN113052299A (zh) 2021-06-29

Similar Documents

Publication Publication Date Title
US10691996B2 (en) Hardware accelerator for compressed LSTM
CN110263925B (zh) 一种基于fpga的卷积神经网络前向预测的硬件加速实现装置
US11574031B2 (en) Method and electronic device for convolution calculation in neural network
US11003985B2 (en) Convolutional neural network system and operation method thereof
CN111898733B (zh) 一种深度可分离卷积神经网络加速器架构
US20190188237A1 (en) Method and electronic device for convolution calculation in neutral network
CN110543939B (zh) 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置
CN108229671B (zh) 一种降低加速器外部数据存储带宽需求的系统和方法
CN113052299B (zh) 基于通信下界的神经网络存内计算装置及加速方法
KR102335955B1 (ko) 컨볼루션 신경망 시스템 및 그것의 동작 방법
CN108629406B (zh) 用于卷积神经网络的运算装置
CN108717571B (zh) 一种用于人工智能的加速方法和装置
CN112668708B (zh) 一种提高数据利用率的卷积运算装置
CN114218875A (zh) 一种用于流场预测的加速方法及装置
CN111105023B (zh) 数据流重构方法及可重构数据流处理器
CN113361695B (zh) 卷积神经网络加速器
CN110766128A (zh) 卷积计算单元、计算方法及神经网络计算平台
CN111985602A (zh) 神经网络计算设备、方法以及计算设备
CN115437795B (zh) 一种异构gpu集群负载感知的显存重计算优化方法及系统
CN110580519A (zh) 一种卷积运算结构及其方法
CN111091183B (zh) 一种神经网络加速系统和方法
CN115238863A (zh) 一种卷积神经网络卷积层的硬件加速方法、系统及应用
CN113313252B (zh) 一种基于脉动阵列的深度可分离卷积实现方法
WO2021232422A1 (zh) 神经网络的运算装置及其控制方法
CN116167424B (zh) 基于cim的神经网络加速器、方法、存算处理系统与设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant