一种实现图像卷积的编码型闪存系统和方法与流程

文档序号:11691501阅读:155来源:国知局
一种实现图像卷积的编码型闪存系统和方法与流程

本发明属于半导体集成电路及其制造技术领域,更具体地,涉及一种实现图像卷积的编码型闪存系统和方法。



背景技术:

卷积神经网络是近些年发展起来的一种高效的识别方法。其基本结构包含两层,其中一层为特征提取层,主要是利用卷积将每个神经元的输入与前一层的局部接受域连接起来,并提取输入图像的局部特征。另外一层为特征映射层,负责将每个特征映射为一个平面,平面上所有神经元的权值相等。这种局部权值共享的结构能够降低网络的复杂性,因此卷积神经网络在语音识别和图像处理中具有显著的优势。在卷积神经网络的应用过程中,卷积运算是其中的核心运算。卷积运算实际上是一种加权求和的过程,而基于新型存储器(如阻变存储器,相变存储器等)的垂直交叉阵列结构能够并行计算卷积结果,因此被人们广泛研究以便进行卷积运算。但是发明人发现,这些新型存储器如阻变存储器中目前还存在操作过程中参数涨落过大等问题,在短时间内还无法成为实际应用。



技术实现要素:

本发明实施例提供了一种实现图像卷积的编码型闪存系统,用于对输入图像的像素矩阵进行卷积处理,所述卷积处理使用n×n的卷积核,其中n为正整数,所述系统包括:n2个第一编码型闪存单元、n2个第二编码型闪存单元、第一字线、第二字线、n2条位线、第一导线、第二导线以及运算放大器。其中,每个所述编码型闪存单元包括源端、栅端和漏端。每个第一编码型闪存单元存储相应的一个卷积核元素的绝对值,但小于零的卷积核元素对应的第一编码型闪存单元存储零值。每个第二编码型闪存单元存储相应的一个卷积核元素的绝对值,但大于零的卷积核元素对应的第二编码型闪存单元存储零值。第一字线与所述n2个第一编码型闪存单元的栅端相连,用于向所述第一组编码型闪存单元的栅端施加驱动电压。第二字线与所述n2个第二编码型闪存单元的栅端相连,用于向所述第二组编码型闪存单元的栅端施加驱动电压。每条位线连接相应的一对第一编码型闪存单元和第二编码型闪存单元的漏端,用于传输所述像素矩阵中的相应一个元素。第一导线与所述n2个第一编码型闪存单元的源端相连。第二导线与所述n2个第二编码型闪存单元的源端相连。运算放大器,包括正输入端、负输入端和输出端,所述正输入端与所述第一导线相连,所述负输入端与所述第二导线相连,所述输出端用于输出卷积处理结果。

可选的,所述编码型闪存系统,还包括字线控制器、时钟控制输入模块、位线控制器和时钟控制输出模块。字线控制器用于向字线施加驱动电压。时钟控制输入模块用于根据时钟周期,将所述像素矩阵的不同部分的信号输入至位线控制器。位线控制器用于控制位线,将所述信号输入至相应的位线。时钟控制输出模块用于根据时钟周期,将所述像素矩阵的不同部分的处理结果组合成输出矩阵,并输出。

可选的,所述编码型闪存单元为具有阈值电压可调特性的晶体管。

可选的,所述编码型闪存单元处于逻辑1时,使所述编码型闪存单元导通的阈值电压为vth_low,所述编码型闪存单元处于逻辑0时,使所述编码型闪存单元导通的阈值电压为vth_high,其中vth_low小于vth_high且所述字线上的驱动电压介于vth_low与vth_high之间。

可选的,所述卷积核为一阶梯度算子。

本发明另一实施例提供了一种使用编码型闪存系统实现m×m矩阵与n×n卷积核的卷积运算的方法,其中,m≥n,所述方法包括:在所述n2个第一编码型闪存单元和所述n2个第二编码型闪存单元中存储卷积核;将m×m的输入图像的像素矩阵分成(m-n+1)×(m-n+1)个n×n的子矩阵,将所述子矩阵依次通过位线输入至所述编码型闪存阵列,得到相应的子矩阵卷积结果;以及将所述子矩阵卷积结果组合成矩阵形式的输出结果。

