CN109800876B - 一种基于NOR Flash模块的神经网络的数据运算方法 - Google Patents

一种基于NOR Flash模块的神经网络的数据运算方法 Download PDF

Info

Publication number
CN109800876B
CN109800876B CN201910056832.8A CN201910056832A CN109800876B CN 109800876 B CN109800876 B CN 109800876B CN 201910056832 A CN201910056832 A CN 201910056832A CN 109800876 B CN109800876 B CN 109800876B
Authority
CN
China
Prior art keywords
common
bit line
output
neural network
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910056832.8A
Other languages
English (en)
Other versions
CN109800876A (zh
Inventor
李政达
任军
徐瑞
陶临风
吕向东
徐培
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hengshuo semiconductor (Hefei) Co.,Ltd.
Original Assignee
Zbit Semiconductor Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zbit Semiconductor Ltd filed Critical Zbit Semiconductor Ltd
Priority to CN201910056832.8A priority Critical patent/CN109800876B/zh
Publication of CN109800876A publication Critical patent/CN109800876A/zh
Application granted granted Critical
Publication of CN109800876B publication Critical patent/CN109800876B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Semiconductor Memories (AREA)
  • Non-Volatile Memory (AREA)
  • Read Only Memory (AREA)

Abstract

本发明公开了一种基于NOR Flash模块的神经网络的数据运算方法,包括:输入信号生成电路,输出信号测量电路,以及由若干个存储单元,或电流镜构成的存储阵列,在所述NOR Flash模块设置至少一个存储阵列;根据神经网络中预置权值设置所述存储阵列中各存储单元的阈值电压;将待运算数据信息进行设定格式的转换;将转换后的待运算数据信息通过输入信号生成电路输入至所述存储阵列的输入端;由所述存储阵列根据所述存储单元的阈值电压、以及通过输入信号生成电路向所述存储阵列的输入端输入的数据参数,通过预设算法进行运算处理;将对所述存储阵列运算处理后的输出结果通过所述输出信号测量电路输出。

Description

一种基于NOR Flash模块的神经网络的数据运算方法
技术领域
本发明涉及半导体集成电路领域,特别涉及一种基于NOR Flash模块的神经网络的数据运算方法。
背景技术
闪存作为一种非易失性存储技术被广泛使用,通常的实现方式为使用浮栅(Floating Gate)或者电荷捕获结构(Charge Trap)在场效应晶体管(Field EffectTransistor,FET)中存储电荷,构成存储单元,存储单元构成阵列用于储存大量数据。
根据阵列结构的不同,闪存可分两种:NAND型和NOR型。NOR型闪存 (NOR Flash)的存储单元以并联的方式连接。NOR Flash可以对其每一个存储单元进行独立的读写操作,并且相对于NAND Flash具有更低的读延时。
神经网络作为一种人工智能(Artificial Intelligence,AI)算法被广泛用于图像识别、语音识别等诸多领域,而且效果甚佳。以图像识别的AlexNet为例,神经网络主要有如下操作,分别为(1)输入层像素块和卷积核之间的卷积操作,(2)为引入非线性而进行的激活操作,(3)为减少特征值而对特征图进行的下采样操作 (即池化),以及(4)卷积之后的全连接操作。其中,绝大部分计算量都在卷积层和全连接层。
大型的神经网络,以其庞大的参数集和计算量,及其复杂的网络类型(CNN, RNN,DNN等),为AI芯片的设计带来了重重阻碍。其中两个问题尤为明显,一是计算的带宽对计算速度的限制,二是频繁的数据访存对功耗的要求。
基于以上存在技术问题,本申请提供了解决以上技术问题的技术方案。
发明内容
本发明的目的是提供一种基于NOR Flash模块的神经网络的数据运算方法,实现了基于NOR Flash存储单元的神经网络运算,同时提高了神经网络的计算速,并进一步降低了功耗。
本发明提供的技术方案如下:
一种基于NOR Flash模块的神经网络的数据运算方法,包括:输入信号生成电路,输出信号测量电路,以及由若干个存储单元,或电流镜构成的存储阵列,在所述NOR Flash模块设置至少一个存储阵列;根据神经网络中预置权值设置所述存储阵列中各存储单元的阈值电压;将待运算数据信息进行设定格式的转换;将转换后的待运算数据信息通过输入信号生成电路输入至所述存储阵列的输入端;由所述存储阵列根据所述存储单元的阈值电压、以及通过输入信号生成电路向所述存储阵列的输入端输入的数据参数,通过预设算法进行运算处理;将对所述存储阵列运算处理后的输出结果通过所述输出信号测量电路输出;所述输入信号生成电路包括:将待运算数据信息转换成幅值信号的DAC转换子电路;和/或将待运算数据信息转换成脉冲信号的DTC转换子电路;当由所述存储单元构成所述存储阵列包括:在所述存储阵列中每一行各存储单元的栅端相连,形成对应行的公共字线;在所述存储阵列中每一行,或列各存储单元的源端相连,形成对应行,或列的公共源线;在所述存储阵列中每一列各存储单元的漏端相连,形成对应列的公共位线;将待运算数据信息通过所述DAC转换子电路生成电压幅值信号,加载至所述存储阵列中的各公共位线上;通过所述存储阵列中各所述公共字线使能相应的存储单元;根据所述公共位线上加载的电压幅值信号以及各存储单元的阈值电压获取各所述存储单元输出的电流信号;对各所述公共源线上所述存储单元输出的电流信号进行累加,累加后通过输出信号测量电路进行测量输出电流输出参数,或电荷、或电压输出参数;在所述NOR Flash模块设置差分电路;当神经网络的预置参数中包括负参数时,通过所述存储阵列的两条公共位线或者两条公共源线上的存储单元进行运算,并将两路输出结果通过所述差分电路进行差分运算处理;具体包括:设置参与运算的所述存储阵列的公共位线,或者公共源线为偶数;相邻两条公共位线,或者公共源线设置为一组;每一组中两条所述公共源线,或公共位线运算后累加的输出信号通过所述差分电路进行差值计算,将差值计算的结果进一步的通过所述输出信号测量电路测量后输出;
或,
每一组中两条所述公共源线,或公共位线运算后累加的输出信号通过输出信号测量电路,将测量后的结果通过所述差分电路进行差值计算后输出;其中,在每一组中的两条所述公共源线,或公共位线中任一条设置为负线。
进一步优选的,包括:当由所述电流镜构成所述存储阵列包括:电流镜由 MOS管和存储单元构成;在所述存储阵列中每一行上的所述存储单元的栅端相连,且每一行共用一个MOS管;在所述存储阵列中每一列上的所述电流镜中存储单元的漏端相连,建立公共位线;在所述存储阵列中每一列或每一行的所述电流镜中存储单元的源端相连,建立公共源线。
进一步优选的,包括:将待运算数据信息通过所述DAC转换子电路生成电流幅值信号,并加载至所述存储阵列中各电流镜中的MOS管的漏端;通过所述存储阵列中各所述公共位线加载驱动电压;根据各电流镜中的MOS管的漏端加载至各公共字线上的电流幅值信号,各存储单元的阈值电压,以及驱动电压,获取各所述存储单元输出的电流信号;对各所述公共源线上,或所述公共位线上所述存储单元输出的电流信号进行累加;累加后通过输出信号测量电路进行测量输出电流输出参数,或者电荷、或电压输出参数。
进一步优选的,包括:将待运算数据信息通过所述DTC转换子电路转换成电压脉冲信号,且加载至所述存储阵列中的各公共字线上;通过所述存储阵列中各所述公共位线施加驱动电压信号;根据所述公共字线上加载的电压脉冲信号,各存储单元的阈值电压,以及在各所述公共位线施加的驱动电压信号,获取各所述存储单元输出的电流脉冲信号;对各所述公共源线上,或各所述公共位线的电流脉冲信号进行累加;通过输出信号测量电路将累加后的电流脉冲信号转换成电荷信号,并进行测量输出。
进一步优选的,包括:将待运算数据信息通过所述DTC转换子电路转换成电压脉冲信号,加载至所述存储阵列中的各公共位线上;通过所述存储阵列中各所述公共字线使能相应的存储单元;根据所述公共位线上加载的电压脉冲信号以及各存储单元的阈值电压,获取各所述存储单元输出的电流脉冲信号;对各所述公共源线上的电荷信号电流脉冲信号进行累加;通过输出信号测量电路将累加后的电流脉冲信号转换成电荷信号,并进行测量输出。
进一步优选的,包括:将待运算数据信息通过所述DTC转换子电路转换成电流脉冲信号,并通过所述存储阵列中各电流镜中的MOS管的漏端加载至各公共字线上;通过所述存储阵列中各所述公共位线加载驱动电压;根据各电流镜中的MOS管的漏端加载至各公共字线上的电流幅值信号,以及各存储单元的阈值电压,以及驱动电压,获取各所述存储单元输出的电流脉冲信号;对各所述公共源线,或所述公共位线上的电流脉冲信号进行累加;通过输出信号测量电路将累加后的电流脉冲信号转换成电荷信号,并进行测量输出。
进一步优选的,还包括:在所述NOR Flash模块中将每4个所述存储单元设置为一个乘法器,设置多个所述乘法器;将所述乘法器中的所述存储单元设置为两组,每相邻两个存储单元设置为一组存储单元组;第一组所述存储单元组中的一个所述存储单元与第二组所述存储单元组中一个所述存储单元的栅端相连,建立第一公共字线;且漏端相连,建立第一公共位线;第一组所述存储单元组中的另一个所述存储单元与第二组所述存储单元组中另一个所述存储单元的栅端相连,建立第二公共字线;且漏端相连,建立第二公共位线;在第一组所述存储单元组中建立第一公共源线;在第二组所述存储单元组中建立第二公共源线;通过输入信号生成电路分别对应的向所述第一公共字线和所述第二公共字线输入待运算数据信息,并向所述第一公共位线和所述第二公共位线加载驱动电压;或通过输入信号生成电路分别对应的向第一公共位线和所述第二公共位线输入待运算数据信息,并向所述第一公共字线和所述第二公共字线加载使能信号;根据向所述第一公共字线和所述第二公共字线,或第一公共位线和所述第二公共位线输入的待运算数据信息;以及所述存储单元的阈值电压信号,通过所述第一公共源线和所述第二公共源线,或所述第一公共位线和所述第二公共位线输出每组所述存储单元组的输出数据参数;将各乘法器中每组中对应的第一公共源线和第二公共源线相连,或第一公共位线和第二公共位线相连,并将每组输出的所述输出数据参数在对应的第一公共源线和第二公共源线,或第一公共位线和第二公共位线上进行累加,将每组累加后的结果通过差分电路进行差值计算,并将差值计算结果通过所述输出信号测量电路进行测量后输出。
进一步优选的,还包括:在所述NOR Flash模块中将每4个所述存储单元设置为一个乘法器,设置多个所述乘法器;将所述乘法器中的所述存储单元设置为两组,每相邻两个存储单元设置为一组存储单元组;第一组所述存储单元组中的一个所述存储单元与第二组所述存储单元组中一个所述存储单元的栅端相连,建立第一公共字线;且漏端相连,建立第一公共位线;第一组所述存储单元组中的另一个所述存储单元与第二组所述存储单元组中另一个所述存储单元的栅端相连,建立第二公共字线;且漏端相连,建立第二公共位线;在第一组所述存储单元组中建立第一公共源线;在第二组所述存储单元组中建立第二公共源线;通过输入信号生成电路分别对应的向所述第一公共字线和所述第二公共字线输入待运算数据信息,并向所述第一公共位线和所述第二公共位线加载驱动电压;或通过输入信号生成电路分别对应的向第一公共位线和所述第二公共位线输入待运算数据信息,并向所述第一公共字线和所述第二公共字线加载使能信号;根据向所述第一公共字线和所述第二公共字线,或第一公共位线和所述第二公共位线输入的待运算数据信息;以及所述存储单元的阈值电压信号,通过所述第一公共源线和所述第二公共源线,或所述第一公共位线和所述第二公共位线输出每组所述存储单元组的输出数据参数;将各乘法器中每组中对应的第一公共源线和第二公共源线相连,或第一公共位线和第二公共位线相连,并将每组中输出的所述输出数据参数在对应的第一公共源线和第二公共源线,或第一公共位线和第二公共位线上进行累加,将每组累加后的结果通过所述输出信号测量电路进行测量,将测量后的结果通过差分电路进行差值计算后输出。
进一步优选的,还包括:当所述NOR Flash模块包括多个所述电流镜时;将每4个所述电流镜设置为一个乘法器,设置多个所述乘法器;将所述乘法器中的所述电流镜设置为两组,每相邻两个所述电流镜设置为一组电流镜组;第一组所述电流镜组中的所述电流镜中的存储单元共用第一MOS管作为第一输入管;第二组所述电流镜组中的所述电流镜中的存储单元共用第二MOS管作为第二输入管;第一组所述电流镜组中的一个所述存储单元与第二组所述电流镜组中一个所述存储单元的源端相连,建立第一公共源线;且漏端相连,建立第一公共位线;第一组所述电流镜组中的另一个所述存储单元与第二组所述电流镜组中另一个所述存储单元的源端相连,建立第二公共源线;且漏端相连,建立第二公共位线;通过输入信号生成电路分别对应的向第一输入管和第二输入管输入待运算数据信息;分别向所述第一公共位线和所述第二公共位线加载驱动电压;根据向所述第一输入管和所述第二输入管输入的待运算数据信息,以及所述电流镜的阈值电压,通过所述第一公共源线和所述第二公共源线,或通过所述第一公共位线和所述第二公共位线分别输出所述第一组所述电流镜组对应的第一输出数据参数和所述第二组所述电流镜组对应的第二输出数据参数;将各乘法器中每组中对应的第一公共源线和第二公共源线相连,或第一公共位线和第二公共位线相连,将每组中输出的第一输出数据参数和所述第二输出数据参数在对应的第一公共源线和第二公共源线,或第一公共位线和第二公共位线上进行累加,将每组累加后的结果通过差分电路进行差值计算,并将差值计算结果通过所述输出信号测量电路进行测量后输出。
进一步优选的,还包括:当所述NOR Flash模块包括多个所述电流镜时;将每4个所述电流镜设置为一个乘法器,设置多个所述乘法器;将所述乘法器中的所述电流镜设置为两组,每相邻两个所述电流镜设置为一组电流镜组;第一组所述电流镜组中的所述电流镜中的存储单元共用第一MOS管作为第一输入管;第二组所述电流镜组中的所述电流镜中的存储单元共用第二MOS管作为第二输入管;第一组所述电流镜组中的一个所述存储单元与第二组所述电流镜组中一个所述存储单元的源端相连,建立第一公共源线;且漏端相连,建立第一公共位线;第一组所述电流镜组中的另一个所述存储单元与第二组所述电流镜组中另一个所述存储单元的源端相连,建立第二公共源线;且漏端相连,建立第二公共位线;通过输入信号生成电路分别对应的向第一输入管和第二输入管输入待运算数据信息;分别向所述第一公共位线和所述第二公共位线加载驱动电压;根据向所述第一输入管和所述第二输入管输入的待运算数据信息,以及所述电流镜的阈值电压,通过所述第一公共源线和所述第二公共源线,或通过所述第一公共位线和所述第二公共位线分别输出所述第一组所述电流镜组对应的第一输出数据参数和所述第二组所述电流镜组对应的第二输出数据参数;将各乘法器中每组中对应的第一公共源线和第二公共源线相连,或第一公共位线和第二公共位线相连,将每组中输出的第一输出数据参数和所述第二输出数据参数在对应的第一公共源线和第二公共源线,或第一公共位线和第二公共位线上进行累加,将每组累加后的结果通过所述输出信号测量电路进行测量,将测量后的结果通过差分电路进行差值计算后输出。
进一步优选的,还包括:在所述NOR Flash模块中将每4个所述存储单元设置为一个乘法器,设置多个所述乘法器;将所述乘法器中的所述存储单元设置为两组,每相邻两个存储单元设置为一组存储单元组;4个所述存储单元的栅端相连,建立公共字线;第一组所述存储单元组中的一个所述存储单元与第二组所述存储单元组中一个所述存储单元的漏端相连,建立第一公共位线;第一组所述存储单元组中的另一个所述存储单元与第二组所述存储单元组中另一个所述存储单元的漏端相连,建立第二公共位线;在第一组所述存储单元组中建立第一公共源线;在第二组所述存储单元组中建立第二公共源线;通过输入信号生成电路分别对应的向第一公共位线和所述第二公共位线输入待运算数据信息,并向所述公共字线加载使能信号;根据第一公共位线和所述第二公共位线输入的待运算数据信息;以及所述存储单元的阈值电压信号,通过所述第一公共源线和所述第二公共源线,输出每组所述存储单元组的所述输出数据参数;将各乘法器中每组中对应的第一公共源线和第二公共源线相连,将每组中输出的所述输出数据参数在对应的第一公共源线和第二公共源线上进行累加,将每组累加后的结果通过差分电路进行差值计算,并将差值计算结果通过所述输出信号测量电路进行测量后输出。
进一步优选的,还包括:在所述NOR Flash模块中将每4个所述存储单元设置为一个乘法器,设置多个所述乘法器;将所述乘法器中的所述存储单元设置为两组,每相邻两个存储单元设置为一组存储单元组;4个所述存储单元的栅端相连,建立公共字线;第一组所述存储单元组中的一个所述存储单元与第二组所述存储单元组中一个所述存储单元的漏端相连,建立第一公共位线;第一组所述存储单元组中的另一个所述存储单元与第二组所述存储单元组中另一个所述存储单元的漏端相连,建立第二公共位线;在第一组所述存储单元组中建立第一公共源线;在第二组所述存储单元组中建立第二公共源线;通过输入信号生成电路分别对应的向第一公共位线和所述第二公共位线输入待运算数据信息,并向所述公共字线加载使能信号;根据第一公共位线和所述第二公共位线输入的待运算数据信息;以及所述存储单元的阈值电压信号,通过所述第一公共源线和所述第二公共源线,输出每组所述存储单元组的所述输出数据参数;将各乘法器中每组中对应的第一公共源线和第二公共源线相连,将每组中输出的所述输出数据参数在对应的第一公共源线和第二公共源线上进行累加,将每组累加后的结果通过所述输出信号测量电路进行测量,将测量后的结果通过差分电路进行差值计算后输出。
一种基于NOR Flash模块的神经网络的卷积层运算方法,可执行上述所述的基于NOR Flash模块的神经网络的数据运算方法,数据缓存单元;所述数据缓存单元设置在所述输入信号生成电路之前;并向所述输入信号生成电路发送满足设定格式要求的待运算特征值;所述数据缓存单元根据卷积的运算规则在待运算特征值中选取满足对应位置关系的待运算的特征值,并对应的输入至所述输入信号生成电路中,所述输入信号生成电路按照对应的位置关系加载在存储阵列的输入端;将神经网络预置参数中每个卷积核的权值转换成一维向量,输入至所述存储阵列中设置为存储单元的阈值电压;且同一个卷积核的权值输入至同一公共字线上,或同一公共位线上相应位置的存储单元中;其中,所述存储阵列的输入端包括:公共字线,公共位线,以及电流镜中MOS管的漏极端。
进一步优选的,还包括:当所述NOR Flash模块中设置多个数据缓存单元和一个所述存储阵列时,则进行多通道运算包括:运算通道的数量与所述数据缓存单元的数量一一对应;多个所述运算通道于所述存储阵列上的存储单元同时进行运算;获取每个所述运算通道及数据缓存单元对应存储单元的输出信息,并在所述存储阵列的公共位线,或公共源线上将每个运算通道运算完成的输出信号进行累加;并通过输出信号测量电路输出。
进一步优选的,还包括:当所述NOR Flash模块中设置多个数据缓存单元和一个所述存储阵列时,则进行多通道运算包括:运算通道的数量与所述数据缓存单元的数量一一对应;任一运算通道处于工作状态时,将与其他运算通道对应的输入信号生成电路设置为等待状态,等待当前的运算通道运算结束后,再开启下一运算通道;获取每个所述运算通道及数据缓存单元对应存储单元的输出信息,并在所述存储阵列的公共位线,或公共源线上将每个运算通道运算完成的输出信号进行累加;并通过输出信号测量电路输出。
进一步优选的,还包括:当所述NOR Flash模块中设置一个数据缓存单元和一个所述存储阵列时,则进行多通道运算包括:通过公共字线,或者公共位线,根据预设的多个通道运算顺序,使能至对应的当前通道,获取当前通道运算完成的所述存储阵列的输出信号;当前通道运算完成后,将所述数据缓存单元中特征值更新为下一通道的待运算的特征值;将每一通道计算完成后对应的存储阵列的输出信号通过所述输出信号测量电路进行测量,并将通过所述输出信号测量电路测量完成的输出信号进行累加后输出。
进一步优选的,还包括:当待运算数据信息加载至所述存储阵列中的各公共位线上时;在所述存储阵列的每一条公共字线上增加一个偏移存储单元,将增加的各偏移存储单元的漏端相连,建立一条偏移位线;其栅端与对应的公共字线相连,源端与对应的与公共源线相连接;根据神经网络中预置的偏移量权值设置所述偏移位线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移位线上;将各偏移存储单元运算后的输出结果在对应的公共源线上进行累加,并通过所述输出信号测量电路输出。
进一步优选的,还包括:当待运算数据信息加载至所述存储阵列中的各公共字线上时,或通过电流镜中漏端输入时;在所述存储阵列的每一条公共位线上增加一个偏移存储单元,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,或,当通过电流镜中MOS管漏端输入时,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,并与偏移字线上作输入的MOS管分别组成电流镜;其漏端与对应的公共位线相连,其源端与对应的与公共源线相连接;根据神经网络中预置的偏移量权值设置所述偏移字线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移字线上;将各偏移存储单元运算后的输出结果在对应的公共位线,或公共源线上进行累加,并通过所述输出信号测量电路输出。
一种基于NOR Flash模块的神经网络的卷积层运算方法,可执行上述的Nor Flash模块的神经网络的卷积层运算方法,还包括:当在所述输入信号生成电路之前未设置有数据缓存单元时;根据卷积层的运算规则在所述存储阵列中选取满足对应位置关系存储单元,并设置对应存储单元的阈值电压;将满足设定格式要求的待运算特征值转换成一维向量,将一维向量组中的每个待运算特征值通过所述输入信号生成电路进行转换后,一一对应的加载在选取的满足对应位置关系存储单元的公共字线上,或公共位线上;将神经网络预置参数中每个卷积核的权值转换成一维向量,输入至所述存储阵列中选取的满足对应位置关系存储单元中,设置存储单元的阈值电压。
进一步优选的,还包括:当所述NOR Flash模块中进行两个以上运算通道运算时;将各运算通道的待运算特征值根据预设通道的运算顺序进行拼接,且与存储阵列的输入端一一对应;根据卷积运算规则,将各通道对应的卷积核的权值输入至对应位置的存储单元中,并将各运算通道的待运算特征值通过所述输入信号生成电路进行转换,以进行运算处理;将卷积运算后的同一条公共位线,或公共源线上各通道的存储单元的输出信号进行累加,并通过输出信号测量电路输出。
进一步优选的,还包括:当待运算数据信息加载至所述存储阵列中的各公共位线上时;在所述存储阵列的每一条公共字线上增加一个偏移存储单元,将增加的各偏移存储单元的漏端相连,建立一条偏移位线;其栅端与对应的公共字线相连,源端与对应的与公共源线相连接;根据神经网络中预置的偏移量权值设置所述偏移位线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移位线上;将各偏移存储单元运算后的输出结果在对应的公共源线上进行累加,并通过所述输出信号测量电路输出。
进一步优选的,还包括:当待运算数据信息加载至所述存储阵列中的各公共字线上时,或通过电流镜中漏端输入时;在所述存储阵列的每一条公共位线上增加一个偏移存储单元,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,或,当通过电流镜中MOS管漏端输入时,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,并与偏移字线上作输入的MOS管分别组成电流镜;其漏端与对应的公共位线相连,其源端与对应的与公共源线相连接;根据神经网络中预置的偏移量权值设置所述偏移字线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移字线上;将各偏移存储单元运算后的输出结果在对应的公共位线,或公共源线上进行累加,并通过所述输出信号测量电路输出。
一种基于NOR Flash模块的神经网络的池化层运算方法,可执行上述NOR Flash模块的神经网络的卷积层运算方法,还包括:在所述神经网络预置参数中获取池化窗口参数以及步长参数;在所述NOR Flash模块中根据池化窗口参数映射待池化特征值的池化区域,通过池化电路对池化区域进行池化处理,并通过输出信号测量电路输出;所述池化处理包括:模拟处理,或数字处理。
进一步优选的,当卷积层未设置有数据缓存单元时包括:根据所述池化窗口参数在所述NOR Flash模块中,设置多个池化电路;根据卷积运算规则获取每个子存储阵列的卷积运算后卷积结果;根据池化运算规则,将同一池化窗口所需的各卷积结果发送至同一池化电路中,不同的池化窗口发送到各自相应的池化模块中,进一步的通过池化电路进行池化处理。
进一步优选的,当卷积层设置有数据缓存单元时包括:根据所述池化窗口参数在所述NOR Flash模块中,设置多个子存储阵列;并进一步根据卷积运算规则的对所述数据缓存单元进行对应的扩展;在进行池化运算前,获取所述NOR Flash模块待卷积计算的特征值,并依次通过扩展后所述数据缓存单元、以及每个子存储阵列对应的输入信号生成电路加载在每个子存储阵列中的存储单元中;根据卷积运算规则获取每个子存储阵列的卷积运算后的卷积结果;并将每个子存储阵列的卷积结果发送至池化电路中,进一步的通过池化电路进行池化处理。
一种基于NOR Flash模块的神经网络的全连接层运算方法,可执行上述所述的基于NOR Flash模块的神经网络的数据运算方法;包括:在所述神经网络预置参数中获取待运算全连接层的权值;根据待运算全连接层的权值对所述存储阵列中的各存储单元进行编程处理,即设置所述存储阵列中的各存储单元进行全连接运算时的阈值电压;将输入的待运算全连接层的特征值转换成一维向量,通过输入信号生成电路转化为进行全连接运算的输入信号;将全连接运算的输入信号一一对应的加载在存储阵列的输入端;根据全连接的运算规则进行全连接运算处理。
进一步优选的,在进行全连接运算之前还包括:在所述神经网络预置参数中获取待运算全连接层数据输入参数以及数据输出参数;根据获取的待运算全连接层数据输入参数以及数据输出参数,在所述存储阵列中定位参加运算的存储单元的对应位置,并对参加运算的存储单元进行使能设置;对进行使能设置的存储单元进行编程处理。
进一步优选的,还包括:当待运算数据信息加载至所述存储阵列中的各公共位线上时;在所述存储阵列的每一条公共字线上增加一个偏移存储单元,将增加的各偏移存储单元的漏端相连,建立一条偏移位线;其栅端与对应的公共字线相连,源端与对应的与公共源线相连接;根据神经网络中预置的偏移量权值设置所述偏移位线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移位线上;将各偏移存储单元运算后的输出结果在对应的公共源线上进行累加,并通过所述输出信号测量电路输出。
进一步优选的,其特征在于,还包括:当待运算数据信息加载至所述存储阵列中的各公共字线上时,或通过电流镜中漏端输入时;在所述存储阵列的每一条公共位线上增加一个偏移存储单元,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,或,当通过电流镜中MOS管漏端输入时,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,并与偏移字线上作输入的MOS管分别组成电流镜;其漏端与对应的公共位线相连,其源端与对应的与公共源线相连接;根据神经网络中预置的偏移量权值设置所述偏移字线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移字线上;将各偏移存储单元运算后的输出结果在对应的公共位线,或公共源线上进行累加,并通过所述输出信号测量电路输出。
一种基于NOR Flash模块的神经网络的激活运算方法,可执行权利要求上述所述的基于NOR Flash模块的神经网络的卷积层运算方法,还包括进一步执行:在所述神经网络预置参数中获取激活函数;将获取的激活函数与卷积运算后的输出结果。
一种基于NOR Flash模块的神经网络的运算方法,可执行上述任一所述的基于NORFlash模块的神经网络的卷积层运算方法;
在执行卷积层运算之后还包括:在所述神经网络预置参数中获取激活函数;将获取的激活函数与卷积运算后的输出结果,进行激活运算处理;
再执行;在所述神经网络预置参数中获取池化窗口参数以及步长参数;在所述NORFlash模块中根据池化窗口参数映射待池化特征值的池化区域,通过池化电路对池化区域进行池化处理。
一种基于NOR Flash模块的神经网络的运算方法,可执行上述任一所述的基于NORFlash模块的神经网络的卷积层运算方法;
在执行卷积层运算之后还包括:在所述神经网络预置参数中获取激活函数;将获取的激活函数与卷积运算后的输出结果,进行激活运算处理;
再执行,
在所述神经网络预置参数中获取池化窗口参数以及步长参数;在所述NOR Flash模块中根据池化窗口参数映射待池化特征值的池化区域,通过池化电路对池化区域进行池化处理;
再执行,
在所述神经网络预置参数中获取待运算全连接层的权值;根据待运算全连接层的权值对所述存储阵列中的各存储单元进行编程处理,并设置所述存储阵列中的各存储单元进行全连接运算时的阈值电压;将输入的待运算全连接层的特征值转换成一维向量,通过输入信号生成电路转化进行处理成全连接运算的输入信号;将全连接运算的输入信号一一对应的加载在存储阵列的输入端;根据全连接的运算规则进行全连接运算处理。
一种基于NOR Flash模块的神经网络的运算方法,可执行上述任一所述的基于NORFlash模块的神经网络的卷积层运算方法;
在执行卷积层运算之后还包括:
在所述神经网络预置参数中获取池化窗口参数以及步长参数;在所述NOR Flash模块中根据池化窗口参数映射待池化特征值的池化区域,通过池化电路对池化区域进行池化处理;
再执行,
在所述神经网络预置参数中获取激活函数;将获取的激活函数与池化运算后的输出结果,进行激活运算处理;
再执行,
在所述神经网络预置参数中获取待运算全连接层的权值;根据待运算全连接层的权值对所述存储阵列中的各存储单元进行编程处理,并设置所述存储阵列中的各存储单元进行全连接运算时的阈值电压;将输入的待运算全连接层的特征值转换成一维向量,通过输入信号生成电路转化进行处理成全连接运算的输入信号;将全连接运算的输入信号一一对应的加载在存储阵列的输入端;根据全连接的运算规则进行全连接运算处理。
一种基于NOR Flash模块的神经网络的互联方法,可执行上述任一所述的所述的基于NOR Flash模块的神经网络的卷积层运算方法;包括:
在所述神经网络预置参数中获取激活函数;
将获取的激活函数与卷积运算后的输出结果;
和/或,执行上述任一所述的基于NOR Flash模块的神经网络的池化层运算方法;
和/或,执行上述任一所述的基于NOR Flash模块的神经网络的全连接层运算方法;
在执行卷积层运算,或,池化层运算,或激活运算,或全连接运算时,判断进行互联的相邻两层中上一层输出的特征值以及下一层待输入特征值的信号类型;
当上一层输出的特征值信号类型为与下一层待输入特征值信号类型相同时,则直接进行互联;信号类型相同:同为电流幅值信号,或电流脉冲信号,或同为电压幅值信号,或电压脉冲信号;否则,通过元器件进行信号转换,将上一层输出的特征值的信号类型转换为与下一层待输入特征值的信号类型;其中,相邻两层包括卷积层运算、池化层运算、激活运算、全连接运算中的任意两层。
本发明提供的一种基于NOR Flash模块的神经网络的数据运算方法,能够带来以下至少一种有益效果:
在本发明中,基于NOR Flash实现在内存计算(In Memory Computing),进行神经网络运算,可以实现比传统冯诺依曼结构更高的性能及更低的功耗,实现需要的资源也大大降低。因此,实现基于NOR Flash的高速低功耗的神经网络运算在技术上具有极大的重要性。
在本发明中,与传统的设计相比较,本设计将神经网络在存储芯片内实现,大大节省了计算单元(如CPU)和存储器之间的通讯开销,实现了高性能、低功耗的计算。
附图说明
下面将以明确易懂的方式,结合附图说明优选实施方式,对一种基于NOR Flash模块的神经网络的数据运算方法的上述特性、技术特征、优点及其实现方式予以进一步说明。
图1是本发明基于神经网络的NOR Flash模块的数据运算方法实施例的流程图;
图2是本发明基于神经网络的NOR Flash模块的数据运算方法实施例的另一结构图;
图3是本发明基于神经网络的NOR Flash模块的数据运算方法实施例的另一结构图;
图4是本发明基于神经网络的NOR Flash模块的数据运算方法实施例的另一结构图;
图5是本发明基于神经网络的NOR Flash模块的数据运算方法实施例的另一结构图;
图6是本发明基于神经网络的NOR Flash模块的数据运算方法实施例的另一结构图;
图7是本发明基于神经网络的NOR Flash模块的数据运算方法实施例的另一结构图;
图8是本发明基于神经网络的NOR Flash模块的数据运算方法实施例的另一结构图;
图9是本发明基于神经网络的NOR Flash模块的数据运算方法实施例的另一结构图;
图10是本发明基于神经网络的NOR Flash模块的数据运算方法实施例的另一结构图;
图11是本发明基于NOR Flash模块的神经网络的卷积层运算方法实施例的结构图;
图12是本发明基于NOR Flash模块的神经网络的卷积层运算方法实施例的另一结构图;
图13是本发明基于NOR Flash模块的神经网络的卷积层运算方法实施例的另一结构图;
图14是本发明基于NOR Flash模块的神经网络的卷积层运算方法实施例的另一结构图;
图15是本发明基于NOR Flash模块的神经网络的卷积层运算方法实施例的另一结构图;
图16是本发明基于NOR Flash模块的神经网络的卷积层运算方法实施例的另一结构图;
图17本发明基于NOR Flash模块的神经网络的卷积层运算方法实施例的另一结构图;
图18本发明基于NOR Flash模块的神经网络的卷积层运算方法实施例的另一结构图;
图19本发明基于NOR Flash模块的神经网络的卷积层运算方法实施例的另一结构图;
图20本发明基于NOR Flash模块的神经网络的卷积层运算方法实施例的另一结构图;
图21本发明基于NOR Flash模块的神经网络的卷积层运算方法实施例的另一结构图;
图22本发明基于神经网络的NOR Flash模块的池化层运算方法实施例的结构图;
图23本发明基于神经网络的NOR Flash模块的池化层运算方法实施例的另一结构图;
图24本发明基于神经网络的NOR Flash模块的池化层运算方法实施例的另一结构图;
图25本发明基于神经网络的NOR Flash模块的池化层运算方法实施例的另一结构图;
图26本发明基于神经网络的NOR Flash模块的池化层运算方法实施例的另一结构图;
图27本发明基于神经网络的NOR Flash模块的池化层运算方法实施例的另一结构图;
图28本发明基于神经网络的NOR Flash模块的池化层运算方法实施例的另一结构图;
图29本发明基于神经网络的NOR Flash模块的池化层运算方法实施例的另一结构图;
图30本发明基于神经网络的NOR Flash模块的池化层运算方法实施例的另一结构图;
图31本发明基于神经网络的NOR Flash模块的池化层运算方法实施例的另一结构图;
图32本发明基于神经网络的NOR Flash模块的全连接层运算方法实施例的结构图;
图33本发明基于神经网络的NOR Flash模块的全连接层运算方法实施例的另一结构图;
图34本发明基于神经网络的NOR Flash模块的激活运算方法实施例的结构图;
图35本发明基于神经网络的NOR Flash模块的互联运算方法实施例的结构图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
本发明提供了一种基于NOR Flash模块的神经网络的数据运算方法的一个实施例;参考图1所示;包括:输入信号生成电路,输出信号测量电路,以及由若干个存储单元,或电流镜构成的存储阵列,在所述NOR Flash模块设置至少一个存储阵列;
步骤S100根据神经网络中预置权值设置所述存储阵列中各存储单元的阈值电压;
步骤S200将待运算数据信息进行设定格式的转换;
步骤S300将转换后的待运算数据信息通过输入信号生成电路输入至所述存储阵列的输入端;
步骤S400由所述存储阵列根据所述存储单元的阈值电压、以及通过输入信号生成电路向所述存储阵列的输入端输入的数据参数,通过预设算法进行运算处理;
步骤S500将对所述存储阵列运算处理后的输出结果通过所述输出信号测量电路输出。
优选的,所述输入信号生成电路包括:将待运算数据信息转换成幅值信号的DAC转换子电路;和/或将待运算数据信息转换成脉冲信号的DTC转换子电路。
优选的,当所述存储阵列由所述存储单元构成时包括:在所述存储阵列中每一行各存储单元的栅端相连,形成对应行的公共字线(WL);在所述存储阵列中每一行,或列各存储单元的源端相连,形成对应行,或列的公共源线(SL);在所述存储阵列中每一列各存储单元的漏端相连,形成对应列的公共位线(BL)。
优选的,当所述存储阵列由所述电流镜构成时包括:电流镜由MOS管和存储单元构成;在所述存储阵列中每一行上的所述存储单元的栅端相连,且每一行共用一个MOS管;在所述存储阵列中每一列上的所述电流镜中存储单元的漏端相连,建立公共位线;在所述存储阵列中每一列或每一行的所述电流镜中存储单元的源端相连,建立公共源线。
具体的,参考图1所示;在本申请的神经网络运算过程中,包括卷积层运算、池化层运算、激活函数、以及全连接层的运算;因此在本申请中对其各层进行运算,根据层与层之间的互联实现整个神经网络运算;神经网络中的卷积层运算是基于NOR Flash模块实现的;因此,进行卷积运算前,先根据卷积核(kernel) 的值,利用编程/擦除控制模块,将NorFlash计算阵列中相应存储单元的阈值电压设置到对应值。在本申请中在计算时,参考图2所示;将所要进行计算的图像 (特征值)按照先从左到右,再从上到下的顺序,每次向数字缓存单元中,输入一个像素点的值。该数字缓存单元会根据已输入的像素点和自身的设置,将需要进行卷积操作的值及相应控制信号,输出至输入信号生成电路。在每次有效计算中,输入信号生成电路,会根据来自数字缓存单元的数据,生成相应幅值/脉宽的输入信号,提供给Nor Flash计算阵列的输入端,以进行计算。同时,存储单元的输出端,会根据各存储单元的阈值电压和输入信号,计算出相应的结果;每个存储单元的运算的方法参见;本申请的申请人的在先专利201810193765.X的计算方法。在Nor Flash模块计算阵列的输出端,会对每个存储单元,或电流镜输出的数据参数进行相应计算结果的累加,并提供给输出信号测量电路,进行最终结果的测量。
在本实施例中,在进行运算之前,需要将待运算数据信息进行设定格式的转换,由于Nor Flash模块中在进行运算时,是以存储阵列为载体实现的,因此通过存储阵列获取运算结果时,输入的参数应该是以向量的形式进行输入,因此需要将输入的待运算数据信息全部转换成与存储阵列对应形式的输入参数形式;输入信号生成电路是用于将输入的数字信号转换成模拟信号,并将转换后的模拟信号加载至存储阵列的输入端。
在本申请中的NOR Flash模块中的存储阵列,由电流镜组成,或是由存储单元组成的结构;由于组成结构的不同,相应的输入参数也不相同,则包括电流信号和电压信号,电流信号包括脉冲信号和非脉冲信号;电压信号也包括脉冲信号和非脉冲信号;相当于输入4种的待运算数据信息;而存储阵列输出的输出数据参数可以为电流、电压或者电荷量。
在本申请中各实施例的每个存储单元进行乘法和加法的原理包括:当用电压幅值表征乘数时,根据Flash工作在深线性区的模型ID=K(VGS-VTH)VDS。此时,只需将进行乘法的两个参数分别映射到VDS和VGS-VTH上,则存储单元的输出电流ID即可以表征乘法运算的结果。将该电流导入同一条导线上,则根据基尔霍夫定律,导线上的总电流即为各电流的总和,此即完成了加法。测量最终的电流,可得到最终的运算结果。当电流持续的时间为一定值时,该段时间内累积的电荷数也可以用于表征运算结果。若用电压脉冲表征乘数时,根据电流的定义,有QD=ID*t,则只需要将进行乘法的两个参数分别映射到ID和脉冲宽度t上即可,ID可根据前述模型进行控制。类似地,电流作输入的情况与上述在思想上一致。只是Flash的输出电流模型,变为使用电流镜时的情况,ID=Iitω,其中,
Figure GDA0003027961130000241
计算乘法时,将两个乘数映射到Iit和ω上即可。其他与上述电压输入的情形一致。
本申请中以上述方法为基础,针对神经网络中的不同阈值参数,以存储阵列的不同组合形式为媒介,实现神经网络的运算。
本发明还提供了第2个实施例,参考图2所示;包括:将待运算数据信息通过所述DAC转换子电路生成电压幅值信号,加载至所述存储阵列中的各公共位线上;通过所述存储阵列中各所述公共字线使能相应的存储单元;根据所述公共位线上加载的电压幅值信号以及各存储单元的阈值电压获取各所述存储单元输出的电流信号;对各所述公共源线上所述存储单元输出的电流信号进行累加,累加后通过输出信号测量电路进行测量输出电流输出参数,或电荷、或电压输出参数。
具体的,参考图2所示;在每次运算之前需要对待运算数据信息通过输入信号生成电路进行转换,将数字信号转换为模拟信号,并输入至存储阵列的对应输入端;在本实施例中的存储阵列以BL电压幅值输入,SL电流幅值输出为例;假设卷积的特征值为N*N的矩阵,数据为4bit宽度,卷积核为k*k的矩阵,数据为2bit宽度,卷积核共有2个(k<N)。
计算前,编程擦除控制模块会根据卷积核的数值,将两个卷积核对应的矩阵分别展开为1维向量(K11~K1kk和K21~K2kk),并将其编程到两行WL相应的存储单元上,使得其存储状态对应相应的数值。并将经设定格式转换后的待运算数据的输出至输入信号生成电路。根据数据大小,输入信号生成电路中的 DAC会生成相同脉宽,不同幅值的电压信号,其幅值大小与数据大小成比例。同一周期存储单元在感知到DAC施加的BL端电压信号时,会在输出端SL上产生一定大小的电流,该电流与自身存储状态和BL电压有关,可以表征对应两个数值的乘积。计算阵列中,共用SL的各存储单元,其输出会在SL上进行累加,总电流可以表征各结果的累加结果。累加完成后,SL上的总电流,会被对应SL上的ADC进行采样,ADC会根据电流大小,生成对应的数字值,用以表征结果。
在本实施例中的存储阵列还可以进一步的将电流幅值通过电容器进行累加转换为电荷形式输出,或者以电压的形式进行输出。
本发明还提供了第3个实施例,参考图3所示;包括:将待运算数据信息通过所述DAC转换子电路生成电流幅值信号,并加载至所述存储阵列中各电流镜中的MOS管的漏端;通过所述存储阵列中各所述公共位线加载驱动电压;根据各电流镜中的MOS管的漏端加载至各公共字线上的电流幅值信号,各存储单元的阈值电压,以及驱动电压,获取各所述存储单元输出的电流信号;对各所述公共源线上,或所述公共位线上所述存储单元输出的电流信号进行累加;累加后通过输出信号测量电路进行测量输出电流输出参数,或者电荷、或电压输出参数。
具体的,参考图3所示;存储阵列中不仅可以通过存储单元实现的,还可以借助于电流镜组成的存储阵列实现神经网络的运算;具体的运算方式参见第2实施例运算方法。本申请中,针对于存储阵列中输入的信号是幅值时,具体电路的连接方式不局限于本申请中所提供的,当以本申请为基础进行变换设置。
在本实施例中还包括以下几种实施方式:包括通过电流镜输入端输入,在源线上进行电流累加;通过电流镜输入端输入,在位线上进行电流累加;通过电流镜输入端输入,在源线上通过电容器进行累加;或者在位线上通过电容器进行累加,可针对图3进行调整变换。
本发明还提供了第4个实施例,参考图4所示;包括:将待运算数据信息通过所述DTC转换子电路转换成电压脉冲信号,且加载至所述存储阵列中的各公共字线上;通过所述存储阵列中各所述公共位线施加驱动电压信号;根据所述公共字线上加载的电压脉冲信号,各存储单元的阈值电压,以及在各所述公共位线施加的驱动电压信号,获取各所述存储单元输出的电流脉冲信号;对各所述公共源线上,或各所述公共位线的电流脉冲信号进行累加;通过输出信号测量电路将累加后的电流脉冲信号转换成电荷信号,并进行测量输出。
本发明还提供了第5个实施例,参考图2所示;包括:将待运算数据信息通过所述DTC转换子电路转换成电压脉冲信号,加载至所述存储阵列中的各公共位线上;通过所述存储阵列中各所述公共字线使能相应的存储单元;根据所述公共位线上加载的电压脉冲信号以及各存储单元的阈值电压,获取各所述存储单元输出的电流脉冲信号;对各所述公共源线上的电荷信号电流脉冲信号进行累加;通过输出信号测量电路将累加后的电流脉冲信号转换成电荷信号,并进行测量输出。
本发明还提供了第6个实施例,参考图3所示;包括:将待运算数据信息通过所述DTC转换子电路转换成电流脉冲信号,并通过所述存储阵列中各电流镜中的MOS管的漏端加载至各公共字线上;通过所述存储阵列中各所述公共位线加载驱动电压;根据各电流镜中的MOS管的漏端加载至各公共字线上的电流幅值信号,以及各存储单元的阈值电压,以及驱动电压,获取各所述存储单元输出的电流脉冲信号;对各所述公共源线,或所述公共位线上的电流脉冲信号进行累加;通过输出信号测量电路将累加后的电流脉冲信号转换成电荷信号,并进行测量输出。
具体的,上述实施例2和3输入的待运算数据信息是幅值信号,幅值大小是发生变化的,用幅值表征输入信号;而在实施实例4、5、6中,待运算数据信息是脉冲信号,根据脉宽参数表征输入信号;
其中,输入信号生成电路,可由脉冲信号发生器和计数模块组成;输出信号测量电路可由电容和放电电路构成;参见图5所示;
在测量电路中,SL接入比例电流镜,电流镜的输出电流,即对电容充电的电流Icap,应与SL上电流ISL成固定比例α,同时,锁存器会对上极板的电压进行锁存。EN控制测量时电容的放电与否,放电电流为一恒定电流Iref。计算完成后,电容上会存储一定电荷,上极板比下极板电压高,锁存器锁存高电平,经过一定程度的放电后,电容电压降低,锁存器翻转为低电平。故输出脉冲的上升沿,需要与放电的EN信号上升沿对齐;输出脉冲的下降沿,标志着放电结束,在锁存器翻转时触发。两沿之间的时间长度Δt,即为计算结果。
测量的步骤如下:首先Comp开关导通,EN开关断开,进行前述的计算过程,此过程中比例电流镜复制的电流信号会不断对电容进行充电,使电容存储的电荷为Q;计算完成后,断开Comp开关,使电容与计算电路隔离开来;打开 EN开关,以恒定电流Iref放电;分别检测EN信号的上升沿和锁存器的翻转,作为放电信号的开始和结束标志,则可以得到一脉宽t=Q/Iref的放电信号,此处脉宽t即表征此次乘加运算的结果。
现以WL端电压脉宽输入,BL端电荷累加输出为例进行阐述,具体的卷积核的大小,与神经网络中的预置参数相关;
计算前,参考图4所示;编程擦除控制模块会根据卷积核的数值,将两个卷积核分别编程到两行BL相应的存储单元上,使得其存储状态对应相应的数值。并将对应的数据输出至输入信号生成电路。根据数据大小,输入信号生成电路中的脉冲信号发生器会生成相同脉宽和幅值的电压信号,计数模块用于控制输出的信号数。其脉冲个数与数据大小成比例。同一周期,存储单元在感知到在WL 施加的电压信号时,会在输出端BL上产生一固定大小的电流脉冲,该电流大小与自身存储状态有关,脉冲宽度与输入信号的脉宽相同,输出电流脉冲的幅值和脉宽共同地表征对应两个数值的乘积。在计算阵列中,共用BL的各存储单元,其输出会在BL上的电容器中进行累加,电容器中的总电荷可以表征各结果的累加结果。累加完成后,BL上的放电电路会对电容器进行放电,得到一定脉宽的放电脉冲,放电脉冲的脉宽即用以表征结果。
在第5实施例中,通过BL输入电压脉冲信号,输出结果在SL上进行累加,累加完成后,SL上的放电电路会对电容器进行放电,得到一定脉宽的放电脉冲,放电脉冲的脉宽即用以表征结果。
在第6实施例中,存储阵列是由电流镜组成,待运算输入信息从电流镜的输入端进行输入,输出结果在BL上累加输出,或在SL累加输出。
在本申请的第4-6实施例的实施方式中,累加后输出的信号都是通过输出信号测量电路测量后输出,输出的信号还包括电压信号。
本发明还提供了第7个实施例,参考图5、6、7所示;还包括:在所述NOR Flash模块设置差分电路;当神经网络的预置参数中包括负参数时,通过所述存储阵列的两条公共位线或者两条公共源线上的存储单元进行运算,并将两路输出结果通过所述差分电路进行差分运算处理;具体包括:设置参与运算的所述存储阵列的公共位线,或者公共源线为偶数;相邻两条公共位线,或者公共源线设置为一组;每一组中两条所述公共源线,或公共位线运算后累加的输出信号通过所述差分电路进行差值计算,将差值计算的结果进一步的通过所述输出信号测量电路测量后输出;
或,
每一组中两条所述公共源线,或公共位线运算后累加的输出信号通过输出信号测量电路,将测量后的结果通过所述差分电路进行差值计算后输出;其中,在每一组中的两条所述公共源线,或公共位线中任一条设置为负线;其中,当所述存储阵列是由电流镜组成时;则通过所述输入信号生成电路向每一行的所述电流镜中的MOS管的漏端加载输入信号。
具体的,在本实施例中,,在神经网络中的预设参数为负数的情况,特别是权值参数为负数的情况时。在存储阵列中设置有差分电路;将存储阵列的行数或列数设置为偶数,相邻两条位线或者源线上的存储单元进行差值计算。参考图6- 7所示;
一般性的,本实施例使用两个存储单元进行运算中的乘法操作。将单个存储单元进行乘法时所存储的乘数,存储在本实施例中的两个存储单元中,使两个存储单元数学模型中对应乘数项的差值表征该乘数。此时,两个存储单元的输出结果之差,也表征了乘法的计算结果。进行乘加运算时,将原有阵列进行扩展到本实施例所述的阵列结构即可。此时,对两个对应的存储单元的输出分别求和,两个和的差值,即为运算结果。
在本实施例中差值运算方法与在先专利201810193765.X理念一致,但是本申请是基于神经网络进行运算的;在本实施例中的存储阵列是由存储单元,或电流镜构成的情况。
上述过程也可以类似地应用到利用SL进行电流累加的情形。同样地,BL 和SL上也可以进行电荷累加,具体过程与之类似。
当输出参数为电荷信号时,具体的测量电路的测量步骤为:参考图6所示;首先将Comp打开,EN1、EN2断开,进行计算操作,此时电容两端分别由正、负位线电流所对应的复制电流充电,计算完成后,Comp开关关闭,此时电容所存储电荷为二者之差,若差值为正,则电容上极板存储正电荷,其电压高于下级板,反之则存储负电荷,其电压低于下级板。Comp关闭后,保持EN1断开并将 EN2打开,Ref接地,进行正值结果的测量,此时,若电容存储正值,则EN2通路会对电容的电荷进行放电,直至放电完成,对应产生输出脉冲的宽度即为计算结果,此结果为正值;若电容存储负值,此时Iref2处的电流镜无法产生电流,电容的电荷量保持不变,不会产生输出脉冲。正值测量完成后,若得到了输出脉冲,则测量结束;若一段时间内锁存器均无翻转,则说明无输出,此时保持Comp关闭,使EN1打开并将EN2断开,Ref接Vdd,开始负值结果的测量,EN1通路会对电容的电荷进行放电,直至放电完成,对应产生输出脉冲的宽度即为计算结果,此结果为负值。
同理,若使用SL进行电荷累加,则可以使用两条SL,分别代表正、负结果。此时二者之差,亦可表征权值含负值的乘加结果。
此方法亦可省去比例电流镜,通过直接将电流通入电容实现电荷的累加。
此方法亦可直接测量电容上极板的电压U,再根据电容值大小C,利用Q =CU计算得到最终的电荷量,此即乘加运算的结果。
此方法亦可通过预充电和设置基准的方式,得到电荷量大小。同样,也适用于本申请的第2和3实施例中;
本申请提供的对于电荷量进行测量的过程如下:计算前,将Comp和EN2关闭,Ref接地,并将EN1打开,持续时间为T0,对电容进行预充电。此时,电容会在两端电压的驱动下,以Iref1的电流大小进行充电,预充电荷量为Iref1T0;预充电完成后,将EN1和EN2关闭,保持Ref接地,并将Comp打开,在Flash存储阵列中进行计算;计算完成后,断开Comp和EN1,将EN2打开,对电容进行放电,测量出放电时间t。若计算结果为0,则不会改变电容中的原电荷量,此时Q0=Iref1T0,放电时,该电量会以Iref2的电流大小随时间减少,对应的放电时间为Iref1T0/Iref2,该值为固定值,将此时间记为基准,表征0的结果,即Tbaseline=Iref1T0/Iref2。若测量结果为正值,则电容会被充入额外的电荷,此时电容的电荷量Q+大于Iref1T0,对应的放电时间t=Q+/Iref2,故额外充入的电荷量对应的时间Δt=(Q+-Iref1T0)/Iref2=t-Tbaseline,即为放电时间t与基准Tbaseline之差,此差值即表征了计算结果的大小,差值越大则该正值越大,反之越小。同理,当测量结果为负值时,电容中的电荷量会被抽取一部分,其电荷量Q-小于Iref1T0,对应的放电时间t与基准Tbaseline之差即表征了该负值的大小。
本发明还提供了第8个实施例,参考图8所示;还包括:在所述NOR Flash 模块中将每4个所述存储单元设置为一个乘法器,设置多个所述乘法器;将所述乘法器中的所述存储单元设置为两组,每相邻两个存储单元设置为一组存储单元组;第一组所述存储单元组中的一个所述存储单元与第二组所述存储单元组中一个所述存储单元的栅端相连,建立第一公共字线;且漏端相连,建立第一公共位线;第一组所述存储单元组中的另一个所述存储单元与第二组所述存储单元组中另一个所述存储单元的栅端相连,建立第二公共字线;且漏端相连,建立第二公共位线;在第一组所述存储单元组中建立第一公共源线;在第二组所述存储单元组中建立第二公共位线和第二公共源线;通过输入信号生成电路分别对应的向所述第一公共字线和所述第二公共字线输入待运算数据信息,并向所述第一公共位线和所述第二公共位线加载驱动电压;或通过输入信号生成电路分别对应的向第一公共位线和所述第二公共位线输入待运算数据信息,并向所述第一公共字线和所述第二公共字线加载使能信号;根据向所述第一公共字线和所述第二公共字线,或第一公共位线和所述第二公共位线输入的待运算数据信息;以及所述存储单元的阈值电压信号,通过所述第一公共源线和所述第二公共源线,或所述第一公共位线和所述第二公共位线输出每组所述存储单元组的所述输出数据参数;将各乘法器中每组中对应的第一公共源线和第二公共源线相连,或第一公共位线和第二公共位线相连,并将每组输出的所述输出数据参数在对应的第一公共源线和第二公共源线,或第一公共位线和第二公共位线上进行累加,将每组累加后的结果通过差分电路进行差值计算,并将差值计算结果通过所述输出信号测量电路进行测量后输出。
本申请还提供了第9实施例;参考图8所示还包括:在所述NOR Flash模块中将每4个所述存储单元设置为一个乘法器,设置多个所述乘法器;将所述乘法器中的所述存储单元设置为两组,每相邻两个存储单元设置为一组存储单元组;第一组所述存储单元组中的一个所述存储单元与第二组所述存储单元组中一个所述存储单元的栅端相连,建立第一公共字线;且漏端相连,建立第一公共位线;第一组所述存储单元组中的另一个所述存储单元与第二组所述存储单元组中另一个所述存储单元的栅端相连,建立第二公共字线;且漏端相连,建立第二公共位线;在第一组所述存储单元组中建立第一公共源线;在第二组所述存储单元组中建立第二公共位线和第二公共源线;通过输入信号生成电路分别对应的向所述第一公共字线和所述第二公共字线输入待运算数据信息,并向所述第一公共位线和所述第二公共位线加载驱动电压;或通过输入信号生成电路分别对应的向第一公共位线和所述第二公共位线输入待运算数据信息,并向所述第一公共字线和所述第二公共字线加载使能信号;根据向所述第一公共字线和所述第二公共字线,或第一公共位线和所述第二公共位线输入的待运算数据信息;以及所述存储单元的阈值电压信号,通过所述第一公共源线和所述第二公共源线,或所述第一公共位线和所述第二公共位线输出每组所述存储单元组的所述输出数据参数;将各乘法器中每组中对应的第一公共源线和第二公共源线相连,或第一公共位线和第二公共位线相连,并将每组中输出的所述输出数据参数在对应的第一公共源线和第二公共源线,或第一公共位线和第二公共位线上进行累加,将每组累加后的结果通过所述输出信号测量电路进行测量,将测量后的结果通过差分电路进行差值计算后输出。
具体的,在实施例8和9中,当神经网络的预置参数中设置有负数时,在计算过程,将存储阵列进行分组设置,将存储阵列设置成多个乘法器的,每个乘法器中设置有4个存储单元,分别进行运算,所有的运算参数从神经网络的预置参数中进行获取,在进行数据输入时,包括从BL公共位线进行输入,从公共源线SL进行累加输出;或者是从公共字线WL进行输入,从公共源线,或者公共位线进行输出;无论是从源线输出还是从位线进行输出,一方面是:将每组累加后的结果通过差分电路进行差值计算,并将差值计算结果通过所述输出信号测量电路进行测量后输出。还包括一种是:将每组累加后的结果通过所述输出信号测量电路进行测量,将测量后的结果通过差分电路进行差值计算后输出。因此包括两种输出的实施例方式。具体的在进行计算过程中,根据使用需求和条件进行具体的选择。
本发明还提供了第10个实施例,参考图9所示;还包括:当所述NOR Flash 模块包括多个所述电流镜时;将每4个所述电流镜设置为一个乘法器,设置多个所述乘法器;将所述乘法器中的所述电流镜设置为两组,每相邻两个所述电流镜设置为一组电流镜组;第一组所述电流镜组中的所述电流镜中的存储单元共用第一MOS管作为第一输入管;第二组所述电流镜组中的所述电流镜中的存储单元共用第二MOS管作为第二输入管;第一组所述电流镜组中的一个所述存储单元与第二组所述电流镜组中一个所述存储单元的源端相连,建立第一公共源线;且漏端相连,建立第一公共位线;第一组所述电流镜组中的另一个所述存储单元与第二组所述电流镜组中另一个所述存储单元的源端相连,建立第二公共源线;且漏端相连,建立第二公共位线;过输入信号生成电路分别对应的向第一输入管和第二输入管输入待运算数据信息;分别向所述第一公共位线和所述第二公共位线加载驱动电压;根据向所述第一输入管和所述第二输入管输入的待运算数据信息,以及所述电流镜的阈值电压,通过所述第一公共源线和所述第二公共源线,或通过所述第一公共位线和所述第二公共位线分别输出所述第一组所述电流镜组对应的第一输出数据参数和所述第二组所述电流镜组对应的第二输出数据参数;将各乘法器中每组中对应的第一公共源线和第二公共源线相连,或第一公共位线和第二公共位线相连,将每组中输出的第一输出数据参数和所述第二输出数据参数在对应的第一公共源线和第二公共源线,或第一公共位线和第二公共位线上进行累加,将每组累加后的结果通过差分电路进行差值计算,并将差值计算结果通过所述输出信号测量电路进行测量后输出。
本发明还提供了第11个实施例,参考图9所示;本实施例以第10实施例为基础的另一种输出方式的实施例,还包括:当所述NOR Flash模块包括多个所述电流镜时;将每4个所述电流镜设置为一个乘法器,设置多个所述乘法器;将所述乘法器中的所述电流镜设置为两组,每相邻两个所述电流镜设置为一组电流镜组;第一组所述电流镜组中的所述电流镜中的存储单元共用第一MOS管作为第一输入管;第二组所述电流镜组中的所述电流镜中的存储单元共用第二 MOS管作为第二输入管;第一组所述电流镜组中的一个所述存储单元与第二组所述电流镜组中一个所述存储单元的源端相连,建立第一公共源线;且漏端相连,建立第一公共位线;第一组所述电流镜组中的另一个所述存储单元与第二组所述电流镜组中另一个所述存储单元的源端相连,建立第二公共源线;且漏端相连,建立第二公共位线;通过输入信号生成电路分别对应的向第一输入管和第二输入管输入待运算数据信息;分别向所述第一公共位线和所述第二公共位线加载驱动电压;根据向所述第一输入管和所述第二输入管输入的待运算数据信息,以及所述电流镜的阈值电压,通过所述第一公共源线和所述第二公共源线,或通过所述第一公共位线和所述第二公共位线分别输出所述第一组所述电流镜组对应的第一输出数据参数和所述第二组所述电流镜组对应的第二输出数据参数;将各乘法器中每组中对应的第一公共源线和第二公共源线相连,或第一公共位线和第二公共位线相连,将每组中输出的第一输出数据参数和所述第二输出数据参数在对应的第一公共源线和第二公共源线,或第一公共位线和第二公共位线上进行累加,将每组累加后的结果通过所述输出信号测量电路进行测量,将测量后的结果通过差分电路进行差值计算后输出。
具体的,在第8-11实施例中,都是在运算过程中,将存储阵列中的存储单元,或者电流镜以4个为一组,建立多个乘法器进行实施的,在神经网络中的预置参数中包括有负参数时;具体的运算以本申请中提到的在先申请的运算思想一致,但是其输入的参数是不同的,输出结果以及运用的场景不同;具体的,参考图9其运算为:当选择存储单元栅端为输入端时,虚线框内为一次乘法需要的结构,使用两条WL来进行输入的控制;当漏端为输入时,如图9,使用两条 BL来进行输入的控制。其中差值分别表征乘数和被乘数,即a=IN+-IN-,b=ω+-,各存储单元的漏端电流/源端电流/电荷表征了乘数IN和乘数ω的积,即Iout +=ω+IN+-IN-,Iout -=ω+IN+-IN+。有Iout +-Iout -=ω+IN+-IN-+IN--IN+=(ω+-)(IN+-IN-)=ab。其中,ω+IN+、ω-IN-、ω+IN-、ω-IN+由四个存储单元分别计算。
还包括:当使用4个存储单元组成的乘法器时,对原有的输入端进行扩展,使其输入IN+和IN-,4个存储单元分别两两对应w+和w-,选择性地将4个存储单元接入两个输入端中的一个,使得4个存储单元分别进行ω+IN+、ω-IN-、ω+IN-、ω-IN+四种乘法运算。再将输出端进行扩展,使得其中一个输出端累加ω+IN+和ω-IN-的输出结果,另一个累加ω+IN-和ω-IN+的输出结果。此时两条线上的差值即为最终的运算结果。
SUM1-SUM2=ω+IN+-IN-+IN--IN+=(ω+-)(IN+-IN-)=w×IN
进行乘加运算时,将原有阵列进行扩展到本实施例所述的阵列结构即可。此时,两个公共输出端的输出参数的差值,即为运算结果。
计算乘加时,参考图8-9;根据输入信号,可对结果进行相应的电流/电荷累加。当在WL或输入电流镜的MOS管漏端输入时,可在BL/SL上进行累加;当漏端为输入时,则只能在SL上累加。结果的测量可参考第6实施例的测量电路及测量方式。
本发明还提供了第12个实施例,参考图10所示;还包括:在所述NOR Flash 模块中将每4个所述存储单元设置为一个乘法器,设置多个所述乘法器;将所述乘法器中的所述存储单元设置为两组,每相邻两个存储单元设置为一组存储单元组;4个所述存储单元的栅端相连,建立公共字线;第一组所述存储单元组中的一个所述存储单元与第二组所述存储单元组中一个所述存储单元的漏端相连,建立第一公共位线;第一组所述存储单元组中的另一个所述存储单元与第二组所述存储单元组中另一个所述存储单元的漏端相连,建立第二公共位线;在第一组所述存储单元组中建立第一公共源线;在第二组所述存储单元组中建立第二公共源线;通过输入信号生成电路分别对应的向第一公共位线和所述第二公共位线输入待运算数据信息,并向所述公共字线加载使能信号;根据第一公共位线和所述第二公共位线输入的待运算数据信息;以及所述存储单元的阈值电压信号,通过所述第一公共源线和所述第二公共源线,输出每组所述存储单元组的所述输出数据参数;将各乘法器中每组中对应的第一公共源线和第二公共源线相连,或第一公共位线和第二公共位线相连,将每组中输出的所述输出数据参数在对应的第一公共源线和第二公共源线上进行累加,将每组累加后的结果通过差分电路进行差值计算,并将差值计算结果通过所述输出信号测量电路进行测量后输出。
本发明还提供了第13个实施例,参考图10所示;还包括:在所述NOR Flash 模块中将每4个所述存储单元设置为一个乘法器,设置多个所述乘法器;将所述乘法器中的所述存储单元设置为两组,每相邻两个存储单元设置为一组存储单元组;4个所述存储单元的栅端相连,建立公共字线;第一组所述存储单元组中的一个所述存储单元与第二组所述存储单元组中一个所述存储单元的漏端相连,建立第一公共位线;第一组所述存储单元组中的另一个所述存储单元与第二组所述存储单元组中另一个所述存储单元的漏端相连,建立第二公共位线;在第一组所述存储单元组中建立第一公共源线;在第二组所述存储单元组中建立第二公共源线;通过输入信号生成电路分别对应的向第一公共位线和所述第二公共位线输入待运算数据信息,并向所述公共字线加载使能信号;根据第一公共位线和所述第二公共位线输入的待运算数据信息;以及所述存储单元的阈值电压信号,通过所述第一公共源线和所述第二公共源线,输出每组所述存储单元组的所述输出数据参数;将各乘法器中每组中对应的第一公共源线和第二公共源线相连,或第一公共位线和第二公共位线相连,将每组中输出的所述输出数据参数在对应的第一公共源线和第二公共源线上进行累加,将每组累加后的结果通过所述输出信号测量电路进行测量,将测量后的结果通过差分电路进行差值计算后输出。
具体的,在第12-13实施例中,同样都是在运算过程中,将存储阵列中的存储单元4个为一组,建立多个乘法器进行实施的,且在进行神经网络中包括的预置参数中包括有负参数;但是有别于以上的在第8-11实施例,其具体的在存储阵列的存储单元建立的乘法器的连接方式不同,具体的算法思想基本一致;参见图10所示;针对具体的情况根据本申请的实施例情况进行调整。
本发明还提供了第14个实施例,为一种基于NOR Flash模块的神经网络的卷积层运算方法的实施例;参考图11所示;还包括:数据缓存单元;所述数据缓存单元设置在所述输入信号生成电路之前;并向所述输入信号生成电路发送满足设定格式要求的待运算特征值;所述数据缓存单元根据卷积的运算规则在待运算特征值中选取满足对应位置关系的待运算的特征值,并对应的输入至所述输入信号生成电路中,所述输入信号生成电路按照对应的位置关系加载在存储阵列的输入端;将神经网络预置参数中每个卷积核的权值转换成一维向量,输入至所述存储阵列中设置为存储单元的阈值电压;且同一个卷积核的权值输入至同一公共字线上,或同一公共位线上相应位置的存储单元中;其中,所述存储阵列的输入端包括:公共字线,公共位线,以及电流镜中MOS管的漏极端。
具体的,在本实施例中,参考图所示11-12;是基于Nor flash模块实现卷积的架构,在NOR Flash模块中设置数据缓存单元,本实施例在上述的第1-13的各个实施例的基础上,进一步的当存在数据缓存单元时,在计算时,将所要进行计算的图像(特征值)按照先从左到右,再从上到下的顺序,每次向数字缓存单元中,输入一个像素点的值。该数字缓存单元会根据已输入的像素点和自身的设置,将需要进行卷积操作的值及相应控制信号,输出至输入信号生成模块。在每次有效计算中,输入信号生成模块,会根据来自数字缓存单元的数据,生成相应幅值 /脉宽的输入信号,提供给Nor Flash计算阵列的输入端,以进行计算。同时,存储单元的输出端,会根据各存储单元的阈值电压和输入信号,计算出相应的结果。在Nor Flash计算阵列的输出端,会进行相应计算结果的累加,并提供给输出结果测量模块,进行最终结果的测量;运算过程会一直持续到数字缓存单元不再输出有效信号为止。
在本申请中数据缓存单元设置在输入信号生成电路之前,其数据缓存单元可以由移位寄存器构成,具体设置如下:以32*32的特征值,3*3的卷积核为例,分别取能存连续3个像素点的移位寄存器组3个,命名为filter_1、filter_2和 filter_3,分别代表进行计算的3*3特征值区域的1~3行;另取能存连续32-3=29个像素点的移位寄存器组2个,命名为transfer_1和transfer_2,用以存取3*3 特征值区域的1~3行之间的2行像素值。将上述5个寄存器组,按filter_1- transfer_1–filter_2–transfer2–filter_3的顺序进行级联,并从filter_3端,按从左到右,从上到下的顺序,依次输入32*32的特征值各个像素点的值。根据神经网络的设定,数字缓存单元会判定当前数据是否有效,当有效时,filter_1~filter_3的9个像素点,即为需要进行卷积运算的值。若神经网络计算卷积时需补0,则数字缓存单元端会在filter_1~filter_3对应位置,输出0。
本发明还提供了第15个实施例,参考图13所示,还包括:当所述NOR Flash 模块中设置多个数据缓存单元和一个所述存储阵列时,则进行多通道运算包括:运算通道的数量与所述数据缓存单元的数量一一对应;多个所述运算通道于所述存储阵列上的存储单元同时进行运算;获取每个所述运算通道及数据缓存单元对应存储单元的输出信息,并在所述存储阵列的公共位线,或公共源线上将每个运算通道运算完成的输出信号进行累加;并通过输出信号测量电路输出。
本发明还提供了第16个实施例,参考图14所示,还包括:当所述NOR Flash 模块中设置多个数据缓存单元和一个所述存储阵列时,则进行多通道运算包括:运算通道的数量与所述数据缓存单元的数量一一对应;任一运算通道处于工作状态时,将与其他运算通道对应的输入信号生成电路设置为等待状态,等待当前的运算通道运算结束后,再开启下一运算通道;获取每个所述运算通道及数据缓存单元对应存储单元的输出信息,并在所述存储阵列的公共位线,或公共源线上将每个运算通道运算完成的输出信号进行累加;并通过输出信号测量电路输出。
本发明还提供了第17个实施例,参考图15所示,还包括:还包括:当所述 NORFlash模块中设置一个数据缓存单元和一个所述存储阵列时,则进行多通道运算包括:通过公共字线,或者公共位线,根据预设的多个通道运算顺序,使能至对应的当前通道,获取当前通道运算完成的所述存储阵列的输出信号;当前通道运算完成后,将所述数据缓存单元中特征值更新为下一通道的待运算的特征值;将每一通道计算完成后对应的存储阵列的输出信号通过所述输出信号测量电路进行测量,并将通过所述输出信号测量电路测量完成的输出信号进行累加后输出。
具体的,上述第14个实施例为单通道输入的情形,而实施例第15、16以及 17为多通道输入的情形,在一个存储阵列中进行多通道运算时包括;对使用数字缓存单元的情形,若多个通道(channel,通道)的卷积能够在单个阵列中实现,则可以在同一个阵列实现,与单个channel的区别在于,此时会存在多个数字缓存单元,以提供不同channel的输入,参考图14所示。
若多个channel无法同时在单个阵列中实现,但可以存储在单个阵列中,则可以使用参考图15所示;
参考图15所示,卷积层有2个通道,分别为channel1和channel2。其计算过程分两步。第一步,先将channel_1的权值写入NOR Flash阵列中,使得各存储单元的存储状态,可以表征channel_1卷积核中的各值,并将BLb上DAC的输入置为0计算时,将channel_1的特征值输入数字缓存单元中,根据实施例1- 12的算法,将channel_1的卷积结果经由ADC测量出来,并进行存储。第一步计算完成后,再将channel_2的权值写入NOR Flash阵列中,使得各存储单元的存储状态,可以表征channel_2卷积核中的各值,并将各卷积核的偏移量也写入BLb上对应的存储单元中,同时将其DAC的输入置为1;计算时,将channel_2 的特征值输入数字缓存单元中,将channel_2的卷积结果经由ADC测量出来,并于上一步中对应的结果进行累加,累加结果,即为最终的卷积层计算结果。
若多个channel无法在单个阵列中实现,甚至单个channel也无法在单个阵列中实现,则要考虑将其进行切分,以使得切分后的子运算能够在单个阵列中实现。再将切分后的子运算结构进行相应的累加,即为最终的结果。
本发明还提供了第18个实施例,参考图16所示;还包括:当待运算数据信息加载至所述存储阵列中的各公共位线上时;在所述存储阵列的每一条公共字线上增加一个偏移存储单元,将增加的各偏移存储单元的漏端相连,建立一条偏移位线;其栅端与对应的公共字线相连,源端与对应的与公共源线相连接;根据神经网络中预置的偏移量权值设置所述偏移位线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移位线上;将各偏移存储单元运算后的输出结果在对应的公共源线上进行累加,并通过所述输出信号测量电路输出。
本发明还提供了第19个实施例,参考图17所示;还包括:当待运算数据信息加载至所述存储阵列中的各公共字线上时,或通过电流镜中漏端输入时;在所述存储阵列的每一条公共位线上增加一个偏移存储单元,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,或,当通过电流镜中MOS管漏端输入时,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,并与偏移字线上作输入的MOS管分别组成电流镜;其漏端与对应的公共位线相连,其源端与对应的与公共源线相连接;根据神经网络中预置的偏移量权值设置所述偏移字线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移字线上;将各偏移存储单元运算后的输出结果在对应的公共位线,或公共源线上进行累加,并通过所述输出信号测量电路输出。
具体的,在实施例18和19中是基于NOR Flash模块的神经网络的卷积层运算方法设置数据缓存单元的条件下,同时在NOR Flash模块中设置有偏离量,将该偏移量可以应用在实施例14-17中,该偏移量的作用是:在神经网络算法中,某些结果不是只与输入成正比例关系,而是存在一定的偏移量。此时,若单纯计算特征值和权值的乘加结果,会和实际情况有较大的误差,甚至导致整个网络的预测结果出错。此时,引入偏移量,可以有效的减少神经网络模型和实际情况之间的误差,进而提高神经网络预测的准确度。
本发明还提供了第20个实施例,为一种基于NOR Flash模块的神经网络的卷积层运算方法的实施例,参考图18所示;还包括:当在所述输入信号生成电路之前未设置有数据缓存单元时;根据卷积层的运算规则在所述存储阵列中选取满足对应位置关系存储单元,并设置对应存储单元的阈值电压;将满足设定格式要求的待运算特征值转换成一维向量,将一维向量组中的每个待运算特征值通过所述输入信号生成电路进行转换后,一一对应的加载在选取的满足对应位置关系存储单元的公共字线上,或公共位线上;将神经网络预置参数中每个卷积核的权值转换成一维向量,输入至所述存储阵列中选取的满足对应位置关系存储单元中,设置存储单元的阈值电压。
具体的,在本实施例中,阐述的是在NOR Flash模块内未设置数据缓存单元时,卷积层运算的方法,本实施例可应用上述的1-13的各个实施例,此处只需一个周期即可完成卷积层的计算。在此提供一个例子,在计算前,先将输入的图像进行展开,按照从左到右,再从上到下的顺序,展开为一维向量,对应到输入端上第1~N2个位置。输出端的第1~(N-k+1)2个位置,分别对应第1~(N- k+1)2个卷积层计算结果。根据上述对应关系,将处在输入端和输出端组成的交叉节点(crossbar节点)位置的存储单元对应进行编程。若节点为所需计算的节点,即将其存储单元的阈值电压编程到对应于卷积核大小的值;若节点不加入卷积的计算,则将其存储单元的阈值电压编程到对应于0的状态。计算时,将所要进行计算的图像(特征值)展开后的一维结果,经过输入信号生成电路,转化为相应幅值/脉宽的输入电压或输入电流,再同时施加在存储阵列的输入端。随之,存储单元上会根据各存储单元的阈值电压和输入信号进行乘法计算,并输出相应的结果。在Nor Flash计算阵列的输出端,会进行相应计算结果的累加,并提供给输出结果测量模块,进行最终结果的测量。
以BL端电压幅值输入,SL端进行电流累加,输出电流幅值,且不使用差分计算模式为例。不失一般性地,假设卷积的特征值为N*N的矩阵,数据为4bit 宽度,卷积核为k*k的矩阵,数据为2bit宽度,卷积核共有2个(k<N)。
假设,图示以N=3,k=2为例;此时各电路的设置如下:输入信号生成电路,由4-bitDAC构成,将展开后的4bit数据转换为对应的电压。Nor Flash计算阵列使用2*(N-k+1)2条WL,N*N+1个BL,及其对应的2*(N-k+1)2*(N*N+1)个存储单元和2*(N-k+1)2条SL。输出结果测量模块由ADC构成。
计算前,编程擦除控制模块会根据卷积核的数值,将两个卷积核对应的矩阵分别展开为1维向量(K11~K1kk和K21~K2kk),并将其编程到两个存储单元矩阵中各行WL相应的存储单元上,使得其存储状态对应相应的数值;将两个矩阵中各行最后一个存储单元分别编程到对应于两个卷积核的偏移量的状态;并将其他存储单元编程到对应数字0的状态。计算时,将待计算的矩阵展开为1维向量,并将展开后的数据IN--IN+输出至输入信号生成电路。根据数据大小,输入信号生成电路中的DAC会生成相同脉宽,不同幅值的电压信号,其幅值大小与数据大小成比例。同一周期存储单元在感知到DAC施加的BL端电压信号时,会在输出端SL上产生一定大小的电流,该电流与自身存储状态和BL电压有关,可以表征对应两个数值的乘积。计算阵列中,共用SL的各存储单元,其输出会在SL上进行累加,总电流可以表征各结果的累加结果。累加完成后,SL 上的总电流,会被对应SL上的ADC进行采样,ADC会根据电流大小,生成对应的数字值,用以表征结果。上述过程,在一个周期中,即可完成所有运算并得到结果。
另以WL端电压脉宽输入,BL端电荷累加输出,不使用差分计算模式为例;与上述相同。
此时各电路的不同设置如下:输入信号生成电路,由脉冲信号发生器和计数模块组成,将展开为1维向量后的数据转换为对应脉宽/数目的脉冲信号。Nor Flash计算阵列使用2*(N-k+1)2条BL,N*N+1个WL,及其对应的2*(N- k+1)2*(N*N+1)个存储单元和N*N+1条SL。输出结果测量模块由前述专利中电容和放电电路构成。
计算前,编程擦除控制模块会根据卷积核的数值,将两个卷积核对应的矩阵分别展开为1维向量(K11~K1kk和K21~K2kk),并将其编程到两个存储单元矩阵中各行BL相应的存储单元上,使得其存储状态对应相应的数值;将两个矩阵中各列最后一个存储单元分别编程到对应于两个卷积核的偏移量的状态;并将其他存储单元编程到对应数字0的状态。计算时,将待计算的矩阵展开为1维向量,并将展开后的数据输出至输入信号生成电路。根据数据大小,输入信号生成电路中的脉冲信号发生器会生成相同脉宽和幅值的电压信号,计数模块用于控制输出的信号数。其脉冲个数与数据大小成比例。同一周期,存储单元在感知到在WL施加的电压信号时,会在输出端BL上产生一固定大小的电流脉冲,该电流大小与自身存储状态有关,脉冲宽度与输入信号的脉宽相同,输出电流脉冲的幅值和脉宽共同地表征对应两个数值的乘积。计算阵列中,共用BL的各存储单元,其输出会在BL上的电容器中进行累加,电容器中的总电荷可以表征各结果的累加结果。累加完成后,BL上的放电电路会对电容器进行放电,得到一定脉宽的放电脉冲,放电脉冲的脉宽即用以表征结果。
本发明还提供了第21个实施例,参考图19所示;还包括:当所述NOR Flash 模块中进行两个以上运算通道运算时;将各运算通道的待运算特征值根据预设通道的运算顺序进行拼接,且与存储阵列的输入端一一对应;根据卷积运算规则,将各通道对应的卷积核的权值输入至对应位置的存储单元中,并将各运算通道的待运算特征值通过所述输入信号生成电路进行转换,以进行运算处理;将卷积运算后的同一条公共位线,或公共源线上各通道的存储单元的输出信号进行累加,并通过输出信号测量电路输出。
具体的,在本实施例中一个存储阵列中进行多通道运算时包括;对无数字缓存单元的情形;对不使用数字缓存单元的情形,多个channel与实施例第18一致,但是需在沿输入端方向进行扩展。
本发明还提供了第22个实施例,参考图20所示;还包括:当待运算数据信息加载至所述存储阵列中的各公共位线上时;在所述存储阵列的每一条公共字线上增加一个偏移存储单元,将增加的各偏移存储单元的漏端相连,建立一条偏移位线;其栅端与对应的公共字线相连,源端与对应的与公共源线相连接;根据神经网络中预置的偏移量权值设置所述偏移位线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移位线上;将各偏移存储单元运算后的输出结果在对应的公共源线上进行累加,并通过所述输出信号测量电路输出。
本发明还提供了第23个实施例,参考图21,结合图17所示;还包括:当待运算数据信息加载至所述存储阵列中的各公共字线上时,或通过电流镜中漏端输入时;在所述存储阵列的每一条公共位线上增加一个偏移存储单元,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,或,当通过电流镜中MOS 管漏端输入时,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,并与偏移字线上作输入的MOS管分别组成电流镜;其漏端与对应的公共位线相连,其源端与对应的与公共源线相连接;根据神经网络中预置的偏移量权值设置所述偏移字线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移字线上;将各偏移存储单元运算后的输出结果在对应的公共位线,或公共源线上进行累加,并通过所述输出信号测量电路输出。
具体的,在实施例22和实施例23中,是基于NOR Flash模块的神经网络的卷积层运算方法中未设置数据缓存单元的条件下,同时在NOR Flash模块中设置有偏离量,该偏移量的作用同第18和19。
在本申请中NOR Flash模块包括设置数据缓存单元和未设置数据缓存单元的两种情况;
当未设置数据缓存单元时:待运算的数据信息同时施加在阵列上,卷积层的输出结果也同时得出。但由于计算规则,存储阵列中很多存储单元不参与运算,会使得存储阵列的使用率低,且当待运算的数据信息相对较多时,存储阵列的浪费就会更严重;但是此种结构在于简单直观,且卷积层的输出结果可以同时得到,可以直接对其进行处理。
因此,通过设置数据缓存单元进一步的克服上述未设置数据缓存单元存在的问题,允许待运算数据信息依次输入到电路中,且所使用的存储阵列的规模能够降低,并提高存储单元的利用率。
实际应用中,根据使用场合的不同,决定是否设置数据缓存单元。
本发明还提供了第24个实施例,参考图22-24所示;包括:可执行上述第 1-17个实施例实现神经网络中的卷积层的运算后,继而进行池化层的运算,还包括:在所述神经网络预置参数中获取池化窗口参数以及步长参数;在所述 NOR Flash模块中根据池化窗口参数映射待池化特征值的池化区域,通过池化电路对池化区域进行池化处理,并通过输出信号测量电路输出;所述池化处理包括:模拟处理,或数字处理。
本发明还提供了第25个实施例,参考图25-26所示;当卷积层未设置有数据缓存单元时包括:根据所述池化窗口参数在所述NOR Flash模块中,设置多个池化电路;根据卷积运算规则获取每个子存储阵列的卷积运算后卷积结果;根据池化运算规则,将同一池化窗口所需的各卷积结果发送至同一池化电路中,不同的池化窗口发送到各自相应的池化模块中,进一步的通过池化电路进行池化处理。
本发明还提供了第26个实施例,参考图22,27,28所示;当卷积层设置有数据缓存单元时包括:根据所述池化窗口参数在所述NOR Flash模块中,设置多个子存储阵列;并进一步根据卷积运算规则的对所述数据缓存单元进行对应的扩展;在进行池化运算前,获取所述NOR Flash模块待卷积计算的特征值,并依次通过扩展后所述数据缓存单元、以及每个子存储阵列对应的输入信号生成电路加载在每个子存储阵列中的存储单元中;根据卷积运算规则获取每个子存储阵列的卷积运算后的卷积结果;并将每个子存储阵列的卷积结果发送至池化电路中,进一步的通过池化电路进行池化处理。
具体的,实施例24、25以及26针对本申请的神经网络中卷积层运算之后进一步的进行池化层运算包括:模拟处理以及数字处理;无论是针对的是模拟处理以及数字处理还涉及到两种池化方式:一种最大值池化,另一种是平均值池化;
在本申请中NOR Flash模块包括基于上卷积层的运算中一种是含有数字缓存单元,另一种不包含数字缓存单元:对于实施例15-19具体的应用如下:
1、对使用数字缓存单元的卷积层,可以通过扩展数字缓存单元的方式,使得进行池化操作的各值,能够在同一个周期中得到,进而可以使用固定电路对各值进行处理,参考图27-28所示;对数字缓存单元进行扩展。原有的数字缓存单元,只会根据参数设置,每个周期提供一个卷积结果所需的数据,以进行计算。扩展之后,会根据参数设置,提供p2个卷积结果所需的数据,以便后续电路进行对该p2个结果的池化处理。为了适应数字缓存单元的变化,原有的矩阵规模也需要进行相应的变化,需要使用同等规模p2倍的矩阵,以使得p2个卷积结果,可以同时且独立地计算。以p=2,即池化的对象为2*2的卷积结果,为例。参考图22所示;为了进行池化操作,一种基于模拟电路实现的Max Pooling模块,如图所示;通过比较器进行最大值的比较,针对幅值表征的情况是获取最大值;而针对脉宽表征的利用或门获取最大的脉宽时间;参考图23-24所示。
AVR_Pooling即为平均值池化一种实现方法是,将p2个卷积结果,分别乘以1/p^2并相加,其结果即为平均值。当卷积层输出为脉冲宽度表征的电压信号时,可以使用如图29所示的结构;
根据实施例1-23的卷积层运算结果,将测量之后的值利用NOR Flash的存储单元,进行再次的乘加运算以得到平均值。前述方法,需要对结果进行测量。再利用阵列进行计算;还可以不进行测量,即进行取平均值的操作。参考图31 所示;对累加结果是电荷的情形,将原有的p2个独立的存储电容和测量电路替换为公共的存储电容和测量电路即可。此时公共电容上的总电量,即为各结果的和,可以表征平均值的大小。进一步地,可将测量电路的放电电流调整为原有的 p2倍,则此时放电脉冲的脉宽即为平均值。对累加结果是电压/电流的情形,可以通过引入电容来进行平均值的计算。以电压值为例,参考图30所示;计算电路由NOR Flash阵列构成,计算时S1闭合,S2断开,各电容会根据相应计算电路的输出电压,进行充/放电。计算完成后,进行AVR_Pooling操作时,只需将 S1断开,S2闭合,此时各电容会进行所存储电荷的均匀分配,此时输出端电压即为各计算电路输出电压的平均值。
2、对不使用数字缓存单元的卷积层而言,对于实施例20-23具体的应用如下:由于其各卷积结果已经会在同一周期内计算得到,故不需对存储单元的矩阵进行修改,直接将相应的输出端接入上述Pooling模块即可。以p=2,为例,参考图25-26所示。
在本申请中,数字处理是将测量后的结果输出至数字处理单元进行运算,该数字处理单元由数字的逻辑门电路,寄存器等组成,包括数字乘法器,累加器,比较器等;或将结果输出,使用外部的CPU,GPU等数字电路进行下一步运算。
本发明还提供了第27个实施例,为一种基于NOR Flash模块的神经网络的全连接层运算方法实施例,参考图32所示;以实施例1-13为基础进行全连接层的运算;在所述神经网络预置参数中获取待运算全连接层的权值;根据待运算全连接层的权值对所述存储阵列中的各存储单元进行编程处理,即设置所述存储阵列中的各存储单元进行全连接运算时的阈值电压;将输入的待运算全连接层的特征值转换成一维向量,通过输入信号生成电路转化为进行全连接运算的输入信号;将全连接运算的输入信号一一对应的加载在存储阵列的输入端;根据全连接的运算规则进行全连接运算处理。
本发明还提供了第28个实施例;在进行全连接运算之前还包括:在所述神经网络预置参数中获取待运算全连接层数据输入参数以及数据输出参数;根据获取的待运算全连接层数据输入参数以及数据输出参数,在所述存储阵列中定位参加运算的存储单元的对应位置,并对存储单元进行使能设置;对进行使能设置的存储单元进行编程处理。
具体的,在CNN结构中,经多个卷积层和池化层后,连接着1个或1个以上的全连接层.与MLP类似,全连接层中的每个神经元与其前一层的所有神经元进行全连接.全连接层可以整合卷积层或者池化层中具有类别区分性的局部信息。针对本申请中第25和26实施例具体为:全连接层的NOR Flash阵列实现方式,其输入输出均为一维向量,故可以直接对应到NOR Flash实现MAC的矩阵的输入端和输出端。此处只需一个周期即可完成计算。
在计算前,先将输入的一维向量(大小为M),按照从前到后的顺序,对应到输入端上第1~M个位置。输出的一维向量(大小为N),按照从前到后的顺序,对应到输出端的第1~N个位置,分别对应第1~N个全连接层的计算结果。根据上述对应关系,将处在输入端和输出端组成的crossbar节点位置的存储单元对应进行编程。若节点为所需计算的节点,即将其存储单元的阈值电压编程到对应于全连接权值大小的值;若节点不参与全连接的计算,则将其存储单元的阈值电压编程到对应于0的状态。计算时,将所要进行计算的一维向量,经过输入信号生成模块,转化为相应幅值/脉宽的输入电压或输入电流,再同时施加在存储阵列的输入端。随之,存储单元上会根据各存储单元的阈值电压和输入信号进行乘法计算,并输出相应的结果。在Nor Flash计算阵列的输出端,会进行相应计算结果的累加,并提供给输出结果测量模块,进行最终结果的测量。
其中,输入输出端的对应顺序可以任意替换,需要注意的是各存储单元的状态也要对应改变。以输入一维向量含M个参数,输出向量含N个参数为例。其权值为M*N,偏移含N个参数。则仅以BL电压幅值输入,SL电流幅值累加输出,不使用差分计算模式为例,参考图所示;
具体地,(M=2,N=2),输入一维向量含2个参数(f1,f2),输出向量含2 个参数(c1,c2)。其权值为(w11,w12;w21,w22),偏移向量为(b1,b2)。此时各电路的设置如下:输入信号生成模块,由DAC构成,将输入向量的各数据转换为对应的电压。Nor Flash计算阵列使用N条WL,M+1条BL,及其对应的N*(M+1)个存储单元和N条SL。输出结果测量模块由ADC构成。
计算前,编程擦除控制模块会根据全连接层的权值,将其编程到存储阵列中各对应的存储单元中,使得其存储状态对应相应的数值;将存储阵列中各WL 行最后一个存储单元分别编程到对应于偏移量的状态;并将其他存储单元编程到对应数字0的状态。计算时,将待计算的1维向量,输入至输入信号生成模块。根据数据大小,输入信号生成模块中的DAC会生成相同脉宽,不同幅值的电压信号,其幅值大小与数据大小成比例。同一周期存储单元在感知到DAC施加的BL端电压信号时,会在输出端SL上产生一定大小的电流,该电流与自身存储状态和BL电压有关,可以表征对应两个数值的乘积。计算阵列中,共用SL 的各存储单元,其输出会在SL上进行累加,总电流可以表征各结果的累加结果。累加完成后,SL上的总电流,会被对应SL上的ADC进行采样,ADC会根据电流大小,生成对应的数字值,用以表征结果。上述过程,在一个周期中,即可完成所有运算并得到结果。
本发明还提供了第29个实施例,参考图33所示;还包括:当待运算数据信息加载至所述存储阵列中的各公共位线上时;在所述存储阵列的每一条公共字线上增加一个偏移存储单元,将增加的各偏移存储单元的漏端相连,建立一条偏移位线;其栅端与对应的公共字线相连,源端与对应的与公共源线相连接;根据神经网络中预置的偏移量权值设置所述偏移位线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移位线上;将各偏移存储单元运算后的输出结果在对应的公共源线上进行累加,并通过所述输出信号测量电路输出。
本发明还提供了第30个实施例,参考图33且结合图17所示;还包括:当待运算数据信息加载至所述存储阵列中的各公共字线上时,或通过电流镜中漏端输入时;在所述存储阵列的每一条公共位线上增加一个偏移存储单元,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,或,当通过电流镜中MOS 管漏端输入时,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,并与偏移字线上作输入的MOS管分别组成电流镜;其漏端与对应的公共位线相连,其源端与对应的与公共源线相连接;根据神经网络中预置的偏移量权值设置所述偏移字线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移字线上;将各偏移存储单元运算后的输出结果在对应的公共位线,或公共源线上进行累加,并通过所述输出信号测量电路输出。
具体的,在第29和30实施例中,同样是针对在全连接运算的存储阵列中设置偏移量;同样是在全连接运算结果不是只与输入成正比例关系,而是存在一定的偏移量。此时,若单纯计算特征值和权值的乘加结果,会和实际情况有较大的误差,甚至导致整个网络的预测结果出错。此时,引入偏移量,可以有效的减少神经网络模型和实际情况之间的误差,进而提高神经网络预测的准确度。
本发明还提供了第31个实施例,为一种基于NOR Flash模块的神经网络的激活运算方法的实施例;参考图34所示;本实施例是在完成卷积层运算之后进行的激活运算;还包括:在所述神经网络预置参数中获取激活函数;将获取的激活函数与卷积运算后的输出结果,和/或与池化运算后的输出结果进行激活运算处理。
具体的,在神经网络算法中,神经元的输出结果和输入特征值之间有多种对应关系,包括线性对应关系和非线性的对应关系。激活函数可以体现这种对应关系,让神经网络具备更强大的拟合能力;
参考图34所示;根据算法中的需求,激活函数包括很多种,在本申请中可以提供一种实施例,例如:当输入为负值时,ReLU函数会输出0;当输入为正值时,ReLU函数会输出该值。这与二极管的单向导电性类似,故可以在输出端串联一个二极管,此时经过二极管之后的电路参数即为经过ReLU激活后的结果。
还包括当采用差分计算模式时,可以在做差电路之后,将输出信号通过一个多路选择器(MUX),对做差电路的两个输入值进行比较,比较结果作为MUX的控制信号,若比较结果为正,则MUX输出做差电路的输出值,否则输出为0,参考图34所示。
本发明还提供了第32个实施例,为一种基于NOR Flash模块的神经网络的运算方法的实施例,在执行上述卷积层运算的任一个实施例后,进一步根据神经网络设置的激活函数,进行卷积层输出的数据信息进行激活运算,在所述神经网络预置参数中获取激活函数;将获取的激活函数与卷积运算后的输出结果,进行激活运算处理;具体的实施例方式参见第27个实施例;再执行池化运算;在所述神经网络预置参数中获取池化窗口参数以及步长参数;在所述NOR Flash模块中根据池化窗口参数映射待池化特征值的池化区域,通过池化电路对池化区域进行池化处理。具体的的池化运算参见实施例22、23以及24,根据神经网络中预置参数不同,对应的选择相应的卷积层运算方法,激活函数,以及相应的池化运算,从而实现NOR Flash模块的神经网络的运算方法。
本发明还提供了第33个实施例,为一种基于NOR Flash模块的神经网络的运算方法的实施例,在执行上述卷积层运算的任一个实施例后,进一步根据神经网络设置的激活函数,在所述神经网络预置参数中获取激活函数;将获取的激活函数与卷积运算后的输出结果,进行激活运算处理;再执行,在所述神经网络预置参数中获取池化窗口参数以及步长参数;在所述NOR Flash模块中根据池化窗口参数映射待池化特征值的池化区域,通过池化电路对池化区域进行池化处理;再执行全连接运算;在所述神经网络预置参数中获取待运算全连接层的权值;根据待运算全连接层的权值对所述存储阵列中的各存储单元进行编程处理,并设置所述存储阵列中的各存储单元进行全连接运算时的阈值电压;将输入的待运算全连接层的特征值转换成一维向量,通过输入信号生成电路转化进行处理成全连接运算的输入信号;将全连接运算的输入信号一一对应的加载在存储阵列的输入端;根据全连接的运算规则进行全连接运算处理。
具体的实施方式,可结合1-32中的各个实施例,且结合相应的图。
本发明还提供了第34个实施例,为一种基于NOR Flash模块的神经网络的运算方法,其特征在于,包括:执行权利要求17-26任一所述的基于NOR Flash 模块的神经网络的卷积层运算方法;在执行卷积层运算还包括:在所述神经网络预置参数中获取池化窗口参数以及步长参数;在所述NOR Flash模块中根据池化窗口参数映射待池化特征值的池化区域,通过池化电路对池化区域进行池化处理;
再执行,
在所述神经网络预置参数中获取激活函数;将获取的激活函数与池化运算后的输出结果,进行激活运算处理;
再执行,在所述神经网络预置参数中获取待运算全连接层的权值;根据待运算全连接层的权值对所述存储阵列中的各存储单元进行编程处理,并设置所述存储阵列中的各存储单元进行全连接运算时的阈值电压;将输入的待运算全连接层的特征值转换成一维向量,通过输入信号生成电路转化进行处理成全连接运算的输入信号;将全连接运算的输入信号一一对应的加载在存储阵列的输入端;根据全连接的运算规则进行全连接运算处理。
具体的,池化运算参见实施例24、25以及36,对应的结合相关的图;根据神经网络中预置参数不同,对应的选择相应的卷积层运算方法,激活函数,以及相应的池化运算,进一步执行本申请中第25和26实施例的全连接运算方法,从而实现NOR Flash模块的神经网络的运算方法。本申请中,在神经网络运算过程中,卷积,池化,激活,全连接的运算顺序可以进行适应性的调整。
本发明还提供了第35个实施例,参考图35所示;为一种基于NOR Flash 模块的神经网络的互联方法,在执行上述卷积层运算的任一个实施例后,进一步根据神经网络设置的激活函数,进行卷积层输出的数据信息进行激活运算,在所述神经网络预置参数中获取激活函数;将获取的激活函数与卷积运算后的输出结果,进行激活运算处理;具体的实施例方式参见第31个实施例;再执行池化运算;在所述神经网络预置参数中获取池化窗口参数以及步长参数;在所述NOR Flash模块中根据池化窗口参数映射待池化特征值的池化区域,通过池化电路对池化区域进行池化处理。具体的的池化运算参见实施例24、25以及26,根据神经网络中预置参数不同,对应的选择相应的卷积层运算方法和池化运算,和,或激活函数;在进行各层之间互联时,每层输出的参数类型不同,且对应输入层的参数也不尽相同,因此要进行数据转换,实现各层之间的互联;进一步执行:判断进行互联的相邻两层中上一层输出的特征值以及下一层待输入特征值的信号类型;当上一层输出的特征值信号类型为与下一层待输入特征值信号类型相同时,则直接进行互联;信号类型相同:同为电流幅值信号,或电流脉冲信号,或同为电压幅值信号,或电压脉冲信号;否则,通过元器件进行信号转换,将上一层输出的特征值的信号类型转换为与下一层待输入特征值的信号类型。
在执行卷积层运算,或,池化层运算,或激活运算,或全连接运算时,判断进行互联的相邻两层中上一层输出的特征值以及下一层待输入特征值的信号类型;当上一层输出的特征值信号类型为与下一层待输入特征值信号类型相同时,则直接进行互联;
信号类型相同:同为电流幅值信号,或电流脉冲信号,或同为电压幅值信号,或电压脉冲信号;判断进行互联的相邻两层中上一层输出的特征值以及下一层待输入特征值的信号类型;主要包括:
1、当上一层输出的特征值信号类型为电流幅值信号,则进行互联的下一层待输入特征值信号类型为电压幅值信号时,通过设置电阻以及电压跟随器进行转换;
2、当上一层输出的特征值信号类型为电流幅值信号,则进行互联的下一层待输入特征值信号类型为电压脉冲信号时,通过设置电容和反相器进行转换。
3、当上一层输出的特征值信号类型为电流幅值信号,则进行互联的下一层待输入特征值信号类型为电流脉冲信号时,通过设置电容和MOS管进行转换;将电流幅值信号通过电容的充放电转换成电压脉冲信号,进一步的将转换后的电压脉冲信号通过设置MOS管,转换成电流脉冲信号。
4、当上一层输出的特征值信号类型为电荷量时,则进行互联的下一层待输入特征值信号类型为电压幅值信号,或电压脉宽信号时,则通过控制电容,进一步的对应设置电压跟随器,或反相器后,则直接进行互联。
5、当上一层输出的特征值信号类型为电荷量时,则进行互联的下一层待输入特征值信号类型为电流幅值信号,或电流脉冲信号时,则通过控制电容后,转化为电压幅值信号,或电压脉宽信号时,进一步的通过设置MOS管,转换成为电流幅值信号,或电流脉冲信号。
6、还包括:(互联)数字化
当上一层输出的信号为数字信号时,通过数字信号生成模块进行模拟化的转换,转换完成后输入值存储阵列的输入端。
具体的,在本实施例中,实现神经网络的互联包括数字互联:各层的实现方法中,输入和输出均为数字值,亦即若操作使用模拟电路,则数字值会相应转换为模拟量,再进行各层的具体计算。待计算完成后,将计算结果,由模拟量再转换为数字值,再传给下一层进行计算;层之前,由于传递的均为数字值,故可以直接进行互联。
还包括:模拟互联,实现神经网络各层,且各层的实现方法中,输入和输出可不为数字值,根据输入输出信号的类型,进行互联。此时,无需进行数据结果的测量,即可进入下一层,可以有效减少计算系统的功耗,并提高计算速度。
实现互联的方式包括:具体的经由模拟结构实现包括以下:
a.上一阵列输出为电流幅值,下一阵列输入由电压幅值表征;该情况可以将输出电流通过一定值电阻,将其转换为电压值。进一步,为了电流的稳定,可以使用比例电流镜。
b.上一阵列输出为电流幅值,下一阵列输入由电流幅值表征;该情况可以直连。
c.上一阵列输出为电流幅值,下一阵列输入由电压脉宽表征;该情况可以使用电容,对一段时间内电流充入的电荷量进行充电,再对其进行放电,放电信号即为电压脉冲信号。
d.上一阵列输出为电流幅值,下一阵列输入由电流脉宽表征;该情况在c.所述基础上,将得到的电压脉冲施加在MOS管栅极,此时MOS管漏端的信号,即为脉宽表征输出的电流脉冲。
e.上一阵列输出为电荷量,下一阵列输入由电压幅值表征;该情况对使用测量电容电压的方法,可以实现直连。
f.上一阵列输出为电荷量,下一阵列输入由电流幅值表征;该情况可以将电压施加在MOS的栅端,并将漏端电流输入下一阵列。
g.上一阵列输出为电荷量,下一阵列输入由电压脉宽表征;该情况可以使用对电容放电的测量方法,实现直连。
h.上一阵列输出为电荷量值,下一阵列输入由电流脉宽表征;将电压脉冲施加在MOS管的栅端,其漏端输出,即为对应的电流脉冲,且脉宽表征下一阵列输入。
在本发明中,与其算法相关的矩阵,多存储单元,多电流镜的结构模块,根据输入数据参数,以及对应输出数据参数的不同,可以适应性调整其本发明中说明书附图中个图之间的连接关系,以及组合形式;当在输出端设置有输出电流镜的情况,参见本实施例中各图;在本发明中不限于输入数据参数的相关因子存在负数形式。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (34)

1.一种基于NOR Flash模块的神经网络的数据运算方法,其特征在于,包括:输入信号生成电路,输出信号测量电路,以及由若干个存储单元,或电流镜构成的存储阵列,在所述NOR Flash模块设置至少一个存储阵列;
根据神经网络中预置权值设置所述存储阵列中各存储单元的阈值电压;
将待运算数据信息进行设定格式的转换;
将转换后的待运算数据信息通过输入信号生成电路输入至所述存储阵列的输入端;
由所述存储阵列根据所述存储单元的阈值电压、以及通过输入信号生成电路向所述存储阵列的输入端输入的数据参数,通过预设算法进行运算处理;
将对所述存储阵列运算处理后的输出结果通过所述输出信号测量电路输出;
所述输入信号生成电路包括:
将待运算数据信息转换成幅值信号的DAC转换子电路;和/或将待运算数据信息转换成脉冲信号的DTC转换子电路;
当由所述存储单元构成所述存储阵列包括:
在所述存储阵列中每一行各存储单元的栅端相连,形成对应行的公共字线;
在所述存储阵列中每一行,或列各存储单元的源端相连,形成对应行,或列的公共源线;
在所述存储阵列中每一列各存储单元的漏端相连,形成对应列的公共位线;将待运算数据信息通过所述DAC转换子电路生成电压幅值信号,加载至所述存储阵列中的各公共位线上;
通过所述存储阵列中各所述公共字线使能相应的存储单元;
根据所述公共位线上加载的电压幅值信号以及各存储单元的阈值电压获取各所述存储单元输出的电流信号;
对各所述公共源线上所述存储单元输出的电流信号进行累加,累加后通过输出信号测量电路进行测量输出电流输出参数,或电荷、或电压输出参数;
在所述NOR Flash模块设置差分电路;
当神经网络的预置参数中包括负参数时,通过所述存储阵列的两条公共位线或者两条公共源线上的存储单元进行运算,并将两路输出结果通过所述差分电路进行差分运算处理;
具体包括:设置参与运算的所述存储阵列的公共位线,或者公共源线为偶数;
相邻两条公共位线,或者公共源线设置为一组;
每一组中两条所述公共源线,或公共位线运算后累加的输出信号通过所述差分电路进行差值计算,将差值计算的结果进一步的通过所述输出信号测量电路测量后输出;
或,
每一组中两条所述公共源线,或公共位线运算后累加的输出信号通过输出信号测量电路,将测量后的结果通过所述差分电路进行差值计算后输出;
其中,在每一组中的两条所述公共源线,或公共位线中任一条设置为负线。
2.根据权利要求1所述的基于NOR Flash模块的神经网络的数据运算方法,其特征在于,包括:
当由所述电流镜构成所述存储阵列包括:
电流镜由MOS管和存储单元构成;
在所述存储阵列中每一行上的所述存储单元的栅端相连,且每一行共用一个MOS管;
在所述存储阵列中每一列上的所述电流镜中存储单元的漏端相连,建立公共位线;
在所述存储阵列中每一列或每一行的所述电流镜中存储单元的源端相连,建立公共源线。
3.根据权利要求2所述的基于NOR Flash模块的神经网络的数据运算方法,其特征在于,包括:
将待运算数据信息通过所述DAC转换子电路生成电流幅值信号,并加载至所述存储阵列中各电流镜中的MOS管的漏端;
通过所述存储阵列中各所述公共位线加载驱动电压;
根据各电流镜中的MOS管的漏端加载至各公共字线上的电流幅值信号,各存储单元的阈值电压,以及驱动电压,获取各所述存储单元输出的电流信号;
对各所述公共源线上,或所述公共位线上所述存储单元输出的电流信号进行累加;
累加后通过输出信号测量电路进行测量输出电流输出参数,或者电荷、或电压输出参数。
4.根据权利要求1所述的基于NOR Flash模块的神经网络的数据运算方法,其特征在于,包括:
将待运算数据信息通过所述DTC转换子电路转换成电压脉冲信号,且加载至所述存储阵列中的各公共字线上;
通过所述存储阵列中各所述公共位线施加驱动电压信号;
根据所述公共字线上加载的电压脉冲信号,各存储单元的阈值电压,以及在各所述公共位线施加的驱动电压信号,获取各所述存储单元输出的电流脉冲信号;
对各所述公共源线上,或各所述公共位线的电流脉冲信号进行累加;
通过输出信号测量电路将累加后的电流脉冲信号转换成电荷信号,并进行测量输出。
5.根据权利要求1所述的基于NOR Flash模块的神经网络的数据运算方法,其特征在于,包括:
将待运算数据信息通过所述DTC转换子电路转换成电压脉冲信号,加载至所述存储阵列中的各公共位线上;
通过所述存储阵列中各所述公共字线使能相应的存储单元;
根据所述公共位线上加载的电压脉冲信号以及各存储单元的阈值电压,获取各所述存储单元输出的电流脉冲信号;
对各所述公共源线上的电荷信号电流脉冲信号进行累加;
通过输出信号测量电路将累加后的电流脉冲信号转换成电荷信号,并进行测量输出。
6.根据权利要求2所述的基于NOR Flash模块的神经网络的数据运算方法,其特征在于,包括:
将待运算数据信息通过所述DTC转换子电路转换成电流脉冲信号,并通过所述存储阵列中各电流镜中的MOS管的漏端加载至各公共字线上;
通过所述存储阵列中各所述公共位线加载驱动电压;
根据各电流镜中的MOS管的漏端加载至各公共字线上的电流幅值信号,以及各存储单元的阈值电压,以及驱动电压,获取各所述存储单元输出的电流脉冲信号;
对各所述公共源线,或所述公共位线上的电流脉冲信号进行累加;
通过输出信号测量电路将累加后的电流脉冲信号转换成电荷信号,并进行测量输出。
7.根据权利要求1-6任一所述的基于NOR Flash模块的神经网络的数据运算方法,其特征在于,还包括:
在所述NOR Flash模块中将每4个所述存储单元设置为一个乘法器,设置多个所述乘法器;
将所述乘法器中的所述存储单元设置为两组,每相邻两个存储单元设置为一组存储单元组;
第一组所述存储单元组中的一个所述存储单元与第二组所述存储单元组中一个所述存储单元的栅端相连,建立第一公共字线;且漏端相连,建立第一公共位线;
第一组所述存储单元组中的另一个所述存储单元与第二组所述存储单元组中另一个所述存储单元的栅端相连,建立第二公共字线;且漏端相连,建立第二公共位线;
在第一组所述存储单元组中建立第一公共源线;
在第二组所述存储单元组中建立第二公共源线;
通过输入信号生成电路分别对应的向所述第一公共字线和所述第二公共字线输入待运算数据信息,并向所述第一公共位线和所述第二公共位线加载驱动电压;或通过输入信号生成电路分别对应的向第一公共位线和所述第二公共位线输入待运算数据信息,并向所述第一公共字线和所述第二公共字线加载使能信号;
根据向所述第一公共字线和所述第二公共字线,或第一公共位线和所述第二公共位线输入的待运算数据信息;以及所述存储单元的阈值电压信号,通过所述第一公共源线和所述第二公共源线,或所述第一公共位线和所述第二公共位线输出每组所述存储单元组的输出数据参数;
将各乘法器中每组中对应的第一公共源线和第二公共源线相连,或第一公共位线和第二公共位线相连,并将每组输出的所述输出数据参数在对应的第一公共源线和第二公共源线,或第一公共位线和第二公共位线上进行累加,将每组累加后的结果通过差分电路进行差值计算,并将差值计算结果通过所述输出信号测量电路进行测量后输出。
8.根据权利要求1-6任一项所述的基于NOR Flash模块的神经网络的数据运算方法,其特征在于,还包括:
在所述NOR Flash模块中将每4个所述存储单元设置为一个乘法器,设置多个所述乘法器;
将所述乘法器中的所述存储单元设置为两组,每相邻两个存储单元设置为一组存储单元组;
第一组所述存储单元组中的一个所述存储单元与第二组所述存储单元组中一个所述存储单元的栅端相连,建立第一公共字线;且漏端相连,建立第一公共位线;
第一组所述存储单元组中的另一个所述存储单元与第二组所述存储单元组中另一个所述存储单元的栅端相连,建立第二公共字线;且漏端相连,建立第二公共位线;
在第一组所述存储单元组中建立第一公共源线;
在第二组所述存储单元组中建立第二公共源线;
通过输入信号生成电路分别对应的向所述第一公共字线和所述第二公共字线输入待运算数据信息,并向所述第一公共位线和所述第二公共位线加载驱动电压;或通过输入信号生成电路分别对应的向第一公共位线和所述第二公共位线输入待运算数据信息,并向所述第一公共字线和所述第二公共字线加载使能信号;
根据向所述第一公共字线和所述第二公共字线,或第一公共位线和所述第二公共位线输入的待运算数据信息;以及所述存储单元的阈值电压信号,通过所述第一公共源线和所述第二公共源线,或所述第一公共位线和所述第二公共位线输出每组所述存储单元组的输出数据参数;
将各乘法器中每组中对应的第一公共源线和第二公共源线相连,或第一公共位线和第二公共位线相连,并将每组中输出的所述输出数据参数在对应的第一公共源线和第二公共源线,或第一公共位线和第二公共位线上进行累加,将每组累加后的结果通过所述输出信号测量电路进行测量,将测量后的结果通过差分电路进行差值计算后输出。
9.根据权利要求1-6任一项所述的基于NOR Flash模块的神经网络的数据运算方法,其特征在于,还包括:
当所述NOR Flash模块包括多个所述电流镜时;将每4个所述电流镜设置为一个乘法器,设置多个所述乘法器;
将所述乘法器中的所述电流镜设置为两组,每相邻两个所述电流镜设置为一组电流镜组;
第一组所述电流镜组中的所述电流镜中的存储单元共用第一MOS管作为第一输入管;
第二组所述电流镜组中的所述电流镜中的存储单元共用第二MOS管作为第二输入管;
第一组所述电流镜组中的一个所述存储单元与第二组所述电流镜组中一个所述存储单元的源端相连,建立第一公共源线;且漏端相连,建立第一公共位线;
第一组所述电流镜组中的另一个所述存储单元与第二组所述电流镜组中另一个所述存储单元的源端相连,建立第二公共源线;且漏端相连,建立第二公共位线;
通过输入信号生成电路分别对应的向第一输入管和第二输入管输入待运算数据信息;
分别向所述第一公共位线和所述第二公共位线加载驱动电压;
根据向所述第一输入管和所述第二输入管输入的待运算数据信息,以及所述电流镜的阈值电压,通过所述第一公共源线和所述第二公共源线,或通过所述第一公共位线和所述第二公共位线分别输出所述第一组所述电流镜组对应的第一输出数据参数和所述第二组所述电流镜组对应的第二输出数据参数;
将各乘法器中每组中对应的第一公共源线和第二公共源线相连,或第一公共位线和第二公共位线相连,将每组中输出的第一输出数据参数和所述第二输出数据参数在对应的第一公共源线和第二公共源线,或第一公共位线和第二公共位线上进行累加,将每组累加后的结果通过差分电路进行差值计算,并将差值计算结果通过所述输出信号测量电路进行测量后输出。
10.根据权利要求1-6任一项所述的基于NOR Flash模块的神经网络的数据运算方法,其特征在于,还包括:
当所述NOR Flash模块包括多个所述电流镜时;将每4个所述电流镜设置为一个乘法器,设置多个所述乘法器;
将所述乘法器中的所述电流镜设置为两组,每相邻两个所述电流镜设置为一组电流镜组;
第一组所述电流镜组中的所述电流镜中的存储单元共用第一MOS管作为第一输入管;
第二组所述电流镜组中的所述电流镜中的存储单元共用第二MOS管作为第二输入管;
第一组所述电流镜组中的一个所述存储单元与第二组所述电流镜组中一个所述存储单元的源端相连,建立第一公共源线;且漏端相连,建立第一公共位线;
第一组所述电流镜组中的另一个所述存储单元与第二组所述电流镜组中另一个所述存储单元的源端相连,建立第二公共源线;且漏端相连,建立第二公共位线;
通过输入信号生成电路分别对应的向第一输入管和第二输入管输入待运算数据信息;
分别向所述第一公共位线和所述第二公共位线加载驱动电压;
根据向所述第一输入管和所述第二输入管输入的待运算数据信息,以及所述电流镜的阈值电压,通过所述第一公共源线和所述第二公共源线,或通过所述第一公共位线和所述第二公共位线分别输出所述第一组所述电流镜组对应的第一输出数据参数和所述第二组所述电流镜组对应的第二输出数据参数;
将各乘法器中每组中对应的第一公共源线和第二公共源线相连,或第一公共位线和第二公共位线相连,将每组中输出的第一输出数据参数和所述第二输出数据参数在对应的第一公共源线和第二公共源线,或第一公共位线和第二公共位线上进行累加,将每组累加后的结果通过所述输出信号测量电路进行测量,将测量后的结果通过差分电路进行差值计算后输出。
11.根据权利要求1-6任一项所述的基于NOR Flash模块的神经网络的数据运算方法,其特征在于,还包括:
在所述NOR Flash模块中将每4个所述存储单元设置为一个乘法器,设置多个所述乘法器;
将所述乘法器中的所述存储单元设置为两组,每相邻两个存储单元设置为一组存储单元组;
4个所述存储单元的栅端相连,建立公共字线;
第一组所述存储单元组中的一个所述存储单元与第二组所述存储单元组中一个所述存储单元的漏端相连,建立第一公共位线;
第一组所述存储单元组中的另一个所述存储单元与第二组所述存储单元组中另一个所述存储单元的漏端相连,建立第二公共位线;
在第一组所述存储单元组中建立第一公共源线;
在第二组所述存储单元组中建立第二公共源线;
通过输入信号生成电路分别对应的向第一公共位线和所述第二公共位线输入待运算数据信息,并向所述公共字线加载使能信号;
根据第一公共位线和所述第二公共位线输入的待运算数据信息;以及所述存储单元的阈值电压信号,通过所述第一公共源线和所述第二公共源线,输出每组所述存储单元组的输出数据参数;
将各乘法器中每组中对应的第一公共源线和第二公共源线相连,将每组中输出的所述输出数据参数在对应的第一公共源线和第二公共源线上进行累加,将每组累加后的结果通过差分电路进行差值计算,并将差值计算结果通过所述输出信号测量电路进行测量后输出。
12.根据权利要求1-6项任一所述的基于NOR Flash模块的神经网络的数据运算方法,其特征在于,还包括:
在所述NOR Flash模块中将每4个所述存储单元设置为一个乘法器,设置多个所述乘法器;
将所述乘法器中的所述存储单元设置为两组,每相邻两个存储单元设置为一组存储单元组;
4个所述存储单元的栅端相连,建立公共字线;
第一组所述存储单元组中的一个所述存储单元与第二组所述存储单元组中一个所述存储单元的漏端相连,建立第一公共位线;
第一组所述存储单元组中的另一个所述存储单元与第二组所述存储单元组中另一个所述存储单元的漏端相连,建立第二公共位线;
在第一组所述存储单元组中建立第一公共源线;
在第二组所述存储单元组中建立第二公共源线;
通过输入信号生成电路分别对应的向第一公共位线和所述第二公共位线输入待运算数据信息,并向所述公共字线加载使能信号;
根据第一公共位线和所述第二公共位线输入的待运算数据信息;以及所述存储单元的阈值电压信号,通过所述第一公共源线和所述第二公共源线,输出每组所述存储单元组的输出数据参数;
将各乘法器中每组中对应的第一公共源线和第二公共源线相连,将每组中输出的所述输出数据参数在对应的第一公共源线和第二公共源线上进行累加,将每组累加后的结果通过所述输出信号测量电路进行测量,将测量后的结果通过差分电路进行差值计算后输出。
13.一种基于NOR Flash模块的神经网络的卷积层运算方法,可执行权利要求1-12任一项所述的基于NOR Flash模块的神经网络的数据运算方法,其特征在于,还包括:数据缓存单元;
所述数据缓存单元设置在所述输入信号生成电路之前;并向所述输入信号生成电路发送满足设定格式要求的待运算特征值;
所述数据缓存单元根据卷积的运算规则在待运算特征值中选取满足对应位置关系的待运算的特征值,并对应的输入至所述输入信号生成电路中,所述输入信号生成电路按照对应的位置关系加载在存储阵列的输入端;
将神经网络预置参数中每个卷积核的权值转换成一维向量,输入至所述存储阵列中设置为存储单元的阈值电压;且同一个卷积核的权值输入至同一公共字线上,或同一公共位线上相应位置的存储单元中;
其中,所述存储阵列的输入端包括:公共字线,公共位线,以及电流镜中MOS管的漏极端。
14.根据权利要求13所述的基于NOR Flash模块的神经网络的卷积层运算方法,其特征在于,还包括:
当所述NOR Flash模块中设置多个数据缓存单元和一个所述存储阵列时,则进行多通道运算包括:
运算通道的数量与所述数据缓存单元的数量一一对应;
多个所述运算通道于所述存储阵列上的存储单元同时进行运算;
获取每个所述运算通道及数据缓存单元对应存储单元的输出信息,并在所述存储阵列的公共位线,或公共源线上将每个运算通道运算完成的输出信号进行累加;并通过输出信号测量电路输出。
15.根据权利要求13所述的基于NOR Flash模块的神经网络的卷积层运算方法,其特征在于,还包括:
当所述NOR Flash模块中设置多个数据缓存单元和一个所述存储阵列时,则进行多通道运算包括:
运算通道的数量与所述数据缓存单元的数量一一对应;
任一运算通道处于工作状态时,将与其他运算通道对应的输入信号生成电路设置为等待状态,等待当前的运算通道运算结束后,再开启下一运算通道;
获取每个所述运算通道及数据缓存单元对应存储单元的输出信息,并在所述存储阵列的公共位线,或公共源线上将每个运算通道运算完成的输出信号进行累加;并通过输出信号测量电路输出。
16.根据权利要求13所述的基于NOR Flash模块的神经网络的卷积层运算方法,其特征在于,还包括:
当所述NOR Flash模块中设置一个数据缓存单元和一个所述存储阵列时,则进行多通道运算包括:
通过公共字线,或者公共位线,根据预设的多个通道运算顺序,使能至对应的当前通道,获取当前通道运算完成的所述存储阵列的输出信号;
当前通道运算完成后,将所述数据缓存单元中特征值更新为下一通道的待运算的特征值;
将每一通道计算完成后对应的存储阵列的输出信号通过所述输出信号测量电路进行测量,并将通过所述输出信号测量电路测量完成的输出信号进行累加后输出。
17.根据权利要求13-16任一项所述的基于NOR Flash模块的神经网络的卷积层运算方法,其特征在于,还包括:
当待运算数据信息加载至所述存储阵列中的各公共位线上时;
在所述存储阵列的每一条公共字线上增加一个偏移存储单元,将增加的各偏移存储单元的漏端相连,建立一条偏移位线;
其栅端与对应的公共字线相连,源端与对应的与公共源线相连接;
根据神经网络中预置的偏移量权值设置所述偏移位线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移位线上;
将各偏移存储单元运算后的输出结果在对应的公共源线上进行累加,并通过所述输出信号测量电路输出。
18.根据权利要求13-16任一项所述的基于NOR Flash模块的神经网络的卷积层运算方法,其特征在于,还包括:
当待运算数据信息加载至所述存储阵列中的各公共字线上时,或通过电流镜中漏端输入时;
在所述存储阵列的每一条公共位线上增加一个偏移存储单元,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,或,当通过电流镜中MOS管漏端输入时,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,并与偏移字线上作输入的MOS管分别组成电流镜;
其漏端与对应的公共位线相连,其源端与对应的与公共源线相连接;
根据神经网络中预置的偏移量权值设置所述偏移字线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移字线上;
将各偏移存储单元运算后的输出结果在对应的公共位线,或公共源线上进行累加,并通过所述输出信号测量电路输出。
19.一种基于NOR Flash模块的神经网络的卷积层运算方法,可执行权利要求1-12任一项所述基于NOR Flash模块的神经网络的数据运算方法,其特征在于,还包括:
当在所述输入信号生成电路之前未设置有数据缓存单元时;
根据卷积层的运算规则在所述存储阵列中选取满足对应位置关系存储单元,并设置对应存储单元的阈值电压;
将满足设定格式要求的待运算特征值转换成一维向量,将一维向量组中的每个待运算特征值通过所述输入信号生成电路进行转换后,一一对应的加载在选取的满足对应位置关系存储单元的公共字线上,或公共位线上;
将神经网络预置参数中每个卷积核的权值转换成一维向量,输入至所述存储阵列中选取的满足对应位置关系存储单元中,设置存储单元的阈值电压。
20.根据权利要求19所述的基于NOR Flash模块的神经网络的卷积层运算方法,其特征在于,还包括:
当所述NOR Flash模块中进行两个以上运算通道运算时;
将各运算通道的待运算特征值根据预设通道的运算顺序进行拼接,且与存储阵列的输入端一一对应;
根据卷积运算规则,将各通道对应的卷积核的权值输入至对应位置的存储单元中,并将各运算通道的待运算特征值通过所述输入信号生成电路进行转换,以进行运算处理;
将卷积运算后的同一条公共位线,或公共源线上各通道的存储单元的输出信号进行累加,并通过输出信号测量电路输出。
21.根据权利要求19或20所述的基于NOR Flash模块的神经网络的卷积层运算方法,其特征在于,还包括:
当待运算数据信息加载至所述存储阵列中的各公共位线上时;
在所述存储阵列的每一条公共字线上增加一个偏移存储单元,将增加的各偏移存储单元的漏端相连,建立一条偏移位线;
其栅端与对应的公共字线相连,源端与对应的与公共源线相连接;
根据神经网络中预置的偏移量权值设置所述偏移位线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移位线上;
将各偏移存储单元运算后的输出结果在对应的公共源线上进行累加,并通过所述输出信号测量电路输出。
22.根据权利要求19或20所述的基于NOR Flash模块的神经网络的卷积层运算方法,其特征在于,还包括:
当待运算数据信息加载至所述存储阵列中的各公共字线上时,或通过电流镜中漏端输入时;
在所述存储阵列的每一条公共位线上增加一个偏移存储单元,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,或,当通过电流镜中MOS管漏端输入时,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,并与偏移字线上作输入的MOS管分别组成电流镜;
其漏端与对应的公共位线相连,其源端与对应的与公共源线相连接;
根据神经网络中预置的偏移量权值设置所述偏移字线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移字线上;
将各偏移存储单元运算后的输出结果在对应的公共位线,或公共源线上进行累加,并通过所述输出信号测量电路输出。
23.一种基于NOR Flash模块的神经网络的池化层运算方法,其特征在于,包括:执行权利要求13-22任一项所述的模块的神经网络的卷积层运算方法,还包括:
在所述神经网络预置参数中获取池化窗口参数以及步长参数;
在所述NOR Flash模块中根据池化窗口参数映射待池化特征值的池化区域,通过池化电路对池化区域进行池化处理,并通过输出信号测量电路输出;
所述池化处理包括:模拟处理,或数字处理。
24.根据权利要求23所述的基于NOR Flash模块的神经网络的池化层运算方法,其特征在于,当卷积层未设置有数据缓存单元时包括:
根据所述池化窗口参数在所述NOR Flash模块中,设置多个池化电路;
根据卷积运算规则获取每个子存储阵列的卷积运算后卷积结果;
根据池化运算规则,将同一池化窗口所需的各卷积结果发送至同一池化电路中,不同的池化窗口发送到各自相应的池化模块中,进一步的通过池化电路进行池化处理。
25.根据权利要求23所述的基于NOR Flash模块的神经网络的池化层运算方法,其特征在于,当卷积层设置有数据缓存单元时包括:
根据所述池化窗口参数在所述NOR Flash模块中,设置多个子存储阵列;
并进一步根据卷积运算规则的对所述数据缓存单元进行对应的扩展;
在进行池化运算前,获取所述NOR Flash模块待卷积计算的特征值,并依次通过扩展后所述数据缓存单元、以及每个子存储阵列对应的输入信号生成电路加载在每个子存储阵列中的存储单元中;
根据卷积运算规则获取每个子存储阵列的卷积运算后的卷积结果;
并将每个子存储阵列的卷积结果发送至池化电路中,进一步的通过池化电路进行池化处理。
26.一种基于NOR Flash模块的神经网络的全连接层运算方法,其特征在于,可执行权利要求1-12任一项所述的基于NOR Flash模块的神经网络的数据运算方法;包括:
在所述神经网络预置参数中获取待运算全连接层的权值;
根据待运算全连接层的权值对所述存储阵列中的各存储单元进行编程处理,即设置所述存储阵列中的各存储单元进行全连接运算时的阈值电压;
将输入的待运算全连接层的特征值转换成一维向量,通过输入信号生成电路转化为进行全连接运算的输入信号;
将全连接运算的输入信号一一对应的加载在存储阵列的输入端;
根据全连接的运算规则进行全连接运算处理。
27.根据权利要求26所述的基于NOR Flash模块的神经网络的全连接层运算方法,其特征在于,在进行全连接运算之前还包括:
在所述神经网络预置参数中获取待运算全连接层数据输入参数以及数据输出参数;
根据获取的待运算全连接层数据输入参数以及数据输出参数,在所述存储阵列中定位参加运算的存储单元的对应位置,并对参加运算的存储单元进行使能设置;
对进行使能设置的存储单元进行编程处理。
28.根据权利要求26-27任一项所述的基于NOR Flash模块的神经网络的全连接层运算方法,其特征在于,还包括:
当待运算数据信息加载至所述存储阵列中的各公共位线上时;
在所述存储阵列的每一条公共字线上增加一个偏移存储单元,将增加的各偏移存储单元的漏端相连,建立一条偏移位线;
其栅端与对应的公共字线相连,源端与对应的与公共源线相连接;
根据神经网络中预置的偏移量权值设置所述偏移位线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移位线上;
将各偏移存储单元运算后的输出结果在对应的公共源线上进行累加,并通过所述输出信号测量电路输出。
29.根据权利要求26-27任一项所述的基于NOR Flash模块的神经网络的全连接层运算方法,其特征在于,还包括:
当待运算数据信息加载至所述存储阵列中的各公共字线上时,或通过电流镜中漏端输入时;
在所述存储阵列的每一条公共位线上增加一个偏移存储单元,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,或,当通过电流镜中MOS管漏端输入时,将增加的各偏移存储单元的栅端相连,建立一条偏移字线,并与偏移字线上作输入的MOS管分别组成电流镜;
其漏端与对应的公共位线相连,其源端与对应的与公共源线相连接;
根据神经网络中预置的偏移量权值设置所述偏移字线上各存储单元的阈值电压;并根据神经网络中预置的偏移量特征值加载至所述偏移字线上;
将各偏移存储单元运算后的输出结果在对应的公共位线,或公共源线上进行累加,并通过所述输出信号测量电路输出。
30.一种基于NOR Flash模块的神经网络的激活运算方法,其特征在于,包括:执行权利要求13-22任一项所述的基于NOR Flash模块的神经网络的卷积层运算方法,还包括进一步执行:
在所述神经网络预置参数中获取激活函数;
将获取的激活函数与卷积运算后的输出结果,和/或与池化运算后的输出结果进行激活运算处理。
31.一种基于NOR Flash模块的神经网络的运算方法,其特征在于,包括:执行权利要求13-22任一项所述的基于NOR Flash模块的神经网络的卷积层运算方法;
在执行卷积层运算之后还包括:
在所述神经网络预置参数中获取激活函数;
将获取的激活函数与卷积运算后的输出结果,进行激活运算处理;
再执行;
在所述神经网络预置参数中获取池化窗口参数以及步长参数;
在所述NOR Flash模块中根据池化窗口参数映射待池化特征值的池化区域,通过池化电路对池化区域进行池化处理。
32.一种基于NOR Flash模块的神经网络的运算方法,其特征在于,包括:执行权利要求13-22任一项所述的基于NOR Flash模块的神经网络的卷积层运算方法;
在执行卷积层运算之后还包括:
在所述神经网络预置参数中获取激活函数;
将获取的激活函数与卷积运算后的输出结果,进行激活运算处理;
再执行,
在所述神经网络预置参数中获取池化窗口参数以及步长参数;
在所述NOR Flash模块中根据池化窗口参数映射待池化特征值的池化区域,通过池化电路对池化区域进行池化处理;
再执行,
在所述神经网络预置参数中获取待运算全连接层的权值;
根据待运算全连接层的权值对所述存储阵列中的各存储单元进行编程处理,并设置所述存储阵列中的各存储单元进行全连接运算时的阈值电压;
将输入的待运算全连接层的特征值转换成一维向量,通过输入信号生成电路转化进行处理成全连接运算的输入信号;
将全连接运算的输入信号一一对应的加载在存储阵列的输入端;
根据全连接的运算规则进行全连接运算处理。
33.一种基于NOR Flash模块的神经网络的运算方法,其特征在于,包括:执行权利要求13-22任一项所述的基于NOR Flash模块的神经网络的卷积层运算方法;
在执行卷积层运算之后还包括:
在所述神经网络预置参数中获取池化窗口参数以及步长参数;
在所述NOR Flash模块中根据池化窗口参数映射待池化特征值的池化区域,通过池化电路对池化区域进行池化处理;
再执行,
在所述神经网络预置参数中获取激活函数;
将获取的激活函数与池化运算后的输出结果,进行激活运算处理;
再执行,
在所述神经网络预置参数中获取待运算全连接层的权值;
根据待运算全连接层的权值对所述存储阵列中的各存储单元进行编程处理,并设置所述存储阵列中的各存储单元进行全连接运算时的阈值电压;
将输入的待运算全连接层的特征值转换成一维向量,通过输入信号生成电路转化进行处理成全连接运算的输入信号;
将全连接运算的输入信号一一对应的加载在存储阵列的输入端;
根据全连接的运算规则进行全连接运算处理。
34.一种基于NOR Flash模块的神经网络的互联方法,其特征在于,可执行权利要求13-22任一项所述的基于NOR Flash模块的神经网络的卷积层运算方法;包括:
在所述神经网络预置参数中获取激活函数;
将获取的激活函数与运算后的输出结果进行激活运算处理;
和/或,执行权利要求23-25任一项所述的基于NOR Flash模块的神经网络的池化层运算方法;
和/或,执行权利要求26-29任一项所述的基于NOR Flash模块的神经网络的全连接层运算方法;
在执行卷积层运算,或,池化层运算,或激活运算,或全连接运算时,判断进行互联的相邻两层中上一层输出的特征值以及下一层待输入特征值的信号类型;
当上一层输出的特征值信号类型为与下一层待输入特征值信号类型相同时,则直接进行互联;
信号类型相同:同为电流幅值信号,或电流脉冲信号,或同为电压幅值信号,或电压脉冲信号;
否则,通过元器件进行信号转换,将上一层输出的特征值的信号类型转换为与下一层待输入特征值的信号类型;
其中,相邻两层包括卷积层运算、池化层运算、激活运算、全连接运算中的任意两层。
CN201910056832.8A 2019-01-18 2019-01-18 一种基于NOR Flash模块的神经网络的数据运算方法 Active CN109800876B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910056832.8A CN109800876B (zh) 2019-01-18 2019-01-18 一种基于NOR Flash模块的神经网络的数据运算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910056832.8A CN109800876B (zh) 2019-01-18 2019-01-18 一种基于NOR Flash模块的神经网络的数据运算方法

Publications (2)

Publication Number Publication Date
CN109800876A CN109800876A (zh) 2019-05-24
CN109800876B true CN109800876B (zh) 2021-06-01

Family

ID=66559875

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910056832.8A Active CN109800876B (zh) 2019-01-18 2019-01-18 一种基于NOR Flash模块的神经网络的数据运算方法

Country Status (1)

Country Link
CN (1) CN109800876B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110533160A (zh) * 2019-07-22 2019-12-03 北京大学 基于nor flash模拟量计算阵列的深度神经网络
CN110543933B (zh) * 2019-08-12 2022-10-21 北京大学 基于flash存算阵列的脉冲型卷积神经网络
US10832783B1 (en) * 2019-09-24 2020-11-10 Macronix International Co., Ltd. Data sensing device and data sensing method thereof
CN110750231B (zh) * 2019-09-27 2021-09-28 东南大学 一种面向卷积神经网络的双相系数可调模拟乘法计算电路
CN110837355B (zh) * 2019-10-21 2022-05-17 华中科技大学 一种基于NOR flash阵列的逻辑电路及操作方法
CN111222626B (zh) * 2019-11-07 2021-08-10 恒烁半导体(合肥)股份有限公司 一种基于NOR Flash模块的神经网络的数据切分运算方法
CN111223511A (zh) * 2019-12-30 2020-06-02 深圳市芯天下技术有限公司 一种存储器及其存储单元
CN111144558B (zh) * 2020-04-03 2020-08-18 深圳市九天睿芯科技有限公司 基于时间可变的电流积分和电荷共享的多位卷积运算模组
CN111652363B (zh) * 2020-06-08 2023-09-19 中国科学院微电子研究所 存算一体电路
CN111816233B (zh) * 2020-07-30 2023-08-01 中科南京智能技术研究院 一种存内计算单元及阵列
CN113672855B (zh) * 2021-08-25 2024-05-28 恒烁半导体(合肥)股份有限公司 一种存内运算方法、装置及其应用
CN113724764B (zh) * 2021-09-01 2023-11-10 北京航空航天大学 基于非易失存储器的乘法装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1841558A (zh) * 2005-03-30 2006-10-04 奥沃尼克斯股份有限公司 读相变存储器
CN102985976A (zh) * 2010-04-18 2013-03-20 桑迪士克技术有限公司 包括减小其他存储单元的影响的对非易失性存储器的编程
CN106843809A (zh) * 2017-01-25 2017-06-13 北京大学 一种基于nor flash阵列的卷积运算方法
CN106971372A (zh) * 2017-02-24 2017-07-21 北京大学 一种实现图像卷积的编码型闪存系统和方法
CN108446097A (zh) * 2018-03-09 2018-08-24 合肥恒烁半导体有限公司 一种基于NOR Flash模块的数据运算方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1841558A (zh) * 2005-03-30 2006-10-04 奥沃尼克斯股份有限公司 读相变存储器
CN102985976A (zh) * 2010-04-18 2013-03-20 桑迪士克技术有限公司 包括减小其他存储单元的影响的对非易失性存储器的编程
CN106843809A (zh) * 2017-01-25 2017-06-13 北京大学 一种基于nor flash阵列的卷积运算方法
CN106971372A (zh) * 2017-02-24 2017-07-21 北京大学 一种实现图像卷积的编码型闪存系统和方法
CN108446097A (zh) * 2018-03-09 2018-08-24 合肥恒烁半导体有限公司 一种基于NOR Flash模块的数据运算方法

Also Published As

Publication number Publication date
CN109800876A (zh) 2019-05-24

Similar Documents

Publication Publication Date Title
CN109800876B (zh) 一种基于NOR Flash模块的神经网络的数据运算方法
CN112183739B (zh) 基于忆阻器的低功耗脉冲卷积神经网络的硬件架构
CN110427171B (zh) 可扩展的定点数矩阵乘加运算的存内计算设备和方法
US11625586B2 (en) Realization of neural networks with ternary inputs and ternary weights in NAND memory arrays
CN110008440B (zh) 一种基于模拟矩阵运算单元的卷积运算及其应用
US11568200B2 (en) Accelerating sparse matrix multiplication in storage class memory-based convolutional neural network inference
JP7119109B2 (ja) 重み更新回路および推論回路を別個に有する抵抗型処理ユニット・アーキテクチャ
KR20180110080A (ko) 아날로그 코-프로세서
WO2018228424A1 (zh) 一种神经网络训练方法和装置
CN110782026A (zh) Nand存储器阵列中的二值神经网络的实现
CN113792010A (zh) 存算一体芯片及数据处理方法
CN112825153A (zh) 神经网络系统中数据处理的方法、神经网络系统
US10453527B1 (en) In-cell differential read-out circuitry for reading signed weight values in resistive processing unit architecture
US10381074B1 (en) Differential weight reading of an analog memory element in crosspoint array utilizing current subtraction transistors
CN112636745B (zh) 逻辑单元、加法器以及乘法器
CN110751276A (zh) 在nand存储器阵列中实现具有三值输入和二值权重的神经网络
CN115390789A (zh) 基于磁隧道结计算单元的模拟域全精度存内计算电路及方法
KR20230005309A (ko) 아날로그 인공지능 네트워크 추론을 위한 행별 컨볼루션 신경망 매핑을 위한 효율적 타일 매핑
CN111340203A (zh) 使用误差反向传播执行监督学习的神经形态系统
US11556311B2 (en) Reconfigurable input precision in-memory computing
CN117037877A (zh) 基于NOR Flash的存内计算芯片及其控制方法
US20220012586A1 (en) Input mapping to reduce non-ideal effect of compute-in-memory
CN116523011B (zh) 基于忆阻的二值神经网络层电路及二值神经网络训练方法
CN111859261B (zh) 计算电路及其操作方法
CN118036682A (zh) 加法神经网络的存内计算实现方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: 230000 building 11, alumni enterprise innovation park, Luyang University of science and technology, northwest of the intersection of Tianshui road and Taihe Road, Luyang District, Hefei City, Anhui Province

Patentee after: Hengshuo semiconductor (Hefei) Co.,Ltd.

Address before: 230041 building 11, alumni Innovation Park, Luyang University of science and technology, northwest of the intersection of Tianshui road and Taihe Road, Luyang District, Hefei City, Anhui Province

Patentee before: ZBIT SEMICONDUCTOR Ltd.

CP03 Change of name, title or address