神经网络运算方法及相关设备与流程

文档序号:22615185发布日期:2020-10-23 19:14阅读:157来源:国知局
神经网络运算方法及相关设备与流程

本申请涉及神经网络技术领域,尤其涉及一种神经网络运算方法及相关设备。



背景技术:

随着计算机技术对神经网络运算速度的追求,人们提出了加速算法,用于加速卷积神经网络运算。其中,对于卷积核(kernel)为3×3的卷积神经网络运算来说,采用加速算法加速运算最为高效。然而,目前只能采用特定的专属硬件实现加速算法加速卷积核为3×3的卷积神经网络运算,无法复用现有的硬件实现加速算法加速卷积核为3×3的卷积神经网络运算,从而导致硬件资源浪费。



技术实现要素:

本申请实施例公开了一种神经网络运算方法及相关设备,能够充分利用现有硬件资源实现加速算法对卷积神经网络运算的加速。

本申请实施例第一方面公开了一种神经网络运算方法,应用于神经网络计算单元,所述神经网络计算单元用于卷积神经网络运算,所述卷积神经网络包括目标卷积核,所述神经网络计算单元包括a个第一加法器、a个乘法器和b个第二加法器,其中,a为4的指数且a大于等于8,b为a的二分之一,所述方法包括:

通过所述a个第一加法器、所述a个乘法器和所述b个第二加法器根据输入所述目标卷积核的a个第一目标数据执行一维加速算法运算,得到所述目标卷积核的第一运算周期的卷积运算结果;

将所述a个第一目标数据进行右移,移出2个第一目标数据的同时移入2个新的目标数据,得到a个第二目标数据;

通过所述a个第一加法器、所述a个乘法器和所述b个第二加法器根据所述a个第二目标数据执行所述一维加速算法运算,得到所述目标卷积核的第二运算周期的卷积运算结果;

根据所述第一运算周期的卷积运算结果和所述第二运算周期的卷积运算结果得到所述目标卷积核的卷积运算结果。

本申请实施例第二方面公开了一种神经网络运算方法,应用于二维卷积神经网络运算,所述二维卷积神经网络包括第一卷积核、第二卷积核和第三卷积核,所述方法包括:

针对所述第一卷积核,执行如本申请实施例第一方面所述的神经网络运算方法,得到所述第一卷积核的卷积运算结果;

针对所述第二卷积核,执行如本申请实施例第一方面所述的神经网络运算方法,得到所述第二卷积核的目标卷积运算结果,并根据所述第一卷积核的卷积运算结果和所述第二卷积核的目标卷积运算结果得到所述第二卷积核的卷积运算结果;

针对所述第三卷积核,执行如本申请实施例第一方面所述的神经网络运算方法,得到所述第三卷积核的目标卷积运算结果,并根据所述第二卷积核的卷积运算结果和所述第三卷积核的目标卷积运算结果得到所述二维卷积神经网络的卷积运算结果。

本申请实施例第三方面公开了一种神经网络运算装置,应用于神经网络计算单元,所述神经网络计算单元用于卷积神经网络运算,所述卷积神经网络包括目标卷积核,所述神经网络计算单元包括a个第一加法器、a个乘法器和b个第二加法器,其中,a为4的指数且a大于等于8,b为a的二分之一,所述神经网络运算装置包括处理单元,所述处理单元用于:

通过所述a个第一加法器、所述a个乘法器和所述b个第二加法器根据输入所述目标卷积核的a个第一目标数据执行一维加速算法运算,得到所述目标卷积核的第一运算周期的卷积运算结果;

以及将所述a个第一目标数据进行右移,移出2个第一目标数据的同时移入2个新的目标数据,得到a个第二目标数据。

以及通过所述a个第一加法器、所述a个乘法器和所述b个第二加法器根据所述a个第二目标数据执行所述一维加速算法运算,得到所述目标卷积核的第二运算周期的卷积运算结果;

以及根据所述第一运算周期的卷积运算结果和所述第二运算周期的卷积运算结果得到所述目标卷积核的卷积运算结果。

本申请实施例第四方面公开了一种神经网络运算设备,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如本申请实施例第一方面任一项所述的方法中的步骤的指令。

本申请实施例第五方面公开了一种芯片,其特征在于,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片的设备执行如本申请实施例第一方面中任一项所述的方法。

本申请实施例第六方面公开了一种计算机可读存储介质,其特征在于,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如本申请实施例第一方面中任一项所述的方法。

本申请实施例第七方面公开了一种计算机程序,所述计算机程序使得计算机执行如本申请实施例第一方面中任一项所述的方法。

可以看出,本申请通过利用现有的卷积运算硬件中的a个第一加法器、a个乘法器和b个第二加法器对输入卷积核运算的a个第一目标数据执行一维加速算法运算,得到第一运算周期的卷积运算结果;然后将a个第一目标数据进行右移,移出2个第一目标数据的同时移入2个新的目标数据,得到a个第二目标数据;再通过a个第一加法器、a个乘法器和b个第二加法器对a个第二目标数据执行一维加速算法运算,得到第二运算周期的卷积运算结果;再将第一运算周期的卷积运算结果和第二运算周期的卷积运算结果累加,得到卷积核运算的运算结果;从而能够充分利用现有硬件资源实现加速算法对卷积神经网络运算的加速。

附图说明

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

图1是本申请实施例提供的一种卷积运算过程示意图;

图2是本申请实施例提供的一种卷积运算硬件结构示意图;

图3是本申请实施例提供的一种神经网络运算方法的流程示意图;

图4是本申请实施例提供的另一种卷积运算硬件结构示意图;

图5是本申请实施例提供的又一种卷积运算硬件结构示意图;

图6是本申请实施例提供的一种神经网络运算装置的结构示意图;

图7是本申请实施例提供的一种神经网络运算设备的结构示意图;

图8是本申请实施例提供的一种芯片硬件结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