本发明另一实施例提供了一种实现图像卷积的编码型闪存系统,用于使用n×n的卷积核,对m×m的输入图像的像素矩阵进行卷积处理,其中m、n为正整数,且m>n,所述系统包括编码型闪存阵列,所述编码型闪存阵列包括:(m-n+1)2个编码型闪存单元组、(m-n+1)2条字线、n2条位线、(m-n+1)2条导线。其中,每个编码型闪存单元组包括n2个编码型闪存单元,所述编码型闪存单元包括源端、栅端和漏端,用于存储所述像素矩阵信息。其中,存储所述像素矩阵信息包括:将m×m的像素矩阵分成(m-n+1)2个n×n子矩阵,每个编码型闪存单元组存储相应的一个n×n子矩阵,每个编码型闪存单元存储相应的一个子矩阵的元素。每条字线与相应的一个编码型闪存单元组中的编码型闪存单元的栅端相连,用于输入驱动电压。每条位线连接属于不同编码型闪存单元组的相应的(m-n+1)2个编码型闪存单元的漏端,用于输入卷积核数据的相应一个元素。每条导线连接相应的一个编码型闪存单元组中的编码型闪存单元的源端,用于输出卷积处理结果。

可选的,所述编码型闪存系统,还包括:字线控制器,卷积核输入模块,位线控制器和输出模块。字线控制器用于向字线施加驱动电压。输入模块用于将所述卷积核输入至位线控制器。位线控制器用于控制位线,将所述信号输入至相应的位线。输出模块用于输出卷积处理后的像素矩阵。

可选的,所述编码型闪存单元为具有阈值电压可调特性的晶体管。

可选的,所述编码型闪存单元处于逻辑1时,使所述编码型闪存单元导通的阈值电压为vth_low,所述编码型闪存单元处于逻辑0时,使所述编码型闪存单元导通的阈值电压为vth_high,其中vth_low小于vth_high,且所述字线上的驱动电压介于vth_low与vth_high之间。

可选的,所述卷积核为一阶梯度算子。

本发明另一实施例提供了一种使用编码型闪存系统实现卷积运算的方法,包括:将m×m的输入图像的像素矩阵分成(m-n+1)×(m-n+1)个n×n子矩阵,将所述每个n×n子矩阵写入处于同一条字线连接的n2个编码型闪存单元中;以及将n×n卷积核通过位线输入到所述编码型闪存阵列中,得到卷积处理结果。

本发明以简单易行的方式实现了并行卷积运算,为实现卷积运算操作提供了切实可行的硬件解决方案。同时本发明的系统具有存储卷积核、计算输入卷积的功能,实现了存储计算一体化。此外本发明避免了现有的存储器高低阻电压涨落过大等问题,具有实际生产应用的可行性。

附图说明

为了更完整地理解本发明及其优势,现在将参考结合附图的以下描述,其中:

图1示意性地示出了本发明实施例的矩阵卷积原理示意图;

图2示意性地示出了本发明实施例的编码型闪存单元示意图;

图3示意性地示出了本发明实施例的编码型闪存系统电路原理图;

图4示意性地示出了本发明实施例的编码型闪存系统结构图;

图5示意性地示出了本发明实施例的使用编码型闪存系统实现卷积运算的方法流程图;

图6示意性地示出了本发明另一实施例的编码型闪存系统电路原理图;

图7示意性地示出了本发明另一实施例的编码型闪存系统结构图;

图8示意性地示出了本发明另一实施例的使用编码型闪存系统实现卷积运算的方法流程图。

具体实施方式

根据结合附图对本发明示例性实施例的以下详细描述,本发明的其它方面、优势和突出特征对于本领域技术人员将变得显而易见。

在本发明中,术语“包括”和“含有”及其派生词意为包括而非限制;术语“或”是包含性的,意为和/或。

