集成电路的制作方法

文档序号:14445567阅读:216来源:国知局
集成电路的制作方法

本发明属于图像处理领域,尤其涉及一种集成电路。



背景技术:

卷积神经网络(英文全称:convolutionalneuralnetworks,简称cnn)是近年来发展起来,并引起广泛重视的一种高效的图像识别方法,对于大型图像处理有着非常出色的表现。目前,卷积神经网络已经成为众多科学领域的研究热点之一。鉴于卷积神经网络避免了对图像的复杂前期处理,可以直接输入原始图像,其在模式分类领域得到了更加广泛的使用。

一般来说,卷积神经网络包括卷积层、池化层和全连接层。在实际应用中,卷积层的计算占到了全部计算量的90%以上;而全连接层的计算虽然占比不大,但是全连接层的权重数目很多。目前,一般需要两套相互独立的硬件分别计算卷积层和全连接层,虽然理论上可以并行计算,但是,由于全连接层的计算量占比很小,因此大多数情况下引擎处于空闲状态,导致资源浪费。

因此,现有的卷积神经网络存在硬件成本高和资源浪费的问题。



技术实现要素:

本发明提供一种集成电路,旨在解决现有的卷积神经网络存在的硬件成本高和资源浪费的问题。

本发明第一方面提供一种集成电路,所述集成电路包括:

数据存储电路、权重存储电路以及运算电路;

所述数据存储电路和所述权重存储电路分别连接所述运算电路;

所述数据存储电路用于根据预设控制指令在第一预设时间段内存储图像的灰度值数据,所述权重存储电路用于在所述第一预设时间段内存储图像的灰度值数据所对应的数据权重,所述运算电路用于在所述第一预设时间段内对所述数据存储电路中的灰度值数据和所述权重存储电路中的数据权重进行运算,并输出第一数据;

所述数据存储电路还用于根据所述预设控制指令在第二预设时间段内存储所述第一数据,所述权重存储电路还用于在所述第二预设时间段内存储所述第一数据所对应的数据权重,所述运算电路还用于在所述第二预设时间段内对所述数据存储电路中的第一数据和所述权重存储电路中的所述第一数据所对应的数据权重进行运算,并输出第二数据。

在较优的一实施例中,所述数据存储电路包括:

数据存储器、n*m-1个选择器、n*m个数据寄存器以及n-1个先入先出存储器;

每个选择器的第一开关选择端均与第1个数据寄存器的输入端共接于所述数据存储器的数据输出端,第1至第m-1个选择器的第二开关选择端分别与第1至第m-1个数据寄存器的正相输出端对应连接,第m个选择器的第二开关选择端和第m个数据寄存器的正相输出端分别对应连接第1个先入先出存储器的输出端和输入端;

以此类推,至第(n-2)*m+1至第(n-1)*m-1个选择器的第二开关选择端分别与第(n-2)*m+1至第(n-1)*m-1个数据寄存器的正相输出端对应连接,第(n-1)*m个选择器的第二开关选择端和第(n-1)*m个数据寄存器的正相输出端分别对应连接第n-1个先入先出存储器的输出端和输入端;

第(n-1)*m+1至第n*m-1个选择器的第二开关选择端分别与第(n-1)*m+1至第n*m-1个数据寄存器的正相输出端对应连接,第1至第n*m-1个选择器的输出端分别对应连接第2至第n*m个数据寄存器的输入端,第1至第n*m个数据寄存器的正相输出端连接至所述运算电路;

所述n*m个数据寄存器用于在所述第一预设时间段内接收所述数据存储器传输的图像灰度值数据,在所述第二预设时间段内接收所述数据存储器传输的所述第一数据中的数据;所述n*m-1个选择器用于根据所述预设控制指令在第一预设时间段内使得每个选择器的第二开关选择端与输出端接通、第一开关选择端与输出端断开,在第二预设时间段内使得每个选择器的第一开关选择端与输出端接通、第二开关选择端与输出端断开;

其中,m、n均为大于1的正整数。

在较优的一实施例中,所述权重存储电路包括:

权重存储器以及n*m个权重寄存器;

每个权重寄存器的输入端共接于所述权重存储器的输出端,第1至第n*m个权重寄存器的正相输出端连接至所述运算电路;

所述n*m个权重寄存器用于在所述第一预设时间接收所述权重存储器传输的图像灰度值数据所对应的数据权重,在所述第二预设时间段内接收所述权重存储器传输的第一数据所对应的数据权重。

在较优的一实施例中,所述运算电路包括:

乘法单元和加法单元;

所述第1至第n*m个数据寄存器的正相输出端连接至所述运算电路包括:第1至第n*m个数据寄存器的正相输出端连接至所述乘法单元;