请参阅图1,一种卷积运算过程示意图。假设计算卷积核为3×3的卷积神经网络为例,一个神经网络计算单元(pe)有8个乘累加单元(mac),整个神经网络处理器计算阵列由多个神经网络计算单元组成,那么整个计算过程描述如下:

首先,将输入通道(inputchannel)映射到神经网络计算单元上,由于每个神经网络计算单元只有8个乘累加单元,所以将整个输入特征(inputfeaturemap)进行垂直切割,每8个像素点为一个图像块,这样一个乘累加单元可以计算一个图像块的卷积运算,整个输入特征的卷积运算由多个乘累加单元联合完成。

然后,对于每个神经网络计算单元来说,每9个周期完成一个输出通道(outputchannel)的一行的8个像素点的卷积运算,具体如下:

周期1:读入输入通道的第一行的8个数据,也即数据0、数据1、数据2、数据3、数据4、数据5、数据6和数据7,它们分别与卷积核的权重w0相乘,分别得到第一行的8个数据的部分和(partialsum),也即部分和1。

周期2:第一行数据右移,移入数据为相邻神经网络计算单元的移出数据或填充(padding)数据,也即将第一行的数据0移出,同时在左边移入数据8,得到第二行的8个数据,也即数据1、数据2、数据3、数据4、数据5、数据6、数据7和数据8;然后将第二行的8个数据分别与卷积核的权重w1相乘,并将第二行的8个数据中的每个数据与w1相乘的结果与对应的周期1的部分和1进行累加,得到部分和2。

周期3:第一行数据继续右移,移入数据为相邻神经网络计算单元的移出数据或填充(padding)数据,也即将第二行的数据1移出,同时在左边移入数据9,得到第三行的8个数据,也即数据2、数据3、数据4、数据5、数据6、数据7、数据8和数据9;然后将第三行的8个数据分别与卷积核的权重w2相乘,并将第三行的8个数据中的每个数据与w2相乘的结果与对应的周期2的部分和2进行累加,得到部分和3,这个部分和3就是第一行卷积核计算完之后的部分和。

周期4至周期6:读入输入通道的第二行的8个数据,重复周期1至周期3的整个计算过程,分别得到部分和4、部分和5和部分和6;其中,周期4、周期5和周期6的卷积核的权重分别为w3、w4和w5;在计算周期4的部分和4时,需要加上周期3的部分和3;其中,部分和6为第二行卷积核计算完后的部分和。

周期7至周期9:读入输入通道的第三行的8个数据,重复周期1至周期3的整个计算过程,分别得到部分和7、部分和8和部分和9;其中,周期7、周期8和周期9的卷积核的权重分别为w6、w7和w8;在计算周期7的部分和7时,需要加上周期6的部分和6;其中,部分和9就是整个卷积核计算完毕之后的卷积值。

请参阅图2,图2是本申请实施例提供的一种卷积运算硬件结构示意图。图2是用于卷积运算的一个计算单元,其可用于图1所示的卷积计算。如图2所示,在一个计算单元中,有8个乘累加单元,每个乘累加单元中有一个乘法器和一个加法器,故一个计算单元中包含8个乘法器和8个加法器。其中,在运算过程中,每个运算周期为每个乘累加单元提供同一个一个权重(weight),每个周期的权重不同,利用9个周期实现一个卷积核为3×3的卷积运算。

举例来说,例如读入输入通道的第一行卷积核的8个数据,也即周期1的8个数据,也即数据0、数据1、数据2、数据3、数据4、数据5、数据6和数据7,通过乘法器它们分别与卷积核的权重w0相乘,由于周期1不存在与之相加的前一部分和,周期1的8个数据与卷积核的权重w0相乘直接得到部分和1。然后,周期1的8个数据右移,得到周期2的8个数据,也即也即数据1、数据2、数据3、数据4、数据5、数据6、数据7和数据8;通过乘法器将周期2的8个数据分别与卷积核的权重w1相乘,周期2的8个数据中每个数据分别对应得到一个乘法结果,将对应位置的周期1的部分和1返回到加法器,通过加法器将周期2的8个数据中每个数据对应的乘法结果与对应位置的周期1的部分和1相加,得到部分和2。再重复周期2的计算过程,得到周期3的部分和3,从而得到第一行卷积核的运算结果。继续读入输入通道的第二行卷积核的8个数据,重复周期1至周期3,得到周期4至周期6的卷积运算结果,从而得到第二行卷积核的运算结果,其中,在计算周期4的部分和4时,需要加上周期3的部分和3。继续读入输入通道的第三行卷积核的8个数据,重复周期1至周期3,得到周期7至周期9的卷积运算结果,从而得到整个卷积核的运算结果,其中,在计算周期7的部分和7时,需要加上周期6的部分和6。

请参阅图3,图3是本申请实施例提供的一种神经网络运算方法,应用于神经网络计算单元,所述神经网络计算单元用于卷积神经网络运算,所述卷积神经网络包括目标卷积核,所述神经网络计算单元包括a个第一加法器、a个乘法器和b个第二加法器,其中,a为4的指数且a大于等于8,b为a的二分之一,该方法包括但不限于如下步骤:

步骤s301:通过所述a个第一加法器、所述a个乘法器和所述b个第二加法器根据输入所述目标卷积核的a个第一目标数据执行一维加速算法运算,得到所述目标卷积核的第一运算周期的卷积运算结果。

具体地,所述卷积神经网络为卷积核为3×3的卷积神经网络,所述目标卷积核为所述卷积核中的其中一行,假设a为8,也即通过所述8个第一加法器、所述8个乘法器和所述4个第二加法器根据输入所述目标卷积核的8个第一目标数据执行一维加速算法运算,得到所述目标卷积核的第一运算周期的卷积运算结果。

其中,所述一维加速算法可以为一维winograd算法,下面简单介绍一下一维winograd算法。以卷积核为1×3的一维winograd卷积加速算法为例,假设输入特征为[d0,d1,d2,d3],卷积核kernel为[w0,w1,w2],卷积计算结果为2个值[r0,r1]。那么,r0可以表示为m0+m1+m2,r1可以表示为m1-m2-m3;其中,m0、m1、m2和m3可以提前计算好,也可以在weight读取过程中动态计算,其计算公式如下:

m0=(d0-d2)×g0,其中,g0=w0;

m1=(d1+d2)×g1,其中,g1=(w0+w1+w2)/2;

m2=(d2-d1)×g2,其中,g2=(w0-w1-w2)/2;

m3=(d1-d3)×g3,其中,g3=w2。

由此可知,一维的winograd算法在计算卷积核为1×3的卷积运算过程中,利用4个乘法器和4个加法器计算出2个结果。而普通的卷积计算,却需要6个乘法器和4个加法器才能够同时计算出2个结果。因此,在乘法器资源一定的情况下,winograd算法是可以加速卷积计算。

步骤s302:将所述a个第一目标数据进行右移,移出2个第一目标数据的同时移入2个新的目标数据,得到a个第二目标数据。

具体地,假设c为2,也即将所述8个第一目标数据进行右移,移出2个第一目标数据的同时移入2个新的目标数据,得到8个第二目标数据。

其中,移入的新的目标数据为相邻神经网络计算单元的移出数据或填充数据。

步骤s303:通过所述a个第一加法器、所述a个乘法器和所述b个第二加法器根据所述a个第二目标数据执行所述一维加速算法运算,得到所述目标卷积核的第二运算周期的卷积运算结果。

具体地,也即通过所述8个第一加法器、所述8个乘法器和所述4个第二加法器根据输入所述目标卷积核的8个第二目标数据执行一维加速算法运算,得到所述目标卷积核的第一运算周期的卷积运算结果。

步骤s304:根据所述第一运算周期的卷积运算结果和所述第二运算周期的卷积运算结果得到所述目标卷积核的卷积运算结果。

具体地,由于一维加速算法一次运算可以得到2个运算结果,也即a个目标数据中的其中2个的运算结果,而a为4的指数且a大于等于8,则至少需要2个周期才能得到4个运算结果。而当a为4的2倍及以上时,可以在一个运算周期中叠加运算一维加速算法。例如,a为8时,读取输入通道的8个第一目标数据,第一周期中运算2次一维加速算法,也即8个第一目标数据分为2组,每4个第一目标数据运算一次一维加速算法,分别得到2个运算结果,则8个第一目标数据一个运算周期一共可以得到4个运算结果;再运算第二周期,又得到4个运算结果,将第一运算周期的4个运算结果和第二运算周期的4个运算结果组合得到该输入的8个第一目标数据的运算结果,也即得到该卷积核的运算结果。

可以看出,本申请实施例提供的神经网络运算方法,通过利用现有的卷积运算硬件中的a个第一加法器、a个乘法器和b个第二加法器对输入卷积核运算的a个第一目标数据执行一维加速算法运算,得到第一运算周期的卷积运算结果;然后将a个第一目标数据进行右移,移出2个第一目标数据的同时移入2个新的目标数据,得到a个第二目标数据;再通过a个第一加法器、a个乘法器和b个第二加法器对a个第二目标数据执行一维加速算法运算,得到第二运算周期的卷积运算结果;再将第一运算周期的卷积运算结果和第二运算周期的卷积运算结果累加,得到卷积核运算的运算结果;从而能够充分利用现有硬件资源实现加速算法对卷积神经网络运算的加速。

在一些可能的示例中,所述新的目标数据为与所述神经网络计算单元相邻的神经网络计算单元移出的目标数据或填充数据。

在一些可能的示例中,所述通过所述a个第一加法器、所述a个乘法器和所述b个第二加法器根据输入所述目标卷积核的a个第一目标数据执行一维加速算法运算,得到所述目标卷积核的第一运算周期的卷积运算结果,包括:通过所述a个第一加法器根据所述a个第一目标数据执行所述一维加速算法的第一加法运算,得到a个第一运算数据;通过所述a个乘法器根据所述a个第一运算数据和所述一维加速算法的权重执行所述一维加速算法的乘法运算,得到a个第二运算数据;通过所述b个第二加法器根据所述a个第二运算数据执行所述一维加速算法的第二加法运算,得到所述目标卷积核的第一运算周期的卷积运算结果。

举例来说,假设a为4,输入特征的4个第一目标数据为[d0,d1,d2,d3],先通过4个第一加法器根据4个第一目标数据执行一维加速算法的第一加法运算,也即执行d0-d2,d1+d2,d2-d1,d1-d3,得到4个第一运算数据;然后通过4个乘法器根据4个第一运算数据和一维加速算法的权重执行一维加速算法的乘法运算,也即执行m0=(d0-d2)×g0,m1=(d1+d2)×g1,m2=(d2-d1)×g2,m3=(d1-d3)×g3,得到4个第二运算数据m0、m1、m2和m3;在通过所述2个第二加法器根据4个第二运算数据执行一维加速算法的第二加法运算,也即执行m0+m1+m2,m1-m2-m3,得到两个运算结果[r0、r1]。

假设a为8,输入特征的8个第一目标数据为[d0,d1,d2,d3,d4,d5,d6,d7],将其分为两组[d0,d1,d2,d3]和[d4,d5,d6,d7],则有8个第一加法器、8个乘法器和4个第二加法器,两组同时执行一维加速算法,最终同时得到两组[r0、r1],也即4个运算结果。

在一些可能的示例中,在通过所述a个乘法器根据所述a个第一运算数据和所述一维加速算法的权重执行一维加速算法的乘法运算,得到a个第二运算数据之前,所述方法还包括:根据所述目标卷积核的权重确定所述一维加速算法的权重。

