一种用于二值化神经网络的加速器结构及循环展开方法转让专利

申请号 : CN202010631640.8

文献号 : CN111797977A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张国和赵科芃孙莉梁峰陈琳丁莎

申请人 : 西安交通大学南京拟态智能技术研究院有限公司

摘要 :

本发明公开了一种用于二值化神经网络的加速器结构及循环展开方法,针对权值为1bit,特征值为n bit的硬件加速器结构,本发明包括加速器的硬件结构设计和针对二值化神经网络优化的循环展开结构和权值、特征值在SRAM中的存放顺序。硬件结构包括权值、特征值存储SRAM,专用卷积计算模块和加法树单元。专用卷积模块设计了新的卷积计算方式,加法树保证了数据的流水线运行。本发明使用的循环展开方式与累加器配合可以让加速器拥有非常好的可扩展性,可以根据网络复杂程度和硬件资源自由决定块K的大小,而不用改变电路的控制逻辑。配合此循环展开方式本发明还提出了一种权值和特征值的存放顺序,来简化存取逻辑。

权利要求 :

1.一种用于二值化神经网络的加速器结构,其特征在于,加速器包括两块特征值SRAM,位宽为n*K,K块权值SRAM,位宽为K,K个专用卷积计算模块,K个加法树单元,K个累加器,特征值SRAM和K个权值SRAM分别连接K个专用卷积计算模块作为输入,每个卷积计算模块的输出连接到相对应的加法树单元,计算结果再连接到每个累加器,所有累加器的结果全部接入另一块特征值SRAM,K值可以根据算法自行调节,一般为2的指数幂。

2.根据权利要求1所述的二值化神经网络加速器结构,其特征在于,两块特征值SRAM分别交替存放输入和输出特征值。

3.根据权利要求1所述的二值化神经网络加速器结构,其特征在于,专用卷积计算模块内部计算单元和K值相关,采用如下式所示的函数来计算权值为1bit的卷积运算,其中f为特征值,w为1bit的权值,⊙为同或操作,~为取反操作f=f⊙w+(~w)。

4.根据权利要求1所述的二值化神经网络加速器结构,其特征在于,加法树单元采用流水线设计,减少加速器的关键路径长度。

5.采用了一种如权利要求1所述的二值化神经网络的加速器结构的循环展开方法,如下步骤:S1:同时计算前K个通道的第一个特征值与对应前K个输出通道的第一个权值的卷积计算;

S2:得到的结果经过K个加法树单元后进入分别进入K个累加器;

S3:计算前K+1~2K个通道的第一个特征值与对应前K个输出通道的第一个权值的卷积计算,重复S1,S2的内容,直到CIN个输入通道的第一个特征值都与前K个输出通道的第一个权值的卷积计算完成,并存入对应的前K个累加器;

S4:重复S1,S2,S3的步骤,将一个W*W内的特征值全部算完。此时累加器内累加的结果就是前K个输出通道的第一个特征值的输出结果;

S5:将结果存入另一个SRAM,清空累加器;

S6:重复S1,S2,S3,S4,S5的步骤,知道COUT个输出通道的第一个特征值都已经计算完成存入SRAM;

S7:重复S1,S2,S3,S4,S5,S6的步骤,直到输出通道的FH*FW个特征值全部计算完成。

说明书 :

一种用于二值化神经网络的加速器结构及循环展开方法

技术领域

[0001] 本发明涉及集成电路技术领域,尤其涉及一种用于二值化神经网络的加速器结构及循环展开方法。

背景技术

[0002] 卷积神经网络算法是近年来研究的热点,卷积神经网络算法是人们通过对大脑神经元的简单的模仿,结合大量的统计学的知识,设计出的一种计算系统。主要分为两部分,训练阶段和推理阶段,在训练阶段,通过大量的数据集,来调整网络中各个节点的权值,在推理阶
[0003] 段,将需要处理的图片或者其他信号输入系统中,经过计算就可以得出该信号的特征值。卷积神经网络算法在目标识别、图像处理、人脸检测等应用方向相比传统算法有较大优势。但传统的通用处理器(CPU)已经无法适应如今神经网络算法对硬件的需求,因此,为其设计专用的新型神经网络加速器也是目前热门的研究课题。
[0004] 二值化神经网络是加速技术中权重系数压缩的一个方向,为了减少系数的存储空间,提高运算速度,权值从最开始的32bit浮点数到8bit定点数再到本发明所涉及的1bit数,因此之前针对普通卷积神经网络算法的通用加速器在加速二值化网络时会有大量计算资源冗余,无法达到最佳效率,经典的XNOR-POPCONUT结构的二值化加速器采用了同或操作和pop count操作来代替乘法和累加,但只能使用在权值和输入都为1bit的算法上,因此需要针对权值为1bit,输入为n bit的算法来设计硬件加速器并设计合适的控制逻辑。