所述第1至第n*m个权重寄存器的正相输出端连接至所述运算电路包括:第1至第n*m个权重寄存器的正相输出端连接所述乘法单元;

所述乘法单元的输出端连接所述加法单元;

所述乘法单元用于在所述第一预设时间段内,对所述第1至第n*m个数据寄存器传输的图像灰度值数据和所述第1至第n*m个权重寄存器传输的图像灰度值数据所对应的数据权重相乘,并将相乘后的结果传输至所述加法单元,所述加法单元用于对所述乘法单元传输的结果进行相加,获得所述第一数据中的数据;

所述乘法单元还用于在所述第二预设时间段内,对所述第1至第n*m个数据寄存器传输的所述第一数据中的数据和所述第1至第n*m个权重寄存器传输的所述第一数据所对应的数据权重相乘,并将相乘后的结果传输至所述加法单元,所述加法单元用于对所述乘法单元传输的结果进行相加,获得所述第二数据中的数据。

在较优的一实施例中,所述乘法单元包括:

n*m个乘法器;

所述第1至第n*m个数据寄存器的正相输出端连接至所述乘法单元包括:第1至第n*m个数据寄存器的正相输出端分别对应连接第1至第n*m个乘法器的第一输入端;

所述第1至第n*m个权重寄存器的正相输出端连接所述乘法单元包括:第1至第n*m个权重寄存器的正相输出端分别对应连接第1至第n*m个乘法器的第二输入端;

所述乘法单元用于在所述第一预设时间段内,对第1至第n*m个数据寄存器传输的图像灰度值数据和第1至第n*m个权重寄存器传输的图像灰度值数据所对应的数据权重相乘包括:

第1至第n*m个乘法器用于在所述第一预设时间段内对分别从第1至第n*m数据寄存器接收的图像灰度值数据以及第1至第n*m个权重寄存器传输的图像灰度值数据所对应的数据权重相乘;

所述乘法单元还用于在所述第二预设时间段内,对所述第1至第n*m个数据寄存器传输的所述第一数据中的数据和所述第1至第n*m个权重寄存器传输的所述第一数据所对应的数据权重相乘包括:

第1至第n*m个乘法器用于在所述第二预设时间段内对分别从第1至第n*m数据寄存器接收的所述第一数据中的数据以及第1至第n*m个权重寄存器传输的所述第一数据所对应的数据权重相乘。

在较优的一实施例中,所述加法单元包括:

n+1个加法器;

所述乘法单元的输出端连接所述加法单元包括:

第1至第m个乘法器的输出端分别对应连接第1个加法器的第1至第m输入端,第1*m+1至第2*m个乘法器的输出端分别对应连接第2个加法器的第1至第m输入端,以此类推,第(n-2)*m+1至第(n-1)*m个乘法器的输出端分别对应连接第n-1个加法器的第1至第m输入端,第(n-1)*m+1至第n*m个乘法器的输出端分别对应连接第n个加法器的第1至第m输入端;

第1至第n个加法器的输出端分别对应连接第n+1个加法器的第1至第n输入端,第n+1个加法器的输出端在所述第一预设时间段内输出所述第一数据,在所述第二预设时间段内输出所述第二数据;

所述加法单元用于对所述乘法单元传输的结果进行相加,获得所述第一数据中的数据包括:

第1至第n个加法器,用于在所述第一预设时间段内对第1至第n*m个乘法器传输的结果进行相加,第n+1个加法器用于将第1至第n个加法器的输出相加,获得所述第一数据中的数据;

所述加法单元用于对所述乘法单元传输的结果进行相加,获得所述第二数据中的数据包括:

第1至第n个加法器,用于在所述第二预设时间段内对第1至第n*m个乘法器传输的结果进行相加,第n+1个加法器用于将第1至第n个加法器的输出相加,得到所述第二数据中的数据。

在较优的一实施例中,所述n及m相等。

在较优的一实施例中,所述n及m均为正整数3。

在较优的一实施例中,所述数据存储器是型号为is6ic256al或者is61lv6416或者cy62128b的存储器,所述n*m个数据寄存器是型号为74ls175或者74ls194的寄存器,所述n*m-1个选择器是型号为sn54hc257或者sn54hc258或者sn74hc257或者sn74hc258的选择器,所述n-1个先入先出存储器是型号为al422或者al422b或者al400b-12或者gs7201al的先入先出存储器,所述权重存储器是型号为is6ic256al或者is61lv6416或者cy62128b的存储器,所述n*m个权重寄存器是型号为74ls175或者74ls194的寄存器。

在较优的一实施例中,所述n*m个乘法器是型号为gc1496或者gc1496b的乘法器,所述n+1个加法器是型号为74ls283或者74ls580或者74als580的加法器。