举例来说,假设卷积神经网络为卷积核为3×3的卷积神经网络,有第一行卷积核的权重w0、w1、w2,则一维加速算法的权重g0=w0,g1=(w0+w1+w2)/2,g2=(w0-w1-w2)/2,g3=w2;有第二行卷积核的权重w3、w4、w5,则一维加速算法的权重g0=w3,g1=(w3+w4+w5)/2,g2=(w3-w4-w5)/2,g3=w5;有第三行卷积核的权重w6、w7、w8,则一维加速算法的权重g0=w6,g1=(w6+w7+w8)/2,g2=(w6-w7-w8)/2,g3=w8。

在一些可能的示例中,所述通过所述a个第一加法器根据所述a个第一目标数据执行所述一维加速算法的第一加法运算,得到a个第一运算数据,包括:针对c个第一目标数据组中的每一组执行如下操作,得到c个第一运算数据组,所述c个第一运算数据组中的每一组包括4个第一运算数据,所述c为a的四分之一,所述c个第一目标数据组为所述a个第一目标数据按照每4个为一组分组得到,所述c个第一目标数据组与c个第一加法器组一一对应,所述c个第一加法器组为所述a个第一加法器按照每4个为一组分组得到,所述c个第一加法器组中的每一组执行的运算操作相同:通过当前处理的第一目标数据组对应的第一加法器组执行所述一维加速算法的第一加法运算,得到当前处理的第一目标数据组对应的第一运算数据组。

举例来说,请一并参阅图4,假设a为8,通过所述8个第一加法器中的4个第一加法器根据输入所述目标卷积核的8个第一目标数据中的4个第一目标数据执行所述一维加速算法的第一加法运算,得到第一组的4个第一运算数据;通过所述8个第一加法器中的另外4个第一加法器根据输入所述目标卷积核的8个第一目标数据中的另外4个第一目标数据进行所述一维加速算法的第一加法运算,得到第二组的4个第一运算数据。具体地,在周期一中,输入特征的8个第一目标数据为[d0,d1,d2,d3,d4,d5,d6,d7],将其分为两组[d0,d1,d2,d3]和[d4,d5,d6,d7];对于第一组[d0,d1,d2,d3],通过8个第一加法器中的4个第一加法器执行d0-d2,d1+d2,d2-d1,d1-d3,得到第一组的4个第一运算数据;对于第二组[d4,d5,d6,d7],通过8个第一加法器中的另外4个第一加法器执行d4-d6,d5+d6,d6-d5,d5-d7,得到第二组的4个第一运算数据。

又举例来说,请一并参阅图5,假设a为16,在周期一中,输入特征的16个第一目标数据为[d0,d1,d2,......,d15],将其分为4组,分别为[d0,d1,d2,d3]、[d4,d5,d6,d7]、[d8,d9,d10,d11]和[d12,d13,d14,d15];对于第一组[d0,d1,d2,d3],通过16个第一加法器中的第一加法器组1的4个第一加法器执行d0-d2,d1+d2,d2-d1,d1-d3,得到第一运算数据组1的4个第一运算数据;对于第二组[d4,d5,d6,d7],通过16个第一加法器中的第一加法器组1的4个第一加法器执行d4-d6,d5+d6,d6-d5,d5-d7,得到第一运算数据组2的4个第一运算数据;对于第三组[d8,d9,d10,d11],通过16个第一加法器中的第一加法器组3的4个第一加法器执行d8-d10,d9+d10,d10-d9,d9-d11,得到第一运算数据组3的4个第一运算数据;对于第四组[d12,d13,d14,d15],通过16个第一加法器中的第一加法器组4的4个第一加法器执行d12-d14,d13+d14,d14-d13,d13-d15,得到第一运算数据组2的4个第一运算数据。

在一些可能的示例中,所述通过所述a个乘法器根据所述a个第一运算数据和所述一维加速算法的权重执行一维加速算法的乘法运算,得到a个第二运算数据,包括:针对所述c个第一运算数据组中的每一组和所述一维加速算法的4个权重执行如下操作,得到c个第二运算数据组,所述c个第二运算数据组中的每一组包括4个第二运算数据,所述c个第一运算数据组中的每一组的4个第一运算数据与所述一维加速算法的4个权重一一对应,所述c个第一运算数据组与c个乘法器组一一对应,所述c个乘法器组为所述a个乘法器按照每4个为一组分组得到:通过当前处理的第一运算数据组对应的乘法器组执行所述一维加速算法的乘法运算,得到当前处理的第一运算数据组对应的第二运算数据组。

举例来说,请继续参阅图4,通过所述8个乘法器中的4个乘法器根据所述第一组的4个第一运算数据和所述一维加速算法的4个权重执行一维加速算法的乘法运算,得到第一组的4个第二运算数据,所述第一组的4个第一运算数据与所述加速算法的4个权重一一对应;通过所述8个乘法器中的另外4个乘法器根据所述第二组的4个第一运算数据和所述一维加速算法的4个权重执行一维加速算法的乘法运算,得到第二组的4个第二运算数据,所述第二组的4个第一运算数据与所述加速算法的4个权重一一对应。具体地,在周期一中,对于第一组的4个第一运算数据,通过8个乘法器中的4个乘法器执行m0=(d0-d2)×g0,m1=(d1+d2)×g1,m2=(d2-d1)×g2,m3=(d1-d3)×g3,得到第一组的4个第二运算数据m0、m1、m2和m3;对于第二组的4个第一运算数据,通过8个乘法器中的另外4个乘法器执行m4=(d4-d6)×g0,m5=(d5+d6)×g1,m6=(d6-d5)×g2,m7=(d5-d7)×g3,得到第二组的4个第二运算数据m4、m5、m6和m7。