发明内容

[0005] 本发明提供了一种用于权值1bit,输入为n bit的二值化卷积神经网络加速器的结构设计和一种循环展开方法。该结构具有非常好的可扩展性,可以根据实际电路资源的多少来调整加速器的规模。有非常好的计算效率,可以让加速器流水线运行,按照设计好的顺序来一次排序权值,简化了权值读取逻辑。并为其设计了新的计算单元,减少了电路消耗。
[0006] 为了达到上述目的,本发明所述的用于二值化神经网络的硬件加速器结构采用了如下的技术方案实现:
[0007] 一种用于二值化神经网络的加速器结构,加速器包括两块特征值SRAM,位宽为n*K,K块权值SRAM,位宽为K,K个专用卷积计算模块,K个加法树单元,K个累加器,特征值SRAM和K个权值SRAM分别连接K个专用卷积计算模块作为输入,每个卷积计算模块的输出连接到相对应的加法树单元,计算结果再连接到每个累加器,所有累加器的结果全部接入另一块特征值SRAM,K值可以根据算法自行调节,一般为2的指数幂。
[0008] 整体结构由权值和特征值的存储SRAM,专用计算模块,加法树单元和累加器组成,专用计算模块的输入端为权值和特征值的存储SRAM,输出结果输出到加法数单元内,为了满足流水线计算,加法树内共有(K2-1)个加法器组成依次减半的阵列。最后数据进入到累加器中完成累加,累加完成后输入到第二个特征值存储SRAM中当作下一层卷积计算的输入特征值。
[0009] 本发明为了提高结构的可配置性,K为可调节量,可以根据不同的卷积网络大小和电路资源的多少来进行设置,最好满足CIN和COUT都是K的整数倍,并且修改K之后,控制逻辑不需要变化。
[0010] 每个专用卷积计算模块同时完成K个位宽为n bit的特征值与1bit的权重值的如下计算,
[0011] f=f⊙w+(~w)
[0012] 特征值的每一位分别和权重值做同或运算再加上权重值的取反。
[0013] 针对二值化卷积网络的特点,本发明采用了一种新的循环展开方式,配合硬件结构中可调节的块大小K,可以在改变硬件结构后依旧使用同样的循环展开方式,不用修改控制逻辑。循环展开方式有以下步骤:
[0014] S1:同时计算前K个通道的第一个特征值与对应前K个输出通道的第一个权值的卷积计算。
[0015] S2:得到的结果经过K个加法树单元后进入分别进入K个累加器。
[0016] S3:计算前K+1~2K个通道的第一个特征值与对应前K个输出通道的第一个权值的卷积计算,重复S1,S2的内容,直到CIN个输入通道的第一个特征值都与前K个输出通道的第一个权值的卷积计算完成,并存入对应的前K个累加器。
[0017] S4:重复S1,S2,S3的步骤,将一个W*W内的特征值全部算完。此时累加器内累加的结果就是前K个输出通道的第一个特征值的输出结果。
[0018] S5:将结果存入另一个SRAM,清空累加器。
[0019] S6:重复S1,S2,S3,S4,S5的步骤,知道COUT个输出通道的第一个特征值都已经计算完成存入SRAM。
[0020] S7:重复S1,S2,S3,S4,S5,S6的步骤,直到输出通道的FH*FW个特征值全部计算完成。
[0021] 本发明还提供了一种新的权值存储格式,可以简化权值读取模块的逻辑,需要在工作前将权值按此规律存入K个K bit位宽的权值SRAM内。
[0022] 本发明设计的加速器硬件结构与特殊的循环展开顺序结合,使加速器可以在根据网络的复杂程度和硬件资源的多少通过合理调整K的值来决定加速器的资源消耗和性能,根据目前深层神经网络的发展趋势,输入通道和输出通道的数量会随着层数的增加而增加,而特征值图像的尺寸则会根据层数的增加而减少,本发明通过通道并行的机制,保证了每一层网络都能运用所有的硬件资源,而不像传统的一些卷积核并行或者特征值图像并行的加速器,在后续层的计算中会出现计算资源和存储资源的浪费。

附图说明

[0023] 图1为二值化神经网络加速器整体结构示意图
[0024] 图2为加法树单元示意图
[0025] 图3为专用卷积计算模块的电路示意图
[0026] 图4为权值在SRAM内的存储格式示意图
[0027] 图5为特征值在SRAM内的存储格式示意图

具体实施方式