在本发明中,集成电路包括数据存储电路、权重存储电路以及运算电路,数据存储电路和权重存储电路分别连接运算电路。数据存储电路用于根据预设控制指令在第一预设时间段内存储图像的灰度值数据,权重存储电路用于在第一预设时间段内存储图像的灰度值数据所对应的数据权重,运算电路用于在第一预设时间段内对数据存储电路中的灰度值数据和权重存储电路中的数据权重进行运算,并输出第一数据。数据存储电路还用于根据预设控制指令在第二预设时间段内存储第一数据,权重存储电路还用于在第二预设时间段内存储第一数据所对应的数据权重,运算电路还用于在第二预设时间段内对数据存储电路中的第一数据和权重存储电路中的第一数据所对应的数据权重进行运算,并输出第二数据。本发明中的集成电路可以同时支持卷积层和全连接层的计算,节约卷积神经网络的硬件成本,有效利用卷积神经网络的资源。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的集成电路的模块结构图;

图2是本发明实施例提供的数据存储电路1的电路结构图;

图3是本发明实施例提供的权重存储电路2的电路结构图;

图4是本发明实施例提供的运算电路3的结构框图;

图5是本发明实施例提供的运算电路3的电路结构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

图1示出了本发明实施例提供的集成电路的模块结构,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:

如图1所示,集成电路包括数据存储电路1、权重存储电路2以及运算电路3,所述数据存储电路1和所述权重存储电路2分别连接所述运算电路3。

所述数据存储电路1用于根据预设控制指令在第一预设时间段内存储图像的灰度值数据,所述权重存储电路2用于在所述第一预设时间段内存储图像的灰度值数据所对应的数据权重,所述运算电路3用于在所述第一预设时间段内对所述数据存储电路中的灰度值数据和所述权重存储电路中的数据权重进行运算,并输出第一数据。

所述数据存储电路1还用于根据所述预设控制指令在第二预设时间段内存储所述第一数据,所述权重存储电路2还用于在所述第二预设时间段内存储所述第一数据所对应的数据权重,所述运算电路3还用于在所述第二预设时间段内对所述数据存储电路中的第一数据和所述权重存储电路中的所述第一数据所对应的数据权重进行运算,并输出第二数据。

在较优的一实施例中,所述图像的灰度值数据为二进制格式的灰度值数据,在其它的实施例中,所述图像的灰度值数据也可以是其他格式的灰度值数据。

其中,所述预设控制指令为预先设置的控制指令,所述第一预设时间与所述第二预设时间段为预先设置的时间段,并且为了节约引擎资源和提高效率,所述第一预设时间段与所述第二预设时间段可以预先交替设置,并在所述第一预设时间段内进行卷积层的计算,在所述第二预设时间段内进行全连接层的计算。所述第一数据和所述第二数据均为图像的特征值数据,并以向量或者矩阵的方式表示。

在本发明实施例中,集成电路包括数据存储电路1、权重存储电路2以及运算电路3,数据存储电路1和权重存储电路2分别连接运算电路3。数据存储电路1根据预设控制指令在第一预设时间段内存储图像的灰度值数据,权重存储电路2在第一预设时间段内存储图像的灰度值数据所对应的数据权重,运算电路3在第一预设时间段内对数据存储电路中的灰度值数据和权重存储电路中的数据权重进行运算,并输出第一数据。数据存储电路1还用于根据预设控制指令在第二预设时间段内存储第一数据,权重存储电路2还用于在第二预设时间段内存储第一数据所对应的数据权重,运算电路3还用于在第二预设时间段内对数据存储电路中的第一数据和权重存储电路中的第一数据所对应的数据权重进行运算,并输出第二数据。本发明实施例中的集成电路可以在所述第一预设时间段内进行卷积运算,在所述第二预设时间段内进行全连接层的计算。因此,可以同时支持卷积层和全连接层的计算,节约卷积神经网络的硬件成本,有效利用卷积神经网络的资源。

图2示出了本发明实施例提供的数据存储电路1的结构,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:

在较优的一实施例中,如图2所示,所述数据存储电路1包括:数据存储器10、n*m-1个选择器、n*m个数据寄存器、n-1个先入先出(英文全称:firstinputfirstoutput,简称fifo)存储器。

每个选择器的第一开关选择端(1)均与第1个数据寄存器d11的输入端d共接于所述数据存储器10的数据输出端,第1至第m-1个选择器的第二开关选择端(2)分别与第1至第m-1个数据寄存器的正相输出端q对应连接,第m个选择器s1m的第二开关选择端(2)和第m个数据寄存器d1m的正相输出端q分别对应连接第1个先入先出存储器f1的输出端和输入端;