举例来说,请继续参阅图5,在周期一中,对于第一运算数据组1,通过16个乘法器中的乘法器组1的4个乘法器执行m0=(d0-d2)×g0,m1=(d1+d2)×g1,m2=(d2-d1)×g2,m3=(d1-d3)×g3,得到第二运算数据组1的4个第二运算数据m0、m1、m2和m3;对于第一运算数据组2,通过16个乘法器中的乘法器组2的4个乘法器执行执行m4=(d4-d6)×g0,m5=(d5+d6)×g1,m6=(d6-d5)×g2,m7=(d5-d7)×g3,得到第二运算数据组2的的4个第二运算数据m4、m5、m6和m7;对于第一运算数据组3,通过16个乘法器中的乘法器组3的4个乘法器执行m8=(d8-d10)×g0,m9=(d9+d10)×g1,m10=(d10-d9)×g2,m11=(d9-d11)×g3,得到第二运算数据组3的4个第二运算数据m8、m9、m10和m11;对于第一运算数据组4,通过16个乘法器中的乘法器组4的4个乘法器执行m0=(d12-d14)×g0,m1=(d13+d14)×g1,m2=(d14-d13)×g2,m3=(d13-d15)×g3,得到第二运算数据组4的4个第二运算数据m12、m13、m14和m15。

在一些可能的示例中,所述通过所述b个第二加法器根据所述a个第二运算数据执行所述一维加速算法的第二加法运算,得到所述目标卷积核的第一运算周期的卷积运算结果,包括:针对所述c个第二运算数据组中的每一组执行如下操作,得到c个卷积运算结果组,所述c个卷积运算结果组中的每一组包括2个卷积运算结果,所述c个第二运算数据组与c个第二加法器组一一对应,所述c个第二加法器组为所述b个乘法器按照每2个为一组分组得到,所述c个第二加法器组中的每一组执行的运算操作相同:通过当前处理的第二运算数据组对应的第二加法器组执行所述一维加速算法的第二加法运算,得到当前处理的第二运算数据组对应的卷积运算结果组。

举例来说,请继续参阅图4,通过所述4个第二加法器中的2个第二加法器根据所述第一组的4个第二运算数据执行所述一维加速算法的第二加法运算,得到第一组的2个卷积运算结果;通过所述4个第二加法器中的另外2个第二加法器根据所述第二组的4个第二运算数据执行所述一维加速算法的第二加法运算,得到第二组的2个卷积运算结果;根据所述第一组的2个卷积运算结果和所述第二组的2个卷积运算结果得到所述目标卷积核的第一运算周期的卷积运算结果。具体地,在周期一中,对于第一组的4个第二运算数据m0、m1、m2和m3,通过4个第二加法器中的2个第二加法器执行m0+m1+m2,m1-m2-m3,得到第一组的2个卷积运算结果r0和r1;对于第二组的4个第二运算数据m4、m5、m6和m7,通过4个第二加法器中的另外2个第二加法器执行m4+m5+m6,m5-m6-m7,得到第二组的2个卷积运算结果r4和r5。

举例来说,请继续参阅图5,在周期一中,对于第二运算数据组1的m0、m1、m2和m3,通过8个第二加法器中的第二加法器组1的2个第二加法器执行m0+m1+m2,m1-m2-m3,得到卷积运算结果组1的2个卷积运算结果r0和r1;对于第二运算数据组2的m4、m5、m6和m7,通过8个第二加法器中的第二加法器组1的2个第二加法器执行m4+m5+m6,m5-m6-m7,得到卷积运算结果组2的2个卷积运算结果r4和r5;对于第二运算数据组3的m8、m9、m10和m11,通过8个第二加法器中的第二加法器组3的2个第二加法器执行m8+m9+m10,m9-m10-m11,得到卷积运算结果组3的2个卷积运算结果r8和r9;对于第二运算数据组4的m12、m13、m14和m15,通过8个第二加法器中的第二加法器组4的2个第二加法器执行m12+m13+m14,m13-m14-m15,得到卷积运算结果组4的2个卷积运算结果r12和r13。

上面从一个卷积核的运算过程对本申请提供的技术方案进行描述,本申请实施例还提供一种神经网络运算方法,应用于二维卷积神经网络运算,所述二维卷积神经网络包括第一卷积核、第二卷积核和第三卷积核,所述方法包括:针对所述第一卷积核,执行如图3所述的神经网络运算方法,得到所述第一卷积核的卷积运算结果;针对所述第二卷积核,执行如图3所述的神经网络运算方法,得到所述第二卷积核的目标卷积运算结果,并根据所述第一卷积核的卷积运算结果和所述第二卷积核的目标卷积运算结果得到所述第二卷积核的卷积运算结果;针对所述第三卷积核,执行如图3所述的神经网络运算方法,得到所述第三卷积核的目标卷积运算结果,并根据所述第二卷积核的卷积运算结果和所述第三卷积核的目标卷积运算结果得到所述二维卷积神经网络的卷积运算结果。

下面以卷积核为3×3的卷积神经网络的整个计算过程为例来进一步描述本申请提供的技术方案。

请继续参阅图4,对于第一行卷积核,有第一行卷积核的权重w0、w1、w2,则一维加速算法的权重g0=w0,g1=(w0+w1+w2)/2,g2=(w0-w1-w2)/2,g3=w2;其卷积计算过程如下:

(1)第一运算周期

读取第一行卷积核的输入特征,也即8个第一目标数据为[d0,d1,d2,d3,d4,d5,d6,d7],将其分为两组[d0,d1,d2,d3]和[d4,d5,d6,d7];对于第一组[d0,d1,d2,d3],通过8个第一加法器中的4个第一加法器执行d0-d2,d1+d2,d2-d1,d1-d3,得到第一组的4个第一运算数据,记为(d0-d2)、(d1+d2)、(d2-d1)和(d1-d3);对于第二组[d4,d5,d6,d7],通过8个第一加法器中的另外4个第一加法器执行d4-d6,d5+d6,d6-d5,d5-d7,得到第二组的4个第一运算数据,记为(d4-d6)、(d5+d6)、(d6-d5)和(d5-d7)。