在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不背离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同参考数字用于相似功能和操作。

图1示意性地示出了本发明实施例的矩阵卷积原理示意图。

对于一个m×m大小规模的图像,经由一个n×n(m,n为正整数且m>n)大小规模的卷积核进行卷积操作之后得到的输出图像大小为(m-n+1)×(m-n+1)规模。如图1所示,示出了当m=4,n=3的一种情况。此时,输入图像的像素矩阵的大小为4×4,像素矩阵中像素信息用xi,j(0≤i,j≤3)表示,所述像素信息可以是图像的灰度信息,或者是其他信息。卷积核的大小为3×3,卷积核中各位置点的元素用fi,j(0≤i,j≤2)表示。输出图像的像素矩阵中像素信息用yi,j(0≤i,j≤1)表示。yi,j可由公式yi,j=xi,j·f2,2+xi,j+1·f2,1+xi,j+2·f2,0+xi+1,j·f1,2+xi+1,j+1·f1,1+xi+1,j·f1,0+xi+2,j+2·f0,2+xi+2,j+1·f0,1+xi+2,j+2·f0,0计算得到。因此,每一个输出的像素信息对应于相应的n2个输入的像素信息,例如y0,0对应于输入的x0,0,x0,1,x0,2,x1,0,x1,1,x1,2,x2,0,x2,1,x2,2像素信息。

通过卷积操作,可以对原图像的特征进行提取,从而将原来大量的不同图像通过某些具体的特征进行分类,进而降低后续图像处理信息的计算量。卷积核可以是一阶梯度算子,用于边缘检测。例如prewitt中的fx算子,此时f0,0=-1,f0,1=0,f0,2=1,f1,0=-1,f2,1=0,f2,2=1,f2,0=-1,f2,1=0,f2,2=1,因此对于本发明实施例,yi,j可由公式yi,j=xi,j-xi,j+2+xi+1,j-xi+1,j+2+xi,j-xi,j+2计算得到。

图2示意性地示出了本发明实施例的编码型闪存单元示意图。

如图2所示,编码型闪存单元包括源端201,栅端202和漏端203。

所述编码型闪存单元可以是浮栅晶体管,也可以是其他具有阈值电压可调特性的晶体管,如电荷俘获存储器,半浮栅晶体管等。编码型闪存单元可以调整使其导通的阈值电压,以区分不同的状态,表示不同的逻辑值。

浮栅晶体管可以通过编程/擦除操作来分别得到高/低阈值电压,并借此来区分不同的逻辑值。当进行编程操作时,晶体管的源端接地,栅端加上大电压,漏端加上一定电压,此时沟道中的电子会在栅端电压的作用下发生隧穿,在浮栅层中引入可动电荷,因此浮栅晶体管的阈值电压上升。当晶体管处于高阈值电压时记为逻辑“0”。当浮栅晶体管进行擦除操作时,此时源端浮置,栅端接地,在漏端加上高电压,在漏端电压的作用下,编程操作中引入的在浮栅层中的电荷会隧穿回到沟道中,因此阈值电压下降。当晶体管处于低阈值电压时记为逻辑“1”。

例如,可以设置当所述编码型闪存单元处于逻辑1时,使所述编码型闪存单元导通的阈值电压为vth_low,所述编码型闪存单元处于逻辑0时,使所述编码型闪存单元导通的阈值电压为vth_high,其中vth_low小于vth_high。如此,当在栅端施加驱动电压介于vth_low和vth_high之间,例如(vth_low+vth_high)/2时,可以使处于逻辑1的编码型闪存单元的漏端和源端导通而使处于逻辑0的编码型闪存单元的漏端和源端断开。

图3示意性地示出了本发明实施例的编码型闪存系统电路原理图。

如图3所示,编码型闪存系统包括编码型闪存阵列,所述编码型闪存阵列包括:n2个第一编码型闪存单元、n2个第二编码型闪存单元、第一字线、第二字线、n2条位线、第一导线、第二导线以及运算放大器。(当采用n×n的卷积核时,n为正整数)

