一种粗粒度的图像神经网络加速器指令集架构方法及装置转让专利

申请号 : CN202211325253.7

文献号 : CN115393174B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱国权马德凡军海杨方超陆启明金孝飞孙世春胡有能潘纲

申请人 : 之江实验室浙江大学

摘要 :

本发明公开了一种粗粒度的图像神经网络加速器指令集架构方法及装置,该方法通过分析神经网络中卷积层计算需要的参数;通过分析神经网络中装载/存储操作、池化层计算、上采样层计算、加、减、转置和复制运算需要的参数;根据处理下一帧图像需要,加入跳转需要的参数,构建一种粗粒度的神经网络加速器指令集架构。与细粒度指令集相比精度不受影响,减少了实现神经网络推理的代码量,代码更加紧凑;该装置的各个模块相对独立,计算模块通过简单总线连接到存储模块,可以有效缩短神经网络加速器的设计过程;该装置的配套编译器开发难度降低,减短了最终产品的上市时间,降低了产品的开发成本。

权利要求 :

1.一种粗粒度的图像神经网络加速器指令集架构方法,其特征在于包括如下步骤:

步骤S1:分析图像神经网络加速器中所需参数,参数包括卷积计算所需参数、装载/存储所需参数、池化操作所需参数、上采样所需参数、计算所需参数和图像跳转所需参数;

步骤S2:基于所需参数,构建粗粒度的图像神经网络加速器指令集,基于卷积计算所需参数构建粗粒度卷积指令,基于装载/存储所需参数构建粗粒度装载指令/存储指令,基于池化操作所需参数构建粗粒度池化指令,基于上采样所需参数构建粗粒度上采样指令,基于计算所需参数构建粗粒度计算指令,基于图像跳转所需参数构建粗粒度图像跳转指令;

步骤S3,基于粗粒度的图像神经网络加速器指令集,执行图像神经网络加速器;读取粗粒度指令,根据指令类型,得到卷积、装载/存储、池化、上采样、计算、图像跳转操作的信号,基于各操作信号对图像进行指令的执行,并得到反馈,然后读取下一条粗粒度指令进行执行,直至指令读取结束;具体包括如下步骤:步骤S3.1:基于粗粒度装载指令,对不同类型的装载参数进行装载;

步骤S3.2:基于粗粒度卷积指令,对输入特征图进行卷积计算,得到输出特征图;

卷积计算时,使用边卷积边装载权重的并行方式;在当前卷积计算时,使用第一权重缓存中的参数,在当前卷积计算期间,向第二权重缓存搬移下一次卷积计算使用的权重,在当前卷积计算和权重搬移结束后,启动下一次卷积计算,以此类推,直至完成所有卷积计算;

步骤S3.3:基于粗粒度池化指令、粗粒度上采样指令、粗粒度计算指令,对输出特征图进行池化、上采样、计算操作;

步骤S3.4:基于粗粒度存储指令,对步骤S3.3操作的结果进行存储;

步骤S3.5:基于粗粒度图像跳转指令,进行图像跳转。

2.根据权利要求1所述的一种粗粒度的图像神经网络加速器指令集架构方法,其特征在于:所述步骤S2中,粗粒度卷积指令,包含输入特征图存放地址索引、卷积控制信号、卷积模式选择信号、输入特征图尺寸和卷积核尺寸、输出特征图存放地址索引、权重地址;将输出特征图存放地址索引并入卷积模式选择信号的字段中,将权重地址并入卷积控制信号的字段中。

3.根据权利要求1所述的一种粗粒度的图像神经网络加速器指令集架构方法,其特征在于:所述步骤S2中,粗粒度装载指令,包含装载片外地址、装载参数类型、装载目的地址索引、装载通道长度,装载通道长度包括单次装载参数量和装载通道数。

4.根据权利要求1所述的一种粗粒度的图像神经网络加速器指令集架构方法,其特征在于:所述步骤S2中,粗粒度存储指令,对输出特征图进行操作,包含存储源地址索引、存储片外地址、存储通道长度,存储通道长度包括单次存储参数量和存储通道数。