对于第一组的4个第一运算数据,通过8个乘法器中的4个乘法器执行m0=(d0-d2)×g0,m1=(d1+d2)×g1,m2=(d2-d1)×g2,m3=(d1-d3)×g3,得到第一组的4个第二运算数据m0、m1、m2和m3;对于第二组的4个第一运算数据,通过8个乘法器中的另外4个乘法器执行m4=(d4-d6)×g0,m5=(d5+d6)×g1,m6=(d6-d5)×g2,m7=(d5-d7)×g3,得到第二组的4个第二运算数据m4、m5、m6和m7。

对于第一组的4个第二运算数据m0、m1、m2和m3,通过4个第二加法器中的2个第二加法器执行m0+m1+m2,m1-m2-m3,得到第一组的2个卷积运算结果r0和r1;对于第二组的4个第二运算数据m4、m5、m6和m7,通过4个第二加法器中的另外2个第二加法器执行m4+m5+m6,m5-m6-m7,得到第二组的2个卷积运算结果r4和r5。

(2)第二运算周期

第一目标数据右移,得到8个第二目标数据为[d2,d3,d4,d5,d6,d7,d8,d9],将其分为两组[d2,d3,d4,d5]和[d6,d7,d8,d9];对于第一组[d2,d3,d4,d5],通过8个第一加法器中的4个第一加法器执行d2-d4,d3+d4,d4-d3,d3-d5,得到第一组的4个第一运算数据,记为(d2-d4)、(d3+d4)、(d4-d3)和(d3-d5);对于第二组[d6,d7,d8,d9],通过8个第一加法器中的另外4个第一加法器执行d6-d8,d7+d8,d8-d7,d7-d9,得到第二组的4个第一运算数据,记为(d6-d8)、(d7+d8)、(d8-d7)和(d7-d9)。

对于第一组的4个第一运算数据,通过8个乘法器中的4个乘法器执行m0=(d2-d4)×g0,m1=(d3+d4)×g1,m2=(d4-d3)×g2,m3=(d3-d5)×g3,得到第一组的4个第二运算数据m0、m1、m2和m3;对于第二组的4个第一运算数据,通过8个乘法器中的另外4个乘法器执行m4=(d6-d8)×g0,m5=(d7+d8)×g1,m6=(d8-d7)×g2,m7=(d7-d9)×g3,得到第二组的4个第二运算数据m4、m5、m6和m7。

对于第一组的4个第二运算数据m0、m1、m2和m3,通过4个第二加法器中的2个第二加法器执行m0+m1+m2,m1-m2-m3,得到第一组的2个卷积运算结果r2和r3;对于第二组的4个第二运算数据m4、m5、m6和m7,通过4个第二加法器中的另外2个第二加法器执行m4+m5+m6,m5-m6-m7,得到第二组的2个卷积运算结果r6和r7。

至此,得到第一行卷积核的运算结果r0、r1、r2、r3、r4、r5、r6和r7。

对于第二行卷积核,有第二行卷积核的权重w3、w4、w5,则一维加速算法的权重g0=w3,g1=(w3+w4+w5)/2,g2=(w3-w4-w5)/2,g3=w5;其卷积计算过程如下:

(3)第三运算周期

读取第二行卷积核的输入特征,重复第一运算周期的计算过程,得到第三运算周期的目标卷积运算结果r0、r1、r4和r5,将第三运算周期的目标卷积运算结果r0、r1、r4和r5分别与第一行卷积核的运算结果r0、r1、r4和r5对应相加,得到第二行卷积核的运算结果r0、r1、r4和r5。

(4)第四运算周期

第二卷积核的第一目标数据右移,得到第二卷积核的8个第二目标数据,重复第二运算周期的计算过程,得到第四运算周期的目标卷积运算结果r2、r3、r6和r7,将第四运算周期的目标卷积运算结果r2、r3、r6和r7分别与第一行卷积核的运算结果r2、r3、r6和r7对应相加,得到第二行卷积核的运算结果r2、r3、r6和r7。

至此,得到第二行卷积核的运算结果r0、r1、r2、r3、r4、r5、r6和r7。

对于第三行卷积核,有第三行卷积核的权重w6、w7、w8,则一维加速算法的权重g0=w6,g1=(w6+w7+w8)/2,g2=(w6-w7-w8)/2,g3=w8;其卷积计算过程如下:

(5)第五运算周期

读取第三行卷积核的输入特征,重复第一运算周期的计算过程,得到第五运算周期的目标卷积运算结果r0、r1、r4和r5,将第五运算周期的目标卷积运算结果r0、r1、r4和r5分别与第二行卷积核的运算结果r0、r1、r4和r5对应相加,得到第三行卷积核的运算结果r0、r1、r4和r5。

(6)第六运算周期

第三卷积核的第一目标数据右移,得到第三卷积核的8个第二目标数据,重复第二运算周期的计算过程,得到第六运算周期的目标卷积运算结果r2、r3、r6和r7,将第六运算周期的目标卷积运算结果r2、r3、r6和r7分别与第二行卷积核的运算结果r2、r3、r6和r7对应相加,得到第三行卷积核的运算结果r2、r3、r6和r7。

至此,得到卷积核为3×3的卷积神经网络的整个运算结果r0、r1、r2、r3、r4、r5、r6和r7。

可以看到,原先需要9个周期才能够完成的卷积运算,现在6个周期就可以完成,极大地复用了原先的硬件资源,同时提高了运算速度。

需要指出的是,图4和图5分别以输入数据的位宽为8和16来举例对本申请实施例进行说明,但本申请实施例对输入数据的位宽不仅限于此,输入数据的位宽还可以为32、64、18等,其具体计算规律与图4或5相同,本申请不再赘述。

请参阅图6,图6示出了一种神经网络运算装置600的结构示意图。该神经网络运算装置600应用于神经网络计算单元,所述神经网络计算单元用于卷积神经网络运算,所述卷积神经网络包括目标卷积核,所述神经网络计算单元包括a个第一加法器、a个乘法器和b个第二加法器,其中,a为4的指数且a大于等于8,b为a的二分之一,该神经网络运算装置600具体包括:处理单元602和通信单元603。处理单元602用于对神经网络计算单元的动作进行控制管理,例如,处理单元602用于支持神经网络计算单元执行上述方法实施例中的步骤和用于本文所描述的技术的其它过程。通信单元603用于支持神经网络计算单元与其他设备的通信。该神经网络运算装置600还可以包括存储单元601,用于存储神经网络计算单元的程序代码和数据。