每个所述编码型闪存单元包括源端、栅端和漏端。每个第一编码型闪存单元存储相应的一个卷积核元素的绝对值,但小于零的卷积核元素对应的第一编码型闪存单元存储零值。每个第二编码型闪存单元存储相应的一个卷积核元素的绝对值,但大于零的卷积核元素对应的第二编码型闪存单元存储零值。

第一字线与所述n2个第一编码型闪存单元的栅端相连,用于向所述第一组编码型闪存单元的栅端施加驱动电压。第二字线与所述n2个第二编码型闪存单元的栅端相连,用于向所述第二组编码型闪存单元的栅端施加驱动电压。

每条位线连接相应的一对第一编码型闪存单元和第二编码型闪存单元的漏端,用于传输所述像素矩阵中的相应一个元素。

第一导线与所述n2个第一编码型闪存单元的源端相连。

第二导线与所述n2个第二编码型闪存单元的源端相连。

运算放大器,包括正输入端、负输入端和输出端,所述正输入端与所述第一导线相连,所述负输入端与所述第二导线相连,所述输出端用于输出卷积处理结果。

图4示意性地示出了本发明实施例的使用编码型闪存系统实现卷积运算的方法流程图。

如图4所示,该方法包括:

s41:在n2个第一编码型闪存单元和n2个第二编码型闪存单元中存储卷积核。

s42:将m×m的输入图像的像素矩阵分成(m-n+1)×(m-n+1)个n×n的子矩阵,将子矩阵依次通过位线输入至编码型闪存阵列,得到相应的子矩阵卷积结果。

s43:将子矩阵卷积结果组合成矩阵形式的输出结果。

以下结合图1至图3所示的实施例具体说明。

根据本发明实施例,卷积核为3×3大小,因此需要9个第一编码型闪存单元和9个第二编码型闪存单元。例如,卷积核为f0,0=-1,f0,1=0,f0,2=1,f1,0=-1,f2,1=0,f2,2=1,f2,0=-1,f2,1=0,f2,2=1,将其旋转180度并存储在编码型闪存单元中,其中每个第一编码型闪存单元存储相应的一个卷积核元素的绝对值,但小于零的卷积核元素对应的第一编码型闪存单元存储零值,每个第二编码型闪存单元存储相应的一个卷积核元素的绝对值,但大于零的卷积核元素对应的第二编码型闪存单元存储零值,即,第一编码型闪存单元依次存储1,0,0,1,0,0,1,0,0,第二编码型闪存单元依次存储0,0,1,0,0,1,0,0,1。

根据本发明实施例,输入图像的像素矩阵为4×4大小,即xi,j(0≤i,j≤3)。将其分成3×3的子矩阵,即每个子矩阵由以下元素组成:xi,j,xi,j+1,xi,j+2,xi+1,j,xi+1,j+1,xi+1,j,xi+2,j+2,xi+2,j+1,xi+2,j+2,(0≤i,j≤1)。

根据本发明实施例,如图3所示将第一个子矩阵的9个元素x0,0,x0,1,x0,2,x1,0,x1,1,x1,2,x2,0,x2,1,x2,2转换成电压信号从9条位线输入至编码型闪存阵列,当输入的像素值xi,j≠0时,输入的电压信号为xi,j·vread,当输入像素值xi,j=0时,输入电压信号为xi,j·vread=0,其中vread为一固定的预设电压。每个信号分别施加在一对相应的一个第一编码型闪存单元和一个第二编码型闪存单元上。当对字线施加介于高阈值电压和低阈值电压之间的驱动电压时,如果编码型闪存单元记录1,则该编码型闪存单元上有电流通过,如果编码型闪存单元记录0,则该编码型闪存单元上几乎没有电流通过。

