CN116152520B - 用于神经网络加速器的数据处理方法、芯片及电子设备 - Google Patents
用于神经网络加速器的数据处理方法、芯片及电子设备 Download PDFInfo
- Publication number
- CN116152520B CN116152520B CN202310440885.6A CN202310440885A CN116152520B CN 116152520 B CN116152520 B CN 116152520B CN 202310440885 A CN202310440885 A CN 202310440885A CN 116152520 B CN116152520 B CN 116152520B
- Authority
- CN
- China
- Prior art keywords
- feature map
- data
- input feature
- shared memory
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Molecular Biology (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Image Analysis (AREA)
Abstract
本发明涉及计算芯片领域,公开了一种用于神经网络加速器的数据处理方法、芯片及电子设备,其中,神经网络加速器包括前处理模块、存内计算矩阵、向量处理模块、共享存储器和芯片控制器;前处理模块从共享存储器获取输入特征图数据,将输入特征图数据处理为矩阵数据;存内计算矩阵获取权重数据,根据矩阵数据和权重数据进行卷积计算得到计算结果;向量处理模块对计算结果进行网络层计算,得到输出特征图数据,将输出特征图数据写入共享存储器;芯片控制器控制共享存储器与外部存储器之间的数据交互。本发明提供的神经网络加速器可以减少数据搬运,降低神经网络加速器的功耗,进而提高神经网络加速器对应的芯片的能效比和面效比。
Description
技术领域
本发明涉及芯片领域,尤其涉及一种用于神经网络加速器的数据处理方法、芯片及电子设备。
背景技术
人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。卷积神经网络(Convolutional NeuralNetworks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeural Networks),是深度学习(deep learning)的代表算法之一。
随着人工智能技术的发展,诸如人工神经网络和卷积神经网络处理的数据量成倍增长,对包含神经网络加速器(NPU,也称神经网络处理器)的芯片的性能需求越来越高。
现有技术在相关芯片中,为了实现对至少两种特征图(feature map)的拼接,通常设置有拼接层专用电路模块。然而,拼接层专用电路模块一方面会占用芯片的有限空间,另一方面则增加了拼接层专用电路模块与其他模块之间的数据搬运,产生较高的功耗。
发明内容
基于此,有必要针对上述技术问题,提供一种用于神经网络加速器的数据处理方法、芯片及电子设备,以减少数据搬运,降低神经网络加速器的功耗且减少芯片的面积。
一种用于神经网络加速器芯片的数据处理方法,所述神经网络加速器包括:依次电连接的前处理模块、存内计算矩阵和向量处理模块;以及分别与所述前处理模块、所述存内计算矩阵和所述向量处理模块电连接的共享存储器;与所述共享存储器电连接的芯片控制器;
所述数据处理方法包括:
通过所述前处理模块从所述共享存储器获取输入特征图数据及将所述输入特征图数据处理为存内计算矩阵格式的矩阵数据,将所述矩阵数据输入所述存内计算矩阵;其中,若所述输入特征图数据包括至少两个输入特征图,且所述至少两个输入特征图以跳地址方式存储在所述共享存储器上,则所述前处理模块以按地址顺序读取的方式从所述共享存储器获取所述至少两个输入特征图;或,若所述输入特征图数据包括至少两个输入特征图,且所述至少两个输入特征图以连续存储方式存储在所述共享存储器上,则所述前处理模块以跳地址读取的方式从所述共享存储器获取所述至少两个输入特征图;
通过所述存内计算矩阵获取权重数据,通过所述存内计算矩阵根据所述矩阵数据和所述权重数据进行卷积计算得到计算结果,将所述计算结果输入所述向量处理模块;
通过所述向量处理模块处理所述计算结果,得到输出特征图数据,将得到的所述输出特征图数据写入所述共享存储器和/或所述外部存储器;其中,若所述输出特征图数据为中间计算结果,则所述输出特征图数据用作下一层级计算结果的输入数据;
在所述前处理模块获取所述输入特征图数据之前,和/或,在所述向量处理模块处理所述计算结果,得到输出特征图数据之后,通过所述芯片控制器控制所述共享存储器与所述外部存储器之间的数据交互,其中,进行交互的数据包括所述输入特征图数据和/或所述输出特征图数据。
一种芯片,包括:
依次电连接的前处理模块、存内计算矩阵和向量处理模块;以及,
分别与所述前处理模块、所述存内计算矩阵和所述向量处理模块电连接的共享存储器;
与所述共享存储器电连接的芯片控制器;
其中,所述前处理模块,用于从所述共享存储器获取输入特征图数据,将所述输入特征图数据处理为存内计算矩阵格式的矩阵数据,将所述矩阵数据输入所述存内计算矩阵;其中,若所述输入特征图数据包括至少两个输入特征图,且所述至少两个输入特征图以跳地址方式存储在所述共享存储器上,则所述前处理模块以按地址顺序读取的方式从所述共享存储器获取所述至少两个输入特征图;或,若所述输入特征图数据包括至少两个输入特征图,且所述至少两个输入特征图以连续存储方式存储在所述共享存储器上,则所述前处理模块以跳地址读取的方式从所述共享存储器获取所述至少两个输入特征图;
所述存内计算矩阵,用于获取权重数据,根据所述矩阵数据和所述权重数据进行卷积计算得到计算结果,将所述计算结果输入所述向量处理模块;
所述向量处理模块,用于对所述计算结果进行处理,得到输出特征图数据,将得到的所述输出特征图数据写入所述共享存储器和/或外部存储器,其中,若所述输出特征图数据为中间计算结果,则所述输出特征图数据用作下一层级计算结果的输入数据;
所述芯片控制器,用于在所述前处理模块获取所述输入特征图数据之前,和/或,在所述向量处理模块处理所述计算结果,得到输出特征图数据之后,控制所述共享存储器与所述外部存储器之间的数据交互,其中,进行交互的数据包括所述输入特征图数据和/或所述输出特征图数据。
一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机可读指令,所述处理器执行所述计算机可读指令时实现如上述用于神经网络加速器的数据处理方法。
上述用于神经网络加速器的数据处理方法、芯片及电子设备,通过所述前处理模块从所述共享存储器获取输入特征图数据,将所述输入特征图数据处理为存内计算矩阵格式的矩阵数据,将所述矩阵数据输入所述存内计算矩阵;其中,若所述输入特征图数据包括至少两个输入特征图,且所述至少两个输入特征图以跳地址方式存储在所述共享存储器上,则所述前处理模块以按地址顺序读取的方式从所述共享存储器获取所述至少两个输入特征图;或,若所述输入特征图数据包括至少两个输入特征图,且所述至少两个输入特征图以连续存储方式存储在所述共享存储器上,则所述前处理模块以跳地址读取的方式从所述共享存储器获取所述至少两个输入特征图,以提高前处理模块的读取效率和读取灵活度,减少数据的搬运次数。通过所述存内计算矩阵获取权重数据,通过所述存内计算矩阵根据所述矩阵数据和所述权重数据进行卷积计算得到计算结果,将所述计算结果输入所述向量处理模块,以减少数据的搬运次数,提高数据处理效率。通过所述向量处理模块处理所述计算结果,得到输出特征图数据,将得到的所述输出特征图数据写入所述共享存储器和/或所述外部存储器;其中,若所述输出特征图数据为中间计算结果,则所述输出特征图数据用作下一层级计算结果的输入数据,以实现输出特征图数据的输出。在所述前处理模块获取所述输入特征图数据之前,和/或,在所述通过所述向量处理模块处理所述计算结果,得到输出特征图数据之后,通过所述芯片控制器控制所述共享存储器与所述外部存储器之间的数据交互,其中,进行交互的数据包括所述输入特征图数据和/或所述输出特征图数据,以确保共享存储器中输入特征图数据和/或输出特征图数据的可用性。本发明实现拼接功能时不用设置拼接层专用电路模块,减少了拼接层专用电路模块的面积占用和功耗占用,可以减少数据搬运,降低神经网络加速器的功耗,进而提高神经网络加速器对应的芯片的能效比和面效比。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中神经网络加速器芯片的一结构示意图;
图2是本发明一实施例中用于神经网络加速器芯片的数据处理方法的一流程示意图;
图3是本发明一实施例中两种输入特征图以连续存储方式存储在共享存储器040中的示意图;
图4是本发明一实施例中一示例中两种输入特征图以跳地址方式存储在共享存储器040中的示意图;
图5是现有技术神经网络算法的基本架构示意图一;
图6是现有技术神经网络算法的基本架构示意图二;
图7是现有技术神经网络算法的基本架构示意图三。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要注意的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
首先对本申请实施例涉及的概念,例如存内计算进行解释。
(1)存内计算(Computing in Memory,简称CIM)。
(2)神经网络加速器(NPU)
在本申请实施例中,神经网络加速器指代的是神经网络处理器(Neural-networkProcessing Unit,简称NPU),相较于传统的中央处理器CPU以及图形处理器GPU,具有更高数量级的并行计算单元。
(3)卷积核(Kernel)
卷积神经网络通常包括输入层、卷积层、激活层、池化层及全连接层等,在卷积层上数据以三维形式存在,其中输入的数据为输入特征图数据。卷积核用于与输入特征图数据进行卷积计算,当所有特征图与每个卷积核进行卷积后,产生得到卷积层的输出特征图。
在一实施例中,提供一种用于神经网络加速器的数据处理方法。其中,如图1和2所示,神经网络加速器包括:依次电连接的前处理模块010、存内计算矩阵020和向量处理模块030;以及分别与前处理模块010、存内计算矩阵020和向量处理模块030电连接的共享存储器040;与共享存储器040电连接的芯片控制器050。如图2所示,该数据处理方法包括如下步骤S10-S40。
S10、通过前处理模块010从共享存储器040获取输入特征图数据及将所述输入特征图数据处理为存内计算矩阵020格式的矩阵数据,将所述矩阵数据输入所述存内计算矩阵020;其中,若所述输入特征图数据包括至少两个输入特征图,且所述至少两个输入特征图以跳地址方式存储在所述共享存储器040上,则所述前处理模块010以按地址顺序读取的方式从所述共享存储器040获取所述至少两个输入特征图;或,若所述输入特征图数据包括至少两个输入特征图,且所述至少两个输入特征图以连续存储方式存储在所述共享存储器040上,则所述前处理模块010以跳地址读取的方式从所述共享存储器040获取所述至少两个输入特征图;
S20、通过所述存内计算矩阵020获取权重数据,通过所述存内计算矩阵020根据所述矩阵数据和所述权重数据进行卷积计算得到计算结果,将所述计算结果输入所述向量处理模块030;
S30、通过所述向量处理模块030处理所述计算结果,得到输出特征图数据,将得到的所述输出特征图数据写入所述共享存储器040和/或外部存储器100;其中,若所述输出特征图数据为中间计算结果,则所述输出特征图数据用作下一层级计算结果的输入数据;
S40、在所述前处理模块010获取所述输入特征图数据之前,和/或,在所述通过所述向量处理模块030处理所述计算结果,得到输出特征图数据之后,通过所述芯片控制器050控制所述共享存储器040与所述外部存储器100之间的数据交互,其中,进行交互的数据包括所述输入特征图数据和/或所述输出特征图数据。
可理解地,本实施例涉及的神经网络加速器,属于一种嵌入式神经网络处理器(NPU,Neural-network Processing Unit),适用于神经网络的数据运算。该神经网络加速器包括前处理模块010(Pre-Processing)、存内计算矩阵020(CIM/IMC Array)、向量处理模块030(VPU,vector processing units)、共享存储器040(share memory)和芯片控制器050。在一些情况下,芯片控制器050通过DMA模块051间接控制共享存储器040与外部存储器100之间的数据交互,此时,DMA模块051为独立于芯片控制器050之外的模块。
共享存储器040可以是神经网络加速器内部的高速存储介质,可以实现数据的高速读写。共享存储器040可以设置有三个存储区域,分别用于存储输入特征图数据、权重数据和输出特征图数据。这三个存储区域可以采用静态的地址区间,也可以采用动态的地址区间。
在处理神经网络数据时,通过芯片控制器050从外部存储器100获取部分或全部输入特征图数据,然后将输入特征图数据加载在共享存储器040中。外部存储器100指的是设置在神经网络加速器之外、与神经网络加速器电性连接的存储器,可以是非易失性可读取存储介质或易失性可读存储介质。
前处理模块010用于将输入特征图数据规范化,计算得到矩阵数据。前处理模块010可以从共享存储器040获取输入特征图数据,将输入特征图数据处理为符合存内计算矩阵020输入规范的矩阵数据,然后将矩阵数据输入存内计算矩阵020。也即是,矩阵数据为前处理模块010对输入特征图数据进行规范化处理的结果,将所述输入特征图数据处理为存内计算矩阵格式的数据模块,矩阵数据符合存内计算矩阵020的输入规范。存内计算矩阵格式可以是二维或三维矩阵格式。
进行拼接操作时,输入特征图数据包括至少两个输入特征图。输入特征图数据包括第一输入特征图和第二输入特征图。在一些示例中,若第一输入特征图和第二输入特征图以连续存储方式存储在共享存储器040中,则可以通过芯片控制器050控制前处理模块010分别在第一输入特征图的第一存储地址,以及第二输入特征图的第二存储地址取值,完成第一输入特征图和第二输入特征图之间的拼接操作。如图3所示,图3为一示例中两种输入特征图以连续存储方式存储在共享存储器040中的示意图。其中,第一输入特征图fmo_0存储在连续的地址区间4000上,接着,第二输入特征图fmo_1存储在连续的地址区间5000上,地址区间5000的最前的地址与地址区间4000最后的地址相邻。前处理模块010在获取输入特征图数据时,先读取fmo_0(part0),然后读取fmo_1(part0),接着读取fmo_0(part1)、fmo_1(part1),依次类推,直至读取完第一输入特征图和第二输入特征图。通过在不同的存储地址取值,大大提高了前处理模块010的读取灵活度。将矩阵数据直接输入存内计算矩阵020,不需要写入共享存储器040,可以减少数据的搬运次数,提高数据处理效率。此处,不用设置拼接层专用电路模块,减少了拼接层专用电路模块的面积占用和功耗占用,可以提升神经网络加速器芯片的单位面积计算能力,改善神经网络加速器芯片的计算性能。
在另一些示例中,若第一输入特征图和第二输入特征图以跳地址方式存储在共享存储器040上,则前处理模块010以按地址顺序读取的方式从共享存储器040获取第一输入特征图和第二输入特征图。如图4所示,图4为一示例中两种输入特征图以跳地址方式存储在共享存储器040中的示意图。第一输入特征图fmo_0和第二输入特征图fmo_1以跳地址方式存储在地址区间6000上。前处理模块010在获取输入特征图数据时,按顺序从地址6001读取fmo_0(part0)、从地址6002读取fmo_1(part0)、……,直至读取完第一输入特征图和第二输入特征图。由于第一输入特征图和第二输入特征图的交叉存储,可以节省拼接操作减少数据的搬运次数,提高数据处理效率。
存内计算矩阵020用于结合矩阵数据和权重数据,计算得到计算结果。在获取矩阵数据之后,存内计算矩阵020可以从共享存储器040或者其他存储地址获取权重数据,然后根据矩阵数据和权重数据计算计算结果,将计算结果输入向量处理模块030。将计算结果直接输入向量处理模块030,不需要写入共享存储器040,可以减少数据的搬运次数,提高数据处理效率。
向量处理模块030指的是一种可以执行激活函数、上下采样、池化、元素操作、数据重排中的至少一种的功能电路。通过所述向量处理模块030处理所述计算结果,可以得到输出特征图数据,并将输出特征图数据写入共享存储器040。输出特征图数据可以一直存放在共享存储器040中,也可以根据需要将输出特征图数据搬到外部存储器100中。输出特征图数据可以是下一网络层的输入数据。在一些示例中,写入阶段,根据跳地址规则写入共享存储器040,从而实现对两次处理获得的输出特征图数据进行拼接操作。
具体的,本实施例中的向量处理模块可以包括激活单元、池化单元、缩放单元和元素处理单元,其中,激活单元可以是卷积神经网络的激活层,其包括ReLU和LeakyReLU等等,主要用于对第一数据进行激活处理;池化单元用于对第一数据进行最大池化处理和平均池化处理;缩放单元用于对第一数据进行图像上采样和图像下采样处理;元素处理单元用于对第一数据元素之间的加减乘除运算。其中上述活单元、池化单元、缩放单元和元素处理单元的处理顺序可以任意组合,具体可以根据实际场景需求进行设定。
在前处理模块010获取输入特征图数据之前,和/或,在通过向量处理模块030处理计算结果,得到输出特征图数据之后,需要通过芯片控制器050控制共享存储器040与外部存储器100之间的数据交互。芯片控制器050可以设置有DMA(Direct Memory Access,直接内存访问)模块051(属于芯片控制器050的一部分)或与DMA模块051连接(独立于芯片控制器050之外)。芯片控制器050通过DMA模块051控制共享存储器040与外部存储器100之间的数据交互。在此处,进行交互的数据包括输入特征图数据和输出特征图数据。当共享存储器040的存储空间不满足输入特征图数据和/或输出特征图数据的存储容量时,需要对输入特征图数据和/或输出特征图数据进行数据搬运,以确保共享存储器040中输入特征图数据和/或输出特征图数据的可用性。
本实施例将拼接功能融合到写入或读取特征图数据流当中,实现拼接时大多数时间和系统其他模块并行工作,能够有效节省系统时间,同时,不需要引入额外的通用电路和专用电路,节省了能耗和面积消耗。
可选地,所述至少两个输入特征图包括第一输入特征图和第二输入特征图;所述第一输入特征图包括多个第一单元数据块,所述第二输入特征图包括多个第二单元数据块;
步骤S10中,即所述至少两个输入特征图以跳地址方式存储在所述共享存储器040,包括:
相邻的两个所述第一单元数据块的存储地址不连续;
相邻的两个所述第一单元数据块之间的中间存储地址,用于存储一个所述第二单元数据块。
可理解地,如图4所示,第一输入特征图包括多个第一单元数据块,如fmo_0(part0)、fmo_0(part1)、…、fmo_0(part n),第二输入特征图包括多个第二单元数据块,如fmo_1(part0)、fmo_1(part1)、…、fmo_1(part n)。当第一输入特征图和第二输入特征图以跳地址方式存储在所述共享存储器040时,相邻的两个第一单元数据块的存储地址不连续,也即是,第一单元数据块fmo_0(part0)存储在地址6001,fmo_0(part1)存储在地址6003,它们之间的地址6002用于存储第二单元数据块fmo_1(part0)。
本实施例以跳地址方式存储两种输入特征图,可以实现拼接操作,减少数据搬运,减少了功耗。
可选地,所述至少两个输入特征图包括第一输入特征图和第二输入特征图;所述第一输入特征图包括多个第一单元数据块,所述第二输入特征图包括多个第二单元数据块;
步骤S10中,即所述前处理模块010以跳地址读取的方式从所述共享存储器040获取所述至少两个输入特征图,包括:
所述前处理模块010先从所述第一输入特征图的存储地址读取第一个第一单元数据块,从所述第二输入特征图的存储地址读取第一个第二单元数据块;
接着,从所述第一输入特征图的存储地址读取第二个第一单元数据块,从所述第二输入特征图的存储地址读取第二个第二单元数据块;
依此类推,直至读取完所述第一输入特征图和所述第二输入特征图。
可理解地,如图3所示,图3为一示例中第一输入特征图和第二输入特征图以连续存储方式存储在共享存储器040中的示意图。其中,第一输入特征图fmo_0存储在地址区间4000上,第二输入特征图fmo_1存储在地址区间5000上。前处理模块010在获取输入特征图数据时,先读取fmo_0(part0),然后读取fmo_1(part0),接着读取fmo_0(part1)、fmo_1(part1),依次类推,直至读取完第一输入特征图和第二输入特征图。
本实施例中,通过在不同的存储地址取值,大大提高了前处理模块010的读取灵活度。将矩阵数据直接输入存内计算矩阵020,不需要写入共享存储器040,可以减少数据的搬运次数,提高数据处理效率。
可选地,所述第一输入特征图和所述第二输入特征图用于进行拼接操作;
步骤S10之前,所述通过所述前处理模块010从所述共享存储器040获取输入特征图数据之前,包括:
S11、在进行拼接操作时,若待处理的所述第一输入特征图和待处理的所述第二输入特征图的数量之和小于所述共享存储器040的容量,按跳地址规则将所述第一输入特征图和所述第二输入特征图写入所述共享存储器040。
可理解地,若待处理输入特征图数据的数量小于共享存储器040的容量(可以特指专门用于存储输入特征图数据的地址容量),则可以按跳地址规则将第一输入特征图和第二输入特征图写入共享存储器040,以便于前处理模块010以连续读取的方式从共享存储器040中获取输入特征图数据。
本实施例提供了一种在共享存储器040的空间足够存储输入特征图数据时,输入特征图数据写入共享存储器040的方式。需要注意的是,在此处,第一输入特征图和第二输入特征图可以是从外部存储器100搬运至共享存储器040的输入特征图数据,也可以是两次向量处理模块030的输出结果(可以是并行,也可以是串行)。
如图5-图7所示,图5-图7为现有技术神经网络算法的基本架构示意图。在图5中,级联层2005(本实施例不使用级联层)涉及两个输入,分别是用2006表示的输入特征图fmo_0和用2007表示的输入特征图fmo_1。2006和2007来源通常分别是上一级的运算层1和运算层2的输出,运算层1和运算层2可以是激活函数层2002、池化层2003、上/下采样层2004、卷积运算层2001等算子的排列组合。
在一些示例中,如图6的示意图,输入特征图fmo_0可以是先经卷积运算层2001,再经运算层1(2008)的输出结果;输入特征图fmo_1可以是先经卷积运算层2001,再经运算层2(2009)的输出结果;两个输入特征图再输入级联层2005。
在一些示例中,如图7的示意图,输入特征图fmo_0可以是先经卷积运算层2001,再经若干运算层(2011)的输出结果;输入特征图fmo_1可以是先经卷积运算层2001,再经若干运算层(2012)的输出结果;两个输入特征图再输入级联层2005。
本实施例不设置级联层,不需要引入额外的通用电路和专用电路,节省了能耗和面积消耗。
可选地,所述第一输入特征图和所述第二输入特征图用于进行拼接操作;
步骤S40,即所述通过所述芯片控制器050控制所述共享存储器040与所述外部存储器100之间的数据交互,包括:
在进行拼接操作时,若待处理的所述第一输入特征图和待处理的所述第二输入特征图的数量之和大于所述共享存储器040的容量,分批次从所述外部存储器100获取所述第一单元数据块和所述第二单元数据块,并加载到所述共享存储器040中。
可理解地,待处理的所述第一输入特征图和待处理的所述第二输入特征图的数量之和大于所述共享存储器040的容量,第一输入特征图和第二输入特征图均存储在外部存储器100。此时,可以根据预设数量比例分批次从外部存储器100获取第一输入特征图和第二输入特征图,并加载到共享存储器040中。也就是说,可以先加载部分第一输入特征图和部分第二输入特征图到共享存储器040,待前处理模块010提取后,继续加载剩余的输入特征图。预设数量比例可以根据实际需要进行定义,如第一输入特征图和第二输入特征图之间的预设数量比例可以是1:1、1:2等。
本实施例可以实现数量大于容量的两个输入特征图的输入,提高神经网络加速器芯片的数据兼容处理能力。
可选地,生成的所述输出特征图数据包括第一输出特征图和第二输出特征图;所述第一输出特征图和所述第二输出特征图用于进行拼接操作;
步骤S30中,即所述将得到的所述输出特征图数据写入所述共享存储器040和/或所述外部存储器100,包括:
若得到的所述第一输出特征图和得到的所述第二输出特征图的数量之和小于所述共享存储器040的容量,按跳地址规则将所述第一输出特征图和所述第二输出特征图写入所述共享存储器040。
可理解地,向量处理模块030先后输出第一输出特征图和第二输出特征图。在第一输出特征图和第二输出特征图用于进行拼接操作时,需要判断第一输出特征图和第二输出特征图的数量之和是否小于共享存储器040的容量。若数量之和小于容量,按跳地址规则将第一输出特征图和第二输出特征图写入共享存储器040。此处的跳地址规则与用于存储第一输入特征图和第二输入特征图的跳地址规则相同,在此不再赘述。
本实施例中,以跳地址规则方式将第一输出特征图和第二输出特征图写出共享存储器040,可以实现两个特征图的拼接操作,减少了拼接层的设置,减少拼接层的面积占用和功耗占用,可以提升神经网络加速器芯片的单位面积计算能力,改善神经网络加速器芯片的计算性能。
可选地,生成的所述输出特征图数据包括第一输出特征图和第二输出特征图;所述第一输出特征图和所述第二输出特征图用于进行拼接操作;
步骤S40,即所述通过所述芯片控制器050控制所述共享存储器040与外部存储器100之间的数据交互,包括:
S401、生成所述第一输出特征图;若生成的所述第一输出特征图大于所述共享存储器040的容量,将生成的所述第一输出特征图的至少一部分连续写入所述共享存储器040;
S402、若所述共享存储器040中的所述第一输出特征图达到第一预设数量阈值,通过所述芯片控制器050将所述共享存储器040中的部所述第一输出特征图迁移至所述外部存储器100;
S403、生成所述第二输出特征图;按跳地址规则将生成的所述第二输出特征图以及从所述外部存储器100获取的部分所述第一输出特征图写入所述共享存储器040,形成混合数据;
S404、若写入的所述混合数据达到第二预设数量阈值,通过所述芯片控制器050将所述混合数据迁移至所述外部存储器100。
可理解地,当第一输出特征图大于共享存储器040的容量,则第一输出特征图的输出涉及共享存储器040与外部存储器100的数据写入。可以将第一输出特征图连续写入共享存储器040,待共享存储器040的输出区域写满(如第一输出特征图达到第一预设数量阈值),通过芯片控制器050将部分或全部已写入的第一输出特征图迁移至外部存储器100;如此重复,直至第一输出特征图输出完毕。第一预设数量阈值可以根据实际需要设置,且不大于共享存储器040的容量。
在计算得到第二输出特征图时,若第二输出特征图小于共享存储器040的容量,按跳地址规则将第二输出特征图以及从外部存储器100获取的部分第一输出特征图写入共享存储器040,形成混合数据;当写入的混合数据达到第二预设数量阈值时,通过芯片控制器050将部分或全部混合数据迁移至外部存储器100,如此重复,直至第二输出特征图输出完毕。第二预设数量阈值可以根据实际需要设置,且不大于共享存储器040的容量。
在进行下一层计算时,可以从外部存储器100获取混合数据,连续写入共享存储器040。
本实施例在计算得到第一输出特征图和第二输出特征图时,可以预先对它们进行混合,有利于它们之间的拼接操作,提高运算效率。
可选地,步骤S40,即所述通过所述芯片控制器050控制所述共享存储器040与外部存储器100之间的数据交互,包括:
S405、在进行非拼接操作时,若待处理的输入特征图数据的数量大于所述共享存储器040的容量,根据预设数量分批次从所述外部存储器100获取所述输入特征图数据并将获取的所述输入特征图数据加载到所述共享存储器040中。
可理解地,进行非拼接操作时,前处理模块010仅涉及一个输入特征图的输入。若输入特征图的数量大于共享存储器040的容量时,根据预设数量分批次从外部存储器100获取输入特征图并加载到共享存储器040中。预设数量指的是每一批次的输入特征图的数量。容量可以根据实际需要进行设置,与共享存储器040的容量大小相关。例如,输入特征图的数量为10MB,容量为3MB,预设数量可以是2MB。当共享存储器040中前一批次的输入特征图已被前处理模块010提取时,可以继续从外部存储器100获取下一批次的输入特征图并加载到共享存储器040中,供前处理模块010提取。
本实施例允许神经网络加速器芯片处理数量大于容量的输入特征图的输入,提高神经网络加速器芯片的数据兼容处理能力。
可选地,步骤S40,即所述通过所述芯片控制器050控制所述共享存储器040与外部存储器100之间的数据交互,包括:
在进行非拼接操作时,若得到的所述输出特征图数据的数量大于所述共享存储器040的容量,将所述共享存储器040中的至少部分输出特征图数据迁移至所述外部存储器100。
可理解地,向量处理模块030用于计算得到输出特征图数据,将输出特征图数据写入共享存储器040。进行非拼接操作时,若输出特征图数据的数量大于共享存储器040的容量时,将共享存储器040的输出特征图数据迁移至外部存储器100。
本实施例在输出特征图数据的数量大于共享存储器040的容量时,将共享存储器040的输出特征图数据迁移至外部存储器100,可以保证共享存储器040的写入能力,输出特征图数据的丢失。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种芯片,该芯片使用了上述实施例中用于神经网络加速器的数据处理方法。该芯片可以直接是NPU形成的芯片,也可以是包括NPU的芯片,例如基于模数混合的AI视觉芯片。如图1所示,所述芯片中的神经网络加速器包括:
依次电连接的前处理模块010、存内计算矩阵020和向量处理模块030;以及,
分别与所述前处理模块010、所述存内计算矩阵020和所述向量处理模块030电连接的共享存储器040;
与所述共享存储器040电连接的芯片控制器050;
其中,所述前处理模块010,用于从所述共享存储器040获取输入特征图数据,将所述输入特征图数据处理为存内计算矩阵020格式的矩阵数据,将所述矩阵数据输入所述存内计算矩阵020;其中,若所述输入特征图数据包括至少两个输入特征图,且所述至少两个输入特征图以跳地址方式存储在所述共享存储器040上,则所述前处理模块010以按地址顺序读取的方式从所述共享存储器040获取所述至少两个输入特征图;或,若所述输入特征图数据包括至少两个输入特征图,且所述至少两个输入特征图以连续存储方式存储在所述共享存储器040上,则所述前处理模块010以跳地址读取的方式从所述共享存储器040获取所述至少两个输入特征图;
所述存内计算矩阵020,包括多个存内计算模块(CIM),所述多个存内计算模块配置为矩阵状用于获取权重数据,根据所述矩阵数据和所述权重数据进行卷积计算得到计算结果,将所述计算结果输入所述向量处理模块030;
所述向量处理模块030,用于对所述计算结果进行处理,得到输出特征图数据,将得到的所述输出特征图数据写入所述共享存储器040和/或外部存储器100,其中,若所述输出特征图数据为中间计算结果,则所述输出特征图数据用作下一层级计算结果的输入数据;
所述芯片控制器050,用于在所述前处理模块010获取所述输入特征图数据之前,和/或,在所述向量处理模块030处理所述计算结果,得到输出特征图数据之后,控制所述共享存储器040与所述外部存储器100之间的数据交互,其中,进行交互的数据包括所述输入特征图数据和/或所述输出特征图数据。
可选地,所述至少两个输入特征图包括第一输入特征图和第二输入特征图;所述第一输入特征图包括多个第一单元数据块,所述第二输入特征图包括多个第二单元数据块;
所述至少两个输入特征图以跳地址方式存储在所述共享存储器040,包括:
相邻的两个所述第一单元数据块的存储地址不连续;
相邻的两个所述第一单元数据块之间的中间存储地址,用于存储一个所述第二单元数据块。
可选地,所述至少两个输入特征图包括第一输入特征图和第二输入特征图;所述第一输入特征图包括多个第一单元数据块,所述第二输入特征图包括多个第二单元数据块;
所述前处理模块010以跳地址读取的方式从所述共享存储器040获取所述至少两个输入特征图,包括:
所述前处理模块010先从所述第一输入特征图的存储地址读取第一个第一单元数据块,从所述第二输入特征图的存储地址读取第一个第二单元数据块;
接着,从所述第一输入特征图的存储地址读取第二个第一单元数据块,从所述第二输入特征图的存储地址读取第二个第二单元数据块;
依此类推,直至读取完所述第一输入特征图和所述第二输入特征图。
可选地,生成的所述输出特征图数据包括第一输出特征图和第二输出特征图;所述第一输出特征图和所述第二输出特征图用于进行拼接操作;
所述芯片控制器050还用于:
在生成所述第一输出特征图时,若生成的所述第一输出特征图大于所述共享存储器040的容量,将生成的所述第一输出特征图的至少一部分连续写入所述共享存储器040;
若所述共享存储器040中的所述第一输出特征图达到第一预设数量阈值,通过所述芯片控制器050将所述共享存储器040中的所述第一输出特征图迁移至所述外部存储器100;
在生成所述第二输出特征图时,按跳地址规则将生成的所述第二输出特征图以及从所述外部存储器100获取的部分所述第一输出特征图写入所述共享存储器040,形成混合数据;
若写入的所述混合数据达到第二预设数量阈值,通过所述芯片控制器050将所述混合数据迁移至所述外部存储器100。
可选地,所述至少两个输入特征图包括第一输入特征图和第二输入特征图;所述第一输入特征图包括多个第一单元数据块,所述第二输入特征图包括多个第二单元数据块;
所述前处理模块010用于:
先从所述第一输入特征图的存储地址读取第一个第一单元数据块,从所述第二输入特征图的存储地址读取第一个第二单元数据块;
接着,从所述第一输入特征图的存储地址读取第二个第一单元数据块,从所述第二输入特征图的存储地址读取第二个第二单元数据块;
依此类推,直至读取完所述第一输入特征图和所述第二输入特征图。
可选地,所述第一输入特征图和所述第二输入特征图用于进行拼接操作;
所述芯片控制器050还用于:
在进行拼接操作时,若待处理的所述第一输入特征图和待处理的所述第二输入特征图的数量之和小于所述共享存储器040的容量,按跳地址规则将所述第一输入特征图和所述第二输入特征图写入所述共享存储器040。
可选地,所述第一输入特征图和所述第二输入特征图用于进行拼接操作;
所述芯片控制器050还用于:
在进行拼接操作时,若待处理的所述第一输入特征图和待处理的所述第二输入特征图的数量之和大于所述共享存储器040的容量,分批次从所述外部存储器100获取所述第一单元数据块和所述第二单元数据块,并加载到所述共享存储器040中。
可选地,生成的所述输出特征图数据包括第一输出特征图和第二输出特征图;所述第一输出特征图和所述第二输出特征图用于进行拼接操作;
所述芯片控制器050还用于:
若得到的所述第一输出特征图和得到的所述第二输出特征图的数量之和小于所述共享存储器040的容量,按跳地址规则将所述第一输出特征图和所述第二输出特征图写入所述共享存储器040。
可选地,所述芯片控制器050还用于:
在进行非拼接操作时,若待处理的输入特征图数据的数量大于所述共享存储器040的容量,根据预设数量分批次从所述外部存储器100获取所述输入特征图数据并将获取的所述输入特征图数据加载到所述共享存储器040中。
可选地,所述芯片控制器050还用于:
在进行非拼接操作时,若得到的所述输出特征的数量大于所述共享存储器040的容量,将所述共享存储器040中的至少部分输出特征迁移至所述外部存储器100。
关于芯片的具体限定可以参见上文中对于用于神经网络加速器的数据处理方法的限定,在此不再赘述。上述芯片中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
一种电子设备,包括上述任意一种芯片。
本发明提供的基于CIM的神经网络加速器可以应用于诸多AI领域,例如包括本发明提供的神经网络加速器的存算处理系统可以为基于感存算一体技术架构实现的模数混合AI视觉芯片,该AI视觉芯片具有更低功耗与更高的能效比。本发明提供的神经网络加速器可应用于自动驾驶、AR、VR、激光雷达,还可广泛应用于智能手机、平板电脑、可穿戴电子装备、智能家居电子产品、工业或医疗或电池供电类等一系列对低功耗与高能效比有需求的应用领域。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指令相关的硬件来完成,所述的计算机可读指令可存储于一非易失性可读取存储介质或易失性可读存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (14)
1.一种用于神经网络加速器的数据处理方法,其特征在于,所述神经网络加速器包括:依次电连接的前处理模块、存内计算矩阵和向量处理模块;以及分别与所述前处理模块、所述存内计算矩阵和所述向量处理模块电连接的共享存储器;与所述共享存储器电连接的芯片控制器;
所述数据处理方法包括:
通过所述前处理模块从所述共享存储器获取输入特征图数据,将所述输入特征图数据处理为存内计算矩阵格式的矩阵数据,将所述矩阵数据输入所述存内计算矩阵;其中,若所述输入特征图数据包括至少两个输入特征图,且所述至少两个输入特征图以跳地址方式存储在所述共享存储器上,则所述前处理模块以按地址顺序读取的方式从所述共享存储器获取所述至少两个输入特征图;或,若所述输入特征图数据包括至少两个输入特征图,且所述至少两个输入特征图以连续存储方式存储在所述共享存储器上,则所述前处理模块以跳地址读取的方式从所述共享存储器获取所述至少两个输入特征图;
通过所述存内计算矩阵获取权重数据,通过所述存内计算矩阵根据所述矩阵数据和所述权重数据进行卷积计算得到计算结果,将所述计算结果输入所述向量处理模块;
通过所述向量处理模块对所述计算结果进行向量处理,得到输出特征图数据,将得到的所述输出特征图数据写入所述共享存储器和/或外部存储器;其中,若所述输出特征图数据为中间计算结果,则所述输出特征图数据用作下一层级计算结果的输入数据;
在所述前处理模块获取所述输入特征图数据之前,和/或,在所述通过所述向量处理模块处理所述计算结果,得到输出特征图数据之后,通过所述芯片控制器控制所述共享存储器与所述外部存储器之间的数据交互,其中,进行交互的数据包括所述输入特征图数据和/或所述输出特征图数据。
2.如权利要求1所述的用于神经网络加速器的数据处理方法,其特征在于,所述至少两个输入特征图包括第一输入特征图和第二输入特征图;所述第一输入特征图包括多个第一单元数据块,所述第二输入特征图包括多个第二单元数据块;
所述至少两个输入特征图以跳地址方式存储在所述共享存储器,包括:
相邻的两个所述第一单元数据块的存储地址不连续;
相邻的两个所述第一单元数据块之间的中间存储地址,用于存储一个所述第二单元数据块。
3.如权利要求1所述的用于神经网络加速器的数据处理方法,其特征在于,所述至少两个输入特征图包括第一输入特征图和第二输入特征图;所述第一输入特征图包括多个第一单元数据块,所述第二输入特征图包括多个第二单元数据块;
所述前处理模块以跳地址读取的方式从所述共享存储器获取所述至少两个输入特征图,包括:
所述前处理模块先从所述第一输入特征图的存储地址读取第一个第一单元数据块,从所述第二输入特征图的存储地址读取第一个第二单元数据块;
接着,从所述第一输入特征图的存储地址读取第二个第一单元数据块,从所述第二输入特征图的存储地址读取第二个第二单元数据块;
依此类推,直至读取完所述第一输入特征图和所述第二输入特征图。
4.如权利要求2所述的用于神经网络加速器的数据处理方法,其特征在于,所述第一输入特征图和所述第二输入特征图用于进行拼接操作;
所述通过所述前处理模块从所述共享存储器获取输入特征图数据之前,包括:
在进行拼接操作时,若待处理的所述第一输入特征图和待处理的所述第二输入特征图的数量之和小于所述共享存储器的容量,按跳地址规则将所述第一输入特征图和所述第二输入特征图写入所述共享存储器。
5.如权利要求2或3所述的用于神经网络加速器的数据处理方法,其特征在于,所述第一输入特征图和所述第二输入特征图用于进行拼接操作;
所述通过所述芯片控制器控制所述共享存储器与所述外部存储器之间的数据交互,包括:
在进行拼接操作时,若待处理的所述第一输入特征图和待处理的所述第二输入特征图的数量之和大于所述共享存储器的容量,分批次从所述外部存储器获取所述第一单元数据块和所述第二单元数据块,并加载到所述共享存储器中。
6.如权利要求1所述的用于神经网络加速器的数据处理方法,其特征在于,生成的所述输出特征图数据包括第一输出特征图和第二输出特征图;所述第一输出特征图和所述第二输出特征图用于进行拼接操作;
所述将得到的所述输出特征图数据写入所述共享存储器和/或所述外部存储器,包括:
若得到的所述第一输出特征图和得到的所述第二输出特征图的数量之和小于所述共享存储器的容量,按跳地址规则将所述第一输出特征图和所述第二输出特征图写入所述共享存储器。
7.如权利要求1所述的用于神经网络加速器的数据处理方法,其特征在于,生成的所述输出特征图数据包括第一输出特征图和第二输出特征图;所述第一输出特征图和所述第二输出特征图用于进行拼接操作;
所述通过所述芯片控制器控制所述共享存储器与外部存储器之间的数据交互,包括:
生成所述第一输出特征图;若生成的所述第一输出特征图大于所述共享存储器的容量,将生成的所述第一输出特征图的至少一部分连续写入所述共享存储器;
若所述共享存储器中的所述第一输出特征图达到第一预设数量阈值,通过所述芯片控制器将所述共享存储器中的所述第一输出特征图迁移至所述外部存储器;
生成所述第二输出特征图;按跳地址规则将生成的所述第二输出特征图以及从所述外部存储器获取的部分所述第一输出特征图写入所述共享存储器,形成混合数据;
若写入的所述混合数据达到第二预设数量阈值,通过所述芯片控制器将所述混合数据迁移至所述外部存储器。
8.如权利要求1所述的用于神经网络加速器的数据处理方法,其特征在于,所述通过所述芯片控制器控制所述共享存储器与外部存储器之间的数据交互,包括:
在进行非拼接操作时,若待处理的输入特征图数据的数量大于所述共享存储器的容量,根据预设数量分批次从所述外部存储器获取所述输入特征图数据并将获取的所述输入特征图数据加载到所述共享存储器中。
9.如权利要求1所述的用于神经网络加速器的数据处理方法,其特征在于,所述通过所述芯片控制器控制所述共享存储器与外部存储器之间的数据交互,包括:
在进行非拼接操作时,若得到的所述输出特征的数量大于所述共享存储器的容量,将所述共享存储器中的至少部分输出特征迁移至所述外部存储器。
10.一种芯片,其特征在于,包括神经网络加速器,所述神经网络加速器包括:
依次电连接的前处理模块、存内计算矩阵和向量处理模块;以及,
分别与所述前处理模块、所述存内计算矩阵和所述向量处理模块电连接的共享存储器;
与所述共享存储器电连接的芯片控制器;
其中,所述前处理模块,用于从所述共享存储器获取输入特征图数据,将所述输入特征图数据处理为存内计算矩阵格式的矩阵数据,将所述矩阵数据输入所述存内计算矩阵;其中,若所述输入特征图数据包括至少两个输入特征图,且所述至少两个输入特征图以跳地址方式存储在所述共享存储器上,则所述前处理模块以按地址顺序读取的方式从所述共享存储器获取所述至少两个输入特征图;或,若所述输入特征图数据包括至少两个输入特征图,且所述至少两个输入特征图以连续存储方式存储在所述共享存储器上,则所述前处理模块以跳地址读取的方式从所述共享存储器获取所述至少两个输入特征图;
所述存内计算矩阵,包括多个存内计算模块,所述多个存内计算模块配置为矩阵状,用于获取权重数据,根据所述矩阵数据和所述权重数据进行卷积计算得到计算结果,将所述计算结果输入所述向量处理模块;
所述向量处理模块,用于对所述计算结果进行向量处理,得到输出特征图数据,将得到的所述输出特征图数据写入所述共享存储器和/或外部存储器,其中,若所述输出特征图数据为中间计算结果,则所述输出特征图数据用作下一层级计算结果的输入数据;
所述芯片控制器,用于在所述前处理模块获取所述输入特征图数据之前,和/或,在所述向量处理模块处理所述计算结果,得到输出特征图数据之后,控制所述共享存储器与所述外部存储器之间的数据交互,其中,进行交互的数据包括所述输入特征图数据和/或所述输出特征图数据。
11.如权利要求10所述的芯片,其特征在于,所述至少两个输入特征图包括第一输入特征图和第二输入特征图;所述第一输入特征图包括多个第一单元数据块,所述第二输入特征图包括多个第二单元数据块;
所述至少两个输入特征图以跳地址方式存储在所述共享存储器,包括:
相邻的两个所述第一单元数据块的存储地址不连续;
相邻的两个所述第一单元数据块之间的中间存储地址,用于存储一个所述第二单元数据块。
12.如权利要求10所述的芯片,其特征在于,所述至少两个输入特征图包括第一输入特征图和第二输入特征图;所述第一输入特征图包括多个第一单元数据块,所述第二输入特征图包括多个第二单元数据块;
所述前处理模块以跳地址读取的方式从所述共享存储器获取所述至少两个输入特征图,包括:
所述前处理模块先从所述第一输入特征图的存储地址读取第一个第一单元数据块,从所述第二输入特征图的存储地址读取第一个第二单元数据块;
接着,从所述第一输入特征图的存储地址读取第二个第一单元数据块,从所述第二输入特征图的存储地址读取第二个第二单元数据块;
依此类推,直至读取完所述第一输入特征图和所述第二输入特征图。
13.如权利要求10所述的芯片,其特征在于,生成的所述输出特征图数据包括第一输出特征图和第二输出特征图;所述第一输出特征图和所述第二输出特征图用于进行拼接操作;
所述芯片控制器还用于:
在生成所述第一输出特征图时,若生成的所述第一输出特征图大于所述共享存储器的容量,将生成的所述第一输出特征图的至少一部分连续写入所述共享存储器;
若所述共享存储器中的所述第一输出特征图达到第一预设数量阈值,通过所述芯片控制器将所述共享存储器中的所述第一输出特征图迁移至所述外部存储器;
在生成所述第二输出特征图时,按跳地址规则将生成的所述第二输出特征图以及从所述外部存储器获取的部分所述第一输出特征图写入所述共享存储器,形成混合数据;
若写入的所述混合数据达到第二预设数量阈值,通过所述芯片控制器将所述混合数据迁移至所述外部存储器。
14.一种电子设备,包括权利要求10至13中任一项所述芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310440885.6A CN116152520B (zh) | 2023-04-23 | 2023-04-23 | 用于神经网络加速器的数据处理方法、芯片及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310440885.6A CN116152520B (zh) | 2023-04-23 | 2023-04-23 | 用于神经网络加速器的数据处理方法、芯片及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116152520A CN116152520A (zh) | 2023-05-23 |
CN116152520B true CN116152520B (zh) | 2023-07-07 |
Family
ID=86339293
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310440885.6A Active CN116152520B (zh) | 2023-04-23 | 2023-04-23 | 用于神经网络加速器的数据处理方法、芯片及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116152520B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117474062A (zh) * | 2023-12-28 | 2024-01-30 | 深圳市九天睿芯科技有限公司 | 向量处理器、神经网络加速器、芯片及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020073211A1 (zh) * | 2018-10-09 | 2020-04-16 | 华为技术有限公司 | 运算加速器、处理方法及相关设备 |
CN111523652A (zh) * | 2019-02-01 | 2020-08-11 | 阿里巴巴集团控股有限公司 | 处理器及其数据处理方法、摄像装置 |
CN112465110A (zh) * | 2020-11-16 | 2021-03-09 | 中国电子科技集团公司第五十二研究所 | 一种卷积神经网络计算优化的硬件加速装置 |
WO2022067508A1 (zh) * | 2020-09-29 | 2022-04-07 | 华为技术有限公司 | 一种神经网络加速器、加速方法以及装置 |
CN115860079A (zh) * | 2023-01-30 | 2023-03-28 | 深圳市九天睿芯科技有限公司 | 神经网络加速装置、方法、芯片、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11443185B2 (en) * | 2018-10-11 | 2022-09-13 | Powerchip Semiconductor Manufacturing Corporation | Memory chip capable of performing artificial intelligence operation and method thereof |
-
2023
- 2023-04-23 CN CN202310440885.6A patent/CN116152520B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020073211A1 (zh) * | 2018-10-09 | 2020-04-16 | 华为技术有限公司 | 运算加速器、处理方法及相关设备 |
CN111523652A (zh) * | 2019-02-01 | 2020-08-11 | 阿里巴巴集团控股有限公司 | 处理器及其数据处理方法、摄像装置 |
WO2022067508A1 (zh) * | 2020-09-29 | 2022-04-07 | 华为技术有限公司 | 一种神经网络加速器、加速方法以及装置 |
CN112465110A (zh) * | 2020-11-16 | 2021-03-09 | 中国电子科技集团公司第五十二研究所 | 一种卷积神经网络计算优化的硬件加速装置 |
CN115860079A (zh) * | 2023-01-30 | 2023-03-28 | 深圳市九天睿芯科技有限公司 | 神经网络加速装置、方法、芯片、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116152520A (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11449576B2 (en) | Convolution operation processing method and related product | |
CN107437110B (zh) | 卷积神经网络的分块卷积优化方法及装置 | |
US10915816B2 (en) | System and method of executing neural networks | |
US11704553B2 (en) | Neural network system for single processing common operation group of neural network models, application processor including the same, and operation method of neural network system | |
CN112840356B (zh) | 运算加速器、处理方法及相关设备 | |
KR20180012439A (ko) | 회선 신경망에서 가속기 및 이의 동작 방법 | |
CN116152520B (zh) | 用于神经网络加速器的数据处理方法、芯片及电子设备 | |
CN112199190A (zh) | 内存分配方法、装置、存储介质及电子设备 | |
CN111338695B (zh) | 基于流水线技术的数据处理方法及相关产品 | |
CN111465943A (zh) | 芯片上计算网络 | |
US8224871B2 (en) | Triangulated irregular network | |
CN111340935A (zh) | 点云数据处理方法、智能行驶方法及相关装置、电子设备 | |
CN112970037B (zh) | 用于实施神经网络应用的多芯片系统、适用于多芯片系统的数据处理方法、和非暂时性计算机可读介质 | |
KR20210014561A (ko) | 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체 | |
US20210224632A1 (en) | Methods, devices, chips, electronic apparatuses, and storage media for processing data | |
CN110865950A (zh) | 数据预处理方法、装置、计算机设备和存储介质 | |
KR20200072308A (ko) | 뉴럴 네트워크에서 컨볼루션 연산을 수행하는 방법 및 장치 | |
CN115480919A (zh) | 卷积优化运算方法、装置、计算机设备及存储介质 | |
CN112036554B (zh) | 神经网络模型的处理方法、装置、计算机设备和存储介质 | |
KR102372869B1 (ko) | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 | |
US20220044101A1 (en) | Collaborative sensor data processing by deep learning accelerators with integrated random access memory | |
CN111325339A (zh) | 人工智能处理器执行学习任务的方法及相关产品 | |
US20210248475A1 (en) | Electronic apparatus for performing deconvolution calculation and controlling method thereof | |
CN110865792B (zh) | 数据预处理方法、装置、计算机设备和存储介质 | |
CN114638352B (zh) | 一种处理器架构、处理器及电子设备 |
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 |