以此类推,至第(n-2)*m+1至第(n-1)*m-1个选择器的第二开关选择端(2)分别与第(n-2)*m+1至第(n-1)*m-1个数据寄存器的正相输出端q对应连接,第(n-1)*m个选择器s(n-1)m的第二开关选择端(2)和第(n-1)*m个数据寄存器d(n-1)m的正相输出端q分别对应连接第n-1个先入先出存储器f(n-1)的输出端和输入端;

第(n-1)*m+1至第n*m-1个选择器的第二开关选择端(2)分别与第(n-1)*m+1至第n*m-1个数据寄存器的正相输出端q对应连接,第1至第n*m-1个选择器的输出端分别对应连接第2至第n*m个数据寄存器的输入端d,第1至第n*m个数据寄存器的正相输出端q连接至所述运算电路3;

所述n*m个数据寄存器用于在所述第一预设时间段内接收所述数据存储器10传输的图像灰度值数据,在所述第二预设时间段内接收所述数据存储器10传输的所述第一数据中的数据;所述n*m-1个选择器用于根据所述预设控制指令在第一预设时间段内使得每个选择器的第二开关选择端(2)与输出端接通、第一开关选择端(1)与输出端断开,在第二预设时间段内使得每个选择器的第一开关选择端(1)与输出端接通、第二开关选择端(2)与输出端断开;其中,m、n均为大于1的正整数。在较优的一实施例中,所述n和m相等,例如,n和m均为3。

图3示出了本发明实施例提供的权重存储电路2的结构,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:

在较优的一实施例中,如图3所示,所述权重存储电路2包括权重存储器20以及n*m个权重寄存器,每个权重寄存器的输入端d共接于所述权重存储器20的输出端,第1至第n*m个权重寄存器的正相输出端q连接至所述运算电路3。

所述n*m个权重寄存器用于在所述第一预设时间接收所述权重存储器20传输的图像灰度值数据所对应的数据权重,在所述第二预设时间段内接收所述权重存储器20传输的第一数据所对应的数据权重。

图4示出了本发明实施例提供的运算电路3的结构,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:

在较优的一实施例中,如图4所示,所述运算电路3包括乘法单元301和加法单元302。

所述第1至第n*m个数据寄存器的正相输出端q连接至所述运算电路3包括:第1至第n*m个数据寄存器的正相输出端q连接至所述乘法单元301;

所述第1至第n*m个权重寄存器的正相输出端q连接至所述运算电路3包括:第1至第n*m个权重寄存器的正相输出端q连接所述乘法单元301;

所述乘法单元301的输出端连接所述加法单元302;

所述乘法单元301用于在所述第一预设时间段内,对所述第1至第n*m个数据寄存器传输的图像灰度值数据和所述第1至第n*m个权重寄存器传输的图像灰度值数据所对应的数据权重相乘,并将相乘后的结果传输至所述加法单元302,所述加法单元302用于对所述乘法单元301传输的结果进行相加,获得所述第一数据中的数据;

所述乘法单元301还用于在所述第二预设时间段内,对所述第1至第n*m个数据寄存器传输的所述第一数据中的数据和所述第1至第n*m个权重寄存器传输的所述第一数据所对应的数据权重相乘,并将相乘后的结果传输至所述加法单元302,所述加法单元302用于对所述乘法单元301传输的结果进行相加,获得所述第二数据中的数据。

图5示出了本发明实施例提供的运算电路的结构,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:

在较优的一实施例中,所述乘法单元301包括n*m个乘法器。

所述第1至第n*m个数据寄存器的正相输出端q连接至所述乘法单元301包括:第1至第n*m个数据寄存器的正相输出端q分别对应连接第1至第n*m个乘法器的第一输入端(1);

所述第1至第n*m个权重寄存器的正相输出端q连接所述乘法单元301包括:第1至第n*m个权重寄存器的正相输出端q分别对应连接第1至第n*m个乘法器的第二输入端(2);

所述乘法单元301用于在所述第一预设时间段内,对第1至第n*m个数据寄存器传输的图像灰度值数据和第1至第n*m个权重寄存器传输的图像灰度值数据所对应的数据权重相乘包括:

第1至第n*m个乘法器用于在所述第一预设时间段内对分别从第1至第n*m数据寄存器接收的图像灰度值数据以及第1至第n*m个权重寄存器传输的图像灰度值数据所对应的数据权重相乘;

所述乘法单元301还用于在所述第二预设时间段内,对所述第1至第n*m个数据寄存器传输的所述第一数据中的数据和所述第1至第n*m个权重寄存器传输的所述第一数据所对应的数据权重相乘包括:

第1至第n*m个乘法器用于在所述第二预设时间段内对分别从第1至第n*m数据寄存器接收的所述第一数据中的数据以及第1至第n*m个权重寄存器传输的所述第一数据所对应的数据权重相乘。