5.根据权利要求1所述的一种粗粒度的图像神经网络加速器指令集架构方法,其特征在于:所述步骤S2中,粗粒度池化指令,包含池化源地址索引、池化控制信号、池化目的地址索引、池化矩阵尺寸、池化通道、池化步长、池化模式、池化补零方式和池化补零方向,池化矩阵尺寸包括源矩阵尺寸和池化核尺寸;将池化步长、池化模式、池化补零方式和池化补零方向并入池化控制信号的字段中,将池化通道并入池化目的地址索引的字段中。

6.根据权利要求1所述的一种粗粒度的图像神经网络加速器指令集架构方法,其特征在于:所述步骤S2中,粗粒度上采样指令,包含上采样源地址索引、上采样控制信号、上采样目的地址索引、上采样矩阵尺寸、上采样目的矩阵尺寸、上采样通道数、上采样模式、上采样角点对齐方式;上采样矩阵尺寸为上采样源矩阵尺寸,将上采样目的矩阵尺寸和上采样通道数并入上采样目的地址索引的字段中,上采样控制信号的字段中包含上采样模式和上采样角点对齐方式。

7.根据权利要求1所述的一种粗粒度的图像神经网络加速器指令集架构方法,其特征在于:所述步骤S2中,粗粒度计算指令,包括加、加立即数、减、减立即数、转置和复制指令,加指令包含第一加源地址索引、第二加源地址索引、加目的地址索引和加矩阵尺寸,加立即数包含加立即数源地址索引、加立即数、加立即数目的地址索引和加立即数矩阵尺寸,减指令包含第一减源地址索引、第二减源地址索引、减目的地址索引和减矩阵尺寸,减立即数包含减立即数源地址索引、减立即数、减立即数目的地址索引和减立即数矩阵尺寸,转置指令包含转置源地址索引、转置目的地址索引和转置矩阵尺寸,复制指令包含复制源地址索引、复制量化使能、复制目的地址索引和复制矩阵尺寸。

8.一种粗粒度的图像神经网络加速器指令集架构装置,用于实现权利要求1所述的一种粗粒度的图像神经网络加速器指令集架构方法,其特征在于,包括:指令存储器、指令译码模块、总体控制器、装载模块、卷积模块、池化模块、上采样模块、计算模块,输入特征图/输出特征图/权重缓存模块和存储模块;

所述指令存储器,用于存储粗粒度的图像神经网络加速器指令集;

所述指令译码模块,根据指令类型,得到各粗粒度指令对应操作的信号;

所述装载模块,基于装载操作信号,对不同类型的装载参数执行装载,执行完成后发出中断信号;

所述卷积模块、池化模块、上采样模块、计算模块,基于对应的操作信号进行指令的执行,执行完成后发出中断信号;

所述存储模块,基于存储操作信号,对输出特征图进行存储;

所述总体控制器,通过指令译码模块从指令存储器读取一条粗粒度指令;当获取中断信号后,读取下一条粗粒度指令;

所述输入特征图/输出特征图/权重缓存模块,分别与装载模块、卷积模块、池化模块、上采样模块、计算模块、存储模块连接,配合完成各指令的执行。

说明书 :

一种粗粒度的图像神经网络加速器指令集架构方法及装置

技术领域

[0001] 本发明涉及神经网络技术领域,尤其是涉及一种粗粒度的图像神经网络加速器指令集架构方法及装置。

背景技术

[0002] 随着神经网络的快速发展,各种各样的神经网络加速器被相继提出。由于神经网络加速器使用的指令集的不同导致了其架构的不同,进而使神经网络加速器的性能差异较大。
[0003] 现如今大量神经网络加速器的设计借鉴了通用处理器(CPU/GPU)的思路,在计算卷积或者矩阵相乘时对操作数进行了相应拆分,底层器件只有乘法器和加法器。例如,有些神经网络加速器在计算卷积时,若卷积核为3×3,其将卷积核分解为9个值,然后和输入特征图的9个值相乘,最后通过加法树叠加,得到卷积结果。神经网络加速器根据所设的卷积步长将输入特征图进行移位得到新的9个值,然后再次和卷积核的9个值相乘,一直重复此过程,直至最终卷积层计算完成。神经网络加速器的其他层计算过程和卷积层计算类似。
[0004] 但该方法会使神经网络加速器跑通一个具体神经网络的指令繁杂。对一个卷积核尺寸和通道数较大的卷积层来说,卷积计算需要的指令有上万条。这主要是因为神经网络加速器使用了细粒度的指令集,细粒度指令集的基本指令有乘运算、加运算、比较运算和逻辑运算等。使用细粒度的指令集会增大神经网络加速器跑具体神经网络的指令密度,降低神经网络加速器的专用性。同时,细粒度的指令集还会增大神经网络加速器的推理延迟,降低性能。