其中,处理单元602可以是处理器或控制器,例如可以是中央处理器(centralprocessingunit,cpu),通用处理器,数字信号处理器(digitalsignalprocessor,dsp),专用集成电路(application-specificintegratedcircuit,asic),现场可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等等。通信单元603可以是通信接口、收发器、收发电路等,存储单元601可以是存储器。

具体实现时,所述处理单元602用于执行如上述方法实施例中的任一步骤,且在执行诸如发送等数据传输时,可选择的调用所述通信单元603来完成相应操作。下面进行详细说明。

所述处理单元602用于:通过所述a个第一加法器、所述a个乘法器和所述b个第二加法器根据输入所述目标卷积核的a个第一目标数据执行一维加速算法运算,得到所述目标卷积核的第一运算周期的卷积运算结果;将所述a个第一目标数据进行右移,移出2个第一目标数据的同时移入2个新的目标数据,得到a个第二目标数据;通过所述a个第一加法器、所述a个乘法器和所述b个第二加法器根据所述a个第二目标数据执行所述一维加速算法运算,得到所述目标卷积核的第二运算周期的卷积运算结果;根据所述第一运算周期的卷积运算结果和所述第二运算周期的卷积运算结果得到所述目标卷积核的卷积运算结果。

在一些可能的示例中,所述新的目标数据为与所述神经网络计算单元相邻的神经网络计算单元移出的目标数据或填充数据。

在一些可能的示例中,在通过所述a个第一加法器、所述a个乘法器和所述b个第二加法器根据输入所述目标卷积核的a个第一目标数据执行一维加速算法运算,得到所述目标卷积核的第一运算周期的卷积运算结果方面,所述处理单元602具体用于:通过所述a个第一加法器根据所述a个第一目标数据执行所述一维加速算法的第一加法运算,得到a个第一运算数据;通过所述a个乘法器根据所述a个第一运算数据和所述一维加速算法的权重执行所述一维加速算法的乘法运算,得到a个第二运算数据;通过所述b个第二加法器根据所述a个第二运算数据执行所述一维加速算法的第二加法运算,得到所述目标卷积核的第一运算周期的卷积运算结果。

在一些可能的示例中,在通过所述a个乘法器根据所述a个第一运算数据和所述一维加速算法的权重执行一维加速算法的乘法运算,得到a个第二运算数据之前,所述处理单元602还用于:根据所述目标卷积核的权重确定所述一维加速算法的权重。

在一些可能的示例中,在通过所述a个第一加法器根据所述a个第一目标数据执行所述一维加速算法的第一加法运算,得到a个第一运算数据方面,所述处理单元602具体用于:针对c个第一目标数据组中的每一组执行如下操作,得到c个第一运算数据组,所述c个第一运算数据组中的每一组包括4个第一运算数据,所述c为a的四分之一,所述c个第一目标数据组为所述a个第一目标数据按照每4个为一组分组得到,所述c个第一目标数据组与c个第一加法器组一一对应,所述c个第一加法器组为所述a个第一加法器按照每4个为一组分组得到,所述c个第一加法器组中的每一组执行的运算操作相同:通过当前处理的第一目标数据组对应的第一加法器组执行所述一维加速算法的第一加法运算,得到当前处理的第一目标数据组对应的第一运算数据组。

在一些可能的示例中,在通过所述a个乘法器根据所述a个第一运算数据和所述一维加速算法的权重执行一维加速算法的乘法运算,得到a个第二运算数据方面,所述处理单元602具体用于:针对所述c个第一运算数据组中的每一组和所述一维加速算法的4个权重执行如下操作,得到c个第二运算数据组,所述c个第二运算数据组中的每一组包括4个第二运算数据,所述c个第一运算数据组中的每一组的4个第一运算数据与所述一维加速算法的4个权重一一对应,所述c个第一运算数据组与c个乘法器组一一对应,所述c个乘法器组为所述a个乘法器按照每4个为一组分组得到:通过当前处理的第一运算数据组对应的乘法器组执行所述一维加速算法的乘法运算,得到当前处理的第一运算数据组对应的第二运算数据组。

在一些可能的示例中,在通过所述b个第二加法器根据所述a个第二运算数据执行所述一维加速算法的第二加法运算,得到所述目标卷积核的第一运算周期的卷积运算结果方面,所述处理单元602具体用于:针对所述c个第二运算数据组中的每一组执行如下操作,得到c个卷积运算结果组,所述c个卷积运算结果组中的每一组包括2个卷积运算结果,所述c个第二运算数据组与c个第二加法器组一一对应,所述c个第二加法器组为所述b个乘法器按照每2个为一组分组得到,所述c个第二加法器组中的每一组执行的运算操作相同:通过当前处理的第二运算数据组对应的第二加法器组执行所述一维加速算法的第二加法运算,得到当前处理的第二运算数据组对应的卷积运算结果组。

可以理解的是,由于方法实施例与装置实施例为相同技术构思的不同呈现形式,因此,本申请中方法实施例部分的内容应同步适配于装置实施例部分,此处不再赘述。

在图6所描述的神经网络运算装置600中,先通过a个第一加法器、a个乘法器和b个第二加法器对输入卷积核运算的a个第一目标数据执行一维加速算法运算,得到第一运算周期的卷积运算结果;然后将a个第一目标数据进行右移,移出2个第一目标数据的同时移入2个新的目标数据,得到a个第二目标数据;再通过a个第一加法器、a个乘法器和b个第二加法器对a个第二目标数据执行一维加速算法运算,得到第二运算周期的卷积运算结果;再将第一运算周期的卷积运算结果和第二运算周期的卷积运算结果累加,得到卷积核运算的运算结果;从而能够充分利用现有硬件资源实现加速算法对卷积神经网络运算的加速。