在较优的一实施例中,如图5所示,加法单元302包括n+1个加法器。

所述乘法单元301的输出端连接所述加法单元302包括:

第1至第m个乘法器的输出端分别对应连接第1个加法器a1的第1至第m输入端,第1*m+1至第2*m个乘法器的输出端分别对应连接第2个加法器a2的第1至第m输入端,以此类推,第(n-2)*m+1至第(n-1)*m个乘法器的输出端分别对应连接第n-1个加法器a(n-1)的第1至第m输入端,第(n-1)*m+1至第n*m个乘法器的输出端分别对应连接第n个加法器an的第1至第m输入端;

第1至第n个加法器的输出端分别对应连接第n+1个加法器a(n+1)的第1至第n输入端,第n+1个加法器a(n+1)的输出端在所述第一预设时间段内输出所述第一数据,在所述第二预设时间段内输出所述第二数据;

所述加法单元302用于对所述乘法单元301传输的结果进行相加,获得所述第一数据中的数据包括:

第1至第n个加法器,用于在所述第一预设时间段内对第1至第n*m个乘法器传输的结果进行相加,第n+1个加法器a(n+1)用于将第1至第n个加法器的输出相加,获得所述第一数据中的数据;

所述加法单元302用于对所述乘法单元301传输的结果进行相加,获得所述第二数据中的数据包括:

第1至第n个加法器,用于在所述第二预设时间段内对第1至第n*m个乘法器传输的结果进行相加,第n+1个加法器a(n+1)用于将第1至第n个加法器的输出相加,得到所述第二数据中的数据。

在较优的一实施例中,所述数据存储器10是型号为is6ic256al或者is61lv6416或者cy62128b的存储器,n*m个数据寄存器是型号为74ls175或者74ls194的寄存器,所述n*m-1个选择器是型号为sn54hc257或者sn54hc258或者sn74hc257或者sn74hc258的选择器,所述n-1个先入先出存储器是型号为al422或者al422b或者al400b-12或者gs7201al的先入先出存储器,所述权重存储器20是型号为is6ic256al或者is61lv6416或者cy62128b的存储器,所述n*m个权重寄存器是型号为74ls175或者74ls194的寄存器。

在较优的一实施例中,所述n*m个乘法器是型号为gc1496或者gc1496b的乘法器,所述n+1个加法器是型号为74ls283或者74ls580或者74als580的加法器。

以下对集成电路的具体工作原理进行说明:

所述数据存储器10用于将图像灰度值数据传输至所述n*m个数据寄存器中,所述权重存储器20用于将图像的灰度值数据所对应的数据权重传输至所述n*m个权重寄存器中;所述n*m个数据寄存器用于在所述第一预设时间段内接收所述数据存储器10传输的图像灰度值数据,在所述第二预设时间段内接收所述数据存储器10传输的所述第一数据中的数据;所述n*m-1个选择器用于根据所述预设控制指令在第一预设时间段内使得每个选择器的第二开关选择端(2)与输出端接通、第一开关选择端(1)与输出端断开,在第二预设时间段内使得每个选择器的第一开关选择端(1)与输出端接通、第二开关选择端(2)与输出端断开;所述n*m个权重寄存器用于在所述第一预设时间接收所述权重存储器20传输的图像灰度值数据所对应的数据权重,在所述第二预设时间段内接收所述权重存储器20传输的第一数据所对应的数据权重;第1至第n*m个乘法器用于在所述第一预设时间段内对分别从第1至第n*m数据寄存器接收的图像灰度值数据以及第1至第n*m个权重寄存器传输的图像灰度值数据所对应的数据权重相乘,并将相乘后的结果对应传输至第1至第n个加法器,第1至第n个加法器用于在所述第一预设时间段内对第1至第n*m个乘法器传输的结果进行相加,第n+1个加法器a(n+1)用于将第1至第n个加法器的输出相加,获得所述第一数据中的数据;第1至第n*m个乘法器用于在所述第二预设时间段内对分别从第1至第n*m数据寄存器接收的所述第一数据中的数据以及第1至第n*m个权重寄存器传输的所述第一数据所对应的数据权重相乘,并将相乘后的结果传输至第1至第n个加法器,第1至第n个加法器用于在所述第二预设时间段内对第1至第n*m个乘法器传输的结果进行相加,第n+1个加法器a(n+1)用于将第1至第n个加法器的输出相加,得到所述第二数据中的数据。其中,在所述第一预设时间段内,所述集成电路进行卷积层的计算,所述第n+1个加法器a(n+1)输出所述第一数据的数据;在所述第二预设时间段内,所述集成电路进行全连接层的计算,所述第n+1加法器a(n+1)输出所述第二数据中的数据。在本发明实施例中,假设图像包含g*g个灰度值数据,其中,g为大于1的正整数,在较优的一实施例中,g为10。

