CN112799599A - 一种数据存储方法、计算核、芯片和电子设备 - Google Patents
一种数据存储方法、计算核、芯片和电子设备 Download PDFInfo
- Publication number
- CN112799599A CN112799599A CN202110172560.5A CN202110172560A CN112799599A CN 112799599 A CN112799599 A CN 112799599A CN 202110172560 A CN202110172560 A CN 202110172560A CN 112799599 A CN112799599 A CN 112799599A
- Authority
- CN
- China
- Prior art keywords
- data
- processing
- convolution
- layer
- storage unit
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Error Detection And Correction (AREA)
Abstract
本公开涉及一种数据存储方法、计算核、芯片和电子设备,所述方法应用于处理器的计算核,每个计算核包括处理部件及存储部件,存储部件包括两个以上存储单元。处理部件根据多层卷积运算过程中的卷积层处理顺序,依次将各卷积层的权值数据和处理数据写入各存储单元进行存储;各存储单元接收并存储所述权值数据和所述处理数据。并且可以对相邻层数据一边计算一边动态覆盖,增大了剩余连续动态可用空间,为后续的计算腾出更大的数据空间,提高计算核的时空运算效率,进而提高芯片性能。
Description
技术领域
本公开涉及神经形态工程领域,尤其涉及一种数据存储方法、计算核、芯片和电子设备。
背景技术
卷积运算是神经网络中的常用运算。众核神经形态芯片在映射的过程中,对需要进行卷积运算数据进行存储和传输。这些数据可以被分为静态数据和动态数据,其中,静态数据是不可擦除的,动态数据是可以不断擦除的。静态数据在芯片中占据的内存空间比较固定,且不可以被覆盖,动态数据在芯片中占据的内存空间根据时序的需要可以改变、可以被覆盖。静态数据可以包括神经网络的卷积核的权值,动态数据可以包括处理数据。
在数据存储和传输过程中容易产生交叠区域数据的覆盖、冲毁,即便采用先搬移数据错开交叠区域再发送,也会增大计算时钟,降低芯片的计算效力。芯片的存储存取耗时长,占据空间容量大,动态重复利用效率低。
发明内容
有鉴于此,本公开提出了一种数据存储方法、计算核、芯片和电子设备。
根据本公开的一方面,提供了一种数据存储方法,应用于处理器的计算核,所述处理器包括多个计算核,每个计算核包括处理部件及存储部件,其中,所述存储部件包括两个以上存储单元。
所述方法包括:所述处理部件根据所述多层卷积运算过程中的卷积层处理顺序,依次将各卷积层的权值数据和处理数据写入各存储单元进行存储;各存储单元接收并存储所述权值数据和所述处理数据;
其中,在所述存储单元中,相同卷积层的处理数据和权值数据存储在不同存储单元中;在同一存储单元中,存储有权值数据的权值数据空间与存储有处理数据的处理数据空间按照第一地址方向依次排放;
其中,存储各卷积层的权值数据的权值数据空间按照卷积层处理顺序,沿第一地址方向依次排放;存储各卷积层的处理数据的处理数据空间按照卷积层处理顺序,沿第一地址方向依次排放;
其中,存储同一卷积层的权值数据的权值数据空间中和存储同一卷积层的处理数据的处理数据空间中,权值数据和处理数据分别按照第二地址方向依次排放,第一地址方向与第二地址方向相反。
在一种可能的实现方式中,所述第一地址方向为高地址到低地址方向,所述第二地址方向为低地址到高地址方向。
在一种可能的实现方式中,所述方法还包括:
所述处理部件将所述多层卷积运算过程中各卷积层的运算结果数据送入各存储单元进行存储;
各存储单元接收并存储所述运算结果数据,其中,任一卷积层的运算结果数据与该卷积层的处理数据存储在同一存储单元中,并与下一卷积层的处理数据共用存储空间。
在一种可能的实现方式中,所述方法还包括:
所述处理部件将从所述计算核外接收的第一数据写入存储单元,并从存储单元读取第二数据以向所述计算核外发送;
其中,在多次写入操作中,每次写入操作的起始地址按照所述第一地址方向排列,每一次写入操作中按照所述第二地址方向写入第一数据;
在多次读取操作中,每次读取操作的起始地址按照所述第一地址方向排列,每一次读取操作中按照所述第二地址方向读取第二数据。
在一种可能的实现方式中,在所述存储单元中,针对每一卷积层的处理数据和权值数据的存储顺序符合先深度方向,再横向,再纵向的卷积运算过程。
在一种可能的实现方式中,每一层卷积运算过程使用多个卷积核组,每个卷积核组中包括多个卷积核;
在所述存储单元中,每一层卷积运算中的各卷积核组的权值数据依次存储,每个卷积核组的权值数据的存储顺序按照卷积核的编号顺序、卷积核深度方向、横向方向、纵向方向进行存储。
根据本公开的另一方面,提供了一种计算核,所述计算核包括处理部件及存储部件;
所述处理部件根据所述多层卷积运算过程中的卷积层处理顺序,依次将各卷积层的权值数据和处理数据写入各存储单元进行存储;
所述存储部件包括两个以上存储单元,各存储单元接收并存储所述权值数据和所述处理数据;
其中,在所述存储单元中,相同卷积层的处理数据和权值数据存储在不同存储单元中;在同一存储单元中,存储有权值数据的权值数据空间与存储有处理数据的处理数据空间按照第一地址方向依次排放;
其中,存储各卷积层的权值数据的权值数据空间按照卷积层处理顺序,沿第一地址方向依次排放;存储各卷积层的处理数据的处理数据空间按照卷积层处理顺序,沿第一地址方向依次排放;
其中,存储同一卷积层的权值数据的权值数据空间中和存储同一卷积层的处理数据的处理数据空间中,权值数据和处理数据分别按照第二地址方向依次排放,第一地址方向与第二地址方向相反。
对于上述计算核,在一种可能的实现方式中,所述第一地址方向为高地址到低地址方向,所述第二地址方向为低地址到高地址方向。
对于上述计算核,在一种可能的实现方式中,所述处理部件还用于将所述多层卷积运算过程中各卷积层的运算结果数据送入各存储单元进行存储;
各存储单元接收并存储所述运算结果数据,其中,任一卷积层的运算结果数据与该卷积层的处理数据存储在同一存储单元中,并与下一卷积层的处理数据共用存储空间。
对于上述计算核,在一种可能的实现方式中,所述处理部件还用于将从所述计算核外接收的第一数据写入存储单元,并从存储单元读取第二数据以向所述计算核外发送;
其中,在多次写入操作中,每次写入操作的起始地址按照所述第一地址方向排列,每一次写入操作中按照所述第二地址方向写入第一数据;
在多次读取操作中,每次读取操作的起始地址按照所述第一地址方向排列,每一次读取操作中按照所述第二地址方向读取第二数据。
对于上述计算核,在一种可能的实现方式中,在所述存储单元中,针对每一卷积层的处理数据和权值数据的存储顺序符合先深度方向,再横向,再纵向的卷积运算过程。
对于上述计算核,在一种可能的实现方式中,每一层卷积运算过程使用多个卷积核组,每个卷积核组中包括多个卷积核;
在所述存储单元中,每一层卷积运算中的各卷积核组的权值数据依次存储,每个卷积核组的权值数据的存储顺序按照卷积核的编号顺序、卷积核深度方向、横向方向、纵向方向进行存储。
根据本公开的另一方面,提供了一种人工智能芯片,所述芯片包括多个计算核。
根据本公开的另一方面,提供了一种电子设备,包括一个或多个人工智能芯片。
根据本公开的实施例,通过按照卷积层处理顺序在各存储单元的权值数据空间和处理数据空间分别按照第一地址方向对权值数据和处理数据存储,可以对相邻卷积层数据一边计算一边动态覆盖,增大了剩余连续动态可用空间,为后续的计算腾出更大的数据空间。在存储同一层卷积层的权值数据和处理数据按照第二地址方向依次排放,可以高度匹配先深度,再横向,再纵向的卷积运算过程,提高存储过程与卷积运算过程的拟合度。在所述存储单元待发送数据地址和待接收数据地址出现交叠的情况下,通过对多次读写操作中每次读写操作的起始地址按照所述第一地址方向排列,可以解决因为同时被处理单元执行多次读写操作造成存储单元交叠区域数据的冲毁和覆盖,提高计算核的时空运算效率,进而提高芯片性能。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的计算核的示意图。
图2a示出相关技术中数据存储示意图。
图2b示出根据本公开一实施例的数据存储示意图。
图3示出根据本公开一实施例的流程图。
图4a示出相关技术中存储单元数据传输示意图。
图4b示出根据本公开一实施例的数据传输示意图。
图5示出根据本公开一实施例的流程图。
图6示出根据本公开一实施例的处理数据存储顺序的示意图。
图7示出根据本公开一实施例的权值数据存储顺序的示意图。
图8示出根据本公开一实施例的卷积运算过程存储顺序原理示意图。
图9示出根据本公开一实施例的电子装置的框图。
图10示出根据本公开一实施例的电子装置的框图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何处理以及所有可能处理,并且包括这些处理。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
还应当理解,张量(tensor)作为存放数据的容器,可以看作多维数组。图像数据以及其他感知数据(例如音频、视频等)可以表示为多维张量,并且可以以二进制形式存放到存储器中。为了便于对本公开技术方案的理解,下文中处理数据可以以图像数据为例。在此本公开说明书中所使用的图像数据仅仅是出于描述特定实施例的目的,而并不意在限定本公开。本公开对包括视频、音频、图像等可以在存储器中以二进制形式存储的处理数据均适用。
图1示出根据本公开一实施例的计算核的示意图。根据本公开实施例的数据存储方法应用于处理器的计算核,所述处理器包括多个计算核。
如图1所示,每个计算核包括处理部件及存储部件。所述处理部件可以包括树突单元、轴突单元、胞体单元、路由单元。所述存储部件可以包括两个以上存储单元,所述存储单元可用于存储处理数据和权值数据,存储单元中存储了处理数据的空间可称为处理数据空间,存储了权值数据的空间可称为权值数据空间。
在一种可能的实现方式中,所述处理器可以是类脑计算芯片,即,以大脑的处理模式为参考,通过模拟大脑中神经元对信息的传递与处理,提升处理效率并降低功耗。所述处理器可以包括多个计算核,计算核之间可以独立处理不同的任务,例如:卷积运算任务、池化任务或全连接任务等;也可以并行处理同一任务,即,每个计算核可以处理所分配到的同一任务的不同部分,例如:多层卷积神经网络运算任务中部分层的卷积运算任务等。需要说明的是,本公开对芯片中计算核数量,以及计算核所运行的任务不做限制。
在计算核之内,可以设置有处理部件和存储部件。处理部件可以包括树突单元、轴突单元、胞体单元和路由单元。处理部件可以模拟大脑的神经元对信息的处理模式,其中,树突单元用于接收信号,轴突单元用于发送尖峰信号,胞体单元用于信号的集成变换,路由单元用于同其它计算核进行信息传输。计算核内的处理部件可以对存储部件的多个存储单元进行读写访问,以与计算核内的存储部件进行数据交互,并可分别承担各自的数据处理任务和/或数据传输任务,以获得数据处理结果,或者与其他计算核进行通信。本公开对所述处理部件的应用领域不做限制。
在一种可能的实现方式中,存储部件可以包括两个以上存储单元,存储单元可以为静态随机存取存储器(Static Random-Access Memory,SRAM)。例如,存储单元可包括读写宽度为32B,容量为64KB的SRAM。本公开对存储单元的读写宽度和容量不做限制。
在一种可能的实现方式中,所述存储单元包括处理数据空间和权值数据空间。其中,处理数据空间可以用于存储动态数据,即,在运行中可能发生变化的数据、在运行中需要输入输出的数据以及在关联操作中要改变的数据。权值数据空间可以用于存储静态数据,即,在程序运行过程中作为控制或参考用的数据。静态数据可以不随程序运行而变化,所以说静态数据可以在很长的一段时间内不发生变化。例如,对于卷积神经网络结构,静态数据可以为卷积运算的权值数据,动态数据可以为处理数据,例如包括卷积层输入数据(例如,可以是经过shortcut处理的卷积层输入数据),随着处理数据的变化可以进行擦除、覆盖,比如说,在卷积神经网络结构分层迭代计算过程中,根据时序的需要不断修改处理数据,用新的处理数据覆盖旧的处理数据。
根据本公开的实施例的计算核,可将处理部件和存储部件设置在计算核内,使得存储部件直接接收处理部件的读写访问,无需对计算核外部的存储部件进行读写,优化了内存读写速度,适用于众核架构的处理部件。
在一种可能的实现方式中,所述方法可以用于实现多层卷积运算过程中数据的存储与传输,其中,所述多层卷积运算过程中的数据包括各层卷积运算过程中的处理数据和权值数据。
举例来说,在应用神经网络算法对图像进行目标识别时,会对输入的图像处理数据做多层卷积运算。神经网络的基本数据结构是层,包括深度神经网络DNN、卷积神经网络CNN、循环神经网络RNN、以及深度残差网络ResNet等网络在内的各种神经网络,都是由多个层有机结合而成的神经网络。可以将层理解为一个数据处理模块,不同的数据处理类型需要用到不同的层,不同层有不同的层属状态,也就是层的权值。一个输入或多个输入在不同层所属权值作用下可以转换成一个或多个输出。
如果一个神经网络是比较小的网络,一个计算核就可以满足处理该神经网络各层所需的资源,可以将该神经网络的处理数据和权值数据存入一个计算核里。
如果是很大的神经网络,神经网络有很多层,每层都需要计算大量数据,一个计算核不能满足处理该神经网络所需的资源,在这种情况下,就需要多个计算核协作共同计算这个很大的神经网络,可以将神经网络拆分成多个部分并送入处理器分配的对应计算核内进行计算处理。例如,假设神经网络包括7个卷积层L1层-L7层,处理器可以将卷积层L1层和L2层的处理数据和权值数据分配给计算核A计算,将卷积层L3层和L4层的处理数据和权值数据分配给计算核B计算,将卷积层L5层-L7层的处理数据和权值数据分配给计算核C计算。需要说明的是,本公开对计算核运行的神经网络类型,以及如何对神经网络拆分分配到不同计算核的方式不做限定。
相关技术中,处理器在将多层卷积运算过程中的数据存储到存储单元时,将多层卷积运算过程中的处理数据(动态数据)与权值数据(静态数据)在不同的存储单元上分开存储。也就是说处理器将权值数据存储到一个存储单元,处理数据存储到另一个存储单元中。
图2a示出相关技术中数据存储示意图,如图2a所示,图中有两个存储单元,即:存储单元MEM0、存储单元MEM1,每个存储单元的存储空间容量为64KB,读写位宽为32B,多层卷积运算过程中的权值数据W存储在存储单元MEM0中,处理数据X存储在存储单元MEM1中。第L5层,L6层,L7层可以表示多层卷积神经网络在运算过程中对应的卷积层数。在执行各层卷积运算时,按照L5层,L6层,L7层……的顺序执行。
第L5层,L6层,L7层的权值数据放在存储单元MEM0中,按照第二地址方向依次存储着8KB大小的L5层权值数据W、18KB大小的L6层权值数据W、8KB大小的L7层权值数据W,剩余的连续动态可用空间为30KB。其中,本文中第二地址方向可为低地址到高地址方向,连续动态可用空间为未存储数据的空白空间。
第L5层,L6层,L7层的处理数据存放在另一个存储单元MEM1中,按照第二地址方向依次存储着28KB大小的L5层处理数据X、15KB大小的L6层处理数据X、15KB大小的L7层处理数据X、剩余的连续动态可用空间为6KB。
当L5层,L6层,L7层整个节点单元的卷积运算完毕需要发送给其它计算核,同时接收上一个节点单元对应的计算核发送过来的数据,由于采用第二地址方向的正序存储顺序,因此,计算核不能一边计算L6层,并把L6层计算结果输出到L7层,一边动态覆盖L6层所占空间的数据。
因此,处理数据和权值数据在各自的存储单元内按照卷积层处理顺序,按照第二地址方向在存储单元正序排放,将会导致动态数据重复利用率低,剩余连续空间小,不能对同一层数据一边计算一边动态覆盖,影响后续计算的存储空间,而且存储过程中会伴随数据的不断搬运,增加运算时间。
针对上述如图2a所示的相关技术中数据存储存在的问题,图3示出根据本公开一实施例的数据存储方法的流程图。如图3所示方法可以包括步骤如下:
步骤S1,所述处理部件根据所述多层卷积运算过程中的卷积层处理顺序,依次将各卷积层的权值数据和处理数据写入各存储单元进行存储。
步骤S2,各存储单元接收并存储所述权值数据和所述处理数据。
在一种可能的实现方式中,在同一存储单元中,存储有权值数据的权值数据空间与存储有处理数据的处理数据空间按照第一地址方向依次排放。在本文中第一地址方向可为高地址到低地址方向,第一地址方向与第二地址方向相反。
举例说明,图2b示出根据本公开一实施例的数据存储示意图,如图2b所示,假设存储部件包括两个存储单元:存储单元MEM0、存储单元MEM1。每个存储单元可以使用读写宽度为32B,容量为64KB的SRAM。第L5层,L6层,L7层可以表示多层卷积神经网络在运算过程中对应的卷积层数。
如图2b所示,在存储单元MEM0中,按照第一地址方向依次为存储了8KB静态数据W的权值数据空间,存储了30KB(15KB+15KB)动态数据X的处理数据空间,以及剩余的40KB连续动态可用空间。
如图2b所示,在存储单元MEM1中,按照第一地址方向依次为存储了26KB(18KB+8KB)的静态数据W的权值数据空间,存储了28KB的动态数据X的处理数据空间,以及剩余的10KB连续动态可用空间。
每个存储单元包括可以存储动态数据的处理数据空间以及可以存储静态数据的权值数据空间,并且存储有权值数据的权值数据空间与存储有处理数据的处理数据空间按照第一地址方向依次排放,可以提高存储单元的剩余可用的连续动态可用空间。
在一种可能的实现方式中,在所述存储单元中,相同卷积层的处理数据和权值数据存储在不同存储单元中;不同卷积层的处理数据和权值数据可以存储在同一个存储单元存储。
举例说明,如图2b所示,所述处理部件将L5层的权值数据W送入存储单元MEM0的权值数据空间,将L5层的处理数据X送入存储单元MEM1的处理数据空间;将L6层的权值数据W送入存储单元MEM1的权值数据空间,将L6层的处理数据X送入存储单元MEM0的处理数据空间;将L7层的权值数据W送入存储单元MEM1的权值数据空间,将L7层的处理数据X送入存储单元MEM0的处理数据空间。
由于相同卷积层的处理数据和权值数据存储在不同存储单元中,所述处理部件可以并行访问多个存储单元读取处理数据和权值数据,提高计算核的计算效率。
在一种可能的实现方式中,存储各卷积层的权值数据的权值数据空间按照卷积层处理顺序,沿第一地址方向依次排放;存储各卷积层的处理数据的处理数据空间按照卷积层处理顺序,沿第一地址方向依次排放。
举例说明,如图2b所示,L5层的权值数据W与L6层、L7层的处理数据X在存储单元MEM0中,可以沿第一地址方向依次存储8KB大小的L5层权值数据W、15KB大小的L6层处理数据X、15KB大小的L7层处理数据X、以及剩余的连续动态可用空间40KB。
L6层、L7层的权值数据W与L5层的处理数据X在存储单元MEM1中,可以沿第一地址方向依次存储18KB大小的L6层权值数据W、8KB大小的L7层权值数据W、28KB大小的L5层处理数据X、以及剩余的连续动态可用空间10KB。
对比图2a相关技术中存储单元MEM0和存储单元MEM1剩余的连续动态可用空间36KB(MEM0:30KB+MEM1:6KB),图2b中存储单元MEM0和存储单元MEM1剩余的连续动态可用空间为50KB(MEM0:40KB+MEM1:10KB),采用本公开实施例所用方法可以提高了存储单元的连续动态可用空间。
在一种可能的实现方式中,所述处理部件将所述多层卷积运算过程中各卷积层的运算结果数据送入各存储单元进行存储,各存储单元接收并存储所述运算结果数据。其中,任一卷积层的运算结果数据与该卷积层的处理数据存储在同一存储单元中,并与下一卷积层的处理数据共用存储空间。
举例说明,对比图2a所示的相关技术,不能对L6层处理数据X一边计算一边动态覆盖,不能一边将L6层的运算结果数据输出为L7层的处理数据X一边动态覆盖L6层所占空间中存储的L6层的处理数据X。如图2b所示,处理部件可以对存储单元MEM0中L6层处理数据X一边计算一边动态覆盖,L6层的卷积运算结果数据可以作为L7层的处理数据X,可以以L6层的卷积运算的结果直接覆盖L6层已经完成处理的处理数据X,作为L7层的处理数据X,即,L6层卷积运算的结果数据可以同相邻的L7层的处理数据X共用存储空间,重复利用存储单元的一片区域,为后续计算腾出足够的空间。
因此,所述方法通过对存储单元设置权值数据空间和处理数据空间,在满足相同层的处理数据和权值数据送入不同存储单元存储的情况下,可以根据卷积层处理顺序在权值数据空间和处理数据空间分别按照第一地址方向存储权值数据和处理数据,并且可以对相邻层数据一边计算一边动态覆盖,增大了剩余连续动态可用空间,为后续的计算腾出更大的数据空间,提高计算核的时空运算效率,进而提高芯片性能。
相关技术中,计算核对处理数据进行多层卷积运算与存储时,当一层的卷积数据计算完毕,进入下一层计算时,需要将计算核本次计算完毕的数据发给其他的计算核进行存储,同时接收上一层卷积运算完毕的数据。往往接收和发送数据在同一片存储空间,可能伴随着空间的交叠。
图4a示出相关技术中存储单元数据传输示意图。如图4a所示,存储单元MEM1待接收的数据容量为28KB,待发送的数据容量为28KB,待发送数据的地址和待接收的数据地址的交叠空间容量为14KB,即存储单元MEM1地址为0x5400~0x6200的数据空间。
假如采用从存储单元内待发送数据空间和待接收数据空间正序传输的方式,即,在处理部件对存储单元的多次读写操作中,每次读写操作的起始地址按照第二地址方向排列。存储单元MEM1第一次接收的数据容量为12KB的第一数据(对应存储单元MEM1地址为0x5400~0x6000的数据空间)会将第二次待发送的第二数据(对应存储单元MEM1地址为0x5200~0x5E00的数据空间)冲毁,覆盖掉,冲毁部分对应存储单元MEM1地址为0x5400~0x5E00。导致后续的待发送的第二数据为错误数据。
其中,第一数据可以为对存储单元执行写入操作中出现的存储单元待接收数据;第二数据可以为对存储单元执行读取操作中出现的存储单元待发送数据。
如果采用先将需要发送的数据区域的数据向上搬移挪动14KB的空间,使二者不存在交叠。然后再按照第二地址方向依次发送,也会因为增加的搬移挪动数据过程,增大传输延时以及计算时钟,从而增加芯片运行负担,降低芯片运行效率。
在一种可能实现的方式中,所述处理部件可以将从所述计算核外接收的第一数据写入存储单元,并从存储单元读取第二数据以向所述计算核外发送。
在多次写入操作中,每次写入操作的起始地址按照所述第一地址方向排列,每一次写入操作中按照所述第二地址方向写入第一数据。
在多次读取操作中,每次读取操作的起始地址按照所述第一地址方向排列,每一次读取操作中按照所述第二地址方向读取第二数据。
举例说明,图4b示出根据本公开一实施例的数据传输示意图。如图4b所示,存储单元MEM1第一次待发送12KB容量的第二数据的起始地址为0x5600,与此同时第一次待接收12KB容量的第一数据的起始地址为0x6400。第二次的待发送12KB容量的第二数据的起始地址为0x4A00,与此同时第二次待接收12KB容量的第一数据的起始地址为0x5800。第三次的待发送4KB容量的第二数据的起始地址为0x4600,与此同时第三次待接收4KB容量的第一数据的起始地址为0x5400。
如图4b所示,三次读取操作在存储单元MEM1的起始地址依次为:0x5600、0x4A00、0x4600,三次写入操作的起始地址依次为:0x6400、0x5800、0x5400,即,每次读写操作的起始地址按照所述第一地址方向排列。并且,每一次读写操作中可以根据起始地址,按照第二地址的方向读写第一数据或第二数据。应当理解,处理部件可以对存储单元执行多次读写操作,本公开对处理部件每次读写操作的数据容量大小以及具体的读写操作次数不做限制。
存储单元中,被发送走的数据在空间区域上下一个时刻就可以被重复利用。例如,存储单元MEM1第二次接收12KB容量的第一数据需要占用地址0x5800~0x6400的数据空间,由于在上一次也就是第一次存储单元MEM1已经被处理部件执行读取操作取走第二数据,并释放占用地址0x5600~0x6200的数据空间,避免造成对地址0x5800~0x6200重叠空间的冲毁与覆盖。同样的,存储单元MEM1第三次接收12KB容量的第一数据需要占用地址0x5400~0x5800的数据空间,由于在第一次存储单元MEM1已经被取走第二数据并释放了占用地址0x5600~0x6200的数据空间,以及在第二次被取走第二数据释放的占用地址0x4A00~0x5600的数据空间,第一次和第二次存储单元MEM1一共释放了地址0x4A00~0x6200的数据空间,避免造成对第三次接收第一数据所需要的地址0x5400~0x5800的数据空间的冲毁与覆盖。
所以,如图4b所示的数据传输过程中,在所述存储单元待发送数据地址和待接收数据地址出现交叠的情况下,不存在因为同时被处理单元执行多次读写操作造成存储单元交叠区域数据的冲毁和覆盖,更不存在为了避免数据冲毁而对数据进行搬移挪动带来的附加时间,消除了路由传输延时,进而提高芯片的时空运算效率,提高芯片性能。
在一种可能的实现方式中,存储同一卷积层的权值数据的权值数据空间中和存储同一卷积层的处理数据的处理数据空间中,权值数据和处理数据分别按照第二地址方向依次排放,第一地址方向与第二地址方向相反。
下文给出了对权值数据和处理数据进行排序的一些示例,对于每一卷积层,该层排序后的权值数据和处理数据,可以按照排序(比如序号0、1、2、……的顺序),在该层的权值数据空间中,按照第二地址方向依次排放,以及在该层的处理数据空间中,按照第二地址方向依次排放。
图5示出根据本公开一实施例的流程图。如图5所示,针对所述多层卷积运算过程中每一层卷积运算过程中数据的存储方法,可以包括以下步骤:
步骤S31,所述处理部件确定每一卷积层内的处理数据和权值数据存储顺序。
在一种可能实现的方式中,针对多层卷积运算过程中每一层卷积运算过程中的所述处理数据,处理部件确定每一卷积层内的处理数据的存储顺序为先深度方向,再横向方向,再纵向方向的顺序。
图6示出根据本公开一实施例的处理数据存储顺序的示意图。假设计算核的存储单元的位宽为32B,所述层内的所述处理数据可以是将输入的整图数据(512像素)拆分成连续32帧大小为4×4像素的系列图像。如图6所示,图6中左侧长方体可以代表所述层内的所述处理数据,沿着深度方向(z轴方向)共有32层,每一层分别对应一帧4×4像素的图像。
处理部件可以确定每一卷积层内的处理数据的存储顺序,也就是确定图6左侧长方体中各个小立方体送入存储部件的先后顺序。所述处理部件可以对图6左侧长方体按照先深度方向(z轴方向)再横向方向(x轴方向),再纵向方向(y轴方向)对图6左侧长方体中各个小立方体标号,所标序号与坐标(x,y,z)对应关系为:
其中,M为处理数据的深度,即z方向的维度。
图6左侧长方体中各个小立方体的序号顺序代表所述处理部件确定的处理数据存储顺序。
在一种可能实现的方式中,每一层卷积运算过程使用多个卷积核组,每个卷积核组中包括多个卷积核,在所述存储单元中,每一层卷积运算中的各卷积核组的权值数据依次存储,每个卷积核组的权值数据的存储顺序按照卷积核的编号顺序、卷积核深度方向、横向方向、纵向方向进行存储。
举例说明,针对多层卷积运算过程中每一层卷积运算过程中的所述权值数据,所述处理部件可以先对卷积核编号并分组,再按照每组中卷积核编号顺序,卷积核深度方向,卷积核横向方向,卷积核纵向方向的顺序确定一组一组的存储顺序。
其中,所述权值数据包括多组卷积核,每组包括多个卷积核。所述处理部件可以根据所述处理数据的深度对权值数据中的卷积核分组,每组卷积核的个数可以同所述处理数据的深度相同。
图7示出根据本公开一实施例的权值数据存储顺序的示意图。如图7所示,图中左侧每一个长方体代表一个卷积核,可以先对图中的64个卷积核编号W0,W1,…,W63。对应图6所示的处理数据深度(M=32),可以将卷积核按32个进行分组,每32个卷积核一组,分成2组(N=2),W0,W1,…,W31为第一组,W32,W33,…,W63为第二组,所分的组数N可以代表所述权值数据的深度。
处理部件可确定每一卷积层内的所述权值数据的存储顺序,也就是确定图7左侧各个长方体中的各个小立方体送入存储部件的先后顺序。
所述处理部件可以将图7左侧的长方体分成N组(N=2),并确定按照分组顺序对所述权值数据一组一组进行存储的存储顺序。
对于每组卷积核的存储顺序,可以先按照卷积核编号顺序,再按照卷积核的深度方向(z轴方向)、卷积核的横向方向(x轴方向),卷积核的纵向方向(y轴方向)对图7左侧各个长方体中各个小立方体标号。其中,卷积核编号顺序方向对应处理数据深度方向。
所标序号与坐标(x,y,z)对应关系为:
通过所述序号与坐标(x,y,z)对应关系可知,对于N=1组的权值数据,卷积核W0对应的序号为:[0 32 64 96 128 160 192 224 256 288 320 352 384 416 448 480],卷积核W1对应的序号为:[1 33 65 97 129 161 193 225 257 289 321 353 385 417 449481],依次类推,卷积核W31的序号为:[31 63 95 127 159 191 223 255 287 319 351 383415 447 479 511]。
同样的,对于N=2组权值数据,卷积核W32对应的序号为:[512 544 576 608 640672 704 736 768 800 832 864 896 928 960 992],卷积核W33对应的序号为:[513 545577 609 641 673 705 737 769 801 833 865 897 929 961 993],依次类推,卷积核W63对应的序号为:[543 575 607 639 671 703 735 767 799 831 863 895 927 959 9911023]。
图7左侧各个长方体中各个小立方体的序号顺序可以代表所述处理部件确定的权值数据的存储顺序。
步骤S32,所述处理部件根据所述处理数据和所述权值数据存储顺序,将所述处理数据和所述权值数据送入存储单元。
在一种可能的实现方式中,所述处理部件根据所述处理数据的存储顺序,将所述处理数据按照第二地址方向送入所述存储部件中存储单元的处理数据空间。
举例说明,如图6所示,图中各个立方体上的所标序号可以对应存储单元的存储地址,所述处理部件可以通过访问存储单元对应的地址将立方体上所标序号对应的像素值送入存储单元。所述处理部件可以通过访问序号0立方体对应的存储单元中地址0x0000,将序号0立方体对应的像素值送入存储单元中地址0x0000空间;所述处理部件可以通过访问序号1立方体对应的存储单元中地址0x0001,将序号1立方体对应的像素值送入存储单元中地址0x0001空间;依次类推,所述处理部件可以通过访问序号511立方体对应的存储单元中地址0x01FF,将序号511立方体对应的像素值送入存储单元中地址0x01FF空间。
如图6所示,所述处理部件按照所标序号顺序,先深度方向,再横向方向,再纵向方向将所述处理数据送入所述存储单元。
在一种可能的实现方式中,所述处理部件根据所述权值数据的存储顺序,将所述权值数据按照第二地址方向送入所述存储部件中存储单元的权值数据空间。
举例说明,如图7所示,图中各个立方体上的所标序号可以对应存储单元的存储地址,所述处理部件可以通过访问存储单元对应的地址将立方体上所标序号对应的权值数据送入存储单元。所述处理部件可以通过访问序号0立方体对应的存储单元中地址0x0000,将序号0立方体对应的权值送入存储单元中地址0x0000空间;所述处理部件可以通过访问序号1立方体对应的存储单元中地址0x0001,将序号1立方体对应的权值送入存储单元中地址0x0001空间;依次类推,所述处理部件可以通过访问序号1023立方体对应的存储单元中地址0x03FF,将序号1023立方体对应的权值送入存储单元中地址0x03FF空间。
如图7所述,所述处理部件按照所标序号顺序,先卷积核编号顺序,再卷积核深度方向,卷积核横向方向,卷积核纵向方向将所述权值数据一组一组顺序送入所述存储单元。
步骤S33,所述存储单元接收并存储所述处理数据和所述权值数据。
其中,可以先对权值数据存储,再对处理数据存储,权值数据可以存储在一个存储单元的权值数据空间,处理数据可以存储在另一个存储单元的处理数据空间。
在一种可能的实现方式中,在所述存储单元中,针对每一卷积层的处理数据和权值数据的存储顺序符合先深度方向,再横向,再纵向的卷积运算过程。
图8示出根据本公开一实施例的卷积运算过程存储顺序原理示意图。如图8所示,假设处理数据为图像数据,可以用三维张量X[i,j,m]表示,具体如下:
X[i,j,m],i=1,2,…,I,j=1,2,…,J,m=1,2,…,M
I表示图像数据X[i,j,m]在纵向维度上有I个像素,J表示图像数据X[i,j,m]在横向维度上有J个像素,M表示图像数据X[i,j,m]在深度维度上有M个像素,处理数据的大小为I×J×M。
其中,M深度的图像数据,可以是由视频转换成的M帧连续序列图像,可以是由一张整图拆分成M张等大小的子图,还可以是通道深度为M的图像数据,本公开对此不做限定。
举例说明,对M张处理数据做N组3×3固定窗口大小的滑窗卷积运算,如果一张一张的对图片分别做N组3×3固定窗口大小的滑窗卷积运算,每处理一张图片数据,就需要访问一次存储单元读取卷积核,需要对存储单元重复读取M次,造成对存储单元的频繁访问。因此,可以按照深度方向对处理数据做三维滑窗卷积运算,对存储单元访问一次读取的卷积核(即权值数据)可以同时对M张输入图像做滑窗卷积运算,实现输入图像的并行运算。
如图8所示,假设深度方向有M张图片,C[kxky,m]代表滑动卷积的滑窗取到的图像数据,滑窗可以按照先深度方向再横向、再纵向在图像数据中滑动,本申请不限制滑窗的滑动方式。
与滑窗取到的图像数据C[kxky,m]对应的权值数据为K[kxky,m,n],在图8中,权值数据K[kxky,m,n]有N组,每组有M个卷积核,对应于深度为M的处理数据。滑窗取到的图像数据C[kxky,m]可以按照卷积权值的组数N顺序同各组卷积核K[kxky,m,n](n=1,2,…,N)分别做乘加运算。
由于对图像数据X[i,j,m]做卷积运算也就是对图像数据X[i,j,m]做乘加运算,根据乘法交换律和加法交换律,调整卷积运算过程的顺序,卷积运算的结果不变。因此,为了减少对存储单位的访问次数,可以调整卷积运算过程的顺序,先沿着深度M方向,再沿着横向J方向,纵向方向I进行运算。
运算过程对应公式如下:
其中,C[kxky,m]代表滑窗取到的图像数据,即对应卷积核尺寸的输入图像的数据,K[kxky,m,n]代表卷积权值,kx*ky代表一个卷积核的大小,卷积权值按照深度方向M分成N组,每组M个卷积核,此卷积过程为先对卷积核沿深度方向M进行乘加运算,根据卷积核的尺寸kx*ky,再分别沿横向J和纵向I完成其余数据的滑窗卷积运算。
处理部件按照先深度,在横向,再纵向的卷积运算过程,有利于实现数据的并行处理,提高芯片的计算效率。针对卷积运算过程的处理数据和权值数据,处理部件可以对处理数据按照先深度方向,再横向方向,再纵向方向的存储顺序,以及对权值数据按照先卷积核编号顺序,再卷积核深度方向、卷积核横向方向、卷积核纵向方向一组一组存储的存储顺序,实现先存储的处理数据和权值数据可以优先读取参与运算,高度匹配先深度,再横向,再纵向的卷积运算过程,提高存储过程与卷积运算过程的拟合度,提高计算效率。
本公开还提供了一种计算核。图1所示为计算核的一个示例,所述计算核包括处理部件及存储部件。
在一种可能的实现方式中,所述处理部件根据所述多层卷积运算过程中的卷积层处理顺序,依次将各卷积层的权值数据和处理数据写入各存储单元进行存储。
所述存储部件包括两个以上存储单元,各存储单元接收并存储所述权值数据和所述处理数据。
其中,在所述存储单元中,相同卷积层的处理数据和权值数据存储在不同存储单元中;在同一存储单元中,存储有权值数据的权值数据空间与存储有处理数据的处理数据空间按照第一地址方向依次排放。
其中,存储各卷积层的权值数据的权值数据空间按照卷积层处理顺序,沿第一地址方向依次排放;存储各卷积层的处理数据的处理数据空间按照卷积层处理顺序,沿第一地址方向依次排放。
其中,存储同一卷积层的权值数据的权值数据空间中和存储同一卷积层的处理数据的处理数据空间中,权值数据和处理数据分别按照第二地址方向依次排放,第一地址方向与第二地址方向相反。
在一种可能的实现方式中,所述第一地址方向为高地址到低地址方向,所述第二地址方向为低地址到高地址方向。
在一种可能的实现方式中,所述处理部件还用于将所述多层卷积运算过程中各卷积层的运算结果数据送入各存储单元进行存储;
各存储单元接收并存储所述运算结果数据,其中,任一卷积层的运算结果数据与该卷积层的处理数据存储在同一存储单元中,并与下一卷积层的处理数据共用存储空间。
在一种可能的实现方式中,所述处理部件还用于将从所述计算核外接收的第一数据写入存储单元,并从存储单元读取第二数据以向所述计算核外发送;
其中,在多次写入操作中,每次写入操作的起始地址按照所述第一地址方向排列,每一次写入操作中按照所述第二地址方向写入第一数据;
在多次读取操作中,每次读取操作的起始地址按照所述第一地址方向排列,每一次读取操作中按照所述第二地址方向读取第二数据。
在一种可能的实现方式中,在所述存储单元中,针对每一卷积层的处理数据和权值数据的存储顺序符合先深度方向,再横向,再纵向的卷积运算过程。
在一种可能的实现方式中,每一层卷积运算过程使用多个卷积核组,每个卷积核组中包括多个卷积核;
在所述存储单元中,每一层卷积运算中的各卷积核组的权值数据依次存储,每个卷积核组的权值数据的存储顺序按照卷积核的编号顺序、卷积核深度方向、横向方向、纵向方向进行存储。
针对上述关于计算核的实施方式,可以参见上文关于数据存储方法部分的描述,不再赘述。
在一种可能的实现方式中,本公开实施例还提出一种人工智能芯片,所述芯片包括至少一个如上所述的计算核。所述芯片可以包括多个处理器,所述处理器可以包括多个计算核,本公开对芯片内计算核的数量不做限制。
在一种可能的实现方式中,本公开实施例提出了一种电子设备,包括一个或多个上述人工智能芯片。
图9是示出根据本公开实施例的一种组合处理装置1200的结构图。如图9中所示,该组合处理装置1200包括计算处理装置1202(例如,上述包括多个计算核的人工智能处理器)、接口装置1204、其他处理装置1206和存储装置1208。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置1210(例如,计算核)。
在一种可能的实现方式中,本公开的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本公开的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本公开的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本公开的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本公开的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本公开的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本公开的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
根据不同的应用场景,本公开的人工智能芯片可用于服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
图10示出根据本公开实施例的一种电子设备1900的框图。例如,电子设备1900可以被提供为一服务器。参照图10,电子设备1900包括处理组件1922(例如,包括多个计算核心的人工智能处理器),其进一步包括一个或多个计算核心,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
电子设备1900还可以包括一个电源组件1926被配置为执行电子设备1900的电源管理,一个有线或无线网络接口1950被配置为将电子设备1900连接到网络,和一个输入输出(I/O)接口1958。电子设备1900可以操作基于存储在存储器1932的操作***,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在本公开中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本公开实施例所述方案的目的。另外,在一些场景中,本公开实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
本公开的电子设备或处理器还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本公开的电子设备或处理器还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本公开方案的算力高的电子设备或处理器可以应用于云端设备(例如云端服务器),而功耗小的电子设备或处理器可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (14)
1.一种数据存储方法,其特征在于,应用于处理器的计算核,所述处理器包括多个计算核,每个计算核包括处理部件及存储部件,其中,所述存储部件包括两个以上存储单元;
所述方法包括:
所述处理部件根据所述多层卷积运算过程中的卷积层处理顺序,依次将各卷积层的权值数据和处理数据写入各存储单元进行存储;
各存储单元接收并存储所述权值数据和所述处理数据;
其中,在所述存储单元中,相同卷积层的处理数据和权值数据存储在不同存储单元中;在同一存储单元中,存储有权值数据的权值数据空间与存储有处理数据的处理数据空间按照第一地址方向依次排放;
其中,存储各卷积层的权值数据的权值数据空间按照卷积层处理顺序,沿第一地址方向依次排放;存储各卷积层的处理数据的处理数据空间按照卷积层处理顺序,沿第一地址方向依次排放;
其中,存储同一卷积层的权值数据的权值数据空间中和存储同一卷积层的处理数据的处理数据空间中,权值数据和处理数据分别按照第二地址方向依次排放,第一地址方向与第二地址方向相反。
2.根据权利要求1所述的方法,其特征在于,所述第一地址方向为高地址到低地址方向,所述第二地址方向为低地址到高地址方向。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述处理部件将所述多层卷积运算过程中各卷积层的运算结果数据送入各存储单元进行存储;
各存储单元接收并存储所述运算结果数据,其中,任一卷积层的运算结果数据与该卷积层的处理数据存储在同一存储单元中,并与下一卷积层的处理数据共用存储空间。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述处理部件将从所述计算核外接收的第一数据写入存储单元,并从存储单元读取第二数据以向所述计算核外发送;
其中,在多次写入操作中,每次写入操作的起始地址按照所述第一地址方向排列,每一次写入操作中按照所述第二地址方向写入第一数据;
在多次读取操作中,每次读取操作的起始地址按照所述第一地址方向排列,每一次读取操作中按照所述第二地址方向读取第二数据。
5.根据权利要求1所述的方法,其特征在于,在所述存储单元中,针对每一卷积层的处理数据和权值数据的存储顺序符合先深度方向,再横向,再纵向的卷积运算过程。
6.根据权利要求1或5所述的方法,其特征在于,每一层卷积运算过程使用多个卷积核组,每个卷积核组中包括多个卷积核;
在所述存储单元中,每一层卷积运算中的各卷积核组的权值数据依次存储,每个卷积核组的权值数据的存储顺序按照卷积核的编号顺序、卷积核深度方向、横向方向、纵向方向进行存储。
7.一种计算核,其特征在于,所述计算核包括处理部件及存储部件;
所述处理部件根据所述多层卷积运算过程中的卷积层处理顺序,依次将各卷积层的权值数据和处理数据写入各存储单元进行存储;
所述存储部件包括两个以上存储单元,各存储单元接收并存储所述权值数据和所述处理数据;
其中,在所述存储单元中,相同卷积层的处理数据和权值数据存储在不同存储单元中;在同一存储单元中,存储有权值数据的权值数据空间与存储有处理数据的处理数据空间按照第一地址方向依次排放;
其中,存储各卷积层的权值数据的权值数据空间按照卷积层处理顺序,沿第一地址方向依次排放;存储各卷积层的处理数据的处理数据空间按照卷积层处理顺序,沿第一地址方向依次排放;
其中,存储同一卷积层的权值数据的权值数据空间中和存储同一卷积层的处理数据的处理数据空间中,权值数据和处理数据分别按照第二地址方向依次排放,第一地址方向与第二地址方向相反。
8.根据权利要求7所述的计算核,其特征在于,所述第一地址方向为高地址到低地址方向,所述第二地址方向为低地址到高地址方向。
9.根据权利要求7所述的计算核,其特征在于,所述处理部件还用于将所述多层卷积运算过程中各卷积层的运算结果数据送入各存储单元进行存储;
各存储单元接收并存储所述运算结果数据,其中,任一卷积层的运算结果数据与该卷积层的处理数据存储在同一存储单元中,并与下一卷积层的处理数据共用存储空间。
10.根据权利要求7所述的计算核,其特征在于,所述处理部件还用于将从所述计算核外接收的第一数据写入存储单元,并从存储单元读取第二数据以向所述计算核外发送;
其中,在多次写入操作中,每次写入操作的起始地址按照所述第一地址方向排列,每一次写入操作中按照所述第二地址方向写入第一数据;
在多次读取操作中,每次读取操作的起始地址按照所述第一地址方向排列,每一次读取操作中按照所述第二地址方向读取第二数据。
11.根据权利要求7所述的计算核,其特征在于,在所述存储单元中,针对每一卷积层的处理数据和权值数据的存储顺序符合先深度方向,再横向,再纵向的卷积运算过程。
12.根据权利要求7或11所述的计算核,其特征在于,每一层卷积运算过程使用多个卷积核组,每个卷积核组中包括多个卷积核;
在所述存储单元中,每一层卷积运算中的各卷积核组的权值数据依次存储,每个卷积核组的权值数据的存储顺序按照卷积核的编号顺序、卷积核深度方向、横向方向、纵向方向进行存储。
13.一种人工智能芯片,其特征在于,所述芯片包括多个权利要求7-12中任意一项所述的计算核。
14.一种电子设备,其特征在于,包括一个或多个如权利要求13所述的人工智能芯片。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110172560.5A CN112799599B (zh) | 2021-02-08 | 2021-02-08 | 一种数据存储方法、计算核、芯片和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110172560.5A CN112799599B (zh) | 2021-02-08 | 2021-02-08 | 一种数据存储方法、计算核、芯片和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112799599A true CN112799599A (zh) | 2021-05-14 |
CN112799599B CN112799599B (zh) | 2022-07-15 |
Family
ID=75814832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110172560.5A Active CN112799599B (zh) | 2021-02-08 | 2021-02-08 | 一种数据存储方法、计算核、芯片和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112799599B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114942731A (zh) * | 2022-07-25 | 2022-08-26 | 北京星天科技有限公司 | 一种数据存储方法和装置 |
CN114968602A (zh) * | 2022-08-01 | 2022-08-30 | 成都图影视讯科技有限公司 | 资源动态分配型神经网络芯片的构架、方法和设备 |
TWI799169B (zh) * | 2021-05-19 | 2023-04-11 | 神盾股份有限公司 | 基於卷積運算的資料處理方法及電路 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105940381A (zh) * | 2013-12-26 | 2016-09-14 | 英特尔公司 | 存储器访问期间的数据重排序 |
CN107329734A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
CN108229648A (zh) * | 2017-08-31 | 2018-06-29 | 深圳市商汤科技有限公司 | 卷积计算方法和装置、电子设备、计算机存储介质 |
CN109992198A (zh) * | 2017-12-29 | 2019-07-09 | 深圳云天励飞技术有限公司 | 神经网络的数据传输方法及相关产品 |
CN110309912A (zh) * | 2018-03-27 | 2019-10-08 | 北京深鉴智能科技有限公司 | 数据存取方法、装置、硬件加速器、计算设备、存储介质 |
US20200110536A1 (en) * | 2018-10-09 | 2020-04-09 | Western Digital Technologies, Inc. | Optimizing data storage device operation by grouping logical block addresses and/or physical block addresses using hints |
CN111860812A (zh) * | 2016-04-29 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 一种用于执行卷积神经网络训练的装置和方法 |
-
2021
- 2021-02-08 CN CN202110172560.5A patent/CN112799599B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105940381A (zh) * | 2013-12-26 | 2016-09-14 | 英特尔公司 | 存储器访问期间的数据重排序 |
CN107329734A (zh) * | 2016-04-29 | 2017-11-07 | 北京中科寒武纪科技有限公司 | 一种用于执行卷积神经网络正向运算的装置和方法 |
CN111860812A (zh) * | 2016-04-29 | 2020-10-30 | 中科寒武纪科技股份有限公司 | 一种用于执行卷积神经网络训练的装置和方法 |
CN108229648A (zh) * | 2017-08-31 | 2018-06-29 | 深圳市商汤科技有限公司 | 卷积计算方法和装置、电子设备、计算机存储介质 |
CN109992198A (zh) * | 2017-12-29 | 2019-07-09 | 深圳云天励飞技术有限公司 | 神经网络的数据传输方法及相关产品 |
CN110309912A (zh) * | 2018-03-27 | 2019-10-08 | 北京深鉴智能科技有限公司 | 数据存取方法、装置、硬件加速器、计算设备、存储介质 |
US20200110536A1 (en) * | 2018-10-09 | 2020-04-09 | Western Digital Technologies, Inc. | Optimizing data storage device operation by grouping logical block addresses and/or physical block addresses using hints |
Non-Patent Citations (2)
Title |
---|
徐海峥,裴京等: ""RAID***中的一种伪并行I%2fO调度策略"", 《计算机工程与应用》 * |
徐海峥,裴京等: ""RAID***中的一种伪并行I%2fO调度策略"", 《计算机工程与应用》, vol. 45, no. 1, 1 April 2009 (2009-04-01) * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI799169B (zh) * | 2021-05-19 | 2023-04-11 | 神盾股份有限公司 | 基於卷積運算的資料處理方法及電路 |
CN114942731A (zh) * | 2022-07-25 | 2022-08-26 | 北京星天科技有限公司 | 一种数据存储方法和装置 |
CN114942731B (zh) * | 2022-07-25 | 2022-10-25 | 北京星天科技有限公司 | 一种数据存储方法和装置 |
CN114968602A (zh) * | 2022-08-01 | 2022-08-30 | 成都图影视讯科技有限公司 | 资源动态分配型神经网络芯片的构架、方法和设备 |
CN114968602B (zh) * | 2022-08-01 | 2022-10-21 | 成都图影视讯科技有限公司 | 资源动态分配型神经网络芯片的构架、方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112799599B (zh) | 2022-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109117948B (zh) | 画风转换方法及相关产品 | |
CN109062611B (zh) | 神经网络处理装置及其执行向量缩放指令的方法 | |
CN112799599B (zh) | 一种数据存储方法、计算核、芯片和电子设备 | |
US11775430B1 (en) | Memory access for multiple circuit components | |
WO2020073211A1 (zh) | 运算加速器、处理方法及相关设备 | |
WO2023045445A1 (zh) | 数据处理装置、数据处理方法及相关产品 | |
WO2023045446A1 (zh) | 计算装置、数据处理方法及相关产品 | |
WO2023123919A1 (zh) | 数据处理电路、数据处理方法及相关产品 | |
CN112686379A (zh) | 集成电路装置、电子设备、板卡和计算方法 | |
CN107305486B (zh) | 一种神经网络maxout层计算装置 | |
CN112799598B (zh) | 一种数据处理方法、处理器及电子设备 | |
CN115129460A (zh) | 获取算子硬件时间的方法、装置、计算机设备和存储介质 | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
CN112801276B (zh) | 数据处理方法、处理器及电子设备 | |
CN116185378A (zh) | 计算图的优化方法、数据处理方法及相关产品 | |
CN114281561A (zh) | 处理单元、用于处理单元的同步方法及相应产品 | |
CN113469333B (zh) | 执行神经网络模型的人工智能处理器、方法及相关产品 | |
CN112817898B (zh) | 数据传输方法、处理器、芯片及电子设备 | |
CN113792867B (zh) | 运算电路、芯片和板卡 | |
CN112232498B (zh) | 一种数据处理装置、集成电路芯片、电子设备、板卡和方法 | |
WO2023045638A1 (zh) | 计算装置、利用计算装置实施卷积运算的方法及相关产品 | |
WO2023087698A1 (zh) | 执行卷积运算的计算装置、方法及相关产品 | |
CN112817898A (zh) | 数据传输方法、处理器、芯片及电子设备 | |
CN117235424A (zh) | 计算装置、计算方法及相关产品 | |
CN113705785A (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 |