根据本发明实施例,第一导线上流过的电流为x0,0·1+x0,1·0+x0,2·0+x1,0·1+x1,1·0+x1,2·0+x2,0·1+x2,1·0+x2,1·0,对应于三个记录1的编码型闪存单元,漏端电压分别为x0,0·vread,x1,0·vread,x2,0·vread情况下共享源端流过的总电流。第二导线上流过的电流为x0,0·0+x0,1·0+x0,2·1+x1,0·0+x1,1·0+x1,2·1+x2,0·0+x2,1·0+x2,2·1,对应于三个记录1的编码型闪存单元,漏端电压分别为x0,2·vread,x1,2·vread,x2,2·vread情况下共享源端流过的总电流。两行电流分别流到运算放大器的两端,经过相减并放大之后所得到的结果对应为y0,0=x0,0·1+x0,1·0+x0,2·(-1)+x1,0·1+x1,1·0+x1,2·(-1)+x2,0·1+x2,1·0+x2,2·(-1)。即为第一个子矩阵的卷积结果。此时,可以判断是否还有其他未处理过的矩阵,若有,类似地进行处理,若没有,则处理完毕。

根据本发明实施例,信号输入输出过程可以采用时钟周期控制,即在一个时钟周期输入一个子矩阵的信号,以提高输入输出的效率。例如,可以在第一个时钟周期输入第一个子矩阵的信号,在第二个时钟周期输入第二个子矩阵的信号,以此类推。因此,对于一个如图1至图3所示的实施例,可以在4个时钟周期内完成处理过程。

根据本发明实施例,还包括将多个子矩阵的卷积结果组合成矩阵形式的输出结果,例如,将y0,0,y0,1,y1,0,y1,1组合成:

图5示意性地示出了本发明实施例的编码型闪存系统结构图。

如图5所示,本发明实施例的编码型闪存系统包括编码型闪存阵列501,字线控制器502,时钟控制输入模块503,位线控制器504,和时钟控制输出模块505。

编码型闪存阵列501,例如上文参考图3描述的电路。

字线控制器502,例如执行上文参考图4描述的操作,用于向字线施加驱动电压。

时钟控制输入模块503,例如执行上文参考图4描述的操作,用于根据时钟周期,将所述像素矩阵的不同部分的信号输入至位线控制器504。

位线控制器504,例如执行上文参考图4描述的操作,用于控制位线,将所述信号输入至相应的位线。

时钟控制输出模块505,例如执行上文参考图4描述的操作,用于根据时钟周期,将所述像素矩阵的不同部分的处理结果组合成输出矩阵,并输出。

图6示意性地示出了本发明另一实施例的编码型闪存系统电路原理图。

如图6所示,编码型闪存系统包括编码型闪存阵列,所述编码型闪存阵列包括:(m-n+1)2个编码型闪存单元组、(m-n+1)2条字线、n2条位线、(m-n+1)2条导线。(当采用n×n的卷积核对m×m的输入图像的像素矩阵进行卷积处理时,其中m、n为正整数,且m>n)

其中,每个编码型闪存单元组包括n2个编码型闪存单元,所述编码型闪存单元包括源端、栅端和漏端,用于存储所述像素矩阵信息。其中,存储所述像素矩阵信息包括:将m×m的像素矩阵分成(m-n+1)2个n×n子矩阵,每个编码型闪存单元组存储相应的一个n×n子矩阵,每个编码型闪存单元存储相应的一个子矩阵的元素。

每条字线与相应的一个编码型闪存单元组中的编码型闪存单元的栅端相连,用于输入驱动电压。

每条位线连接属于不同编码型闪存单元组的相应的(m-n+1)2个编码型闪存单元的漏端,用于输入卷积核数据的相应一个元素。

每条导线连接相应的一个编码型闪存单元组中的编码型闪存单元的源端,用于输出卷积处理结果。

图7示意性地示出了本发明另一实施例的使用编码型闪存系统实现卷积运算的方法流程图。

如图7所示,该方法包括:

s71:将m×m的输入图像的像素矩阵分成(m-n+1)×(m-n+1)个n×n子矩阵,将每个n×n子矩阵写入处于同一条字线连接的n2个编码型闪存单元中。