(1)在进行卷积层的计算时,即在所述第一预设时间段内,每个选择器的第一开关选择端(1)与输出端断开,第二开关选择端(2)与输出端接通:

在第一时刻,所述数据存储器10将图像的第1个灰度值数据传输至第1个数据寄存器d11中,所述权重存储器20将第1至第n*m个数据权重传输至第1至第n*m个权重寄存器中,并在第二时刻至第g*g+n*m时刻,所述第1个至第n*m个权重寄存器中的数据权重均保持不变,第1个乘法器m11的第一输入端(1)接收第1个灰度值数据、第二输入端(2)接收第1个数据权重,并将两者相乘后的结果传输至第1个加法器a1,此时,第2个至第n个数据寄存器和第2个至第n个权重寄存器以及第2个至第n个加法器均无数据,第n+1个加法器a(n+1)接收第1个加法器a1的输入,并输出第1时刻的输出数据。

在第二时刻至第m个时刻中的每个时刻,前一个数据寄存器将其中存储的灰度值数据传输至后一个数据寄存器中,所述数据存储器10依次将第2个至第m个灰度值数据每隔一个时刻传输1个灰度值数据至第1个数据寄存器d11,在第m+1时刻至第g时刻,第m个数据寄存器d1m将前(g-m-1)个灰度值数据每隔一个时刻传输一个灰度值数据至第1个先入先出存储器f1中,即在第g个时刻,第1个先入先出存储器f1存储了(g-m-1)个灰度值数据,前一个数据寄存器将其中存储的灰度值数据传输至后一个数据寄存器中,所述数据存储器10依次将第m+1个至第g个灰度值数据每隔一个时刻传输1个灰度值数据至第1个数据寄存器d11;在第g+1时刻至第g+m时刻,第1个先入先出存储器f1依次将前m个灰度值数据每隔一个时刻传输一个灰度值数据至第m+1个数据寄存器d(1m+1),前一个数据寄存器将其中存储的灰度值数据传输至后一个数据寄存器中,所述数据存储器10依次将第g+1个至第g+m个灰度值数据每隔一个时刻传输1个灰度值数据至第1个数据寄存器d11;以此类推,直至第(n-1)*g+m时刻,此时n*m个数据寄存器中每个存储器均存储了灰度值数据,第1个先入先出存储器f1至第n-1个先入先出存储器f(n-1)存储了(g-m)*(n-1)个灰度值数据。

在每个时刻均有第1个乘法器m11至第n*m个乘法器mnm的第一输入端(1)与第二输入端(2)对应接收第1个数据寄存器d11至第n*m个数据寄存器dnm输出的灰度值数据和第1个权重寄存器w11至第n*m个权重寄存器wnm输出的数据权重,并将相乘后的数据对应输入第1个加法器a1至第n个加法器an的第1输入端至第m输入端,第n+1个加法器a(n+1)将第1个加法器a1至第n个加法器an的输出的数据相加得到每个时刻的输出数据;直至在g*g+n*m时刻,将所有g*g个灰度值数据与数据权重计算完成为止,此时将第1时刻至第g*g+n*m时刻中每个时刻的输出数据相加,并将相加的结果作为所述第一数据的第1个数据;然后更新所述第1至第n*m个权重寄存器中的数据权重,并重复上述过程,获得所述第一数据中的第二个数据,即每隔g*g+n*m时刻更新一次第1至第n*m个权重寄存器中的数据权重,直至将图像的灰度值数据所对应的数据权重更新完毕,获得所述第一数据中的全部数据,并在计算全连接层之前,将所述第一数据存储至所述数据存储器10中。在本发明实施例中,假设获得的所述第一数据包括k*p*q个数据,其中,k、p以及q均为大于1的正整数,且满足p*q小于或者等于n*m,在较优的一实施例中,所述k、p以及q分别为80、4以及2。

(2)在进行全连接层的计算时,即在所述第二预设时间段内,每个选择器的第一开关选择端(1)与输出端接通,第二开关选择端(2)与输出端断开,此时,所述n-1个先入先出存储器处于断开状态,不起作用,所述数据存储器10存储所述第一数据:

鉴于存在p*q小于n*m以及p*q等于n*m的两种情况,且在p*q小于n*m,n*m-p*q个数据寄存器、n*m-p*q个权重寄存器是不参与计算的,此处分为p*q小于n*m以及p*q等于n*m两种情况进行说明。

(a)在p*q小于n*m时,第p*q+1至第n*m-p*q个数据寄存器、第p*q+1至第n*m-p*q权重寄存器以及第p*q+1至第n*m-p*q个乘法器均不参与计算:

