CN112712457B - 数据处理方法以及人工智能处理器 - Google Patents
数据处理方法以及人工智能处理器 Download PDFInfo
- Publication number
- CN112712457B CN112712457B CN202110046770.XA CN202110046770A CN112712457B CN 112712457 B CN112712457 B CN 112712457B CN 202110046770 A CN202110046770 A CN 202110046770A CN 112712457 B CN112712457 B CN 112712457B
- Authority
- CN
- China
- Prior art keywords
- convolution
- data
- pixel data
- weight data
- convolution operation
- 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
- 238000013473 artificial intelligence Methods 0.000 title claims abstract description 27
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 238000012545 processing Methods 0.000 claims abstract description 35
- 238000000034 method Methods 0.000 claims abstract description 23
- 238000009825 accumulation Methods 0.000 claims abstract description 17
- 239000013598 vector Substances 0.000 claims description 35
- 238000004364 calculation method Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 17
- 210000005036 nerve Anatomy 0.000 description 6
- 230000010339 dilation Effects 0.000 description 5
- 239000011159 matrix material Substances 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000007711 solidification Methods 0.000 description 2
- 230000008023 solidification Effects 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000012528 membrane Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Data Mining & Analysis (AREA)
- Neurology (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
Abstract
本公开涉及数据处理方法以及人工智能处理器,应用于人工智能处理器的处理核心,处理核心包括运算单元,运算单元包括乘数累加器MAC阵列,方法包括:第k个卷积核第x行、第y列、第m个通道的运算时,读取第一权重数据,第一权重数据包括第k个卷积核的第x行、第y列、第m个通道的权重数据;读取与第一权重数据对应的a个像素数据的第m个通道的第一像素数据;在m>1时,将第一权重数据分别与a个第一像素数据相乘,并将运算结果与m‑1个通道的运算结果进行对位累加,得到a个第一卷积运算结果,将m=C0时对位累加得到的a个第一卷积运算结果确定为a个第二卷积运算结果。根据本公开实施例的数据处理方法能够提高卷积运算效率。
Description
技术领域
本公开涉及计算机技术领域,尤其涉及一种数据处理方法以及人工智能处理器。
背景技术
神经形态芯片是依托于类脑计算,实现脉冲神经网络等具有生物可解释性类脑算法的重要平台。其中,卷积运算是基于众核架构的神经形态芯片实现人工神经网络的重要逻辑运算之一。
如何基于神经形态芯片实现高效地卷积运算,是提升神经形态芯片运算效率的关键。
发明内容
有鉴于此,本公开提出了一种数据处理方法以及人工智能处理器,以高效地实现卷积运算。
根据本公开的一方面,提供了一种数据处理方法,应用于人工智能处理器的处理核心,所述人工智能处理器包括多个处理核心,每个处理核心包括运算单元,所述运算单元包括乘数累加器MAC阵列,其中,MAC阵列包括A行,卷积核的尺寸为Kx×Ky×C0×N,A、C0、Kx、Ky、N为正整数,所述方法包括:
在第k个卷积核第x行、第y列、第m个通道的运算时,读取第一权重数据,所述第一权重数据包括第k个卷积核的第x行、第y列、第m个通道的权重数据,其中,1≤k≤N,1<m≤C0,1≤x≤Kx,1≤y≤Ky;
读取与所述第一权重数据对应的a个像素数据的第m个通道的第一像素数据;
在m>1时,将所述第一权重数据分别与a个第一像素数据相乘,并将运算结果与m-1个通道的运算结果进行对位累加,得到a个第一卷积运算结果,1≤a≤A;
将m=C0时对位累加得到的a个第一卷积运算结果,确定为a个第二卷积运算结果,
其中,所述第二卷积运算结果为第k个卷积核第x行、第y列的权重数据分别与对应的a个像素数据执行卷积操作得到的a个运算结果。
根据本公开的另一方面,提供了一种人工智能处理器,所述人工智能处理器包括多个处理核心,每个处理核心包括存储模块及运算模块,所述存储单元用于存储图像的像素数据及N个卷积核的权重数据;所述运算单元包括乘数累加器MAC阵列,用于根据所述像素数据及所述权重数据进行运算,其中,所述处理核心通过任一项所述的数据处理方法执行卷积运算。
本公开实施例中,通过能够在每次运算时实现第一权重数据与a个第一像素数据之间的多点并行乘累加运算,从而可以提高卷积运算效率,实现提升人工智能处理器的运行效率。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开实施例的数据处理方法的流程图。
图2示出根据本公开实施例的输入图像以及卷积核的示意图。
图3a和图3b示出根据本公开实施例的卷积运算的示意图。
图4a和图4b示出根据本公开实施例的一种地址产生模块的示意图。
图5a和图5b示出根据本公开实施例的一种像素数据以及权重数据的存储示意图。
图6a和图6b示出根据本公开实施例的一种移位寄存器的示意图。
图7示出根据本公开实施例的一种带padding补0策略的卷积运算的示意图。
图8示出根据本公开实施例的一种膨胀卷积运算的示意图。
图9a示出根据本公开实施例的一种人工智能处理器的框图。
图9b示出根据本公开实施例的一种处理核心的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
在本公开实施例中,人工智能处理器可以为一种基于众核架构的神经形态芯片。基于该人工智能处理器可以实现各种人工智能算法,该人工智能处理器可以包括多个处理核心,多个处理核心可以并行运算,每个处理核心可以包括存储单元及运算单元。其中,存储单元可以用于存储待运算的数据,例如,可以包括输入数据和权重数据,运算单元可以用于执行逻辑运算和算术运算,例如,卷积运算等。本公开对人工智能处理器的具体类型不做限制。
可以知晓的是,在人工智能领域,尤其是图像处理领域,卷积运算占据了总计算量的较大部分,并且随着卷积神经网络的深度和/或广度的增加,卷积运算的运算效率可能会对人工智能处理器的运行效率产生较大影响,所以提升卷积运算的效率,可以在一定程度上提升人工智能处理器的运行效率。
目前基于众核结构的神经形态芯片在实现卷积运算时,一般是通过将输入图像的多个输入通道展开成一维向量形式,逐个像素数据与对应权重数据进行乘数累加计算。由于目前的神经形态芯片中乘数累加器MAC的结构限制,所以每次运算时只能执行单个像素数据与对应卷积核的权重数据的乘积,累加后输出的卷积运算结果。相关技术中,卷积运算的效率较低,如何提高卷积运算效率成为一个亟待解决的问题。
基于此,本公开实施例中的运算单元中可以包括乘数累加器MAC阵列,该MAC阵列可以包括基于纵横式交换crossbar矩阵结构的阵列。其中,MAC阵列可以为包括行列两个维度的MAC阵列,当卷积操作的卷积核为一个时,可以读取该卷积核的一个权重数据以及与该权重数据对应的至少一个像素数据,执行该权重数据与至少一个像素数据分别乘累加操作。当卷积操作的卷积核为多个时,可以读取每个卷积核的一个权重数据以及与权重数据对应的至少一个像素数据,同时执行每个权重数据与对应的至少一个像素数据分别乘累加操作。
其中,多个乘累加操作可以为并行操作。在卷积操作的卷积核为多个时,不同卷积核的权重数据所对应的像素数据可以相同。
在一种可能的实现方式中,该MAC阵列可以包括A行×Q列的MAC。其中A和Q的具体数值可以根据实际需求设定,例如,结合芯片面积、数据输出带宽等因素设定,本公开实施例以4×32的MAC阵列为例进行说明。对于运算单元中MAC阵列的结构,本公开实施例不做限制。
举例来说,处理核心的运算单元包括4×32的MAC阵列,当卷积操作包括一个卷积核时,该运算单元可以同时将一个权重数据与四个像素数据分别执行乘累加操作。当卷积操作包括多个卷积核时,例如,包括4个卷积核时,该运算单元可以分别读取每个卷积核的一个权重数据,并读取与4个权重数据均对应的四个像素数据,并行执行四个权重数据分别与对应的四个像素数据的乘累加操作,其中,每个权重数据与四个像素数据的乘累加操作也是并行执行的。
这样,通过包括MAC阵列的运算单元,能够有效提高运算效率。基于本公开实施例中的MAC阵列,可以实现卷积核的权重数据与对应的多个像素数据之间的并行卷积运算,从而提高卷积运算效率。
在一种可能的实现方式中,为实现像素数据与权重数据的卷积运算,每个处理核心中的存储单元可以用于存储图像的像素数据及N个卷积核的权重数据。
应理解,存储单元可以用于存储输入图像的输入数据、存储输出图像的输入数据以及N个卷积核的权重数据,其中,输出图像可以是输入图像和N个卷积核执行卷积运算得到的目标卷积运算结果,本公开对输入图像的像素数据、输出图像的像素数据及N个卷积核的权重数据在存储单元中的存储格式、存储方式均不做限制。
其中,像素数据以及权重数据数据类型可以是包括三值(-1、0、1)、int8、unit8等多精度的数据类型,像素数据以及权重数据的数据类型可以不同。这样,本公开实施例的数据处理方法能够适用于各类网络,例如,二值网络、脉冲神经网络等,从而提高数据处理的适用灵活性,本公开实施例对于像素数据以及权重数据的数据类型不做限制。
运算单元可以包括乘数累加器MAC阵列,用于根据像素数据及权重数据进行运算,其中,输入图像的尺寸可以为宽度W0×高度H0×通道数C0,卷积核的尺寸可以为宽度Kx×高度Ky×通道数C0,行方向的步长可以为Sx,W0、H0、C0、Kx、Ky、Sx为正整数。可以理解的是,本公开实施例中的像素数据和权重数据可以是待进行卷积运算的数据。对于像素数据和权重数据的尺寸和数量,本公开实施例不做限制。
图1示出根据本公开实施例的数据处理方法的流程图。如图1所示,该数据处理方法,包括:
在步骤S11中,在第k个卷积核第x行、第y列、第m个通道的运算时,读取第一权重数据,所述第一权重数据包括第k个卷积核的第x行、第y列、第m个通道的权重数据,其中,1≤k≤N,1<m≤C0,1≤x≤Kx,1≤y≤Ky;
在步骤S12中,读取与所述第一权重数据对应的a个像素数据的第m个通道的第一像素数据;
在步骤S13中,在m>1时,将所述第一权重数据分别与a个第一像素数据相乘,并将运算结果与m-1个通道的运算结果进行对位累加,得到a个第一卷积运算结果,1≤a≤A。
在步骤S14中,将m=C0时对位累加得到的a个第一卷积运算结果,确定为a个第二卷积运算结果,
其中,所述第二卷积运算结果为第k个卷积核第x行、第y列的权重数据分别与对应的a个像素数据执行卷积操作得到的a个运算结果。
其中,a个像素数据可以理解为在卷积运算的多个卷积滑窗中,分别与第k个卷积核第x行、第y列的权重数据对应的像素数据。应理解,卷积运算中,与第k个卷积核第x行、第y列的权重数据对应的像素数据可以是根据卷积核的步长Sx、图像的尺寸、卷积核的尺寸、padding补0策略以及膨胀卷积参数中的至少一个确定的。
a个像素数据可以是所有对应的像素数据中的至少一个像素数据。a个像素可以是卷积运算过程中,不同卷积滑窗中与同一权重数据对应的像素数据。其中,a的值可以小于或等于MAC阵列的行数A,例如,4×32的MAC阵列,a可以是取[1,4]中的整数。其中,读取第一权重数据与第一像素数据可以是按照像素读取位宽来读取的。像素读取位宽可以是16的倍数,例如,可以是16B或32B或64B等,对此本公开实施例不做限制。
其中,所述第二卷积运算结果为第k个卷积核第x行、第y列的权重数据分别与对应的a个像素数据执行卷积操作得到的a个运算结果。第二卷积运算结果可以用于确定目标卷积运算结果,其中,目标卷积运算结果为输入图像与N个卷积核运算后的输出图像。例如,目标卷积运算结果可以为尺寸为宽度Ox×高度Oy×卷积核个数N的输出图像。
在一种可能的实现方式中,在N>1时,N个卷积核的权重数据与对应像素数据的卷积操作为并行运算。
举例来说,在卷积核的个数N为2时,可以并行执行2个卷积核的权重数据与对应像素数据的卷积操作。例如,读取每个卷积核对应的第一权重数据,得到2个第一权重数据。读取与每个第一权重数据对应的a个第一像素数据,其中,不同卷积核的第一权重数据对应的a个第一像素数据可以相同。并行执行2个第一权重数据与对应第一像素数据的乘累加操作,并行得到2个卷积核的权重数据与对应像素数据卷积操作后的第二卷积运算结果。
通过这种方式,可以并行得到不同卷积核与像素数据卷积操作的运算结果,提高卷积运算效率。
在一种可能的实现方式中,在a>1时,所述第一权重数据分别与a个第一像素数据相乘,并将运算结果与m-1个通道的运算结果进行对位累加,得到a个第一卷积运算结果为并行运算。
举例来说,a为4,可以并行执行第一权重数据与4个第一像素数据相乘的运算,运算结果与m-1个通道的运算结果进行对位累加,得到4个第一卷积运算结果也是并行的。
通过这种方式,能够提高卷积运算效率。
在一种可能的实现方式中,本公开实施例中的数据处理方法可以应用于人工智能处理器中,例如,由前述的MAC阵列来实现,该MAC阵列包括A行,从而可以实现读取一个权重数据,同时与最多A个像素数据分别进行相乘。如前所述,该MAC阵列包括Q列,从而可以实现并行执行N个卷积核的权重数据与对应像素数据的卷积操作。
通过本公开实施例,可以读取第一权重数据以及与该第一权重数据对应的a个第一像素数据,执行第一权重数据分别与a个第一像素数据的乘积操作,能够在每次运算时实现a个第一像素数据与对应卷积核的第一权重数据之间的并行卷积运算,从而可以提高卷积运算效率,实现提升人工智能处理器的运行效率。通过MAC阵列的Q列,从而可以实现并行执行N个卷积核的权重数据与对应像素数据的卷积操作。通过本公开实施例,在网络映射中,权重数据无需复制多份,可以只需存储一次便实现一层网络的计算,从而提升存储效率,并提高小输入通道情况下特征图的卷积计算效率。
在一种可能的实现方式中,所述方法还包括:
在m=1时,将所述第一权重数据分别与a个第一像素数据相乘,得到a个第一卷积运算结果。
图2示出根据本公开实施例的输入图像以及卷积核的示意图。举例来说,所述输入图像的尺寸为宽度4×高度4×通道数4,卷积核A和卷积核B的尺寸为宽度2×高度2×通道数4,其中,图中未示出通道。
为便于理解,第1行第1列的像素数据可以表示为X[0,0],第1行第1列第m个通道的第一像素数据可以表示为X[0,0][m],卷积核A第1行第1列的权重数据可以表示为A[0,0],第1行第1列第m个通道的第一权重卷积可以表示为A[0,0][m],1≤m≤4。
以在不考虑卷积padding的补0策略,步长为1为例进行示例性说明。卷积运算包括9个卷积滑窗。其中,在9个卷积滑窗中,与两个卷积核第1行第1列的权重数据对应的像素数据可以分别为输入数据的第1行第1列X[0,0]、第1行第2列X[0,1]、第1行第3列X[0,2]、第2行第1列X[1,0]、第2行第2列X[1,1]、第2行第3列X[1,2]、第3行第1列X[2,0]、第3行第2列X[2,1]以及第3行第3列X[2,2]这9个像素数据。
举例来说,当运算单元包括4×32的MAC阵列时,可以分别读取卷积核A和卷积核B的一个权重数据,例如,卷积核A第1行第1列的权重数据A[0,0],卷积核B第1行第1列的权重数据B[0,0],两个权重数据对应的4个像素数据可以为第1行第1列X[0,0]、第1行第2列X[0,1]、第1行第3列X[0,2]以及第2行第1列X[1,0]。
在m=1时,为第1个通道的卷积运算,分别执行卷积核A第1行第1列第1通道的第一权重数据A[0,0][0]与X[0,0][0]、X[0,1][0]、X[0,2][0]以及X[1,0][0]的乘积运算,得到第1个通道的4个第一卷积运算结果,以及卷积核B第1行第1列第1通道的第一权重数据B[0,0][0]与X[0,0][0]、X[0,1][0]、X[0,2][0]以及X[1,0][0]的乘积运算,得到第1个通道的4个第一卷积运算结果。其中,上述乘积运算可以为并行运算。
在m=2时,可以分别执行卷积核A和卷积核B第1行第1列第2通道的第一权重数据A[0,0][1]以及B[0,0][1]与X[0,0][1]、X[0,1][1]、X[0,2][1]以及X[1,0][1]的乘积运算,运算结果与第1次运算的结果进行对位累加,得到8个第一卷积运算结果。
应理解,在m=4时,得到的8个第一卷积运算结果分别为卷积核A权重数据A[0,0]与a个像素数据执行m层后得到的第二卷积运算结果以及卷积核B权重数据B[0,0]与a个像素数据执行m层后得到的第二卷积运算结果。第二卷积运算结果可以用于确定目标卷积运算结果。
如前所述,当卷积核的数量大于1时,例如,卷积核数量为2时,可以读取两个卷积核的第一权重数据,两个卷积核的第一权重数据对应相同的4个第一像素数据,可以同时执行每个第一权重数据分别与4个第一像素数据的乘积与累加运算,其中,第一权重数据分别与4个第一像素数据的乘积与累加运算为并行运算,两个第一权重数据与第一像素数据的运算也为并行运算,这样,能够提高卷积运算的速度。
在一种可能的实现方式中,所述方法还包括:
确定第k个卷积核中每个权重数据与对应的各个像素数据的第二卷积运算结果;
确定每个卷积滑窗中的各个第二卷积运算结果;
根据每个卷积滑窗中的第二卷积运算结果之和,确定目标卷积运算结果中第k通道的像素数据,
其中,所述目标卷积运算结果为输入图像与N个卷积核卷积运算后的输出图像。
举例来说,可以确定每个卷积滑窗中与第k个卷积核中第x行第y列的权重数据对应的像素数据,得到第k个卷积核中每个权重数据对应的各个像素数据。应理解,每个卷积滑窗中与第k个卷积核中第x行第y列的权重数据对应像素数据与输入图像的尺寸、卷积核的尺寸、步长、膨胀卷积系数、卷积padding的补0策略中至少一个参数相关。
其中,确定第k个卷积核中每个权重数据与对应的各个像素数据的第二卷积运算结果,可以是按照卷积核包括的权重数据,依次确定每个权重数据与其对应的所有像素数据的第二卷积运算结果,也可以是重复执行以下步骤,直至得到第k个卷积核中每个权重数据与对应的各个像素数据的第二卷积运算结果:确定第k个卷积核中,每个权重数据与对应的a个像素数据的a个第二卷积运算结果。本公开对确定第k个卷积核中每个权重数据与对应的像素数据的第二卷积运算结果不做限制。
在一些可选的实施例中,确定第k个卷积核中每个权重数据与对应的像素数据的第二卷积运算结果,可以包括:
分别确定第k个卷积核中每个权重数据与所有对应的像素数据的第二卷积运算结果。
举例来说,如图2所示,与卷积核A第1行第1列的权重数据A[0,0]对应的像素数据可以分别为输入数据X[0,0]、X[0,1]、X[0,2]、X[1,0]、X[1,1]、X[1,2]、X[2,0]、X[2,1]以及X[2,2]这9个像素数据,可以确定A[0,0]与上述9个像素数据卷积操作的第二卷积运算结果。例如,在A等于4时,可以同时执行A[0,0]与X[0,0]、X[0,1]、X[0,2]、X[1,0]的卷积操作,得到4个第二卷积运算结果,同时执行A[0,0]与X[1,1]、X[1,2]、X[2,0]、X[2,1]的卷积操作,得到4个第二卷积运算结果,并执行A[0,0]X[2,2]的卷积操作,得到1个第二卷积运算结果,得到卷积核中一个权重数据A[0,0]与所有对应的9个像素数据的第二卷积运算结果。卷积核其他权重数据与所有对应的像素数据的第二卷积运算结果可以如前所述,在此不再赘述。这样,能够得到第k个卷积核中每个权重数据与对应的各个像素数据的第二卷积运算结果。
在一些可选的实施例中,确定第k个卷积核中每个权重数据与对应的像素数据的第二卷积运算结果,可以包括:
重复执行以下步骤,直至得到第k个卷积核中每个权重数据与对应的各个像素数据的第二卷积运算结果:确定第k个卷积核中,每个权重数据与对应的a个像素数据的a个第二卷积运算结果。
举例来说,假设卷积核为Kx×Ky,x方向步长为Sx,A为4,输入图像在x方向的像素数据大于1+3Sx,可以实现X[0,0],X[0,Sx],X[0,2Sx],X[0,3Sx]同时与卷积核第1行第1列的权重数据A[0,0]进行乘累加,可以得到4个第二卷积运算结果。
可以进行宽度方向移位,实现卷积核第1行第2列的权重数据A[0,1]与对应的4个像素数据的卷积操作。例如,进行X[0,1],X[0,1+Sx],X[0,1+2Sx],X[0,1+3Sx]与A[0,1]的卷积操作。直至完成一次Kx个权重数据与对应的输入像素向量的卷积操作,得到卷积核第1行Kx个权重数据与各自对应的4个像素向量的第二卷积运算结果。
可以执行换行操作,例如,执行X[1,0],X[1,Sx],X[1,2Sx],X[1,3Sx]与W[1,0]的卷积操作,重复上述操作,直至完成Kx×Ky个权重数据与对应4个像素数据的卷积操作后,得到Kx×Ky×4个第二卷积运算结果。应理解,此时可以根据得到的Kx×Ky×4个第二卷积运算结果,确定输出图像第k通道的相邻4个像素数据。
可以重复上述操作,直至得到确定第k个卷积核中每个权重数据与对应的像素数据的第二卷积运算结果。
举例来说,如图2所示,可以执行X[0,0],X[0,1],X[0,2],X[1,0]与A[0,0]的卷积操作,得到4个第二卷积运算结果,执行X[0,1],X[0,2],X[0,3],X[1,1]与A[0,1]的卷积操作,得到4个第二卷积运算结果,执行X[1,0],X[1,1],X[1,2],X[2,0]与A[1,0]的卷积操作,得到4个第二卷积运算结果,执行X[1,1],X[1,2],X[2,1],X[2,2]与A[1,1]的卷积操作,得到4个第二卷积运算结果,此时得到4个权重数据分别与各自对应的4个像素数据的第二卷积运算结果。
重复上述操作,直至得到确定第k个卷积核中每个权重数据与对应的像素数据的第二卷积运算结果。第k个卷积核中每个权重数据与对应的像素数据的第二卷积运算结果可以用于确定目标卷积运算结果中第k通道的像素数据。
在一种可能的实现方式中,可以确定第k个卷积核,每个卷积滑窗中的各第二卷积运算结果,并根据每个卷积滑窗中的第二卷积运算结果之和,确定所述目标卷积运算结果中第k通道的像素数据。
举例来说,如图2所示,卷积核A为第1个卷积核,在卷积运算中,包括9个卷积滑窗,例如,第1个卷积滑窗包括A[0,0]与X[0,0]的第二卷积运算结果,A[0,1]与X[0,1]的第二卷积运算结果,A[1,0]与X[1,0]的第二卷积运算结果以及A[1,1]与X[1,1]的的第二卷积运算结果,将上述4个第二卷积运算结果之和,确定为目标卷积运算结果中第1通道第1行第1列的像素数据。
在一种可能的实现方式中,分别确定目标卷积运算结果中的每个像素数据,得到目标卷积运算结果。
应理解,每个卷积滑窗中的各第二卷积运算结果可以是不同运算周期进行卷积运算得到的,在执行卷积操作过程中,还可以按需要载入Bias偏置向量数据,并根据Bias偏置向量数据确定目标卷积运算结果等,本公开对此不做限制。
在一种可能的实现方式中,所述在第k个卷积核第x行、第y列、第m个通道的运算时,读取第一权重数据,包括:
生成所述第一权重数据的第一存储地址,并根据所述第一存储地址从存储单元中读取所述第一权重数据;
所述读取与所述第一权重数据对应的a个像素数据的第m个通道的第一像素数据,包括:
生成与所述第一权重数据对应的a个像素数据的第二存储地址,并根据所述第二存储地址从所述存储单元中读取所述a个像素数据,以读取a个像素数据的第m个通道的第一像素数据。
举例来说,可以根据待读取的数据(例如,第一权重数据或第一像素数据),或者待写入的数据(例如,输出图像的像素数据),生成存储地址,以根据所述存储地址对所述存储单元执行读取或写入操作。应理解,存储单元存储有输入图像各像素数据以及N个卷积核的权重数据,确定第一权重数据第一存储地址和对应的a个像素数据的第二存储地址,可以从存储单元中读取相应的数据,本公开对存储单元中数据存储方式、生成第一存储地址和第二存储地址的方式不做限制。
图3a和图3b示出根据本公开实施例的卷积运算的示意图。如图3a、3b所示,输入图像的尺寸为宽度W×高度H×通道数C,卷积核的尺寸可以为宽度Kx×高度Ky×通道数C,输出图像的尺寸为Ox×Oy×N。。
如前所述,每个处理核心中的存储单元可以用于存储输入图像的像素数据及N个卷积核的权重数据。在执行前述卷积运算以及将目标卷积运算结果进行输出时,可以对存储单元中的数据执行读取或写入操作。
例如,在执行卷积操作时,可以生成第k个卷积核第x行、第y列、第m个通道的第一存储地址,以读取对应的第一权重数据,生成输入图像的通道,以读取与第一权重数据对应的第一像素数据。还可以生成输出数据的写入地址,例如,要得到大小为Ox×Oy×N的输出数据,可以生成对应的存储地址,以将运算得到的输出数据写入相应地址。其中,输出通道N的地址可以是根据32B拆分数W_grp来生成的,本公开对此不作限制。
这样,能够实现对任意行列的像素点数据的读取。
在一些可选的实施例中,运算单元还可以包括地址产生模块,可以通过地址产生模块生成包括输入图像的通道、卷积核宽度Kx,卷积核高度Ky,输出通道N,输出图像的宽度Ox,输出图像高度Oy中的至少一个存储地址。
应理解,要得到大小为Ox×Oy×N的输出数据,该地址产生模块可以包括六层循环,分别为在输入通道,卷积核长度Kx,卷积核高度Ky,输出通道N,输出图像长度Ox,输出图像高度Oy方向的循环。
图4a和图4b示出根据本公开实施例的一种地址产生模块的示意图。如图4a和图4b所示,可以通过6级硬件循环Cnt L0-L5,分别控制输入通道、卷积核宽度Kx、卷积核Ky、输出通道N、输出图像宽度Ox、输出图像Oy六个方向的地址生成。
如图4a和图4b所示,输入数据经过和权重数据进行卷积运算,得到输出输入。以输入数据为输入图像,输出数据为输出图像为例,输入图像包括一个四行四列的像素点,共16个像素点。可以指定水平向右的方向为x方向,垂直向下的方向为y方向。可以由地址产生模块生成第一个像素点值的地址,在这个地址的基础上沿x方向增加一个步长(L1_step)的长度,从而进行地址变换(即,地址跳变),产生第二个像素点的地址。依次类推,直到对第一行的像素点处理完毕,开始换行进行地址变换,产生第二行最左侧的第一个像素点的地址。所述步长可以预先存储在控制模块的PI(Primitive Instruction,原语指令)寄存器中。当输入图像的像素点进行地址变换时,需要确定循环的次数和顺序。例如,卷积核的宽度为3,高度为4,则在进行地址变换时,L1级循环可以处理卷积核的宽度,即读取宽度为3的像素点需要循环3次;L2级循环可以处理卷积核的高度,即读取完宽度为3的各行的像素点之后,还需要循环4次,以便在行与行之间进行地址变换。
值得说明的是,所述6级循环可以按照不同的顺序执行,即可以在L1级循环之后进行L2级循环,也可以在L1级循环之后进行L5级循环。所述6级循环也可以通过一个多路选择器进行选择,将经过多路选择器输出的地址作为起始地址,在完成一级循环之后,可以将所述起始地址加上预定的步长或者直接加1,作为新一级循环的起始地址。通过地址产生模块适配不同的计算模式和存储方式,能够灵活增加不同种类数据的地址产生,实现更加复杂的计算。本公开对于如何进行地址变换并不限定。
本公开实施例的地址产生模块还可以为输入数据、权重数据、偏置向量分别配置相应的读使能信号控制逻辑,为膜电位配置写使能信号控制逻辑。还可以控制地址生成与读写使能信号解耦,即读写使能地址产生变化时,读写使能信号也可以不开启,不进行数据读取和写回,本公开对地址产生模块的形式和实现方式不做限制。
这样,能够实现对任意行列的像素点数据的读取,提高存储寻址逻辑灵活度,无需连续读取,从而无需在计算时存储冗余的权重数据和进行无用的冗余计算,提高神经形态芯片的卷积操作的复杂度和灵活性,进而使得神经形态芯片支持复杂度较高的卷积运算,例如padding或膨胀卷积等。
在一种可能的实现方式中,所述数据处理方法还可以包括:根据像素存储位宽,存储输入图像的像素数据。
在一种可能的实现方式中,根据像素存储位宽,存储输入图像的像素数据,可以包括:
根据各个像素数据在C0个通道的第一像素数据以及像素存储位宽,确定各个像素数据对应的至少一个存储向量;
按照预设顺序,依次存储所述输入图像每个像素数据对应的至少一个存储向量。
其中,每个存储向量的向量长度小于或等于存储位宽,像素存储位宽可以是根据实际需求设定的像素数据在存储单元中的存储宽度,为了便于像素数据的存储,像素存储位宽可以是16的倍数,例如,可以是16B或32B或64B等,对此本公开实施例不做限制。为了便于从存储单元中读取像素数据,像素存储位宽可以与像素读取位宽一致。
其中,所述预设顺序可以灵活设置,例如,可以按照行的顺序,依次存储每一行中的各像素数据,其中,在存储每一行中的像素数据时,是按照列的顺序依次存储的。
图5a和图5b示出根据本公开实施例的一种像素数据以及权重数据的存储示意图。如图5a和图5b所示,输入数据的每一个像素数据沿其通道方向展开成向量,输入图像的通道个数为C0,即为像素数据的向量长度。当向量长度大于存储单元的存储位宽32B时(按16B寻址),向量可以按32B对齐拆分为多个存储向量。
其中,可以按照列的顺序,依次存储输入图像第一行的各像素数据,其中,每个像素数据对应至少一个存储向量,再按照列的顺序,依次存储输入图像第二行的各像素数据,直至存储整张输入图像的像素数据。
这样,在输入图像为通道数量较多的深层特征图时,按照前文所述的方式进行存储,即一个通道数量为C0的大小为W0×H0的特征图,将每个像素数据沿通道展开成向量存储,然后再先行后列依次存储,能够减少从存储单元中读取数据的时间占用比例,提高时间复用效率,从而能够高效地实现多输入通道下的计算和存储效率。
在一种可能的实现方式中,所述数据处理方法还可以包括:存储N个卷积核的权重数据。
在一种可能的实现方式中,存储N个卷积核的权重数据,可以包括:
将卷积核个数N作为向量长度展开,以高度为Kx×Ky×C0,宽度为N的存储向量,存储N个卷积核的权重数据,
其中,在高度方向的排列顺序依次为通道C0、宽度Kx以及高度Ky方向。
在一种可能的实现方式中,存储N个卷积核的权重数据,还可以包括:
在卷积核个数N大于或等于预设值时或者权重数据的存储单位大于或等于阈值时,将所述存储向量拆分存储。
举例来说,如图5b所示,卷积核为四维数据,共有Kx×Ky×C0×N个权重数值,以每个输出图像的数量N(卷积核的个数,输出通道个数)为向量长度展开(沿着Channel_out方向展开),构成一个高度为Kx×Ky×C0,宽度为N的矩阵。
其中,在高度方向的排列顺序依次为C0、Kx以及Ky方向,当N大于32时,向量按32B对齐拆分为W_grp组,当权重数据的存储单位是2bit时,卷积核个数N也可以按32(32×2bit=8B)对齐拆分为W_grp组,其中,每一组的权重数据可以排列在前一组的权重数据下方。其中,输出通道数N,为下一层输入数据时的输入通道数。
通过这种方式,提升了特征图和卷积核的存储空间利用效率。
在本公开实施例中,通过这样的存储模式,减少从存储单元中读取数据的时间占用比例,提高时间复用效率,从而能够高效地实现多输入通道下的计算和存储效率,并进一步提高卷积运算效率。
应理解,本公开实施例的存储模式,配合具有6级循环的地址产生逻辑,便能灵活寻址,可以在内存中任意读取某个像素点的像素数据或卷积核的权重数据。并且,卷积核权重在存储单元中的存储方式与前文所述的卷积运算流程相符,因此在循环计算过程中,可以通过地址一直加1累加即可。输出数据的存储顺序与卷积运算流程的顺序也遵循规律,因此也可以根据硬件固化逻辑来实现。其中,输入数据由于涉及到滑窗取数操作,因此其在每层循环的步进值(地址跳变大小)可以设为软件可配置的原语参数。
在一种可能的实现方式中,所述运算单元还包括缓存模块,所述方法还包括:
从存储单元中读取输入图像中与第k个卷积核第x行、第y列对应的a个像素数据,并存储在缓存模块;
其中,所述读取与所述第一权重数据对应的a个像素数据的第m个通道的第一像素数据,包括:
从缓存模块中选通所述第一权重数据对应的a个像素数据的第m个通道的第一像素数据。
其中,缓存模块可以为数据缓存寄存器,例如,可以采用寄存器、双口随机存取存储器、非易失性存储器等可以实现移位取数的存储器,对此本公开实施例不做限制。
图6a和图6b示出根据本公开实施例的一种移位寄存器的示意图。如图6a和图6b所示,缓存模块包括4个寄存器(reg0—reg3),可以实现动态的数据读取和选通,提取输入图像的像素数据至缓存模块内,准确并高效地与对应权重数据运算。
在一种可能的实现方式中,缓存模块的大小和数量可以根据实际需求设定,在本公开实施例中,缓存模块可以大于像素读取位宽和权重读取位宽,例如,若像素读取位宽为32B,则可以选用48B的寄存器,以在进行运算时保证数据的连续加载,从而保证运算的连贯性。
在一种可能的实现方式中,在确定缓存模块的大小后,可以根据实际需求采用1个或多个缓存模块,例如,若要采用48B的寄存器,该48B的寄存器可以采用3个16B的寄存器组成,还可以采用一个48B的寄存器,其中,选用多个缓存模块,可以实现缓存模块的复用,提高资源的利用率。
在一种可能的实现方式中,若缓存模块加载的数据宽度小于缓存模块的大小,则缓存模块可以加载该宽度下的数据,缓存模块中其它存储空间补0,例如,48B的寄存器,若加载的像素数据或权重数据不足16B,则加载16B的数据,缓存模块内其它存储空间补0,若加载的像素数据或权重数据不足32B,则加载32B的数据,缓存模块内其它存储空间补0。
举例来说,为实现同时进行X[0,0][0],X[0,Sx][0],X[0,2Sx][0],X[0,3Sx][0]与W[0,0][0]做乘积,可以从存储单元中读取输入图像中与第k个卷积核第x行、第y列对应的a个像素数据,并存储在数据缓存寄存器。其中,由于存储单元的读写带宽的限制,每次从存储单元取出数据之后可以分高低位进行缓存一定量的数据(例如,为16B),这样,对于输入图像可以分组多次进行缓存。
在一种可能的实现方式中,在缓存模块中的数据小于或等于缓存阈值时,可以按时钟逐个加载下一组待卷积运算的数据,并存储在所述缓存模块中。
举例来说,为使计算和4个寄存器(reg0—reg3)读取数据可以同时进行,每组16个通道数据计算到剩余最后4通道时,reg0-3开始按时钟逐个加载下一组16B数据,即同时进行x×w计算和读取载入数据。保证在上一个16B数据完成卷积计算后,直接可以进行下一组16B数据的计算,不用额外的时钟进行数据读取。
这样,在计算过程中读取缓存数据,增加时间复用,整体提高计算效率。通过这种方式,数据缓存寄存器,例如,多个移位寄存器能够实现多个像素点的动态读取逻辑,通过与卷积核对应权重相乘实现数据的多点并行运算逻辑,可以以行流水的形式连续运算并行输出多点结果。采用多移位寄存器缓存多个像素点,并在卷积运算过程中可以预先缓存下一步用来运算的像素数据,这种流水操作节省掉数据读取的时间,进一步提高运行效率。
在一种可能的实现方式中,所述读取与所述第一权重数据对应的a个像素数据的第m个通道的第一像素数据,包括:
在执行包括padding补0策略的卷积运算时,在确定当前卷积运算为非padding区域时,读取与所述第一权重数据对应的a个像素数据的第m个通道的第一像素数据。
图7示出根据本公开实施例的一种带padding补0策略的卷积运算的示意图。
如图7所示,像素为0的区域2为示例性性的padding区域,像素空白的区域1为示例性的非padding区域,可以通过输入数据的读使能信号控制在padding区域时,不进行像素数据的读取操作,在非padding区域,进行像素数据的读取操作。例如,在根据前述六级循环的地址产生模块(例如,计数器组合)运算得出当计算到padding区域时,可以控制输入数据读使能信号不开启,即地址指针可以正常变化,但不读取数据,MAC计算阵列默认进行零乘权重运算,直到计算跳出padding区域,控制读使能信号开启,将地址指针指向的存储单元的存储区域以读取像素数据,MAC阵列正常进行计算。
通过地址产生和读写使能信号的控制逻辑,实现带padding的卷积计算,无需在存储单元中存储补零的冗余数据,而是通过控制读使能信号和地址跳变逻辑,无需在存储单元中存储补零数据,实现输入图像四个方向任意配置的带padding的卷积计算,本公开实施例的人工智能芯片能够实现基于卷积运算的padding操作。
在一种可能的实现方式中,所述读取与所述第一权重数据对应的a个像素数据的第m个通道的第一像素数据,包括:
在执行膨胀卷积运算时,可以根据膨胀卷积系数,确定与第一权重数据对应的a个第一像素数据。
图8示出根据本公开实施例的一种膨胀卷积运算的示意图。
如图8所示,举例来说,在执行膨胀卷积运算时,可以根据膨胀卷积系数、输入图像的尺寸、卷积核的尺寸以及步长中的至少一个参数,确定与第k个卷积核中第x行、第y列对应的像素数据。例如,地址产生模块可以根据与第一权重数据对应的a个第一像素数据,确定循环间地址跳变大小,并通过六级循环的地址产生模块控制读取与权重数据对应的a个像素数据,以在膨胀卷积运算中,读取与第一权重数据对应的a个第一像素数据,进行卷积运算。例如,原本3×3的卷积核,膨胀卷积后变为5×5的卷积,此时,无需在存储单元的权重存储时补零,可以通过调整输入数据的对应像素数据,修正地址指针跳变大小,建立膨胀卷积操作中,输入数据和权重数据的对应关系,读取与第一权重数据对应的a个第一像素数据。
这样,能够很好地实现膨胀卷积(空洞卷积)操作,高效实现膨胀卷积运算,无需增加额外占用存储空间,具有灵活扩展性强,可适配新网络算法等特点。
在一种可能的实现方式中,所述方法还包括:
生成目标卷积运算结果的第三存储地址;
将所述目标卷积运算结果写入所述存储单元的第三存储地址。
其中,可以由地址产生模块生成目标卷积运算结果的第三存储地址,运算单元计算得到的目标卷积运算结果写入所述存储单元的第三存储地址。
基于2D MAC阵列,可以实现深层特征图(通道数通常大于4)的卷积运算,通过设计多个移位寄存器以实现多个像素数据的动态读取,通过与卷积核对应行元素对应相乘实现数据的多点并行运算逻辑,以行流水的形式连续运算并行输出多点结果,并且基于上述特征图的存储模式和灵活的地址生成逻辑,可以实现padding卷积、膨胀卷积(空洞卷积)等各类操作。
在一种可能的实现方式中,还可以通过获取原语参数,获取执行卷积运算所需要的参数,原语参数可以包括用于进行卷积运算所需要的数据,例如,原语参数可以包括:图像尺寸W0×H0×C0、卷积核尺寸Kx×Ky×C0、卷积核数量N、行方向的步长Sx、列方向的步长Sy、膨胀率Ex、填充参数padding、偏置参数Bias等参数,对于原语参数的具体形式,本公开实施例不做限制。
需要说明的是,本公开实施例中的输出图像可以是指经卷积运算得到的特征图(feature map),输入图像和图像可以是指原始图像,也可以指已进行卷积运算处理后的特征图,对此本公开实施例不做限制。
图9b示出根据本公开实施例的一种处理核心的框图。
本公开实施例的处理核心,应用于人工智能处理器,所述人工智能处理器包括多个处理核心,每个处理核心包括运算模块,所述运算模块包括乘数累加器MAC阵列,其中,所述MAC阵列包括A行,卷积核的尺寸为Kx×Ky×C0×N,A、C0、Kx、Ky、N为正整数,
所述乘数累加器MAC阵列,用于在m>1时,将第一权重数据分别与a个第一像素数据相乘,并将运算结果与m-1通道的运算结果进行对位累加,得到a个第一卷积运算结果,
其中,所述第一权重数据包括第k个卷积核的第x行、第y列、第m个通道的权重数据,所述第一像素数据包括与所述第一权重数据对应的a个像素数据的第m个通道的像素数据,其中,1≤k≤N,1≤m≤C0,1≤x≤Kx,1≤y≤Ky。
在一种可能的实现方式中,所述乘数累加器MAC阵列,用于:
在m=1时,将所述第一权重数据分别与a个第一像素数据相乘,得到a个第一卷积运算结果。
在一种可能的实现方式中,所述乘数累加器MAC阵列,用于:
将m=C0时对位累加得到的a个第一卷积运算结果确定为a个第二卷积运算结果,
其中,所述第二卷积运算结果为第k个卷积核第x行、第y列的权重数据分别与对应的a个像素数据执行卷积操作得到的a个运算结果。
在一种可能的实现方式中,所述乘数累加器MAC阵列,还用于:
确定第k个卷积核中每个权重数据与对应的各个像素数据的第二卷积运算结果;
确定每个卷积滑窗中的各个第二卷积运算结果;
根据每个卷积滑窗中的第二卷积运算结果之和,确定目标卷积运算结果中第k通道的像素数据,
其中,所述目标卷积运算结果为输入图像与N个卷积核卷积运算后的输出图像。
在一种可能的实现方式中,所述处理核心还包括存储模块,
所述存储模块,用于按照预设顺序,依次存储所述输入图像每个像素数据对应的至少一个存储向量,
其中,每个像素数据对应的至少一个存储向量是根据像素数据在C0个通道的第一像素数据以及像素存储位宽确定的。
在一种可能的实现方式中,所述处理核心还包括存储模块,
所述存储模块,用于以高度为Kx×Ky×C0,宽度为N的存储向量,存储所述N个卷积核的权重数据,
其中,卷积核个数N作为向量长度展开,在高度方向的排列顺序依次为通道C0、宽度Kx以及高度Ky方向。
在一种可能的实现方式中,所述运算模块还包括地址生成模块和缓存模块,
所述地址生成模块,用于生成所述第一权重数据的第一存储地址以及a个像素数据的第二存储地址;
所述缓存模块,用于根据所述第二存储地址,从存储模块加载所述a个像素数据,选通与第一权重数据对应的a个第一像素数据;
所述乘数累加器MAC阵列,用于根据第一存储地址从存储模块读取所述第一权重数据以及所述缓存模块选通的a个第一像素数据执行乘累加运算。
在一种可能的实现方式中,所述处理核心还包括地址生成模块,
所述地址生成模块,还用于生成所述存储模块的第三存储地址;
所述运算模块,用于将所述目标卷积运算结果写入所述第三存储地址。
本公开实施例的处理核心,在输入图像的通道数量较多时,能够高效执行卷积运算。
图9a示出根据本公开实施例的一种人工智能处理器的框图,图9b示出根据本公开实施例的一种处理核心的框图。如图9a所示,该人工智能处理器100包括多个处理核心101,如图9b所示,每个处理核心101包括存储单元102及运算单元103。
在一种可能的实现方式中,存储单元102用于存储图像的像素数据及N个卷积核的权重数据;运算单元103包括乘数累加器MAC阵列104,用于根据像素数据及权重数据进行运算。
在一种可能的实现方式中,运算单元还可以包括至少一个缓存模块105,缓存模块用于根据预设的像素读取位宽从存储单元102中读取像素数据,以及根据预设的权重读取位宽从存储单元102中读取权重数据。
在一种可能的实现方式中,缓存模块105可以将选通的数据送入MAC阵列进行卷积运算,将卷积运算结果输出到存储单元中由地址产生模块106指定的地址空间中。
在一种可能的实现方式中,运算单元还可以包括地址产生模块106用于产生缓存模块读取数据时的地址指针,以便于缓存模块105根据地址指针实现顺序寻址和/或跳变寻址。
在一种可能的实现方式中,MAC阵列104包括基于纵横式交换crossbar矩阵结构的阵列。MAC阵列104可以展开为行列两个维度,能够实现支持多点并行卷积运算。
在一种可能的实现方式中,处理核心101可以通过本公开实施例上述任一项所述的数据处理方法执行卷积运算。
在一种可能的实现方式中,存储单元102,可以用于根据特定的像素数据与权重数据的存储逻辑存储数据,其中像素数据的存储逻辑包括:根据各个像素数据在C0个通道的第一像素数据以及像素存储位宽,确定各个像素数据对应的至少一个存储向量;
按照预设顺序,依次存储所述输入图像每个像素数据对应的至少一个存储向量。
在一种可能的实现方式中,权重数据和像素数据时可以指定在存储单元102中的存储地址。根据权重数据的存储地址,缓存模块105在读取权重数据时,可以从存储地址的起始地址开始以地址加一的方式读取权重数据。
在一种可能的实现方式中,缓存模块105在读取像素数据时,会产生地址跳变,即,跳行读取像素数据,可以在原语参数里设置配置的地址跳变值。地址产生模块106根据地址跳变值生成目标地址,通过人工智能处理器自带的循环时钟计数器进行计数,在计数满足跳变条件后,循环时钟计数器产生跳变信号,通过跳变信号指示缓存模块105根据地址产生模块106产生的目标地址,实现地址指针的跳转。
在本公开实施例中,通过采用本公开实施例的人工智能处理器,可以实现高效的卷积运算,能够提升人工智能处理器的运行效率。
在一种可能的实现方式中,将卷积核个数N作为向量长度展开,以高度为Kx×Ky×C0,宽度为N的存储向量,存储N个卷积核的权重数据,
其中,在高度方向的排列顺序依次为通道C0、宽度Kx以及高度Ky方向。
在一种可能的实现方式中,存储该权重矩阵时,当N大于32,权重数据大于等于1B时,该权重矩阵按32B对齐拆分为W_grp组,每一组的数据在存储单元中排列在前一组的数据下方。在一种情况下,当权重数据是2bit时,权重矩阵按每32列(也就是每32×2bit=8B)对齐拆分为W_grp组。
在一种可能的实现方式中,可以采用48B的移位寄存器,或3个16B的寄存器,从存储单元中读取数据。在从存储单元中读取数据时,可以分3个时钟加载48B数据,例如,将输入图像的第1个通道(通常为R通道)的第一行的相邻48B(第0至47个)像素分3个时钟按高低16位加载进48B寄存器。若输入图像的宽度不足16B,则只load进16B数据,不足时补零;若输入图像的宽度不足32B,则只load进32B数据,不足时补零,读数操作可以通过循环时钟计数器控制。
在一种可能的实现方式中,在从寄存器中选取数据输出MAC阵列中进行运算时,每当寄存器将移除1个16B的数据时,寄存器会装载下一个16B的数据以保持运算的连贯。
在一种可能的实现方式中,基于4×32的2D MAC阵列,可实现最多4个像素数据在同时和最多32个卷积核的同一位置处的权重数据做相乘计算。例如,在一次运算中,可以选通寄存器中的X[0],X[Sx],X[2Sx],X[3Sx]4个像素数据第一通道的第一像素数据,同时与32个卷积核的第一个通道、第一行、第一个权重数据相乘。
在一种可能的实现方式中,通过将2D MAC阵列展开为行列两个方向,在列方向展开为Q个组,以提供在Q个输出通道方向的计算;在行方向展开为A个组,以提供A个像素数据的在行方向上的计算。每A个像素数据与对应权重数据相乘后,在基于Crossbar结构的MAC阵列的列方向做累加,以流水的形式生成连续A个点的卷积结果,实现支持多个像素数据与权重数据的并行运算。
在本公开实施例中,从上述卷积运算流程可以看出,要得到大小为Ox×Oy×N的输出图,共需要六层循环,为别为在卷积核宽度Kx,卷积核高度Ky,通道C0,输出通道N,输出图宽度Ox,输出图高度Oy方向的循环。
在本公开实施例中,卷积核的权重数据在存储单元中的存储逻辑与计算流程相符,因此在循环计算过程中,从权重的起始地址开始地址累加1即可。输出图的存储顺序与MAC阵列的输出数据顺序之间也遵循一定规律,因此也可以直接根据硬件固化逻辑确定输出图的存储顺序。在读取输入图像的像素数据时,由于涉及到滑窗取数操作,每层循环的地址跳变值可以设为可配置的原语参数。
本公开实施例中,基于Crossbar的结构的2D MAC阵列,通过展开行列两个维度,能够支持数据的多点并行运算。
本公开实施例中,基于输入图像与卷积核的存储逻辑,可以提升存储效率。
本公开实施例中,采用多个移位寄存器,可以实现动态的数据读取和选通,准确并高效地实现像素数据与对应权重数据的运算。
本公开实施例中,基于2D MAC阵列,可以实现数据的多点并行运算逻辑,以行流水的形式连续运算并行输出多点卷积运算结果。
在本公开实施例中,实现了基于众核架构的神经形态芯片的新型卷积运算逻辑与数据存储模式,提高图像和卷积核之间的卷积运算和数据存储效率。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (7)
1.一种数据处理方法,其特征在于,应用于人工智能处理器的处理核心,所述人工智能处理器包括多个处理核心,每个处理核心包括运算单元,所述运算单元包括乘数累加器MAC阵列,其中,MAC阵列包括A行,卷积核的尺寸为Kx×Ky×C0×N,A、C0、Kx、Ky、N为正整数,所述方法包括:
在第k个卷积核第x行、第y列、第m个通道的运算时,读取第一权重数据,所述第一权重数据包括第k个卷积核的第x行、第y列、第m个通道的权重数据,其中,1≤k≤N,1<m≤C0,1≤x≤Kx,1≤y≤Ky;
读取与所述第一权重数据对应的a个像素数据的第m个通道的第一像素数据;
在m>1时,将所述第一权重数据分别与a个第一像素数据相乘,并将运算结果与m-1个通道的运算结果进行对位累加,得到a个第一卷积运算结果,1≤a≤A;
将m=C0时对位累加得到的a个第一卷积运算结果,确定为a个第二卷积运算结果,
其中,所述第二卷积运算结果为第k个卷积核第x行、第y列的权重数据分别与对应的a个像素数据执行卷积操作得到的a个运算结果;
在m=1时,将所述第一权重数据分别与a个第一像素数据相乘,得到a个第一卷积运算结果;
确定第k个卷积核中每个权重数据与对应的各个像素数据的第二卷积运算结果;
确定每个卷积滑窗中的各个第二卷积运算结果;
根据每个卷积滑窗中的第二卷积运算结果之和,确定目标卷积运算结果中第k通道的像素数据,
其中,所述目标卷积运算结果为输入图像与N个卷积核卷积运算后的输出图像;
所述确定第k个卷积核中每个权重数据与对应的各个像素数据的第二卷积运算结果,包括以下方式中的一种:
分别确定第k个卷积核中每个权重数据与所有对应的像素数据的第二卷积运算结果;
重复执行以下步骤,直至得到第k个卷积核中每个权重数据与对应的各个像素数据的第二卷积运算结果:确定第k个卷积核中,每个权重数据与对应的a个像素数据的a个第二卷积运算结果;
根据各个像素数据在C0个通道的第一像素数据以及像素存储位宽,确定各个像素数据对应的至少一个存储向量;
按照预设顺序,依次存储输入图像每个像素数据对应的至少一个存储向量;
将卷积核个数N作为向量长度展开,以高度为Kx×Ky×C0,宽度为N的存储向量,存储N个卷积核的权重数据,
其中,在高度方向的排列顺序依次为通道C0、宽度Kx以及高度Ky方向。
2.根据权利要求1所述的方法,其特征在于,所述读取与所述第一权重数据对应的a个像素数据的第m个通道的第一像素数据,包括:
在执行包括padding补0策略的卷积运算时,在确定当前卷积运算为非padding区域时,读取与所述第一权重数据对应的a个像素数据的第m个通道的第一像素数据。
3.根据权利要求1所述的方法,其特征在于,所述读取与所述第一权重数据对应的a个像素数据的第m个通道的第一像素数据,包括:
在执行膨胀卷积运算时,根据膨胀卷积系数,确定与第一权重数据对应的a个第一像素数据;
读取所述a个第一像素数据。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
生成所述目标卷积运算结果的第三存储地址;
将所述目标卷积运算结果写入所述第三存储地址。
5.根据权利要求1所述的方法,其特征在于,其中,在N>1时,N个卷积核的权重数据与对应像素数据的卷积操作为并行运算。
6.根据权利要求1所述的方法,其特征在于,其中,在a>1时,所述第一权重数据分别与a个第一像素数据相乘,并将运算结果与m-1个通道的运算结果进行对位累加,得到a个第一卷积运算结果为并行运算。
7.一种人工智能处理器,其特征在于,所述人工智能处理器包括多个处理核心,每个处理核心包括存储模块及运算模块,所述存储模块用于存储图像的像素数据及N个卷积核的权重数据;所述运算模块包括乘数累加器MAC阵列,用于根据所述像素数据及所述权重数据进行运算,
其中,所述处理核心通过权利要求1-6中任一项所述的数据处理方法执行卷积运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110046770.XA CN112712457B (zh) | 2021-01-14 | 2021-01-14 | 数据处理方法以及人工智能处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110046770.XA CN112712457B (zh) | 2021-01-14 | 2021-01-14 | 数据处理方法以及人工智能处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112712457A CN112712457A (zh) | 2021-04-27 |
CN112712457B true CN112712457B (zh) | 2024-05-10 |
Family
ID=75549033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110046770.XA Active CN112712457B (zh) | 2021-01-14 | 2021-01-14 | 数据处理方法以及人工智能处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112712457B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114692073A (zh) * | 2021-05-19 | 2022-07-01 | 神盾股份有限公司 | 基于卷积运算的数据处理方法及电路 |
CN113688983B (zh) * | 2021-08-09 | 2024-07-05 | 上海新氦类脑智能科技有限公司 | 脉冲神经网络中减少权重储存的卷积运算实现方法、电路及终端 |
CN113935887A (zh) * | 2021-08-26 | 2022-01-14 | 锐宸微(上海)科技有限公司 | 图像处理装置与图像处理方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844294A (zh) * | 2016-12-29 | 2017-06-13 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
CN107657581A (zh) * | 2017-09-28 | 2018-02-02 | 中国人民解放军国防科技大学 | 一种卷积神经网络cnn硬件加速器及加速方法 |
CN109886395A (zh) * | 2019-03-06 | 2019-06-14 | 上海熠知电子科技有限公司 | 一种面向多核图像处理卷积神经网络的数据读取方法 |
CN111178519A (zh) * | 2019-12-27 | 2020-05-19 | 华中科技大学 | 卷积神经网络加速引擎、卷积神经网络加速系统及方法 |
WO2020177250A1 (zh) * | 2019-03-06 | 2020-09-10 | 上海熠知电子科技有限公司 | 一种数据读取系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180060149A (ko) * | 2016-11-28 | 2018-06-07 | 삼성전자주식회사 | 컨볼루션 처리 장치 및 방법 |
-
2021
- 2021-01-14 CN CN202110046770.XA patent/CN112712457B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844294A (zh) * | 2016-12-29 | 2017-06-13 | 华为机器有限公司 | 卷积运算芯片和通信设备 |
CN107657581A (zh) * | 2017-09-28 | 2018-02-02 | 中国人民解放军国防科技大学 | 一种卷积神经网络cnn硬件加速器及加速方法 |
CN109886395A (zh) * | 2019-03-06 | 2019-06-14 | 上海熠知电子科技有限公司 | 一种面向多核图像处理卷积神经网络的数据读取方法 |
WO2020177250A1 (zh) * | 2019-03-06 | 2020-09-10 | 上海熠知电子科技有限公司 | 一种数据读取系统和方法 |
CN111178519A (zh) * | 2019-12-27 | 2020-05-19 | 华中科技大学 | 卷积神经网络加速引擎、卷积神经网络加速系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112712457A (zh) | 2021-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112712457B (zh) | 数据处理方法以及人工智能处理器 | |
CN109034373B (zh) | 卷积神经网络的并行处理器及处理方法 | |
CN112395092B (zh) | 数据处理方法及人工智能处理器 | |
US20200202198A1 (en) | Neural network processor | |
CN107742150B (zh) | 一种卷积神经网络的数据处理方法和装置 | |
CN112991142B (zh) | 图像数据的矩阵运算方法、装置、设备及存储介质 | |
CN110989920B (zh) | 能量高效的存储器系统和方法 | |
CN111667051A (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
US11487845B2 (en) | Convolutional operation device with dimensional conversion | |
JP2008165756A (ja) | ローカル・レジスタを有する処理要素のアレイ | |
CN110188869B (zh) | 一种基于卷积神经网络算法的集成电路加速计算的方法及系统 | |
CN113537482B (zh) | 神经网络计算模块、方法和通信设备 | |
CN111611195A (zh) | 可软件定义存算一体芯片及其软件定义方法 | |
CN111310115B (zh) | 数据处理方法、装置及芯片、电子设备、存储介质 | |
CN114565501B (zh) | 用于卷积运算的数据加载方法及其装置 | |
CN113792868A (zh) | 神经网络计算模块、方法和通信设备 | |
JP7132043B2 (ja) | リコンフィギュラブルプロセッサ | |
CN112633470B (zh) | 优化神经网络卷积残差结构的方法、系统、设备及介质 | |
CN1253340A (zh) | 分布式运算体系结构的信号处理 | |
KR102757330B1 (ko) | Mac 회로에서 상이한 커널들을 사용하여 데이터의 세트에 대한 연속적인 mac 연산들의 수행 | |
CN114169514B (zh) | 一种卷积硬件加速方法及卷积硬件加速电路 | |
CN110399976B (zh) | 计算装置和计算方法 | |
JPWO2019077933A1 (ja) | 演算回路および演算方法 | |
CN112183732A (zh) | 卷积神经网络加速方法、装置和计算机设备 | |
JP7278150B2 (ja) | 画像処理装置、撮像装置、画像処理方法 |
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 |