【技术实现步骤摘要】
一种基于NORFlash模块的神经网络的数据切分运算方法
本专利技术涉及半导体集成电路领域,特别涉及一种基于NORFlash模块的神经网络的数据切分运算方法、单芯片实现神经网络的运算方法、多芯片实现神经网络的运算方法、神经网络的IP核运算架构。
技术介绍
闪存作为一种非易失性存储技术被广泛使用,通常的实现方式为使用浮栅(FloatingGate)或者电荷捕获结构(ChargeTrap)在场效应晶体管(FieldEffectTransistor,FET)中存储电荷,构成存储单元,存储单元构成阵列用于储存大量数据。根据阵列结构的不同,闪存可分两种:NAND型和NOR型。NOR型闪存(NORFlash)的存储单元以并联的方式连接。NORFlash可以对其每一个存储单元进行独立的读写操作,并且相对于NANDFlash具有更低的读延时。神经网络作为一种人工智能(ArtificialIntelligence,AI)算法被广泛用于图像识别、语音识别等诸多领域,而且效果甚佳。以图像识别的AlexNet为例,神经网络主要有如下 ...
【技术保护点】
1.一种基于NOR Flash模块的神经网络的数据切分运算方法,所述NOR Flash模块包括:输入信号生成电路,输出信号测量电路,以及由若干个存储单元,和/或电流镜构成的存储阵列,在所述NOR Flash模块中设置至少一个存储阵列;其特征在于,包括:/n在神经网络预置参数中获取待运算数据信息,以及神经网络各层的权值信息;/n判断所述待运算数据信息、以及神经网络各层的权值信息是否超过所述存储阵列的规模参数;/n当超过时,根据存储阵列的规模参数对所述待运算数据信息、以及神经网络各层的权值信息进行切分;/n将切分后的所述待运算数据信息对应的加载在所述存储阵列的输入端,且根据所述 ...
【技术特征摘要】
1.一种基于NORFlash模块的神经网络的数据切分运算方法,所述NORFlash模块包括:输入信号生成电路,输出信号测量电路,以及由若干个存储单元,和/或电流镜构成的存储阵列,在所述NORFlash模块中设置至少一个存储阵列;其特征在于,包括:
在神经网络预置参数中获取待运算数据信息,以及神经网络各层的权值信息;
判断所述待运算数据信息、以及神经网络各层的权值信息是否超过所述存储阵列的规模参数;
当超过时,根据存储阵列的规模参数对所述待运算数据信息、以及神经网络各层的权值信息进行切分;
将切分后的所述待运算数据信息对应的加载在所述存储阵列的输入端,且根据所述神经网络各层的权值信息,设置所述存储阵列中各存储单元的阈值电压;并根据所述待运算数据信息通过输入信号生成电路转换后的电压以及所述存储单元的阈值电压进行运算处理;
将所述存储阵列中各所述存储单元运算后的输出信号,通过所述输出信号测量模块进行测量后经由累加模块进行累加和/或拼接;或通过数据总线进行传输后经由所述累加模块进行累加和/或拼接;累加和/或拼接完成后输出。
2.根据权利要求1所述的基于NORFlash模块的神经网络的数据切分运算方法,其特征在于,包括:
获取参与运算的权值阵列尺寸以及参与运算的所述存储阵列规模;
当所述参与运算的权值阵列尺寸大于所述存储阵列的规模时,将所述参与运算的权值阵列根据所述存储阵列的规模切分成多组权值子阵列;
根据切分后对应的每一个参与运算的权值子阵列尺寸对参与运算的所述待运算数据信息切分,并通过所述输入信号生成电路对应的加载在参与运算的所述存储阵列的输入端进行运算;
将每个所述存储阵列运算后的输出结果进行累加和/或拼接,将累加和/或拼接后的结果设置为所述输出信号。
3.根据权利要求2所述的基于NORFlash模块的神经网络的数据切分运算方法,其特征在于,包括:
当所述NORFlash模块中设置一个或多个数据缓存单元,在所述NORFlash模块中进行卷积层切分运算包括:
获取卷积核的尺寸以及参与运算的所述存储阵列的规模;
当所述卷积核的尺寸大于所述存储阵列的规模时,将所述卷积核根据所述存储阵列的规模切分成多组;
根据切分后对应的每一个所述卷积核的尺寸进一步的将所述待运算数据信息切分成多组,将切分后对应的各组所述待运算数据信息通过所述输入信号生成电路,对应的加载在参与运算的所述存储阵列的输入端并进行卷积运算;
将每个所述存储阵列运算后的输出结果进行累加,和/或拼接,将累加和/或拼接后的结果设置为所述输出信号。
4.根据权利要求3所述的基于NORFlash模块的神经网络的数据切分运算方法,其特征在于,包括:
当所述NORFlash模块中设置一个或多个数据缓存单元,在所述NORFlash模块中进行卷积层切分运算包括:
获取卷积核的尺寸以及参与运算的所述存储阵列的规模;
当切分后的所述卷积核的尺寸等于所述存储阵列的规模时,将所述待运算数据信息通过所述输入信号生成电路一一对应的加载在每个所述存储阵列的输入端,并进行运算处理。
5.根据权利要求3所述的基于NORFlash模块的神经网络的数据切分运算方法,其特征在于,包括:
当所述NORFlash模块中设置一个或多个数据缓存单元,在所述NORFlash模块中进行卷积层切分运算包括:
获取卷积核的尺寸以及参与运算的所述存储阵列的规模;
当切分后的所述卷积核的尺寸小于所述存储阵列的规模时,根据预设运算规则在所述存储阵列中选取满足对应位置关系的所述存储单元参加运算;
将未被选取的所述存储单元进行编程处理,并设置为高阈值状态,同时将所述输入信号生成电路对应的输入端输入的所述待运算数据信息设置为0。
6.根据权利要求3所述的基于NORFlash模块的神经网络的数据切分运算方法,其特征在于,包括:
当所述NORFlash模块中设置一个数据缓存单元,并通过一个所述存储阵列对切分后的所述卷积核进行运算处理,则进行单通道运算具体包括:
获取卷积核的尺寸以及参与运算的所述存储阵列的规模;
当所述卷积核的尺寸大于所述存储阵列的规模时,将所述卷积核根据所述存储阵列的规模切分成多组;
设置切分后的每组所述卷积核的运算顺序;
根据运算顺序通过所述存储阵列进行运算,当每一组运算完成后,对所述存储阵列中的存储单元的阈值电压进行重新编程,并对应的设置所述存储单元的阈值;
将每次运算后的结果进行累加,和/或拼接。
7.根据权利要求6所述的基于NORFlash模块的神经网络的数据切分运算方法,其特征在于,包括:
当所述NORFlash模块中设置多个数据缓存单元以及多个运算通道,运算通道的数量与所述数据缓存单元的数量一一对应,并通过一个所述存储阵列对切分后的所述卷积核进行运算处理,具体包括:
获取每个运算通道的运算后的结果;
并将每个运算后的结果进行累加,和/或拼接。
8.根据权利要求3所述的基于NORFlash模块的神经网络的数据切分运算方法,其特征在于,包括:
当所述NORFlash模块中设置一个数据缓存单元以及一个运算通道时,通过多个所述存储阵列对切分后的所述卷积核进行运算处理具体包括:
根据各所述存储阵列的规模将所述卷积核切分成多组;
根据切分后的多组所述卷积核的权值大小,对应的设置所述存储阵列中各存储单元的阈值电压;并对每个卷积核对应的所述存储阵列进行运算处理;
将运算后的结果进行累加,和/或拼接。
9.根据权利要求8所述的基于NORFlash模块的神经网络的数据切分运算方法,其特征在于,包括:
当所述NORFlash模块中设置多个数据缓存单元以及多个运算通道,所述运算通道的数量与所述数据缓存单元的数量一一对应,并通过多个所述存储阵列对切分后的所述卷积核进行运算处理包括:
每个所述运算通道设置对应多个所述存储阵列;
将每个运算通道对应的所述数字缓存单元输出的所述待运算数据信息对应的输入至所述存储阵列的输入端;
并将切分后的所述卷积核的各权值根据预设规则对应的存储在每个所述存储阵列中,并对应编程为所述存储单元的阈值;
当每个运算通道中的各所述存储阵列运算完成后,将对应的输出结果,按照每个所述运算通道进行累加处理。
10.根据权利要求2所述的基于NORFlash模块的神经网络的数据切分运算方法,其特征在于,包括:
当所述NORFlash模块中未设置数据缓存单元,在所述NORFlash模块中进行卷积层切分运算包括:
获取卷积核的尺寸、所述待运算数据信息的规模以及参与运算的所述存储阵列的规模;
当所述待运算数据信息的规模,和/或卷积核的尺寸大于所述存储阵列的规模时,将所述待运算数据信息,和/或卷积核根据所述存储阵列的规模,切分成多组;
将切分后的卷积核编程到存储阵列,然后把切分后的待运算数据信息通过输入信号生成电路,并通过所述输入信号生成电路对应的加载在参与运算的所述存储阵列的输入端进行卷积运算;
将每个所述存储阵列运算后的输出结果进行累加和/或拼接,将累加后的结果设置为所述输出信号。
11.根据权利要求10所述的基于NORFlash模块的神经网络的数据切分运算方法,其特征在于,包括:
当所述NORFlash模块中未设置数据缓存单元,在所述NORFlash模块中进行卷积层切分运算包括:
获取卷积核的尺寸、待运算数据信息的规模以及参与运算的所述存储阵列的规模;
当切分后的计算所需存储阵列的尺寸等于所述存储阵列的规模时,将所述切分后的卷积核编程到所述存储阵列,所述切分后的待运算数据信息通过所述输入信号生成电路一一对应的加载在每个所述存储阵列的输入端,并进行运算处理。
12.根据权利要求10所述的基于NORFlash模块的神经网络的数据切分运算方法,其特征在于,包括:
当所述NORFlash模块中未设置数据缓存单元,在所述NORFlash模块中进行卷积层切分运算包括:
获取卷积核的尺寸、待运算数据信息的规模以及参与运算的所述存储阵列的规模;
当切分后的计算所需存储阵列的尺寸小于所述存储阵列的规模时,根据预设运算规则在所述存储阵列中选取满足对应位置关系的所述存储单元参加运算;
将未被选取的所述存储单元进行编程处理,并设置为高阈值状态,同时将所述输入信号生成电路对应的输入端输入的所述待运算数据信息设置为0。
13.根据权利要求10所述的基于NORFlash模块的神经网络的数据切分运算方法,其特征在于,包括:
当所述NORFlash模块中未设置数据缓存单元,且所述NORFlash模块中只含有一个所述存储阵列进行切分运算包括:
获取所述待运算数据信息的规模的输入个数,以及输出个数;
当输入个数,以及输出个数至少有一个大于所述存储阵列的输入端个数以及输出端个数时,
根据所述存储阵列的输入端个数以及输出端个数对所述待运算数据信息以及所述参与运算的权值阵列进行切分成多组,使其切分后的每组所述待运算数据信息以及所述参与运算的权值阵列的输入个数,以及输出个数不大于所述存储阵列的输入端个数以及输出端个数;设置切分后的每组所述待运算数据信息运算顺序;
根据运算顺序分别将切分后的每组所述待运算数据信息加载至所述存储阵列中,并进行运算处理;
当每一组运算完成后,通过在所述NORFlash模块中设置的存储模块存储运算结果,对所述存储阵列中的存储单元进行重新编程,并对应的设置所述存储单元的阈值;
将每次运算后的结果进行累加,和/或拼接。
14.根据权利要求10所述的基于NORFlash模块的神经网络的数据切分运算方法,其特征在于,包括:
当所述NORFlash模块中未设置缓存单元时,且通过多个所述存储阵列进行卷积运算包括:
获取所述待运算数据信息的规模的输入个数,以及输出个数;
当所述待运算数据信息的规模的输入个数,以及输出个数至少有一个大于所述存储阵列的输入端个数以及输出端个数时,
根据每个所述存储阵列的输入端个数以及输出端个数,将所述待运算数据信息以及所述参与运算的权值阵列对应的切分成多组,且切分后的所述待运算数据信息,以及所述运算的权值阵列与每个所述存储矩阵对应设置;
使其切分后的每组所述待运算数据信息的输入个数,以及输出个数不大于所述存储阵列的输入端个数以及输出端个数;
将切分后的所述待运算数据信息对应的加载在所述存储阵列的输入端,并将所述参与运算的权值阵列对应的编程为对应存储单元的阈值电压,并获取每个所述存储阵列的输出结果;
将每个所述存储阵列的输出结果与所述待运算数据信息的输出个数对应,将每次运算后的结果进行累加,和/或拼接。
15.根据权利要求2所述的基于NORFlash模块的神经网络的数据切分运算方法,其特征在于,包括:
当所述NORFlash模块中通过一个或多个所述存储阵...
【专利技术属性】
技术研发人员:李政达,任军,郦晨侠,吕向东,盛荣华,徐瑞,陶临风,
申请(专利权)人:合肥恒烁半导体有限公司,
类型:发明
国别省市:安徽;34
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。