在第一时刻,所述数据存储器10将第一数据中第1个数据传输至第1个数据寄存器d11;在第二时刻,所述数据存储器10将第一数据中的第1个数据传输至第2个数据寄存器d12,将第一数据中的第2个数据传输至第1个数据寄存器d11;在第三时刻,所述数据存储器10将第一数据中的第1个数据传输至第3个数据寄存器d13,将第一数据中的第2个数据传输至第2个数据寄存器d12,将第一数据中的第3个数据传输至第1个数据寄存器d11;在第四时刻,所述数据存储器10将第一数据中的第1个数据传输至第4个数据寄存器d14,将第一数据中的第2个数据传输至第3个数据寄存器d13,将第一数据中的第3个数据传输至第2个数据寄存器d12,将第一数据中的第4个数据传输至第1个数据寄存器d11,直至第p*q时刻第1至第p*q个数据寄存器中均存入数据,第p*q+1至第n*m个数据寄存器并未使用,也不参与计算。在第p*q+1时刻,所述数据存储器10将第p*q-1个数据寄存器中的数据传输至第p*q个数据寄存器dpq,将第p*q-2个数据寄存器d(p*q-2)中的数据传输至第p*q-1个数据寄存器d(p*q-1),以此类推,将第1个数据寄存器d11中的数据传输至第2个数据寄存器d12,所述数据存储器10将第一数据中第p*q+1个数据传输至第1数据寄存器d11中;以此类推,在之后的每个时刻均有,所述数据存储器10将当前数据寄存器中的数据传输至下一个数据寄存器,将上一个数据寄存器中的数据传输至当前数据寄存器,并传输一个新的数据至第1个数据寄存器d11,直至第k*p*q+p*q时刻,所述数据存储器10将所述第一数据中的最后一个数据传输至第p*q个数据寄存器dpq。

所述权重存储器20在第一时刻,将所述第一数据所对应的数据权重中的第1个至第p*q个数据权重传输至第1个至第p*q个权重寄存器,第p*q+1至第n*m个权重寄存器并未使用,也不参与计算。并直至第k*p*q+p*q时刻,所述第1个至第p*q个权重寄存器中的数据权重均保持不变。

在每个时刻均有第1个乘法器m11至第p*q个乘法器mpq的第一输入端(1)与第二输入端(2)对应接收第1个数据寄存器d11至第p*q个数据寄存器dpq传输的所述第一数据中的数据和第1个权重寄存器w11至第p*q个权重寄存器wpq传输的所述第一数据所对应的数据权重,并将相乘后的数据对应输入第1个加法器a1至第n个加法器an的第一输入端至第m输入端,第n+1个加法器a(n+1)将第1个加法器a1至第n个加法器an的输出的数据相加得到一个中间数据。

之后,所述权重存储器20每隔k*p*q+p*q个时刻依次将p*q个数据权重存储至所述第1个至第p*q个权重寄存器中,即所述第1至第p*q个权重寄存器每隔k*p*q+p*q个时刻更新一次数据权重,并在每k*p*q+p*q个时刻内,所述第1个至第p*q个权重寄存器中的数据权重保持不变,并重复更新k次,每更新一次数据权重,均重复上述计算过程,直至更新k*p*q个数据权重,至此所述第n+1个加法器a(n+1)获得k个中间数据,并将所述k个中间数据相加的和作为所述第二数据的第一个数据。按照上述过程,每更新k*p*q个数据权重,即可获得所述第二数据中的一个数据,直至获得所述第二数据中的全部数据。在本发明实施例中,假设所述第一数据包括k*p*q个数据,且所述第一数据所对应的数据权重包括k*p*q*t个数据权重,则运算过后,所述第二数据包括t个数据,其中,t为大于1的正整数,在较优的一实施例中,t为1280。

(b)在p*q等于n*m时,n*m个数据寄存器、n*m个权重寄存器以及n*m个乘法器均参与计算,

