CN113592075A - 卷积运算装置、方法和芯片 - Google Patents
卷积运算装置、方法和芯片 Download PDFInfo
- Publication number
- CN113592075A CN113592075A CN202110855330.9A CN202110855330A CN113592075A CN 113592075 A CN113592075 A CN 113592075A CN 202110855330 A CN202110855330 A CN 202110855330A CN 113592075 A CN113592075 A CN 113592075A
- Authority
- CN
- China
- Prior art keywords
- convolution
- input feature
- input
- group
- 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
- 238000000034 method Methods 0.000 title claims abstract description 34
- 238000004364 calculation method Methods 0.000 claims abstract description 119
- 238000007781 pre-processing Methods 0.000 claims abstract description 73
- 238000012545 processing Methods 0.000 claims abstract description 18
- 238000012805 post-processing Methods 0.000 claims abstract description 16
- 238000009825 accumulation Methods 0.000 claims abstract description 6
- 239000000872 buffer Substances 0.000 claims description 106
- 238000013527 convolutional neural network Methods 0.000 claims description 9
- 239000012634 fragment Substances 0.000 claims description 6
- 230000001965 increasing effect Effects 0.000 abstract description 4
- 230000008569 process Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 13
- 101100524516 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) RFA2 gene Proteins 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 101100059544 Arabidopsis thaliana CDC5 gene Proteins 0.000 description 1
- 101150115300 MAC1 gene Proteins 0.000 description 1
- ATJFFYVFTNAWJD-UHFFFAOYSA-N Tin Chemical compound [Sn] ATJFFYVFTNAWJD-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Images
Classifications
-
- 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本申请涉及一种卷积运算装置、方法和芯片,其中,卷积运算装置设置卷积数据预处理单元、卷积计算单元及卷积结果缓存单元,通过卷积数据预处理单元将输入特征组和与每个输入特征组对应的卷积核组交替输入卷积计算单元,通过卷积计算单元的乘累加单元在每个预设的时钟周期内,利用预设的乘加器阵列对一个输入特征组和对应的卷积核组进行卷积计算,生成临时输出特征,并通过卷积计算单元的处理单元基于临时输出特征进行生成输出特征的后处理,再通过卷积结果缓存单元存储求和后得到的缓存输出特征。通过本申请,在不增加卷积结果缓存单元芯片面积的前提下,解决了完成卷积运算装置的MAC阵列利用率不高的问题。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及卷积运算装置、方法和芯片。
背景技术
由于1*1卷积在“跨通道信息交互”、“通过加入非线性以提升网络的表达能力”、“进行卷积核通道数的降维和升维以减少网络参数”等方面表现出色,在卷积神经网络(Convolutional Neural Network,简称为CNN)设计中,1*1卷积在CNN中应用的越来越多。
相关技术中,采用常规卷积运算方法实现1*1卷积运算时,卷积的高效性依赖于乘加器(Multiple Accumulator,简称为MAC)阵列计算的连续性,而MAC阵列计算的连续性又与保存卷积中间结果数据的缓存装置紧密相关,也就是卷积中间结果数据的读取或写入,要匹配MAC阵列计算的连续;在相关技术中,用于神经网络计算的专用芯片采用单口随机存取存储器(Random Access Memory,简称为RAM)实现卷积中间结果数据的读取或写入,由于单口RAM只有一组数据线与地址线,不能同时进行数据的读写;1*1卷积的每个卷积核对应1个权重系数,在一个时钟周期内就能完成一次卷积核的MAC阵列计算,若每个时钟周期内都进行1*1卷积核的MAC阵列计算,则需要每个时钟都能对卷积中间结果数据进行读和写,这与单口RAM不能同时进行数据的读写冲突,相关技术中,或通过采用降低1*1卷积核MAC阵列计算频度的方式来实现至少间隔一个时钟周期才完成一次卷积核的MAC阵列计算,或通过采用翻倍单口RAM个数的方式来实现一个时钟周期内完成一次卷积核的MAC阵列计算。但上述两种方式中,完成卷积运算的芯片的MAC阵列利用率不高、缓存卷积中间结果数据的缓存装置占用芯片面积过大。
针对相关技术中完成卷积运算的芯片的MAC阵列利用率不高、缓存卷积中间结果数据的缓存装置占用芯片面积过大的问题,目前还没有提出有效的解决方案。
发明内容
在本实施例中提供了一种卷积运算装置、方法和芯片,以解决相关技术中完成卷积运算的芯片的MAC阵列利用率不高、缓存卷积中间结果数据的缓存装置占用芯片面积过大的问题。
第一方面,在本实施例中提供了一种卷积运算装置,应用于芯片,所述卷积运算装置包括卷积数据预处理单元、卷积计算单元及卷积结果缓存单元,其中,所述卷积数据预处理单元,用于将至少两个输入特征组和与每个所述输入特征组对应的卷积核组交替输入所述卷积计算单元,其中,所述输入特征组为待运算的全部输入特征进行分割得到,每个所述输入特征包括多个输入特征值;所述卷积计算单元,包括乘累加单元和处理单元,其中,所述乘累加单元用于在每个预设的时钟周期内,利用预设的乘加器阵列对一个所述输入特征组和与所述输入特征组对应的所述卷积核组进行卷积计算,生成临时输出特征,所述处理单元用于基于所述临时输出特征进行生成输出特征的后处理,其中,所述后处理至少包括以下其中一项:读取包括前一时钟周期内对应生成的临时输出特征的第一输出特征、暂存包括前一时钟周期内对应生成的临时输出特征的第二输出特征、读取当前时钟周期之前缓存于所述卷积结果缓存单元的历史输出特征、暂存包括前一时钟周期内读取的所述历史输出特征的第三输出特征、对所述第一输出特征和在前一时钟周期内暂存的所述第二输出特征与所述第三输出特征进行求和、将前一时钟周期内求和后得到的缓存输出特征写入所述卷积结果缓存单元;所述卷积结果缓存单元,用于存储求和后得到的缓存输出特征。
在其中的一些实施例中,所述输入特征组包括多个第一输入特征分片组,所述乘累加单元在相邻两个时钟周期内,分别读取对应的两个所述输入特征组的所述第一输入特征分片组,并在对应的时钟周期内,利用所述乘加器阵列对所述第一输入特征分片组和与对应的所述输入特征组所对应的所述卷积核组进行卷积计算,生成对应的临时输出特征,直至对至少两个所述输入特征组所有的所述第一输入特征分片组完成卷积计算,其中,所述第一输入特征分片组的第一输入特征分片的个数与对应的所述输入特征组的输入特征的个数相同,所述第一输入特征分片包括第一数据量的输入特征值,所述第一数据量根据所述乘加器阵列中乘加器的数目和所述输入特征组中所述输入特征的个数确定。
在其中的一些实施例中,在当前时钟周期内的所述乘累加单元完成卷积计算后,所述处理单元读取所述历史输出特征以及对所述第一输出特征和在前一时钟周期内暂存的所述第二输出特征与所述第三输出特征进行求和,得到与当前时钟周期对应的所述缓存输出特征。
在其中的一些实施例中,所述卷积运算装置还包括输入特征组缓存单元和卷积核缓存单元,所述输入特征组缓存单元和所述卷积核缓存单元分别与所述卷积数据预处理单元电连接,其中,所述输入特征组缓存单元,用于将至少两个所述输入特征组所对应的第二输入特征分片组,交替输入至所述卷积数据预处理单元,直至所述输入特征组的全部第二输入特征分片组输入至所述卷积数据预处理单元,其中,所述第二输入特征分片组的第二输入特征分片的个数与对应的所述输入特征组的输入特征的个数相同,所述第二输入特征分片包括第二数据量的输入特征值,所述第二数据量根据所述乘加器阵列中乘加器的数目和所述输入特征组中所述输入特征的个数确定;所述卷积核缓存单元,用于在顺序排列的多个卷积核中按组读取多个第一卷积核组,并将每个第一卷积核组输入至所述卷积数据预处理单元,其中,每个所述第一卷积核组中所述卷积核的个数与每个所述输入特征组的输入特征的个数相同;所述卷积数据预处理单元,用于交替读取一个所述第一卷积核组,将一个所述第一卷积核组配置为一个所述输入特征组的多个所述第二输入特征分片组所对应的卷积核,以及将配置好的一个所述第二输入特征分片组和对应的一个所述第一卷积核组输入所述卷积计算单元。
在其中的一些实施例中,所述输入特征组缓存单元包括并行设置的两个缓存单元,其中,两个所述缓存单元其中一个在从待运算的全部输入特征中读入第三输入特征分片组时,另一个所述缓存单元将已读入的所述第三输入特征分片组输入所述卷积数据预处理单元,直至分批次将待运算的全部输入特征完全遍历,其中,所述第三输入特征分片组的第三输入特征分片的个数与对应的所述输入特征组的输入特征的个数相同,所述第三输入特征分片包括第三数据量的输入特征值,所述第三数据量根据每个所述缓存单元所对应的缓存容量和完成一个输出特征组运算所需的所述输入特征的个数确定。
在其中的一些实施例中,两个所述缓存单元其中一个读入每个所述第三输入特征分片的第M个输入特征值、另一个所述缓存单元将已读入的所述第三输入特征分片组输入至所述卷积数据预处理单元时,另一个所述缓存单元自第M+1个输入特征值读入对应的所述第三输入特征分片组,其中,所述第M个输入特征值对应为每个所述第三输入特征分片中最末的一个输入特征值。
第二个方面,在本实施例中提供了一种用于卷积神经网络的卷积计算方法,包括上述第一个方面所述的卷积运算装置,其特征在于,所述卷积计算方法包括:所述卷积数据预处理单元获取至少两个输入特征组和顺序排列的多个卷积核组,其中,所述输入特征组为待运算的全部输入特征进行分割得到;所述卷积数据预处理单元将多个所述卷积核组依次对应的所述输入特征组匹配,得到卷积计算参数;
所述乘累加单元在每个预设的时钟周期内,利用预设的乘加器阵列对接收到的一个所述输入特征组和一个对应的卷积核组进行卷积计算,生成临时输出特征;
所述处理单元基于所述临时输出特征进行生成输出特征的后处理,其中,所述后处理至少包括以下其中一项:读取包括前一时钟周期内对应生成的临时输出特征的第一输出特征、暂存包括前一时钟周期内对应生成的临时输出特征的第二输出特征、读取当前时钟周期之前缓存于所述卷积结果缓存单元的历史输出特征、暂存包括前一时钟周期内读取的所述历史输出特征的第三输出特征、对所述第一输出特征和在前一时钟周期内暂存的所述第二输出特征与所述第三输出特征进行求和、将前一时钟周期内求和后得到的缓存输出特征写入所述卷积结果缓存单元。
在其中的一些实施例中,所述卷积运算装置还包括输入特征组缓存单元和卷积核缓存单元,所述输入特征组缓存单元和所述卷积核缓存单元分别与所述卷积数据预处理单元电连接,所述卷积计算方法还包括:
所述输入特征组缓存单元将至少两个所述输入特征组所对应的第四输入特征分片组,交替输入至所述卷积数据预处理单元,直至所述输入特征组的全部第四输入特征分片组输入至所述卷积数据预处理单元,其中,所述第四输入特征分片组的第四输入特征分片的个数与对应的所述输入特征组的输入特征的个数相同,所述第四输入特征分片包括第四数据量的输入特征值,所述第四数据量根据所述乘加器阵列中乘加器的数目和所述输入特征组中所述输入特征的个数确定;
所述卷积核缓存单元在顺序排列的多个卷积核中按组读取多个第二卷积核组,并将每个第二卷积核组输入至所述卷积数据预处理单元,其中,每个所述第二卷积核组中所述卷积核的个数与每个所述输入特征组的输入特征的个数相同;
所述卷积数据预处理单元交替读取一个所述第二卷积核组,将一个所述第二卷积核组配置为一个所述输入特征组的多个所述第四输入特征分片组所对应的卷积核,以及将配置好的一个所述第四输入特征分片组和对应的一个所述第二卷积核组输入所述卷积计算单元。
在其中一些实施例中,所述输入特征组缓存单元包括并行设置的第一缓存单元和第二缓存单元,所述卷积计算方法还包括:
所述第一缓存单元在读入所述第四输入特征分片组时,所述第二缓存单元将已读入的所述第四输入特征分片组输入所述卷积数据预处理单元,直至分批次将待运算的全部输入特征完全遍历。
第三个方面,在本实施例中提供了一种用于卷积神经网络的卷积计算的芯片,所述芯片包括卷积运算装置,其中,所述卷积运算装置包括上述第一个方面所述的卷积运算装置。
与相关技术相比,在本实施例中提供的卷积运算装置、方法和芯片,该卷积运算装置设置卷积数据预处理单元、卷积计算单元及卷积结果缓存单元,通过卷积数据预处理单元将至少两个输入特征组和与每个输入特征组对应的卷积核组交替输入卷积计算单元,通过卷积计算单元的乘累加单元在每个预设的时钟周期内,利用预设的乘加器阵列对一个所述输入特征组和与所述输入特征组对应的所述卷积核组进行卷积计算,生成临时输出特征,并通过卷积计算单元的处理单元基于所述临时输出特征进行生成输出特征的后处理,再通过卷积结果缓存单元存储求和后得到的缓存输出特征,解决了完成卷积运算的芯片的MAC阵列利用率不高、缓存卷积中间结果数据的缓存装置占用芯片面积过大的问题,实现了在不增加缓存卷积中间结果数据的缓存装置对芯片的面积的占用的情况下,提高对应芯片的MAC阵列的利用率,减少对芯片面积的浪费。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是相关技术的卷积运算的示意图。
图2是相关技术中输入特征组与卷积核之间的MAC阵列计算的示意图。
图3是根据本申请实施例的卷积运算装置的结构框图。
图4是根据本申请实施例的卷积核在外部DDR中的存储示意图。
图5是根据本申请优选实施例的卷积运算装置的结构示意图。
图6是根据本申请优选实施例的输入特征组的存储格式示意图。
图7是根据本申请优选实施例的输入特征的输入特征值排列示意图。
图8是根据本申请优选实施例的卷积计算单元进行卷积计算的流水节拍示意图。
图9是根据本申请实施例的卷积运算方法的流程图。
具体实施方式
为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。
除另作定义外,本申请所涉及的技术术语或者科学术语应具有本申请所属技术领域具备一般技能的人所理解的一般含义。在本申请中的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本申请中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。在本申请中所涉及的“连接”、“相连”、“耦接”等类似的词语并不限定于物理的或机械连接,而可以包括电气连接,无论是直接连接还是间接连接。在本申请中所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本申请中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
本申请中描述的各种技术可以用于各种神经网络中的卷积运算,当然,本申请中描述的各种技术适用范围包括但不限于1*1卷积的卷积运算。
在对本申请的实施例进行描述和说明之前,先对本申请所对应的相关技术进行说明如下:
图1是相关技术的卷积运算的示意图。在图1中,输入特征图(Tin)个数为N;输出特征图(Tout)个数为M;Wx,y表示一个输入特征图(Tin_x)与一个输出特征图(Tout_y)所对应的卷积核,该卷积核会包含一个或多个权重系数(例如,1*1卷积,它的卷积核均为1*1,即一个卷积核包含1个权重系数)。参考图1,常规的卷积计算过程为:
步骤1、取Tin_0中的输入特征的特征值与卷积核W0,0进行MAC阵列计算,并将卷积中间结果数据保存在缓存装置中,此时,完成Tout_0中与Tin_0相关的所有运算。
需要说明的是,由于MAC阵列计算单元中的MAC数目一般小于输入特征的数据量,输入特征的特征值需要分批次与卷积核进行运算。
步骤2、取Tin_0中的输入特征的特征值与卷积核W0,1进行MAC阵列计算,并将卷积中间结果数据保存到缓存装置中,此时,完成Tout_1中与Tin_0相关的所有运算。
步骤3、依次进行类上述步骤1或步骤2过程,直到完成Tout_m-1中与Tin_0相关的所有运算。
步骤4、取Tin_1中的输入特征的特征值与卷积核W1,0进行MAC阵列计算,并读取之前保存在缓存装置中的卷积中间结果数据(Tin_0与W0,0运算的结果),两者累加后,再写回到缓存装置中的原位置进行缓存,此时,完成Tout_0中与Tin_1相关的所有运算,并累加上了之前Tin_0参与运算的结果。
步骤5、取Tin_1中的输入特征的特征值与卷积核W1,1进行MAC阵列计算,并读取之前保存在缓存装置中的卷积中间结果数据(Tin_0与W0,1运算的结果),两者累加后,再写回到缓存装置中的原位置进行缓存;此时,完成Tout_1中与Tin_1相关的所有计算,并累加上了之前Tin_0参与运算的结果。
步骤6、依次进行类上述步骤4或步骤5的过程,直到完成Tout_m-1中与Tin_1相关的所有运算。
步骤7、依次进行类上述步骤4到步骤6的过程,直到完成所有输入特征组成的输入特征组(到Tin_n-1为止)的运算,获得最终的卷积计算结果(参考图1中的输出特征Tout_0~Tout_m-1)。
图2是相关技术中输入特征组与卷积核之间的MAC阵列计算的示意图,参考图2,以下对相关技术中输入特征的特征值与卷积核之间的MAC阵列计算方式的常规实现过程进行介绍如下:
以一个输入特征与一个3*3卷积核计算出最前面64个输出特征数据为例进行说明,并假设:卷积跨度为1、不需要扩边,MAC阵列中MAC数为64,3*3MAC阵列计算过程可以用9个时钟(T0-T8)来完成:
T0:取输入特征中的(P0,0,P0,1,…,P0,62,P0,63)这64个特征值,同时与3*3卷积核中的C0权重系数进行乘法操作,生成乘法结果数列(M0,M1,…,M62,M63),并将其保持到MAC结果缓存数列(S0,S1,…,S62,S63)。
T1:取输入特征中的(P0,1,P0,2,…,P0,63,P0,64)这64个特征值,同时与3*3卷积核中的C1权重系数进行乘法操作,生成新的乘法结果数列(M0,M1,…,M62,M63),并将生成的新乘法结果数列与之前保存的MAC结果缓存数列对应点进行相加,并将此加法数列结果更新到MAC结果缓存数列中。
T2:取输入特征中的(P0,2,P0,3,…,P0,64,P0,65)这64个特征值,同时与3*3卷积核中的C2权重系数进行乘法操作,生成新的乘法结果数列(M0,M1,…,M62,M63),并将生成的新乘法结果数列与之前保存的MAC结果缓存数列对应点进行相加,并将此加法数列结果更新到MAC结果缓存数列中。
T3:取输入特征中的(P1,0,P1,1,…,P1,62,P1,63)这64个数据同时与3*3卷积核中的C3权重值进行乘法操作,生成新的乘法结果数列(M0,M1,…,M62,M63),并将生成的新乘法结果数列与之前保存的MAC结果缓存数列对应点进行相加,并将此加法数列结果更新到MAC结果缓存数列中。
T4:取输入特征中的(P1,1,P1,2,…,P1,63,P1,64)这64个特征值,同时与3*3卷积核中的C4权重值进行乘法操作,生成新的乘法结果数列(M0,M1,…,M62,M63),并将生成的新乘法结果数列与之前保存的MAC结果缓存数列对应点进行相加,并将此加法数列结果更新到MAC结果缓存数列中。
T5:取输入特征中的(P1,2,P1,3,…,P1,64,P1,65)这64个特征值,同时与3*3卷积核中的C5权重值进行乘法操作,生成新的乘法结果数列(M0,M1,…,M62,M63),并将生成的新乘法结果数列与之前保存的MAC结果缓存数列对应点进行相加,并将此加法数列结果更新到MAC结果缓存数列中。
T6:取输入特征中的(P2,0,P2,1,…,P2,62,P1,63)这64个特征值,同时与3*3卷积核中的C6权重值进行乘法操作,生成新的乘法结果数列(M0,M1,…,M62,M63),并将生成的新乘法结果数列与之前保存的MAC结果缓存数列对应点进行相加,并将此加法数列结果更新到MAC结果缓存数列中;
T7:取输入特征中的(P2,1,P2,2,…,P2,63,P2,64)这64个数据,同时与3*3卷积核中的C7权重值进行乘法操作,生成新的乘法结果数列(M0,M1,…,M62,M63),并将生成的新乘法结果数列与之前保存的MAC结果缓存数列对应点进行相加,并将此加法数列结果更新到MAC结果缓存数列中。
T8:取输入特征中的(P2,2,P2,3,…,P2,64,P2,65)这64个数据,同时与3*3卷积核中的C8权重值进行乘法操作,生成新的乘法结果数列(M0,M1,…,M62,M63),并将生成的新乘法结果数列与之前保存的MAC结果缓存数列对应点进行相加,并将此加法数列结果更新到MAC结果缓存数列中,此时,MAC结果缓存数列中的(S0,S1,…,S62,S63)数列为所求的64个输出特征数据结果。
以下对本申请的实施例进行描述和说明。
在本实施例中提供了一种卷积运算装置,该卷积运算装置应用于芯片,图3是根据本申请实施例的卷积运算装置的结构框图,如图3所示,该卷积运算装置包括:卷积数据预处理单元31、卷积计算单元32及卷积结果缓存单元33,其中,
卷积数据预处理单元31,用于将至少两个输入特征组和与每个输入特征组对应的卷积核组交替输入卷积计算单元32,其中,输入特征组为待运算的全部输入特征进行分割得到,每个输入特征包括多个输入特征值。
在本实施例中,每个输入特征组包括scn个输入特征,且该scn个输入特征是通过本实施例中的卷积运算装置从外部双倍速率同步动态随机存储器(Double Data Rate,简称为DDR)中读取输入特征值,然后以输入特征的形式缓存于本实施例中的卷积运算装置内部,而外部DDR中的输入特征值是按顺序排列的,输入特征值之间无空闲。
在本实施例中,每个卷积核组包括与每个输入特征组的输入特征个数同样个数的卷积核,且每个卷积核组中的卷积核是通过本实施例中的卷积运算装置从外部DDR中读取的,并以卷积核组的形式缓存在本实施例中的卷积运算装置内部,为匹配输入特征值读取顺序而完成对应的卷积运算,本实施例中所对应的卷积核组存储形式参考图4所对应的形式。
需要说明的是,在图4中,Wx,y表示一个卷积核,scn表示一个输入特征组中输入特征的个数,m表示目标神经网络进行卷积计算的输出特征的个数;同时,在本实施例,卷积计算是按两个输入特征组,共2scn个输入特征为单位进行,基于卷积计算过程中的连续性操作,卷积运算装置内部同时缓存4scn个卷积核(对应为一个权重系数),也就是满足至少两个输入特征组参与卷积计算。
需要进一步说明的是,卷积数据预处理单元31在读取至少两个输入特征组时,是交替从卷积运算装置内部的输入特征组缓存单元34的两个缓存单元中读取输入特征的,每个缓存单元缓存的输入特征值的数据量为2scn个,也就是4scn个输入特征值,为满足卷积数据预处理单元31能读取至少两个输入特征组和与每个输入特征组对应的卷积核组(至少两个卷积核组),卷积运算装置内部的卷积核缓存单元35则对应缓存4scn个卷积核。
在本实施例中,一个输入特征组和对应的一个卷积核组是在前后两个时钟周期内按交替的方式输入卷积计算单元32的,也就是当前时钟周期输入的输入特征组为A输入特征组、卷积核组为A,下个时钟周期输入的输入特征组为B、卷积核组为B,需要说明的是,在计算不同输出特征时,同一输入特征组对应的卷积核组是不同的,例如,在计算第一个输出特征时,输入特征组基于卷积核组C进行MAC阵列计算,在计算第二个输出特征时,输入特征组基于卷积核组D进行MAC阵列计算。
卷积计算单元32,包括乘累加单元321和处理单元322,其中,
乘累加单元321,用于在每个预设的时钟周期内,利用预设的乘加器阵列对一个输入特征组和与输入特征组对应的卷积核组进行卷积计算,生成临时输出特征。
在实施例中,利用预设的乘加器阵列对一个输入特征组和卷积核组进行卷积计算时,会取一组用于生成临时输出特征的临时输入特征组,该临时输入特征组的每个输入特征具有原始输入的输入特征组中对应的输入特征的部分输入特征值,该部分输入特征值所对应的数据量(设为N1)为参与卷积计算的乘加器阵列中的乘加器的个数(设为M1)除以输入特征组的输入特征的个数(设为Z1),也就是N1=M1/Z1;在本实施例中,在相邻两个时钟周期内,若当前时钟周期内,对由一个输入特征组的多个输入特征的N1个输入特征值组成的临时输入特征组进行卷积计算后,会在下一个时钟周期内对由下一个输入特征组(至少两个输入特征组中的另一个)的多个输入特征的N1个输入特征值组成的临时输入特征组进行卷积计算,直至至少两个输入特征组的全部输入特征值均完成相对一个输出特征的临时输出特征的计算,以及完成至少两个输入特征组的全部输入特征值完成相对多个输出特征的临时输出特征的计算,当然,在一个时钟周期内,在完成一个临时输出特征计算后,会进行对应的生成输出特征的后处理,在下一个时钟周期内,又执行按先进行生成临时输出特征的卷积计算,再进行生成输出特征的后处理的节拍进行对应的卷积运算,重复上述节拍,直至完成对应的卷积运算。
在本实施例中,乘累加单元321利用同一个乘加器阵列依次对输入特征组和输入特征组对应的卷积核进行卷积计算。
处理单元322,用于基于临时输出特征进行生成输出特征的后处理,其中,后处理至少包括以下其中一项:读取包括前一时钟周期内对应生成的临时输出特征的第一输出特征、暂存包括前一时钟周期内对应生成的临时输出特征的第二输出特征、读取当前时钟周期之前缓存于所述卷积结果缓存单元的历史输出特征、暂存包括前一时钟周期内读取的所述历史输出特征的第三输出特征、对所述第一输出特征和在前一时钟周期内暂存的所述第二输出特征与所述第三输出特征进行求和、将前一时钟周期内求和后得到的缓存输出特征写入所述卷积结果缓存单元。
在本实施例中,处理单元322进行的后处理是在乘累加单元321完成对应的卷积计算后进行的,每个不同的时钟周期内,处理单元322在乘累加单元321完成对应的卷积计算后,进行的后处理不尽相同,例如:在某个时钟周期内,处理单元322依次进行暂存包括前一时钟周期内对应生成的临时输出特征的第二输出特征、暂存包括前一时钟周期内读取的历史输出特征的第三输出特征;在另一个时钟周期内,处理单元322依次执行分别读取历史输出特征、对第一输出特征和在前一时钟周期内暂存的第二输出特征和第三输出特征求和。
在本实施例中,进行求和运算的三个输出特征包括第一输出特征、第二输出特征和第三输出特征,其中,第一输出特征是在当前时钟周期内获取的前一时钟周期内生成的临时输出特征;第二输出特征是在当前时钟周期内获取与前一时钟周期所对应的第一输出特征,也就是第二输出特征是与当前时钟周期间隔两个时钟周期间隔的一个时钟周期内对应生成的临时输出特征;第三输出特征则是在当前时钟周期内获取的前一时钟周期内从卷积结果缓存单元33读取的历史输出特征,也就是在当前时钟周期之前,已完成卷积计算并缓存于卷积结果缓存单元33的输出特征,通过将该缓存于卷积结果缓存单元33的输出特征加入相邻两个时钟周期内生成的临时输出特征,从而得到对应的卷积结果;在本实施例中,在进行输出特征求和的某个时钟周期内,生成临时输出特征会作为该某个时钟周期的下一个时钟周期内的第一输出特征,该某个时钟周期内生成的临时输出特征和读取的历史输出特征不参与生成缓存输出特征的计算;同时,该某个时钟周期,生成的缓存输出特征会在下一个时钟周期内完成写入。
在本实施例中,通过使卷积计算单元32在每个时钟周期内都实施采用同一套MAC阵列进行生成临时输出特征的计算(由乘累加单元321完成),同时,又通过将历史输出特征从卷积结果缓存单元33中读取或将缓存输出特征写入卷积结果缓存单元33安排在多个连续的时钟周期内进行,例如:将原本在当前时钟周期内需要进行的读取缓存输出特征安排在前一时钟周期内进行,而只执行当前时钟周期内需要进行的写入缓存输出特征,在同一个时钟周期内不同时进行对卷积结果缓存单元33进行读取数据和写入数据,避免了临时输出特征的读/写冲突,又确保了MAC阵列的利用率。
卷积结果缓存单元33,用于存储求和后得到的缓存输出特征。
通过本实施例的卷积运算装置,解决了完成卷积运算的芯片的MAC阵列利用率不高、缓存卷积中间结果数据的缓存装置占用芯片面积过大的问题,实现了在不增加缓存卷积中间结果数据的缓存装置对芯片的面积的占用的情况下,提高对应芯片的MAC阵列的利用率,减少对芯片面积的浪费。
在其中一些实施例中,每个输入特征组包括多个第一输入特征分片组,乘累加单元321在相邻两个时钟周期内,分别读取对应的两个输入特征组的第一输入特征分片组,并在对应的时钟周期内,利用乘加器阵列对第一输入特征分片组和与对应的输入特征组所对应的卷积核组进行卷积计算,生成对应的临时输出特征,直至对至少两个输入特征组所有的第一输入特征分片组完成卷积计算,其中,第一输入特征分片组的第一输入特征分片的个数与对应的输入特征组的输入特征的个数相同,第一输入特征分片包括第一数据量的输入特征值,第一数据量根据乘加器阵列中乘加器的数目和输入特征组中的输入特征的个数确定。
在本实施例中,乘累加单元321在对应的时钟周期内,会取一组用于生成临时输出特征的一个第一输入特征分片组,该第一输入特征分片组的每个输入特征分片具有原始输入的输入特征组中对应的输入特征的第一数据量的输入特征值,该第一数据量所对应的数据量(设为N2)为参与卷积计算的乘加器阵列中的乘加器的个数(设为M2)除以输入特征组的输入特征的个数(设为Z2),也就是N2=M2/Z2;在本实施例中,每个输入特征所对应的输入特征值的个数为ε*N2,其中,ε为正整数。
在其中一些实施例中,在当前时钟周期内的乘累加单元321完成卷积计算后,处理单元322读取历史输出特征以及对第一输出特征和在前一时钟周期内暂存的第二输出特征与第三输出特征进行求和,得到与当前时钟周期对应的缓存输出特征。
在本实施例中,在进行输出特征求和的某个时钟周期内,生成临时输出特征会作为该某个时钟周期的下一个时钟周期内的第一输出特征,该某个时钟周期内生成的临时输出特征和读取的历史输出特征不参与生成缓存输出特征的计算;同时,该某个时钟周期,生成的缓存输出特征会在下一个时钟周期内完成写入卷积结果缓存单元33。
图5是根据本申请优选实施例的卷积运算装置的结构示意图。参考图5,在其中一些实施例中,卷积运算装置还包括输入特征组缓存单元34和卷积核缓存单元35,输入特征组缓存单元34和卷积核缓存单元35分别与卷积数据预处理单元31电连接,其中,
输入特征组缓存单元34,用于将至少两个输入特征组所对应的第二输入特征分片组,交替输入至卷积数据预处理单元31,直至至少两个输入特征组的全部第二输入特征分片组输入至卷积数据预处理单元31,其中,第二输入特征分片组的第二输入特征分片的个数与对应的输入特征组的输入特征的个数相同,第二输入特征分片包括第二数据量的输入特征值,第二数据量根据乘加器阵列中乘加器的数目和输入特征组中输入特征的个数确定。
在本实施例中,输入特征组缓存单元34缓存输入特征对应的输入特征值时,会按输入特征分片组的形式进行缓存,也就是依次将多个第二输入特征分片组进行缓存,直至缓存输入特征组的所有输入特征的输入特征值,其中,第二输入特征分片组的每个第二输入特征分片具有原始输入的输入特征组中对应的输入特征的第二数据量的输入特征值,该第二数据量所对应的数据量(设为N3)为参与卷积计算的乘加器阵列中的乘加器的个数(设为M3)除以输入特征组的输入特征的个数(设为Z3),也就是N3=M3/Z3;在本实施例中,每个输入特征所对应的输入特征值的个数为α*N3,其中,α为正整数。
卷积核缓存单元35,用于在顺序排列的多个卷积核中按组读取多个第一卷积核组,并将每个第一卷积核组输入至卷积数据预处理单元31,其中,每个第一卷积核组中卷积核的个数与每个输入特征组的输入特征的个数相同。
在本实施例中,每个第一卷积核组包括与每个输入特征组的输入特征个数同样个数的卷积核,且每个第一卷积核组中的卷积核是通过本实施例中的卷积核缓存单元从外部DDR中读取的按顺序排列的卷积核,并以卷积核组的形式缓存。
卷积数据预处理单元31,用于交替读取一个第一卷积核组,将一个第一卷积核组配置为一个输入特征组的多个第二输入特征分片组所对应的卷积核,以及将配置好的一个第二输入特征分片组和对应的一个第一卷积核组输入卷积计算单元32。
需要说明的是,在本实施例中,将输入特征组缓存单元34描述为:输入特征组缓存单元34将第二输入特征分片组交替输入至卷积数据预处理单元31,以及将卷积核缓存单元35描述为:卷积核缓存单元35将每个第一卷积核组输入至卷积数据预处理单元31,但在卷积运算装置内部进行卷积运算时,则是由卷积数据预处理单元31主动读取第二输入特征分片组及对应的第一卷积核组。
在其中一些实施例中,输入特征组缓存单元34包括并行设置的两个缓存单元,其中,两个缓存单元其中一个在从待运算的全部输入特征中读入第三输入特征分片组时,另一个缓存单元将已读入的第三输入特征分片组输入卷积数据预处理单元32,直至分批次将待运算的全部输入特征完全遍历,其中,第三输入特征分片组的第三输入特征分片的个数与对应的输入特征组的输入特征的个数相同,第三输入特征分片包括第三数据量的输入特征值,第三数据量根据每个缓存单元所对应的缓存容量和完成一个输出特征组运算所需的输入特征的个数确定。
在其中一些实施例中,两个缓存单元其中一个读入每个第三输入特征分片的第M个输入特征值、另一个缓存单元将已读入的第三输入特征分片组输入至卷积数据预处理单元31时,另一个缓存单元自第M+1个输入特征值读入对应的第三输入特征分片组,其中,第M个输入特征值对应为每个第三输入特征分片中最末的一个输入特征值。
下面通过优选实施例对本实施例进行描述和说明。
对于本申请中的卷积结果缓存单元33的说明如下:
本实施例中的卷积结果缓存单元33包括用于缓存临时输出特征的单口RAM,在其中一些可选实施例中,卷积结果缓存单元33包括一个RAM或一组RAM。
在本实施例中,卷积结果缓存单元33的单口RAM的总容量(ram_cap)大小由需要缓存的最大输入特征的数量(max_pic_num)、需要支持的最大输入特征分辨率大小(max_pic_width、max_pic_height)以及单个临时输出特征的位宽(conv_sum_bitwidth)所决定,具体地,按如下公式获取单口RAM的总容量:
ram_cap=max_pic_num*max_pic_width*max_pic_height*conv_sum_bitwidth。
在本实施例中,获取单口RAM总容量后,则可对RAM进行选型,由于RAM总容量为RAM的深度与RAM的宽度的乘积,确定RAM选型,则可选定RAM的深度和宽度;在本实施例中,对临时输出特征的读取和写入是按整数个临时输出特征为单位来进行的,因此,选定的单口RAM的RAM宽度必须为单个临时输出特征的位宽的整数倍。
在本实施例中,在选定单口RAM后,单口RAM的数据宽度(设为W1)和深度对应的确定,此时,可以确定卷积结果缓存单元33读取或写入的临时输出特征的个数(设为S1),其中,S1=W1/W0,W0表示单个临时输出特征的位宽,同时,可以根据读取或写入的临时输出特征的个数S1确定单次卷积核MAC阵列计算所需参与的输入特征的数量(设为SCN),其中,SCN=MAC1/S1,MAC1表示MAC阵列中MAC的个数。
对于本申请中的输入特征组缓存单元34的说明如下:
本实施例中的输入特征组缓存单元34用于从外部缓存DDR中读取输入特征值,并将输入特征值暂存。输入特征值在外部缓存DDR中是按顺序排列,且输入特征值之间无空闲,输入特征值按图6所示的存储格式进行存储。在图6中,N表示输入特征的个数,pic_w表示输入特征的数据宽度,pic_h表示输入特征的数据高度,Tin_0表示输入特征组中的第一个输入特征,Tin_1表示输入特征组中的第二输入特征,Tin_n-1表示输入特征组中的第N个输入特征;在本实施例中,单个的输入特征中输入特征值排列参考图7所示。
在本实施例中,输入特征组缓存单元34根据其对应的缓存容量大小及单次MAC计算所需参与的输入特征数量SCN进行分批次读取输入特征值。
在本实施例中,输入特征组缓存单元34包括两个缓存单元,在本实施例中,每个缓存单元的缓存容量均为K,两个缓存单元为设定为IN_BUF0和IN_BUF1,设定单次卷积核MAC阵列计算所需参与的输入特征数量SCN为scn,则整个1*1卷积运算过程中,输入特征组缓存单元34读取输入特征值的步骤如下:
步骤1、从输入特征Tin_0开始,读入2scn个输入特征(Tin_0~T2*in_scn-1)的输入特征值,其中,读取的每个输入特征的输入特征值的数据量为:K/(2scn)个。
需要说明的是,在第一次读取中,读取的是每个输入特征的全部输入特征值最前面的K/(2scn)个输入特征值,存入IN_BUF0中。
步骤2、继续读入2scn个输入特征(Tin_0~T2*in_scn-1)中的输入特征值(读取下一个K/(2scn)个输入特征值),存入IN_BUF1中;在此过程中,IN_BUF0中输入特征值可以由卷积数据预处理单元31读取。
步骤3、如果IN_BUF0中的输入特征值被卷积数据预处理单元31读取完,则可继续读入(Tin_0~T2*in_scn-1)中的输入特征值(每个输入特征都是读步骤2接下去的K/(2scn)个输入特征值),存入IN_BUF0;在此过程中,IN_BUF1中输入特征值可以由卷积数据预处理单元31读取。
步骤4、如果IN_BUF1中的输入特征值被卷积数据预处理单元31读取完,则可继续读入(Tin_0~T2*in_scn-1)中的输入特征值(每个输入特征都是读步骤3接下去的K/(2scn)个输入特征值),存入IN_BUF1;在此过程中,IN_BUF0中输入特征值可以由卷积数据预处理单元31读取。
步骤5、重复步骤3-步骤4,直至Tin_0~T2*in_scn-1中的所有输入特征值都读入一遍。
步骤6、采用类似上述读取步骤,以每2scn个输入特征为单位,完成所有输入特征值的读入。
对于本实施例中的卷积数据预处理单元31说明如下:
本实施例中的卷积数据预处理单元31用于处理卷积计算单元32所需的输入特征组及卷积核;在本实施例中,卷积数据预处理单元31按一定规则从输入特征组缓存单元34和卷积核缓存单元35中分别读取对应的输入特征组和卷积核组,然后将输入特征组和卷积核组对应输入卷积计算单元32。
本实施例中的卷积数据预处理单元31读取输入特征组和卷积核组步骤如下(设定MAC阵列中MAC的个数为MAC1,输入特征组中的是输入特征的个数为scn):
步骤1、从输入特征组缓存单元34的IN_BUF0中,读取前scn个输入特征的输入特征值,对应读取的每个输入特征的输入特征值为:MAC1/scn;然后,从卷积核缓存单元35中,读取前scn个卷积核;最后,将前scn个输入特征的输入特征值及前scn个卷积核进行匹配后,输出到卷积计算单元32进行计算。
步骤2、从输入特征组缓存单元34的IN_BUF0中,读取后scn个输入特征的输入特征值,对应读取的每个输入特征的输入特征值为:MAC1/scn;然后,从卷积核缓存单元35中,读取后scn个卷积核;最后,将后scn个输入特征的输入特征值及后scn个卷积核进行匹配后,输出到卷积计算单元32进行计算。
步骤3、重复步骤1至步骤2,直至将IN_BUF0中的所有输入特征所对应的输入特征值都轮循一遍;此时,完成输出特征Tout_0中与2scn个输入特征对应的数据读取。
步骤4、重复步骤1至步骤3,直至完成所有剩余输出特征中与2scn个输入特征对应的数据读取(此过程中,针对IN_BUF0中缓存的输入特征值)。
步骤5、重复步骤1至步骤4,完成所有输出特征中与2scn个输入特征对应的数据读取(此过程中,针对IN_BUF1中缓存的输入特征值);
步骤6,重复步骤1至步骤5,直至2scn个输入特征中的所有输入特征值均对应读取。
步骤7、重复步骤1至步骤5,直至完成所有输入特征(大于2scn)中的所有输入特征值均对应读取。
对于本申请中的卷积计算单元32说明如下:
本实施例中的卷积计算单元32用于完成临时输出特征计算、对临时输出特征的读取/写入、临时输出特征的累加等,其整体计算过程如下:
步骤1、将从卷积数据预处理单元31输入的Tin_0、Tin_1、…、Tin_scn-1总共scn个输入特征同时进行乘法计算,并将对应点位置乘法结果求和,获取一次MAC阵列计算临时结果数列(Sum_PA0、Sum_PA1、…、Sum_PAMAC1/scn-1),计算公式如下所示(Tin_y(Px)表示第y个输入特征中第x个输入特征值):
Sum_PA0=Tin_0(P0)*W0,0+Tin_1(P0)*W1,0+....+Tin_scn-1(P0)*Wscn-1,0
Sum_PA1=Tin_0(P1)*W0,0+Tin_1(P1)*W1,0+....+Tin_scn-1(P1)*Wscn-1,0
.......
Sum_PAMAC1/scn-1=Tin_0(PMAC1/scn-1)*W0,0+Tin_1(PMAC1/scn-1)*W1,0+....+Tin_scn-1(PMAC1/scn-1)*Wscn-1,0
其中,每个输入特征参与计算的输入特征值的数量为MAC1/scn;每个输入特征组的输入特征对应的卷积核组中的卷积核分别为:W0,0、W1,0、…、Wscn-1,0,因1*1卷积核只有1个权重系数,因此,用卷积核Wx,y来代表权重系数。
步骤2、将从卷积数据预处理单元31输入的Tin_scn、Tin_scn+1、…、Tin_2scn-1总共scn个输入特征先同时进行乘法计算(每个输入特征参与计算的输入特征值的数量为MAC1/scn;每个输入特征组的输入特征对应的卷积核组中的卷积核分别为:Wscn,0、Wscn+1,0、…、W2scn-1,0),再将对应点位置乘法结果求和,获取一次MAC计算临时结果数列(Sum_PB0、Sum_PB1、…、Sum_PBmn/scn-1),最后,将步骤1中的(Sum_PA0、Sum_PA1、…、Sum_PAMAC1/scn-1)数列和(Sum_PB0、Sum_PB1、…、Sum_PBMAC1/scn-1)数列分别按对应点位置相加,累加求和之后存入卷积结果缓存单元33中,即完成Tout_0中与Tin_0、Tin_1、…、Tin_2scn-1这2scn个输入特征相关的MAC1/scn个临时输出特征计算。
需要说明的是,当第一次实施步骤2的过程中,因为卷积结果缓存单元33中并未存储在累加运算之前的完成的临时输出特征所对应的数列,因此,只存在(Sum_PA0、Sum_PA1、…、Sum_PAMAC1/scn-1)数列和(Sum_PB0、Sum_PB1、…、Sum_PBMAC1/scn-1)数列按对应位置的累加。
步骤3、采用步骤1至步骤2的计算方法,进行Tin_0、Tin_1、…、Tin_2scn-1这2scn个输入特征中剩余输入特征值的计算,得到Tout_0中与Tin_0、Tin_1…、Tin_2scn-1这2scn个输入特征相关的所有临时输出特征的计算,并将所有临时输出特征保存在卷积结果缓存单元33中。
步骤4、采用步骤1至步骤3的计算方法,完成所有剩余输出特征(Tout_1,…,Tout_m-1)中与Tin_0、Tin_1、…、Tin_2scn-1这2scn个输入特征相关的所有临时输出特征的计算。
步骤5、采用步骤1至步骤4的计算方法,完成所有剩余输入特征到输出特征的计算,即获得最终的卷积计算结果。
需要说明的是,在步骤5中剩余输入特征组在计算某一输出特征图时,需要在计算出该输出特征图之前,将保存在卷积结果缓存单元33中的临时输出特征所对应的数列取出,加上当前计算出的临时输出特征所对应的数列(包括(Sum_PA0、Sum_PA1、…、Sum_PAMAC1/scn-1)数列和(Sum_PB0、Sum_PB1、…、Sum_PBMAC1/scn-1))数列后,再将对应的累加结果写回到卷积结果缓存单元33中。
图8是根据本申请优选实施例的卷积计算单元进行卷积计算的流水节拍示意图,如图8所示,完成上述步骤1至步骤5的计算过程,本申请实施例的卷积计算单元对应的流入节拍可以参考图8所示,同时,在图8中,设定TIME_0、TIME_1、…、TIME_7表示卷积计算单元32工作的8个时钟周期,由于后续过程类似,基于前8个时钟周期内对卷积计算单元32的所执行的操作进行说明。
本申请提供一种用于卷积神经网络的卷积计算方法,该卷积计算方法基于上述实施例中的卷积运算装置实施。图9是根据本申请实施例的卷积运算方法的流程图,参考图9,该流程包括如下步骤:
步骤S901、卷积数据预处理单元获取至少两个输入特征组和顺序排列的多个卷积核组,其中,输入特征组为待运算的全部输入特征进行分割得到。
步骤S902、卷积数据预处理单元将多个卷积核组依次对应的输入特征组匹配,得到卷积计算参数。
步骤S903、乘累加单元在每个预设的时钟周期内,利用预设的乘加器阵列对接收到的一个输入特征组和一个对应的卷积核组进行卷积计算,生成临时输出特征。
步骤S904、处理单元基于临时输出特征进行生成输出特征的后处理,其中,后处理至少包括以下其中一项:读取包括前一时钟周期内对应生成的临时输出特征的第一输出特征、暂存包括前一时钟周期内对应生成的临时输出特征的第二输出特征、读取当前时钟周期之前缓存于卷积结果缓存单元的历史输出特征、暂存包括前一时钟周期内读取的历史输出特征的第三输出特征、对第一输出特征和在前一时钟周期内暂存的第二输出特征与第三输出特征进行求和、将前一时钟周期内求和后得到的缓存输出特征写入卷积结果缓存单元。
通过上述步骤S901至步骤S904,解决了完成卷积运算的芯片的MAC阵列利用率不高、缓存卷积中间结果数据的缓存装置占用芯片面积过大的问题,实现了在不增加缓存卷积中间结果数据的缓存装置对芯片的面积的占用的情况下,提高对应芯片的MAC阵列的利用率,减少对芯片面积的浪费。
在其中一些实施中,上述实施例的卷积运算装置还包括输入特征组缓存单元和卷积核缓存单元,输入特征组缓存单元和卷积核缓存单元分别与卷积数据预处理单元电连接,卷积运算装置还实施如下步骤:
步骤1、输入特征组缓存单元将至少两个输入特征组所对应的第四输入特征分片组,交替输入至卷积数据预处理单元,直至输入特征组的全部第四输入特征分片组输入至卷积数据预处理单元,其中,第四输入特征分片组的第四输入特征分片的个数与对应的输入特征组的输入特征的个数相同,第四输入特征分片包括第四数据量的输入特征值,第四数据量根据乘加器阵列中乘加器的数目和输入特征组中输入特征的个数确定。
步骤2、卷积核缓存单元在顺序排列的多个卷积核中按组读取多个第二卷积核组,并将每个第二卷积核组输入至卷积数据预处理单元,其中,每个第二卷积核组中卷积核的个数与每个输入特征组的输入特征的个数相同。
步骤3、卷积数据预处理单元交替读取一个第二卷积核组,将一个第二卷积核组配置为一个输入特征组的多个第四输入特征分片组所对应的卷积核,以及将配置好的一个第四输入特征分片组和对应的一个第二卷积核组输入卷积计算单元。
通过上述步骤1至步骤3,实现了输入特征组的输入特征与卷积核组的卷积核预处理,提高卷积计算的效率。
在其中一些实施中,上述实施例的卷积运算装置的输入特征组缓存单元包括并行设置的第一缓存单元和第二缓存单元,卷积运算装置还实施如下步骤:第一缓存单元在读入第四输入特征分片组时,第二缓存单元将已读入的第四输入特征分片组输入卷积数据预处理单元,直至分批次将待运算的全部输入特征完全遍历。
通过上述步骤中的第一缓存单元在读入第四输入特征分片组时,第二缓存单元将已读入的第四输入特征分片组输入卷积数据预处理单元,直至分批次将待运算的全部输入特征完全遍历,实现循环有序的将外部存储的输入特征值与卷积核的读入。
在本实施例中还提供了一种用于卷积神经网络的卷积计算的芯片,芯片包括卷积运算装置,其中,卷积运算装置包括上述实施例的卷积运算装置,并实施上述实施例中的卷积计算方法的步骤。
应该明白的是,这里描述的具体实施例只是用来解释这个应用,而不是用来对它进行限定。根据本申请提供的实施例,本领域普通技术人员在不进行创造性劳动的情况下得到的所有其它实施例,均属本申请保护范围。
显然,附图只是本申请的一些例子或实施例,对本领域的普通技术人员来说,也可以根据这些附图将本申请适用于其他类似情况,但无需付出创造性劳动。另外,可以理解的是,尽管在此开发过程中所做的工作可能是复杂和漫长的,但是,对于本领域的普通技术人员来说,根据本申请披露的技术内容进行的某些设计、制造或生产等更改仅是常规的技术手段,不应被视为本申请公开的内容不足。
“实施例”一词在本申请中指的是结合实施例描述的具体特征、结构或特性可以包括在本申请的至少一个实施例中。该短语出现在说明书中的各个位置并不一定意味着相同的实施例,也不意味着与其它实施例相互排斥而具有独立性或可供选择。本领域的普通技术人员能够清楚或隐含地理解的是,本申请中描述的实施例在没有冲突的情况下,可以与其它实施例结合。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种卷积运算装置,应用于芯片,其特征在于,所述卷积运算装置包括卷积数据预处理单元、卷积计算单元及卷积结果缓存单元,其中,
所述卷积数据预处理单元,用于将至少两个输入特征组和与每个所述输入特征组对应的卷积核组交替输入所述卷积计算单元,其中,所述输入特征组为待运算的全部输入特征进行分割得到,每个所述输入特征包括多个输入特征值;
所述卷积计算单元,包括乘累加单元和处理单元,其中,所述乘累加单元用于在每个预设的时钟周期内,利用预设的乘加器阵列对一个所述输入特征组和与所述输入特征组对应的所述卷积核组进行卷积计算,生成临时输出特征,所述处理单元用于基于所述临时输出特征进行生成输出特征的后处理,其中,所述后处理至少包括以下其中一项:读取包括前一时钟周期内对应生成的临时输出特征的第一输出特征、暂存包括前一时钟周期内对应生成的临时输出特征的第二输出特征、读取当前时钟周期之前缓存于所述卷积结果缓存单元的历史输出特征、暂存包括前一时钟周期内读取的所述历史输出特征的第三输出特征、对所述第一输出特征和在前一时钟周期内暂存的所述第二输出特征与所述第三输出特征进行求和、将前一时钟周期内求和后得到的缓存输出特征写入所述卷积结果缓存单元;
所述卷积结果缓存单元,用于存储求和后得到的缓存输出特征。
2.根据权利要求1所述的卷积运算装置,其特征在于,所述输入特征组包括多个第一输入特征分片组,所述乘累加单元在相邻两个时钟周期内,分别读取对应的两个所述输入特征组的所述第一输入特征分片组,并在对应的时钟周期内,利用所述乘加器阵列对所述第一输入特征分片组和与对应的所述输入特征组所对应的所述卷积核组进行卷积计算,生成对应的临时输出特征,直至对至少两个所述输入特征组所有的所述第一输入特征分片组完成卷积计算,其中,所述第一输入特征分片组的第一输入特征分片的个数与对应的所述输入特征组的输入特征的个数相同,所述第一输入特征分片包括第一数据量的输入特征值,所述第一数据量根据所述乘加器阵列中乘加器的数目和所述输入特征组的个数确定。
3.根据权利要求1所述的卷积运算装置,其特征在于,在当前时钟周期内的所述乘累加单元完成卷积计算后,所述处理单元读取所述历史输出特征以及对所述第一输出特征和在前一时钟周期内暂存的所述第二输出特征与所述第三输出特征进行求和,得到与当前时钟周期对应的所述缓存输出特征。
4.根据权利要求1所述的卷积运算装置,其特征在于,所述卷积运算装置还包括输入特征组缓存单元和卷积核缓存单元,所述输入特征组缓存单元和所述卷积核缓存单元分别与所述卷积数据预处理单元电连接,其中,
所述输入特征组缓存单元,用于将至少两个所述输入特征组所对应的第二输入特征分片组,交替输入至所述卷积数据预处理单元,直至所述输入特征组的全部第二输入特征分片组输入至所述卷积数据预处理单元,其中,所述第二输入特征分片组的第二输入特征分片的个数与对应的所述输入特征组的输入特征的个数相同,所述第二输入特征分片包括第二数据量的输入特征值,所述第二数据量根据所述乘加器阵列中乘加器的数目和所述输入特征组中所述输入特征的个数确定;
所述卷积核缓存单元,用于在顺序排列的多个卷积核中按组读取多个第一卷积核组,并将每个第一卷积核组输入至所述卷积数据预处理单元,其中,每个所述第一卷积核组中所述卷积核的个数与每个所述输入特征组的输入特征的个数相同;
所述卷积数据预处理单元,用于交替读取一个所述第一卷积核组,将一个所述第一卷积核组配置为一个所述输入特征组的多个所述第二输入特征分片组所对应的卷积核,以及将配置好的一个所述第二输入特征分片组和对应的一个所述第一卷积核组输入所述卷积计算单元。
5.根据权利要求4所述的卷积运算装置,其特征在于,所述输入特征组缓存单元包括并行设置的两个缓存单元,其中,两个所述缓存单元其中一个在从待运算的全部输入特征中读入第三输入特征分片组时,另一个所述缓存单元将已读入的所述第三输入特征分片组输入所述卷积数据预处理单元,直至分批次将待运算的全部输入特征完全遍历,其中,所述第三输入特征分片组的第三输入特征分片的个数与对应的所述输入特征组的输入特征的个数相同,所述第三输入特征分片包括第三数据量的输入特征值,所述第三数据量根据每个所述缓存单元所对应的缓存容量和完成一个输出特征组运算所需的所述输入特征的个数确定。
6.根据权利要求5所述的卷积运算装置,其特征在于,两个所述缓存单元其中一个读入每个所述第三输入特征分片的第M个输入特征值、另一个所述缓存单元将已读入的所述第三输入特征分片组输入至所述卷积数据预处理单元时,另一个所述缓存单元自第M+1个输入特征值读入对应的所述第三输入特征分片组,其中,所述第M个输入特征值对应为每个所述第三输入特征分片中最末的一个输入特征值。
7.一种用于卷积神经网络的卷积计算方法,包括权利要求1所述的卷积运算装置,其特征在于,所述卷积计算方法包括:
所述卷积数据预处理单元获取至少两个输入特征组和顺序排列的多个卷积核组,其中,所述输入特征组为待运算的全部输入特征进行分割得到;
所述卷积数据预处理单元将多个所述卷积核组依次对应的所述输入特征组匹配,得到卷积计算参数;
所述乘累加单元在每个预设的时钟周期内,利用预设的乘加器阵列对接收到的一个所述输入特征组和一个对应的卷积核组进行卷积计算,生成临时输出特征;
所述处理单元基于所述临时输出特征进行生成输出特征的后处理,其中,所述后处理至少包括以下其中一项:读取包括前一时钟周期内对应生成的临时输出特征的第一输出特征、暂存包括前一时钟周期内对应生成的临时输出特征的第二输出特征、读取当前时钟周期之前缓存于所述卷积结果缓存单元的历史输出特征、暂存包括前一时钟周期内读取的所述历史输出特征的第三输出特征、对所述第一输出特征和在前一时钟周期内暂存的所述第二输出特征与所述第三输出特征进行求和、将前一时钟周期内求和后得到的缓存输出特征写入所述卷积结果缓存单元。
8.根据权利要求7所述的卷积计算方法,其特征在于,所述卷积运算装置还包括输入特征组缓存单元和卷积核缓存单元,所述输入特征组缓存单元和所述卷积核缓存单元分别与所述卷积数据预处理单元电连接,所述卷积计算方法还包括:
所述输入特征组缓存单元将至少两个所述输入特征组所对应的第四输入特征分片组,交替输入至所述卷积数据预处理单元,直至所述输入特征组的全部第四输入特征分片组输入至所述卷积数据预处理单元,其中,所述第四输入特征分片组的第四输入特征分片的个数与对应的所述输入特征组的输入特征的个数相同,所述第四输入特征分片包括第四数据量的输入特征值,所述第四数据量根据所述乘加器阵列中乘加器的数目和所述输入特征组中所述输入特征的个数确定;
所述卷积核缓存单元在顺序排列的多个卷积核中按组读取多个第二卷积核组,并将每个第二卷积核组输入至所述卷积数据预处理单元,其中,每个所述第二卷积核组中所述卷积核的个数与每个所述输入特征组的输入特征的个数相同;
所述卷积数据预处理单元交替读取一个所述第二卷积核组,将一个所述第二卷积核组配置为一个所述输入特征组的多个所述第四输入特征分片组所对应的卷积核,以及将配置好的一个所述第四输入特征分片组和对应的一个所述第二卷积核组输入所述卷积计算单元。
9.根据权利要求8所述的卷积计算方法,其特征在于,所述输入特征组缓存单元包括并行设置的第一缓存单元和第二缓存单元,所述卷积计算方法还包括:
所述第一缓存单元在读入所述第四输入特征分片组时,所述第二缓存单元将已读入的所述第四输入特征分片组输入所述卷积数据预处理单元,直至分批次将待运算的全部输入特征完全遍历。
10.一种用于卷积神经网络的卷积计算的芯片,所述芯片包括卷积运算装置,其特征在于,所述卷积运算装置包括权利要求1至6中任一项所述的卷积运算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110855330.9A CN113592075B (zh) | 2021-07-28 | 2021-07-28 | 卷积运算装置、方法和芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110855330.9A CN113592075B (zh) | 2021-07-28 | 2021-07-28 | 卷积运算装置、方法和芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113592075A true CN113592075A (zh) | 2021-11-02 |
CN113592075B CN113592075B (zh) | 2024-03-08 |
Family
ID=78250976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110855330.9A Active CN113592075B (zh) | 2021-07-28 | 2021-07-28 | 卷积运算装置、方法和芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113592075B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11403731B2 (en) * | 2020-04-29 | 2022-08-02 | Industry-Academic Cooperation Foundation, Yonsei University | Image upscaling apparatus using artificial neural network having multiple deconvolution layers and deconvolution layer pluralization method thereof |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180075338A1 (en) * | 2016-09-12 | 2018-03-15 | International Business Machines Corporation | Convolutional neural networks using resistive processing unit array |
CN108416434A (zh) * | 2018-02-07 | 2018-08-17 | 复旦大学 | 针对神经网络的卷积层与全连接层进行加速的电路结构 |
CN110135554A (zh) * | 2019-03-25 | 2019-08-16 | 电子科技大学 | 一种基于fpga的卷积神经网络硬件加速架构 |
CN111242277A (zh) * | 2019-12-27 | 2020-06-05 | 中国电子科技集团公司第五十二研究所 | 一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器 |
CN112200300A (zh) * | 2020-09-15 | 2021-01-08 | 厦门星宸科技有限公司 | 卷积神经网络运算方法及装置 |
-
2021
- 2021-07-28 CN CN202110855330.9A patent/CN113592075B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180075338A1 (en) * | 2016-09-12 | 2018-03-15 | International Business Machines Corporation | Convolutional neural networks using resistive processing unit array |
CN108416434A (zh) * | 2018-02-07 | 2018-08-17 | 复旦大学 | 针对神经网络的卷积层与全连接层进行加速的电路结构 |
CN110135554A (zh) * | 2019-03-25 | 2019-08-16 | 电子科技大学 | 一种基于fpga的卷积神经网络硬件加速架构 |
CN111242277A (zh) * | 2019-12-27 | 2020-06-05 | 中国电子科技集团公司第五十二研究所 | 一种基于fpga设计的支持稀疏剪枝的卷积神经网络加速器 |
CN112200300A (zh) * | 2020-09-15 | 2021-01-08 | 厦门星宸科技有限公司 | 卷积神经网络运算方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11403731B2 (en) * | 2020-04-29 | 2022-08-02 | Industry-Academic Cooperation Foundation, Yonsei University | Image upscaling apparatus using artificial neural network having multiple deconvolution layers and deconvolution layer pluralization method thereof |
Also Published As
Publication number | Publication date |
---|---|
CN113592075B (zh) | 2024-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111684473B (zh) | 提高神经网络阵列的性能 | |
JP7474586B2 (ja) | テンソル計算データフロー加速器半導体回路 | |
US10810484B2 (en) | Hardware accelerator for compressed GRU on FPGA | |
CN108133270B (zh) | 卷积神经网络加速方法及装置 | |
US10698657B2 (en) | Hardware accelerator for compressed RNN on FPGA | |
CN105260773B (zh) | 一种图像处理装置以及图像处理方法 | |
CN113673701B (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
CN111915001B (zh) | 卷积计算引擎、人工智能芯片以及数据处理方法 | |
CN112668708B (zh) | 一种提高数据利用率的卷积运算装置 | |
CN109146065B (zh) | 二维数据的卷积运算方法及装置 | |
CN108537330A (zh) | 应用于神经网络的卷积计算装置及方法 | |
US20220083857A1 (en) | Convolutional neural network operation method and device | |
WO2018027706A1 (zh) | Fft处理器及运算方法 | |
CN111639701B (zh) | 一种图像特征提取的方法、系统、设备及可读存储介质 | |
CN110019184B (zh) | 一种压缩和解压缩有序整数数组的方法 | |
Sreenivasulu et al. | Efficient hardware implementation of 2d convolution on FPGA for image processing application | |
CN113592075A (zh) | 卷积运算装置、方法和芯片 | |
CN115309333A (zh) | 一种带状稀疏矩阵的数据存储格式及其乘法加速方法 | |
WO2022062391A1 (zh) | 一种加速rnn网络的系统、方法及存储介质 | |
CN116881618B (zh) | 通用矩阵乘计算优化方法、装置及处理器 | |
CN110716751A (zh) | 高并行度计算平台、系统及计算实现方法 | |
CN112836793B (zh) | 浮点可分离卷积计算加速装置、系统以及图像处理方法 | |
KR102510924B1 (ko) | 대규모 병렬 연관된 승산기-누산기 | |
Fischer et al. | BinArray: A scalable hardware accelerator for binary approximated CNNs | |
CN111985618A (zh) | 3d卷积神经网络在神经网络处理器上的处理方法和装置 |
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 |