发明内容

[0005] 为解决现有技术的不足,通过降低神经网络加速器运行神经网络的指令密度,实现降低神经网络加速器的开发难度,减小神经网络加速器的推理时延的目的,本发明采用如下的技术方案:
[0006] 一种粗粒度的图像神经网络加速器指令集架构方法,包括如下步骤:
[0007] 步骤S1:分析图像神经网络加速器中所需参数,参数包括卷积计算所需参数、装载/存储所需参数、池化操作所需参数、上采样所需参数、计算所需参数和图像跳转所需参数;
[0008] 步骤S2:基于所需参数,构建粗粒度的图像神经网络加速器指令集,基于卷积计算所需参数构建粗粒度卷积指令,基于装载/存储所需参数构建粗粒度装载指令/存储指令,基于池化操作所需参数构建粗粒度池化指令,基于上采样所需参数构建粗粒度上采样指令,基于计算所需参数构建粗粒度计算指令,基于图像跳转所需参数构建粗粒度图像跳转指令,图像跳转指令包含图像跳转地址;
[0009] 步骤S3,基于粗粒度的图像神经网络加速器指令集,执行图像神经网络加速器;读取粗粒度指令,根据指令类型,得到卷积、装载/存储、池化、上采样、计算、图像跳转操作的信号,基于各操作信号对图像进行指令的执行,并得到反馈,然后读取下一条粗粒度指令进行执行,直至指令读取结束。
[0010] 进一步地,所述步骤S2中,粗粒度卷积指令,包含输入特征图存放地址索引、卷积控制信号、卷积模式选择信号、输入特征图尺寸和卷积核尺寸、输出特征图存放地址索引、权重地址;将输出特征图存放地址索引并入卷积模式选择信号的字段中,将权重地址并入卷积控制信号的字段中。
[0011] 进一步地,所述步骤S2中,粗粒度装载指令,包含装载片外地址、装载参数类型、装载目的地址索引、装载通道长度,装载通道长度包括单次装载参数量和装载通道数;装载参数类型包括装载输入特征图、装载权重、装载偏置、装载归一化参数和装载量化因子。
[0012] 进一步地,所述步骤S2中,粗粒度存储指令,对输出特征图进行操作,包含存储源地址索引、存储片外地址、存储通道长度,存储通道长度包括单次存储参数量和存储通道数。
[0013] 进一步地,所述步骤S2中,粗粒度池化指令,包含池化源地址索引、池化控制信号、池化目的地址索引、池化矩阵尺寸、池化通道、池化步长、池化模式、池化补零方式和池化补零方向,池化矩阵尺寸包括源矩阵尺寸和池化核尺寸;将池化步长、池化模式、池化补零方式和池化补零方向并入池化控制信号的字段中,将池化通道并入池化目的地址索引的字段中。
[0014] 进一步地,所述步骤S2中,粗粒度上采样指令,包含上采样源地址索引、上采样控制信号、上采样目的地址索引、上采样矩阵尺寸、上采样目的矩阵尺寸、上采样通道数、上采样模式、上采样角点对齐方式;上采样矩阵尺寸为上采样源矩阵尺寸,将上采样目的矩阵尺寸和上采样通道数并入上采样目的地址索引的字段中,上采样控制信号的字段中包含上采样模式和上采样角点对齐方式。
[0015] 进一步地,所述步骤S2中,粗粒度计算指令,包括加、加立即数、减、减立即数、转置和复制指令,加指令包含第一加源地址索引、第二加源地址索引、加目的地址索引和加矩阵尺寸,加立即数包含加立即数源地址索引、加立即数、加立即数目的地址索引和加立即数矩阵尺寸,减指令包含第一减源地址索引、第二减源地址索引、减目的地址索引和减矩阵尺寸,减立即数包含减立即数源地址索引、减立即数、减立即数目的地址索引和减立即数矩阵尺寸,转置指令包含转置源地址索引、转置目的地址索引和转置矩阵尺寸,复制指令包含复制源地址索引、复制量化使能、复制目的地址索引和复制矩阵尺寸;所述加指令,用于实现卷积图像神经网络中的残差层;所述复制指令,用于实现卷积图像神经网络中的拼接层。
[0016] 进一步地,所述步骤S3包括如下步骤:
[0017] 步骤S3.1:基于粗粒度装载指令,对不同类型的装载参数进行装载,装参数类型包括装载载输入特征图、装载权重、装载偏置、装载归一化参数和装载量化因子;
[0018] 步骤S3.2:基于粗粒度卷积指令,对输入特征图进行卷积计算,得到输出特征图;
[0019] 步骤S3.3:基于粗粒度池化指令、粗粒度上采样指令、粗粒度计算指令,对输出特征图进行池化、上采样、计算操作;
[0020] 步骤S3.4:基于粗粒度存储指令,对步骤S3.3操作的结果进行存储;
[0021] 步骤S3.5:基于粗粒度图像跳转指令,进行图像跳转。
[0022] 进一步地,所述步骤S3.2中,卷积计算时,使用边卷积边装载权重的并行方式;在当前卷积计算时,使用第一权重缓存中的参数,在当前卷积计算期间,向第二权重缓存搬移下一次卷积计算使用的权重,在当前卷积计算和权重搬移结束后,启动下一次卷积计算,以此类推,直至完成所有卷积计算。
[0023] 一种粗粒度的图像神经网络加速器指令集架构装置,用于实现所述的一种粗粒度的图像神经网络加速器指令集架构方法,包括:指令存储器、指令译码模块、总体控制器、装载模块、卷积模块、池化模块、上采样模块、计算模块,输入特征图/输出特征图/权重缓存模块和存储模块;
[0024] 所述指令存储器,用于存储粗粒度的图像神经网络加速器指令集;
[0025] 所述指令译码模块,根据指令类型,得到各粗粒度指令对应操作的信号;
[0026] 所述装载模块,基于装载操作信号,对不同类型的装载参数执行装载,执行完成后发出中断信号;
[0027] 所述卷积模块、池化模块、上采样模块、计算模块,基于对应的操作信号进行指令的执行,执行完成后发出中断信号;
[0028] 所述存储模块,基于存储操作信号,对输出特征图进行存储;
[0029] 所述总体控制器,通过指令译码模块从指令存储器读取一条粗粒度指令;当获取中断信号后,读取下一条粗粒度指令;
[0030] 所述输入特征图/输出特征图/权重缓存模块,分别与装载模块、卷积模块、池化模块、上采样模块、计算模块、存储模块连接,配合完成各指令的执行。
[0031] 本发明的优势和有益效果在于:
[0032] 本发明的方法与细粒度指令集相比精度不受影响,减少了实现神经网络推理的代码量,代码更加紧凑;基于本发明实现的硬件装置的各个模块相对独立,计算模块通过简单总线连接到存储模块,可以有效缩短神经网络加速器的设计过程;基于本发明实现的硬件装置的配套编译器开发难度降低,减短了最终产品的开发时间,降低了产品的开发成本。