s72:将n×n卷积核通过位线输入到编码型闪存阵列中,得到卷积处理结果。

以下结合图1、图2和图6所示的实施例具体说明。

根据本发明实施例,输入图像的像素矩阵为4×4大小,卷积核为3×3大小,因此需要4个编码型闪存单元组,每个编码型闪存单元组包括9个编码型闪存单元。例如,每个编码型闪存单元组记录上文参考图4描述的一个子矩阵信息,即,编码型闪存单元组的编码型闪存单元依次存储xi,j,xi,j+1,xi,j+2,xi+1,j,xi+1,j+1,xi+1,j,xi+2,j+2,xi+2,j+1,xi+2,j+2,(0≤i,j≤1)。

根据本发明实施例,如图6所示将卷积核的9个元素f2,2,f2,1,f2,0,f1,2,f1,1,f1,0,f0,0,f0,1,f0,0转换成电压信号从9条位线输入至编码型闪存阵列,当输入的元素fi,j≠0时,输入的电压信号为fi,j·vread,当输入像素值fi,j=0时,输入电压信号为fi,j·vread=0,其中vread为一固定的预设电压。例如,当卷积核为f2,2=1,,f2,1=0,f2,0=-1,f1,2=1,f1,1=0,f1,0=-1,f0,0=1,f0,1=0,f0,0=-1时,9条位线上输入的电压信号为vread,0,-vread,vread,0,-vread,vread,0,-vread。当对字线施加介于高阈值电压和低阈值电压之间的驱动电压时,如果编码型闪存单元记录1,则该编码型闪存单元上有电流通过,如果编码型闪存单元记录0,则该编码型闪存单元上几乎没有电流通过。

根据本发明实施例,第一组编码型闪存单元源端导线上流过的电流为y0,0=x0,0·1+x0,1·0+x0,2·(-1)+x1,0·1+x1,1·0+x1,2·(-1)+x2,0·1+x2,1·0+x2,2·(-1),第二组编码型闪存单元源端导线上流过的电流为y0,1=x0,1·1+x0,2·0+x0,3·(-1)+x1,1·1+x1,2·0+x1,3·(-1)+x2,1·1+x2,2·0+x2,3·(-1),第三组编码型闪存单元源端导线上流过的电流为y0,0=x1,0·1+x1,1·0+x1,2·(-1)+x2,0·1+x2,1·0+x2,2·(-1)+x3,0·1+x3,1·0+x3,2·(-1),第四组编码型闪存单元源端导线上流过的电流为y0,1=x1,1·1+x1,2·0+x1,3·(-1)+x2,1·1+x2,2·0+x2,3·(-1)+x3,1·1+x3,2·0+x3,3·(-1)。可以在四个输出端同时输出卷积结果,即在一个时钟周期内输出卷积后的图像矩阵。

图8示意性地示出了本发明另一实施例的编码型闪存系统结构图。

如图8所示,本发明实施例的编码型闪存系统800包括编码型闪存阵列801、字线控制器802,卷积核输入模块803,位线控制器804,和输出模块805。

编码型闪存阵列801,例如参考上文图6描述的电路。

字线控制器802,例如执行上文参考图7描述的操作,用于向字线施加驱动电压。

卷积核输入模块803,例如执行上文参考图7描述的操作,用于将所述卷积核输入至位线控制器。

位线控制器804,例如执行上文参考图7描述的操作,用于控制位线,将所述卷积核输入至相应的位线。

输出模块805,例如执行上文参考图7描述的操作,用于输出卷积处理后的像素矩阵。

当然,本发明的任一实施方式不一定需要同时达到以上所述的所有优点。

尽管已经参照本发明的特定示例性实施例示出并描述了本发明,但是本领域技术人员应该理解,在不背离所附权利要求及其等同物限定的本发明的精神和范围的情况下,可以对本发明进行形式和细节上的多种改变。因此,本发明的范围不应该限于上述实施例,而是应该不仅由所附权利要求来进行确定,还由所附权利要求的等同物来进行限定。

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