请参阅图7,图7是本申请实施例提供的一种神经网络运算设备710的结构示意图,如图7所示,所述神经网络运算设备710包括通信接口711、处理器712、存储器713和至少一个用于连接所述通信接口711、所述处理器712、所述存储器713的通信总线714。

存储器713包括但不限于是随机存储记忆体(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、可擦除可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、或便携式只读存储器(compactdiscread-onlymemory,cd-rom),该存储器713用于相关指令及数据。

通信接口711用于接收和发送数据。

处理器712可以是一个或多个中央处理器(centralprocessingunit,cpu),在处理器712是一个cpu的情况下,该cpu可以是单核cpu,也可以是多核cpu。

该神经网络运算设备710用于卷积神经网络运算,所述卷积神经网络包括目标卷积核,该神经网络运算设备710包括a个第一加法器、a个乘法器和b个第二加法器,其中,a为4的指数且a大于等于8,b为a的二分之一,该神经网络运算设备710中的处理器712用于读取所述存储器713中存储的一个或多个程序代码,执行以下操作:通过所述a个第一加法器、所述a个乘法器和所述b个第二加法器根据输入所述目标卷积核的a个第一目标数据执行一维加速算法运算,得到所述目标卷积核的第一运算周期的卷积运算结果;将所述a个第一目标数据进行右移,移出2个第一目标数据的同时移入2个新的目标数据,得到a个第二目标数据;通过所述a个第一加法器、所述a个乘法器和所述b个第二加法器根据所述a个第二目标数据执行所述一维加速算法运算,得到所述目标卷积核的第二运算周期的卷积运算结果;根据所述第一运算周期的卷积运算结果和所述第二运算周期的卷积运算结果得到所述目标卷积核的卷积运算结果。

需要说明的是,各个操作的实现还可以对应参照上述方法实施例中相应的描述。

图7所描述的神经网络运算设备710,通过利用现有的卷积运算硬件中的a个第一加法器、a个乘法器和b个第二加法器对输入卷积核运算的a个第一目标数据执行一维加速算法运算,得到第一运算周期的卷积运算结果;然后将a个第一目标数据进行右移,移出2个第一目标数据的同时移入2个新的目标数据,得到a个第二目标数据;再通过a个第一加法器、a个乘法器和b个第二加法器对a个第二目标数据执行一维加速算法运算,得到第二运算周期的卷积运算结果;再将第一运算周期的卷积运算结果和第二运算周期的卷积运算结果累加,得到卷积核运算的运算结果;从而能够充分利用现有硬件资源实现加速算法对卷积神经网络运算的加速。

请参阅图8,图8为本申请实施例提供的一种芯片硬件结构,该芯片包括神经网络处理器800。该芯片可以被设置在如图7所示的执行设备710中,上述方法实施例中神经网络运算方法均可在如图8所示的芯片中得以实现。

神经网络处理器800作为协处理器挂载到主cpu(hostcpu)上,由主cpu分配任务。神经网络处理器800的核心部分为运算电路803,控制器804控制运算电路803提取存储器(权重存储器或输入存储器)中的数据并进行运算。

在一些实现方式中,运算电路803内部包括多个处理单元或计算单元(processengine,pe)。

在一些实现方式中,运算电路803是二维脉动阵列。运算电路803还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。

在一些实现方式中,运算电路803是通用的矩阵处理器。

举例来说,假设有输入矩阵a,权重矩阵b,输出矩阵c。运算电路803从权重存储器802中取矩阵b相应的数据,并缓存在运算电路803中每一个pe上。运算电路803从输入存储器801中取矩阵a数据与矩阵b进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator,mac)808中。

向量计算单元807可以对运算电路803的输出做进一步处理,如向量乘、向量加、指数运算、对数运算、大小比较等。例如,向量计算单元807可以用于神经网络中非卷积/非fc层的网络计算,如池化(pooling),批归一化(batchnormalization),局部响应归一化(localresponsenormalization)等。

在一些实现方式中,向量计算单元能807将经处理的输出的向量存储到统一缓存器806。例如,向量计算单元807可以将非线性函数应用到运算电路803的输出,例如累加值的向量,用以生成激活值。

在一些实现方式中,向量计算单元807生成归一化的值、合并值,或二者均有。

在一些实现方式中,处理过的输出的向量能够用作到运算电路803的激活输入,例如用于在神经网络中的后续层中的使用。

统一存储器806用于存放输入数据以及输出数据。

权重数据直接通过存储单元访问控制器(directmemoryaccesscontroller,dmac)805将外部存储器中的输入数据搬运到输入存储器801和/或统一存储器806、将外部存储器中的权重数据存入权重存储器802,以及将统一存储器806中的数据存入外部存储器。

总线接口单元(businterfaceunit,biu)810,用于通过总线实现主cpu、dmac和取指存储器809之间进行交互。

与控制器804连接的取指存储器(instructionfetchbuffer)809,用于存储控制器804使用的指令;

控制器804,用于调用指存储器809中缓存的指令,实现控制该运算加速器的工作过程。

一般地,统一存储器806,输入存储器801,权重存储器802以及取指存储器809均为片上(on-chip)存储器,外部存储器为该npu外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(doubledataratesynchronousdynamicrandomaccessmemory,简称ddrsdram)、高带宽存储器(highbandwidthmemory,hbm)或其他可读可写的存储器。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,上述方法实施例中所示的方法流程得以实现。

本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,上述方法实施例中所示的方法流程得以实现。

应理解,本申请实施例中提及的处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

还应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(randomaccessmemory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,sram)、动态随机存取存储器(dynamicram,dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步连接动态随机存取存储器(synchlinkdram,sldram)和直接内存总线随机存取存储器(directrambusram,drram)。

需要说明的是,当处理器为通用处理器、dsp、asic、fpga或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)集成在处理器中。

应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。

应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

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

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。

本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

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