有效
一种卷积运算装置及其方法
韩银和、闵丰、许浩博、王颖
中科时代(深圳)计算机系统有限公司
韩
韩银和机构 暂无
技术领域 暂无
闵
闵丰机构 暂无
技术领域 暂无
许
许浩博机构 暂无
技术领域 暂无
王
王颖机构 暂无
技术领域 暂无
摘要
本发明提供一种卷积运算结构及其方法。所述卷积运算结构,包括转换单元结构,所述转换单元结构包括:第一寄存器组、第二寄存器组、乘法器、加法器、中间结果寄存器组,其中,所述第一寄存器组和所述第二寄存器组被控制为,在第一回合计算过程中,对由它们所分别存储的第一矩阵和第二矩阵通过所述乘法器和加法器执行矩阵乘法,并将通过所述矩阵乘法得到的第一结果矩阵存储至所述中间结果寄存器组;并且所述第二寄存器组和所述中间结果寄存器组被控制为,在第二回合计算过程中,对由它们所分别存储的第三矩阵以及所述第一结果矩阵通过所述乘法器和加法器执行矩阵乘法,并将通过所述矩阵乘法得到的第二结果矩阵存储至所述第一寄存器组。
1.一种卷积运算装置,包括转换单元结构,所述转换单元结构包括:第一寄存器组、第二寄存器组、乘法器、加法器、中间结果寄存器组,其中,所述第一寄存器组和所述第二寄存器组被控制为,在第一回合计算过程中,对由它们所分别存储的第一矩阵和第二矩阵通过所述乘法器和加法器执行矩阵乘法,并将通过所述矩阵乘法得到的第一结果矩阵存储至所述中间结果寄存器组;并且所述第二寄存器组和所述中间结果寄存器组被控制为,在第二回合计算过程中,对由它们所分别存储的第三矩阵以及所述第一结果矩阵通过所述乘法器和加法器执行矩阵乘法,并将通过所述矩阵乘法得到的第二结果矩阵存储至所述第一寄存器组;其中,所述转换单元结构还包括:第一选通器、第二选通器、和第三选通器,其中,所述第一寄存器组的输出通过所述第一选通器连接至所述乘法器的第一输入,所述第二寄存器组的输出连接至所述乘法器的第二输入,所述乘法器的输出连接至所述加法器的第一输入,所述加法器的输出连接至所述第二选通器的输入,所述第二选通器的输出分别连接至所述加法器的第二输入、所述中间结果寄存器、以及所述第一寄存器组,所述中间结果寄存器组的输出通过所述第三选通器连接至所述乘法器的第一输入;所述第一选通器、第二选通器和第三选通器分别用于对与其相连的第一寄存器组、第二寄存器组和中间结果寄存器组中的数据输出进行选通,并且所述第一选通器与所述第三选通器的选通操作互斥;其中,所述第二选通器为多路输出选择器,用于在所述转换单元结构针对一组数据执行计算时将来自所述加法器的数值提供给所述加法器,在第一回合计算过程中且所述转换单元结构完成了针对一组数据的计算时将来自所述加法器的数值提供给所述中间结果寄存器,在第二回合计算过程中且所述转换单元结构完成了针对一组数据的计算时将来自所述加法器的数值提供给第一中间结果寄存器;其中,所述一组数据与当前执行卷积运算的矩阵中的一行或一列对应。
2.根据权利要求1所述的卷积运算装置,其中:所述第一寄存器组,用于在输出数据时以n轮的方式提供数据,在每一轮中将其寄存器所存储的数据中的连续n×n项依照各项的顺序提供1次;所述第二寄存器组,用于在输出数据时以n轮的方式提供数据,在每一轮中将其寄存器所存储的数据中的连续n项依照各项的顺序循环提供n次,并在执行下一轮前将寄存器所存储的数据移动n项;所述中间结果寄存器组,用于在输出数据时以n轮的方式提供数据,在每一轮中将其寄存器所存储的数据中的连续n×n项依照各项的顺序提供1次;所述乘法器,用于对来自所述第二寄存器组的1项数据以及由所述第一选通器所提供的1项数据或者由所述第三选通器所提供的1项数据执行乘法运算。
3.根据权利要求2所述的卷积运算装置,其中所述第一寄存器组和/或所述第二寄存器组和/或所述中间结果寄存器组,包括:多个暂存器,用于暂时存储该寄存器组中寄存器所存储的数据中的连续m项数据;针对所述多个暂存器的输入使能接口,用于接收控制所述多个暂存器载入该寄存器组中寄存器所存储的数据中的连续m项数据的输入使能控制信号;针对所述多个暂存器的滑动使能接口,用于接收控制所述多个暂存器依照各项的顺序循环提供所述m项数据的滑动使能控制信号;其中,对于所述第二寄存器组所述m等于n,对于所述第一寄 存器组和所述中间结果寄存器组所述m等于n×n。
4.根据权利要求1或2所述的卷积运算装置,其中所述转换单元结构包括:一个所述第二寄存器组,以及多套第一寄存器组、乘法器、加法器、中间结果寄存器组、第一选通器、第二选通器、和第三选通器的结构,所述一个所述第二寄存器组的输出分别连接至多套结构中每一套的乘法器的输入。
5.根据权利要求1或2所述的卷积运算装置,其中包括:前转换单元结构、点乘累加单元、权重缓存和后转换单元结构,其中,所述权重缓存,用于存储以离线方式计算获得的U=[GgG T ]或者存储用于执行卷积计算的权值g,其中G为winograd卷积运算的转换矩阵;所述前转换单元结构和所述后转换单元结构采用如权利要求2或3所述的转换单元结构;所述点乘累加单元,用于对其输入执行点乘操作并对点乘的结果进行累加,所述点乘累加单元的输入连接至所述前转换单元结构的第一寄存器组的输出以及所述权重缓存,所述点乘累加单元的输出连接至所述后转换单元结构的第一寄存器组。
6.根据权利要求5所述的卷积运算装置,其中所述点乘累加单元包括:2 k+1 个乘法器、(1+2+2 2 …+2 k )个第一加法器、1个第二加法器以及1个第四选通器;其中,所述乘法器和所述第一加法器以加法树的方式连接,所述加法树的输出连接至所述第二加法器的输入,所述第二加法器的输出连接至所述第四选通器的输入,并且所述第四选通器的输出连接至所述第二加法器的输入,k为正整数;所述点乘累加单元的至少一个乘法器的其中一个输入连接至所述前转换单元结构的第一寄存器组的输出,另一个输入连接至所述权重缓存。
7.根据权利要求6所述的卷积运算装置,其中还包括:数据缓存,用于存储用于执行卷积计算的特征图d;针对所述数据缓存的选通器,其连接至所述数据缓存的输出以及所述点乘累加单元的输入;针对所述前转换单元结构的选通器,其连接至所述前转换单元结构的输出以及所述点乘累加单元的输入;以及针对所述后转换单元结构的选通器,其连接至所述后转换单元结构的输出以及所述点乘累加单元的输入;其中,所述针对所述前转换单元结构的选通器与针对所述后转换单元结构的选通器的选通相同,并且所述针对所述前转换单元结构的选通器的选通与针对所述数据缓存的选通器的选通相反。
8.一种用于权利要求1-7中任意一项卷积运算装置的方法,包括:1)在所述第一寄存器组中载入第一数据,所述第一选通器的选通为通过,所述第三选通器的选通为不通过;并且在所述第二寄存器组中载入第二数据的转置;2)所述乘法器逐项地对来自所述第一寄存器组的1项数据和所述第二寄存器组的1项数据执行乘法运算;并且,所述第二选通器的选通为将其输入提供给所述加法器,直到所述第二寄存器组将其寄存器所存储的数据中的连续n项的第n项提供给所述乘法器时,所述第二选通器的选通为将其输入提供给所述中间结果寄存器组;重复本步骤的上述操作,直到所述第一寄存器组和所述第二寄存器组以所述方式提供了n轮数据;3)所述第三选通器的选通为通过,所述第一选通器的选通为不通过;并且,在所述第二寄存器组中载入第二数据;4)所述乘法器逐项地对来自所述第二寄存器组的1项数据和所述第三选通器所提供的1项数据执行乘法运算;并且,所述第二选通器的选通为将其输入提供给所述加法器,直到所述第二寄存器组将其寄存器所存储的数据中的连续n项的第n项提供给所述乘法器时,所述第二选通器的选通为将其输入提供给所述第一寄存器组;重复本步骤的上述操作,直到所述第二寄存器组和所述中间结果寄存器组以所述方式提供了n轮数据;其中,所述第一数据为用于执行卷积计算的特征图d,并且所述第二数据为winograd卷积运算的转换矩阵B,或者,所述第一数据为winograd卷积运算的中间结果M=U⊙V,其中,U=[GgG T ],V=[B T dB],G为winograd卷积运算的转换矩阵,g为用于执行卷积计算的权值,并且所述第二数据为winograd卷积运算的转换矩阵A,或者,所述第一数据为g,并且所述第二数据为G T 。
9.一种用于权利要求1-7中任意一项卷积运算装置的控制方法,包括:1)根据执行卷积计算的网络卷积核尺寸,确定n值;2)当计数器的计数为0至n×(n×n-1)时,将用于所述第一选通器的控制信号设置为通过,将用于所述第三选通器的控制信号设置为不通过;当所述计数器的计数为0至x×n-2时,将用于所述第二选通器的控制信号设置为将该第二选通器的输入提供给所述加法器,当所述计数器的计数为x×n-1时,将用于所述第二选通器的控制信号设置为将该第二选通器的输入提供给所述中间结果寄存器组;在所述计数器的计数达到n×(n×n-1)+1时,将其计数归零;其中,x为正整数,所述计数器与所述第一寄存器组、所述第二寄存器组、以及所述中间结果寄存器组同步且频率相同;3)当所述计数器的计数为0至n×(n×n-1)时,将用于所述第三选通器的控制信号设置为通过,将用于所述第一选通器的控制信号设置为不通过;当所述计数器的计数为0至x×n-2时,将用于所述第二选通器的控制信号设置为将该第二选通器的输入提供给所述加法器,当所述计数器的计数为x×n-1时,将用于所述第二选通器的控制信号设置为将该第二选通器的输入提供给所述第一寄存器组;在所述计数器的计数达到n×(n×n-1)+1时,将其计数归零。
10.一种计算机可读存储介质,其中存储有计算机程序,所述计算机程序在被执行时用于实现如权利要求8或9所述的方法。