[0028] 下面结合附图对本发明做出详细描述:
[0029] 参照图1,本发明所述的二值化神经网络硬件加速器结构包括两块特征值SRAM,位宽为n*K,K块权值SRAM,位宽为K,K个专用计算模块,K个加法树单元,K个累加器。权值SRAM存放按照后文所述规律排列的权值,两块特征值位宽为K*n bit的SRAM分别存放输入特征值和输入特征值,在一层计算完成后,输出特征值SRAM中存放的数据就成为了下一层的输入特征值。每一块权值计算模块的两个输入信号分别来自同一块输入特征SRAM和不同的权值SRAM,位宽分别为K*n bit和K bit,当计算完成之后,计算结果进入加法树单元进行累加,结果分别存入K个累加器中,累加器位宽可以根据网络复杂程度调整,一般取32bit。
[0030] 参照图2,展示了一个K=8的加法树的结构,共七个加法器按照4-2-1的顺序排列,加法器位数为n bit,为了防止溢出,每个加法器都有饱和运算功能,即当结果超出位宽上限时则输出最大值。加法树的设计是为了保证整个加速器按照流水线的形式运行,在上一次计算还没有完成时就可以进行下一次计算。
[0031] 参考图3,展示了一个K=2的专用卷积计算单元的结构,输入为2个n bit的特征值和2个1bit的权值,输出为2个n bit的输出,成为之后加法树单元的输入。根据K的变化,专用卷积计算单元的内部结构也会发生变化,K越大,内部的计算模块就越多。模块完成的计算就是二值化后的卷积运算,普通的卷积需要乘法,但是当权值为1bit时,则异化为权值为1,就保持原值,权值为0,就取反。本发明采用了如下的计算形式来代替之,节省了电路资源。
[0032] f=f⊙w+(~w)
[0033] 本发明采用了新的循环展开公式,一般加速器多采用特征值并行,最后展开输出通道,但是根据深层神经网络的特点,输入通道和输出通道的数量会随着层数的增加而增加,而特征值图像的尺寸则会根据层数的增加而减少,本发明通过通道并行的机制,保证了每一层网络都能运用所有的硬件资源,而不像传统的一些卷积核并行或者特征值图像并行的加速器,在后续层的计算中会出现计算资源和存储资源的浪费。计算依照以下步骤:
[0034] S1:同时计算前K个通道的第一个特征值与对应前K个输出通道的第一个权值的卷积计算,前K个通道的第一个特征值放在特征值SRAM内,输入到K个专用卷积计算模块内,前K个输入通道的针对前K个输出通道的第一个权值则分别放在K个权值SRAM,分别输入K个专用卷积计算模块,这部操作是并行执行的,可以让全部计算单元同时工作。
[0035] S2:得到的结果经过K个加法树单元后进入分别进入K个累加器,在加法树单元进行计算的过程中下一次S1阶段就已经开始,意义在于提高加速器的频率,降低关键路径的长度。
[0036] S3:计算前K+1~2K个通道的第一个特征值与对应前K个输出通道的第一个权值的卷积计算,重复S1,S2的内容,直到CIN个输入通道的第一个特征值都与前K个输出通道的第一个权值的卷积计算完成,并存入对应的前K个累加器。
[0037] S4:重复S1,S2,S3的步骤,将一个W*W内的特征值全部算完。此时就完成了一个传统卷积神经网络的卷积运算,即一个卷积核与对应的特征值完成对应的乘法并累加。此时K个累加器内累加的结果就是前K个输出通道的第一个特征值的输出结果。
[0038] S5:将结果存入另一个SRAM,清空累加器。
[0039] S6:重复S1,S2,S3,S4,S5的步骤,直到COUT个输出通道的第一个特征值都已经计算完成存入SRAM。
[0040] S7:重复S1,S2,S3,S4,S5,S6的步骤,直到输出通道的FH*FW个特征值全部计算完成,此时一层的神经网络计算已经完成,可以进入下一层的计算。
[0041] 参考图4,是权值SRAM中权值的排列规律,需要在加速器工作前就提前将权值按此顺序排好存放在SRAM中,图5所示的是一个K=4的加速器中第一个权值SRAM的存放示意,其中Wn_m(i)的意思为第N个输入通道对应第M个输出通道的卷积核内的第i个权值。传统加速器一般是以一个卷积核为顺序依次存放,本发明所规定的存放顺序有利于权值读取模块的简化,只需要按顺序读取并根据计数器循环即可,不需要复杂的地址计算逻辑。
[0042] 参考图5,是特征值SRAM中特征值的排列规律,其中Fn(i)的意思是第n个输入通道的的这种排列规律的好处是每层输出的特征值按此顺序存放不需要经过调整就可以直接作为下一层的输入进行计算。第一层输入图像一般需要调整顺序再存入特征值SRAM后才可以进行计算。