在第一时刻,所述数据存储器10将第一数据中第1个数据传输至第1个数据寄存器d11;在第二时刻,所述数据存储器10将第一数据中的第1个数据传输至第2个数据寄存器d12,将第一数据中的第2个数据传输至第1个数据寄存器d11;在第三时刻,所述数据存储器10将第一数据中的第1个数据传输至第3个数据寄存器d13,将第一数据中的第2个数据传输至第2个数据寄存器d12,将第一数据中的第3个数据传输至第1个数据寄存器d11;在第四时刻,所述数据存储器10将第一数据中的第1个数据传输至第4个数据寄存器d14,将第一数据中的第2个数据传输至第3个数据寄存器d13,将第一数据中的第3个数据传输至第2个数据寄存器d12,将第一数据中的第4个数据传输至第1个数据寄存器d11,直至第n*m时刻第1至第n*m个数据寄存器中均存入数据。在第n*m+1时刻,所述数据存储器10将第n*m-1个数据寄存器中的数据传输至第n*m个数据寄存器dnm,将第n*m-2个数据寄存器d(nm-2)中的数据传输至第n*m-1个数据寄存器d(nm-1),以此类推,将第1个数据寄存器d11中的数据传输至第2个数据寄存器d12,所述数据存储器10将第一数据中第n*m+1个数据传输至第1数据寄存器d11中;以此类推,在之后的每个时刻均有,所述数据存储器10将当前数据寄存器中的数据传输至下一个数据寄存器,将上一个数据寄存器中的数据传输至当前数据寄存器,并传输一个新的数据至第1个数据寄存器d11,直至第k*p*q+n*m时刻,所述数据存储器10将所述第一数据中的最后一个数据传输至第n*m个数据寄存器dnm。

所述权重存储器20在第一时刻,将所述第一数据所对应的数据权重中的第1个至第n*m个数据权重传输至第1个至第n*m个权重寄存器。并直至第k*p*q+n*m时刻,所述第1个至第n*m个权重寄存器中的数据权重均保持不变。

在每个时刻均有第1个乘法器m11至第n*m个乘法器mnm的第一输入端(1)与第二输入端(2)对应接收第1个数据寄存器d11至第n*m个数据寄存器dnm传输的所述第一数据中的数据和第1个权重寄存器w11至第n*m个权重寄存器wnm传输的所述第一数据所对应的数据权重,并将相乘后的数据对应输入第1个加法器a1至第n个加法器an的第一输入端至第m输入端,第n+1个加法器a(n+1)将第1个加法器a1至第n个加法器an的输出的数据相加得到一个中间数据。

之后,所述权重存储器20每隔k*p*q+n*m个时刻依次将n*m个数据权重存储至所述第1个至第n*m个权重寄存器中,即所述第1至第n*m个权重寄存器每隔k*p*q+n*m个时刻更新一次数据权重,并在每k*p*q+n*m个时刻内,所述第1个至第n*m个权重寄存器中的数据权重保持不变,并重复更新k次,每更新一次数据权重,均重复上述计算过程,直至更新k*p*q个数据权重,至此所述第n+1个加法器a(n+1)获得k个中间数据,并将所述k个中间数据相加的和作为所述第二数据的第一个数据。按照上述过程,每更新k*p*q个数据权重,即可获得所述第二数据中的一个数据,直至获得所述第二数据中的全部数据。

在进行卷积层计算时,将用二维矩阵表示的图像的灰度值数据转化为三维矩阵,将用二维矩阵表示的图像的灰度值所对应的数据权重也转化为三维矩阵,并将灰度值数据矩阵与数据权重矩阵进行卷积运算。在进行全连接层运算时,全连接层的输入,即第一数据,是一个以向量形式表示的数据,假设所述第一数据用data(1*s)表示(其中,s为正整数),为了使其也能够采用卷积形式的运算,我们将其转化为data(1*s)=data(k*p*q),即将以向量形式表示的所述第一数据中所包含的数据转化为一个三维矩阵的形式;对应的,假设全连接层的数据权重的输入用weight(s*t)表示(其中,s和t均为正整数),我们可以将其转化为weight(s*t)=weight(k*p*q*t),即将数据权重也转化为一个三维矩阵的形式。这样,将data(1*s)拆分成data(k*p*q),将weight(s*t)拆分成t个weight(k*p*q),将data(k*p*q)和weight(k*p*q)进行t次的卷积运算,获得t个数据,即所述第二数据是包含t个数据的向量,即可以用(1*t)的向量来表示,这个结果与向量(1*s)和向量(s*t)的乘积结果是相同的。

在本发明实施例中,集成电路包括数据存储器10、n*m个数据寄存器、权重存储器20、n*m个权重寄存器、n-1个先入先出存储器,n*m个乘法器以及n+1个加法器,且在所述第一预设时间段内,所述数据存储器10、n*m个数据寄存器、权重存储器20、n*m个权重寄存器、n-1个先入先出存储器,n*m个乘法器以及n+1个加法器能够进行卷积层的计算,在所述第二预设时间段内,所述数据存储器10、n*m个数据寄存器、权重存储器20、n*m个权重寄存器、n-1个先入先出存储器,n*m个乘法器以及n+1个加法器能够进行卷积层的计算,因此,本发明实施例中的集成电路可以同时支持卷积层和全连接层的计算,节约卷积神经网络的硬件成本,有效利用卷积神经网络的资源。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个模块或装置也可以由一个模块或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1