附图说明

[0033] 图1是本发明的方法流程图。
[0034] 图2是本发明的装置结构示意图。
[0035] 图3是本发明实施例中指令集执行流程图。
[0036] 图4是本发明实施例中执行具体神经网络的部分指令集示意图。
[0037] 图5是本发明实施例中设备的结构示意图。

具体实施方式

[0038] 以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
[0039] 如图1所示,一种粗粒度的神经网络加速器指令集架构方法,包括如下步骤:
[0040] 步骤S1:分析图像神经网络加速器中所需参数,参数包括卷积计算所需参数、装载/存储所需参数、池化操作所需参数、上采样所需参数、计算所需参数和图像跳转所需参数,具体包括如下步骤:
[0041] 步骤S1.1:分析神经网络加速器中卷积层需要的参数;例如:卷积核尺寸、通道数和地址索引等参数,再加入卷积计算和图像数据载入并行相关的参数;
[0042] 卷积指令作为神经网络加速器中最重要的指令之一,需要仔细分析卷积计算的过程。卷积计算主要包括以下参数:
[0043] 1)输入特征图存放地址索引和输出特征图存放地址索引
[0044] 对具体的神经网络进行分析可知,当神经网络加速器的特征图缓存使用乒乓buffer结构时,该层的输出作为下一层的输入,而该层又可以存放下一层的输出,因此所有卷积层的特征图在缓存的存放地址是有限的,不考虑残差层的情况下使用乒乓buffer的零地址即可。
[0045] 在本发明的一个实施例中使用最多64个地址就可以完成所有卷积层的计算。
[0046] 2)权重地址
[0047] 若神经网络加速器的权重缓存使用双缓存结构,那么在计算卷积时需要指定权重的绝对地址以及双缓存选择信号。
[0048] 3)输入特征图尺寸和卷积核尺寸
[0049] 输入特征图表示为W×H×C,其中W、H和C分别表示为输入特征图宽、高和通道数。卷积核尺寸表示为W‘×H’×C‘×N,其中W’、H‘、C’和N分别表示卷积核宽、高、通道数和卷积核数目。
[0050] 4)卷积模式选择信号
[0051] 卷积模式选择信号包括卷积步长、激活函数选择、卷积补零模式选择、卷积优先补零方向、卷积使能、全连接使能、偏置使能、批归一化使能和激活使能。
[0052] 5)一些控制信号
[0053] 一些控制信号包括load下一次权重使能、load下一帧图像使能、输入特征图缓存扩展、输出特征图缓存扩展、load下一次卷积核尺寸和load下一次卷积核通道数。
[0054] 因此,在本发明的一个实施例中,卷积指令中的字段包括输入地址索引、控制信号、模式选择和矩阵尺寸。输出地址索引并入模式选择字段,权重地址并入控制信号字段。
[0055] 步骤S1.2:分析神经网络加速器中load/store(装载/存储指令)需要的参数,例如单次load/store参数量、load/store通道数、load/store起始地址以及load参数类型;
[0056] load操作根据不同的load参数类型分为load输入特征图、load权重、load偏置、load归一化参数和load量化因子,而store指令只对输出特征图进行操作。其中load/store指令还需要指定每次操作的通道数和参数量,以及起始地址。
[0057] 在本发明的一个实施例中,load指令中的字段包括片外地址、参数类型、地址索引和通道长度。其中通道长度包括单次load参数量和load通道数。
[0058] 在本发明的一个实施例中,store指令中的字段包括源地址索引、片外地址、通道长度。其中通道长度包括单次store参数量和store通道数。
[0059] 步骤S1.3:分析神经网络加速器中池化操作需要的参数,例如池化步长、池化模式和池化补零方式等参数;
[0060] 在本发明的一个实施例中,池化指令中的字段包括源地址索引、控制信号、地址索引和矩阵尺寸。其中矩阵尺寸包括源矩阵尺寸和池化核尺寸,池化步长、池化模式、池化补零方式和池化优先补零方向并入控制信号字段,池化通道数并入地址索引字段。
[0061] 步骤S1.4:分析神经网络加速器中上采样需要的参数,例如采用上采样的模式、上采样角点对齐方式以及源矩阵和目的矩阵尺寸等参数;
[0062] 在本发明的一个实施例中,上采样指令中的字段包括源地址索引、控制信号、地址索引和矩阵尺寸。其中矩阵尺寸指源矩阵尺寸,目的矩阵尺寸和上采样通道数并入地址索引中,控制信号包括上采样模式和上采样角点对齐方式。
[0063] 在本发明的一个实施例中,上采样模式主要有双线性插值法。
[0064] 步骤S1.5:分析神经网络加速器中加、减、转置和复制计算需要的参数,例如矩阵尺寸、源地址和目的地址以及通道数;
[0065] 在本发明的一个实施例中,加、减、转置和复制指令中的字段包括源地址索引1、源地址索引2/立即数、地址索引和矩阵尺寸。其中通道数并入地址索引字段中。
[0066] 在本发明的一个实施例中,加指令主要用来实现卷积神经网络中的残差层。
[0067] 在本发明的一个实施例中,复制指令主要用来实现卷积神经网络中的拼接层。
[0068] 步骤S1.6:根据处理下一张图像需要,加入跳转需要的参数,例如跳转地址;
[0069] 在本发明的一个实施例中,跳转指令中的字段主要有跳转地址。
[0070] 步骤S2:基于所需参数,构建粗粒度的图像神经网络加速器指令集,基于卷积计算所需参数构建粗粒度卷积指令,基于装载/存储所需参数构建粗粒度装载指令/存储指令,基于池化操作所需参数构建粗粒度池化指令,基于上采样所需参数构建粗粒度上采样指令,基于计算所需参数构建粗粒度计算指令,基于图像跳转所需参数构建粗粒度图像跳转指令,图像跳转指令包含图像跳转地址;如下表1和表2所示:
[0071] 表1 一种粗粒度的神经网络加速器指令集
[0072]
[0073] 表2 一种粗粒度的神经网络加速器指令集之load指令
[0074]
[0075] 其中,地址索引除非特别说明,主要指目的地址索引。
[0076] 粗粒度卷积指令,包含输入特征图存放地址索引、卷积控制信号、卷积模式选择信号、输入特征图尺寸和卷积核尺寸、输出特征图存放地址索引、权重地址;将输出特征图存放地址索引并入卷积模式选择信号的字段中,将权重地址并入卷积控制信号的字段中。
[0077] 粗粒度装载指令,包含装载片外地址、装载参数类型、装载目的地址索引、装载通道长度,装载通道长度包括单次装载参数量和装载通道数;装载参数类型包括装载输入特征图、装载权重、装载偏置、装载归一化参数和装载量化因子。
[0078] 粗粒度存储指令,对输出特征图进行操作,包含存储源地址索引、存储片外地址、存储通道长度,存储通道长度包括单次存储参数量和存储通道数。
[0079] 粗粒度池化指令,包含池化源地址索引、池化控制信号、池化目的地址索引、池化矩阵尺寸、池化通道、池化步长、池化模式、池化补零方式和池化补零方向,池化矩阵尺寸包括源矩阵尺寸和池化核尺寸;将池化步长、池化模式、池化补零方式和池化补零方向并入池化控制信号的字段中,将池化通道并入池化目的地址索引的字段中。
[0080] 粗粒度上采样指令,包含上采样源地址索引、上采样控制信号、上采样目的地址索引、上采样矩阵尺寸、上采样目的矩阵尺寸、上采样通道数、上采样模式、上采样角点对齐方式;上采样矩阵尺寸为上采样源矩阵尺寸,将上采样目的矩阵尺寸和上采样通道数并入上采样目的地址索引的字段中,上采样控制信号的字段中包含上采样模式和上采样角点对齐方式。
[0081] 粗粒度计算指令,包括加、加立即数、减、减立即数、转置和复制指令,加指令包含第一加源地址索引、第二加源地址索引、加目的地址索引和加矩阵尺寸,加立即数包含加立即数源地址索引、加立即数、加立即数目的地址索引和加立即数矩阵尺寸,减指令包含第一减源地址索引、第二减源地址索引、减目的地址索引和减矩阵尺寸,减立即数包含减立即数源地址索引、减立即数、减立即数目的地址索引和减立即数矩阵尺寸,转置指令包含转置源地址索引、转置目的地址索引和转置矩阵尺寸,复制指令包含复制源地址索引、复制量化使能、复制目的地址索引和复制矩阵尺寸;所述加指令,用于实现卷积图像神经网络中的残差层;所述复制指令,用于实现卷积图像神经网络中的拼接层。
[0082] 该神经网络加速器指令集架构主要用来对图像进行处理,与细粒度指令集架构相比有诸多不同。以图像卷积计算为例,卷积计算主要完成的是循环操作,即卷积核在输入特征图上滑动,每滑动一次,将不同通道的结果相加得到该次的卷积结果,然后将卷积核根据卷积步长再次滑动,继续执行上述过程,直至处理完所有的输入特征图。
[0083] 对细粒度指令集架构来说,完成这样的卷积计算需要的指令首先包括进入循环指令;执行乘累加指令;判断循环是否结束,若是则退出循环继续向下执行,若否则又再次执行进入循环指令;循环结束之后,执行加偏移量指令。则细粒度指令集架构完成卷积计算最少需要四类指令,对应的指令条数最少为成百上千条,具体要根据输入特征图尺寸、卷积核尺寸和卷积步长等参数来确定。
[0084] 对粗粒度指令集架构来说,完成同样的卷积计算只需一条指令。粗粒度指令集的卷积指令已经包括了完成卷积计算的各项参数,包括卷积核尺寸、卷积核数量、卷积核步长、输入特征图尺寸、加偏置使能等,他们都分布在不同的字段中。同理,由于神经网络的上采样计算和池化计算也用循环过程实现,在细粒度指令集架构的实现方式中同样需要成百上千条指令,而在粗粒度指令集架构的实现方式中也只需一条指令。
[0085] 由此可见,粗粒度指令集架构可以大大减少实现图像处理的指令数目,使得由指令构成的图像处理神经网络加速器程序更加紧凑,减少了代码量,且由于指令相对独立,各个模块之间不受影响,减少了和此粗粒度指令集对应的加速器设计难度。同时,由于所有计算只需一条指令,也降低了对应编译器的设计复杂度。
[0086] 步骤S3,基于粗粒度的图像神经网络加速器指令集,执行图像神经网络加速器;读取粗粒度指令,根据指令类型,得到卷积、装载/存储、池化、上采样、计算、图像跳转操作的信号,基于各操作信号对图像进行指令的执行,并得到反馈,然后读取下一条粗粒度指令进行执行,直至指令读取结束,包括如下步骤:
[0087] 步骤S3.1:基于粗粒度装载指令,对不同类型的装载参数进行装载,装参数类型包括装载载输入特征图、装载权重、装载偏置、装载归一化参数和装载量化因子;
[0088] 步骤S3.2:基于粗粒度卷积指令,对输入特征图进行卷积计算,得到输出特征图;
[0089] 卷积计算时,使用边卷积边装载权重的并行方式;在当前卷积计算时,使用第一权重缓存中的参数,在当前卷积计算期间,向第二权重缓存搬移下一次卷积计算使用的权重,在当前卷积计算和权重搬移结束后,启动下一次卷积计算,以此类推,直至完成所有卷积计算;
[0090] 步骤S3.3:基于粗粒度池化指令、粗粒度上采样指令、粗粒度计算指令,对输出特征图进行池化、上采样、计算操作;
[0091] 步骤S3.4:基于粗粒度存储指令,对步骤S3.3操作的结果进行存储;
[0092] 步骤S3.5:基于粗粒度图像跳转指令,进行图像跳转。
[0093] 如图2所示,一种粗粒度的图像神经网络加速器指令集架构装置,包括:指令存储器、指令译码模块、总体控制器、装载模块、卷积模块、池化模块、上采样模块、计算模块,输入特征图/输出特征图/权重缓存模块和存储模块;其中,总体控制器负责控制其他所有模块,包括模块启动和模块结束。
[0094] 所述指令存储器,用于存储粗粒度的图像神经网络加速器指令集;
[0095] 所述指令译码模块,根据指令类型,得到各粗粒度指令对应操作的信号;
[0096] 所述装载模块,基于装载操作信号,对不同类型的装载参数执行装载,执行完成后发出中断信号;
[0097] 所述卷积模块、池化模块、上采样模块、计算模块,基于对应的操作信号进行指令的执行,执行完成后发出中断信号;
[0098] 所述存储模块,基于存储操作信号,对输出特征图进行存储;
[0099] 所述总体控制器,通过指令译码模块从指令存储器读取一条粗粒度指令;当获取中断信号后,读取下一条粗粒度指令;
[0100] 所述输入特征图/输出特征图/权重缓存模块,分别与装载模块、卷积模块、池化模块、上采样模块、计算模块、存储模块连接,配合完成各指令的执行。
[0101] 本发明实施例中,该神经网络加速器的执行流程如图3所示。包括如下步骤:
[0102] 1)所有指令都先存储在指令存储器中,当启动神经网络加速器后,控制器从指令存储器中读取一条指令;
[0103] 2)指令进入译码模块,译码模块根据指令类型得到卷积操作、load/store操作、加/减操作等的各项控制信号;
[0104] 3)将每种操作的控制信号送入具体的执行单元,等待执行单元计算完成发出中断信号;
[0105] 4)中断信号送入神经网络加速器总体控制器,之后控制器读取下一条指令,重复以上操作。
[0106] 由图3可知,根据此粗粒度指令集架构设计的神经网络加速器的指令流程中没有是否进出循环的判断,而这在细粒度指令集架构的神经网络加速器中是必不可少的。从上文可知,细粒度指令集架构在计算卷积时最少需要四类指令,分别为进入循环指令;执行乘累加指令;判断循环是否结束,若是则退出循环继续向下执行,若否则又再次执行进入循环指令;循环结束之后,执行加偏移量指令。而粗粒度指令集架构在计算卷积时只需一条指令。同理,在神经网络的上采样计算和池化计算中,在细粒度指令集架构下,必须要有进出循环的判断,而在粗粒度指令集架构下只需一条指令即可完成。
[0107] 因此,当图像处理的神经网络层数较多时,使用细粒度指令集架构的执行步骤变得冗长复杂,而由于粗粒度指令集架构使得神经网络的卷积计算、上采样计算和池化计算只用一条指令完成,因此粗粒度指令集架构的神经网络加速程序不会关注在程序的大量进出循环上,而只关注在具体的计算上,因此使用粗粒度指令集架构的执行步骤变得简单可靠。
[0108] 如图4所示,是本发明一实施例所对应的具体执行某个神经网络的指令集合,该指令集合可以运行在图2所示的硬件装置上。由图4可知,要对一个具体的神经网络进行推理运算,首先执行的指令有load输入特征图、load量化因子、load权重和load偏置,若需要批归一化操作,则还需load批归一化参数,以上load过程没有顺序要求,可随意进行组合。当卷积需要的数据准备好之后,接下来就是计算卷积指令。
[0109] 在本发明的一个实施例中,由于粗粒度指令集架构下的每层计算使用一条指令完成的特性,因此不论每层卷积参数量有多大,都可以使用一条指令完成。在卷积计算时使用边卷积边load权重的并行方式,具体过程为计算卷积时使用权重缓存1中的参数,在计算卷积期间向权重缓存2搬移下一次卷积使用的权重,等卷积计算和权重搬移两个过程都结束之后启动下一次卷积计算。
[0110] 当计算卷积指令结束以后,执行图4中的其余指令,例如池化指令、加法指令、上采样指令等。倒数第二条指令为store指令,根据不同的神经网络可以有一条store指令,也可以有多条。最后加一条表示推理完成的特定指令,例如全0。
[0111] 基于上述粗粒度的图像神经网络加速器指令集架构方法及装置,在图像分类任务中,对图像提取的输入特征图,通过粗粒度的图像神经网络加速器指令集,对输入特征图进行基于各粗粒度指令集的指令执行,得到输出特征图,基于输出特征图得到图像分类的预测概率。
[0112] 与前述一种粗粒度的神经网络加速器指令集架构方法的实施例相对应,本发明还提供了一种粗粒度的神经网络加速器指令集架构设备的实施例。
[0113] 参见图5,本发明实施例提供的一种粗粒度的神经网络加速器指令集架构设备,包括存储器和一个或多个处理器,存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的一种粗粒度的神经网络加速器指令集架构方法。
[0114] 本发明一种粗粒度的神经网络加速器指令集架构设备的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本发明一种粗粒度的神经网络加速器指令集架构设备所在任意具备数据处理能力的设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
[0115] 上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0116] 对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0117] 本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的一种粗粒度的神经网络加速器指令集架构方法。
[0118] 所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、SD卡、闪存卡(Flash Card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
[0119] 以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。