CN110597555B - 非易失性存内计算芯片及其运算控制方法 - Google Patents
非易失性存内计算芯片及其运算控制方法 Download PDFInfo
- Publication number
- CN110597555B CN110597555B CN201910713399.0A CN201910713399A CN110597555B CN 110597555 B CN110597555 B CN 110597555B CN 201910713399 A CN201910713399 A CN 201910713399A CN 110597555 B CN110597555 B CN 110597555B
- Authority
- CN
- China
- Prior art keywords
- nonvolatile memory
- row
- binary
- volatile
- module
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/10—Decoders
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Read Only Memory (AREA)
Abstract
本发明提供一种非易失性存内计算芯片及其运算控制方法,该非易失性存内计算芯片包括:缓存模块,用于缓存数据;非易失性存内计算模块,连接该缓存模块,用于对该缓存模块发送的数据执行运算;后处理模块,连接该非易失性存内计算模块,用于对该非易失性存内计算模块的运算结果进行后处理;其中,该非易失性存内计算模块包括:非易失性存储单元阵列、连接该非易失性存储单元阵列的行列译码器、连接该非易失性存储单元阵列的读写电路。其中,通过上述非易失性存内计算芯片配合运算控制方法,基于存算一体技术实现乘积累加运算和二值神经网络运算,不需要在存储器与处理器之间传输数据,降低功耗与时延。
Description
技术领域
本发明涉及半导体集成电路应用技术领域,尤其涉及一种非易失性存内计算芯片及其运算控制方法。
背景技术
随着深度学习理论的提出和数值计算设备的改进,深度学习神经网络技术得到了快速发展,并被大量应用于计算机视觉、自然语言处理等领域。现在神经网络一般采用浮点计算,需要较大的存储空间和较长的运算时间。
二值神经网络(Binary Neural Network,BNN)是指在浮点型神经网络的基础上,将其权重矩阵中权重值和各个激活函数值(特征值)同时进行二值化得到的神经网络,即:将权重值和激活函数值二值化为1或者-1。通过二值化操作,使模型的参数占用更小的存储空间(内存消耗理论上减少为原来的1/32倍,从浮点32位到1位),同时利用位操作来代替网络中的乘加运算,大大降低了运算时间和功耗。因此,二值神经网络能够解决当前浮点型神经网络模型应用到嵌入式或移动场景下(例如手机端、可穿戴设备、自动驾驶汽车等)存在的模型过大、计算密度过高等问题,有效减少了存储空间占用,降低了运算时间,以其高模型压缩率和快计算速度的潜在优势,近些年成为深度学习的热门研究方向。
但是,虽然二值神经网络与浮点型神经网络相变,能够减少存储空间占用,降低运算时间,但是,由于二值神经网络仍然需要在存储器与处理器之间传输数据,频繁的数据移动仍然会带来较高的功耗与时延。
发明内容
针对现有技术中的问题,本发明提供一种非易失性存内计算芯片及其运算控制方法,能够至少部分地解决现有技术中存在的问题。
为了实现上述目的,本发明采用如下技术方案:
第一方面,提供一种非易失性存内计算芯片,包括:
缓存模块,用于缓存数据;
非易失性存内计算模块,连接该缓存模块,用于对该缓存模块发送的数据执行运算;
后处理模块,连接该非易失性存内计算模块,用于对该非易失性存内计算模块的运算结果进行后处理;
其中,该非易失性存内计算模块包括:非易失性存储单元阵列、连接该非易失性存储单元阵列的行列译码器、连接该非易失性存储单元阵列的读写电路。
进一步地,该缓存模块包括:第一缓存单元和第二缓存单元,
该第一缓存单元连接在该非易失性存内计算模块的前端,用于接收并缓存输入数据以及特征图数据;
该第二缓存单元连接该非易失性存内计算模块,用于缓存权重数据。
进一步地,该行列译码器包括:行译码器和列译码器,该非易失性存储单元阵列包括:多个阵列排布的非易失性存储单元;
每列非易失性存储单元均通过一位线连接列译码器,每行非易失性存储单元均通过一字线连接该行译码器,每行非易失性存储单元的位线和源线均连接该读写电路。
进一步地,该非易失性存储单元包括:串联连接的非易失性存储器件以及三端开关元件;
该非易失性存储器件一端连接该位线,另一端连接该三端开关元件的第一端,该三端开关元件的第二端连接该字线,该三端开关元件的第三端连接该源线。
进一步地,该行列译码器包括:行译码器和列译码器,该非易失性存储单元阵列包括:多个阵列排布的非易失性存储单元;
每列非易失性存储单元均通过一位线连接列译码器,每行非易失性存储单元均通过一源线连接该行译码器,每行非易失性存储单元的位线和源线均连接该读写电路。
进一步地,该非易失性存储单元包括:串联连接的非易失性存储器件以及两端开关元件;
由该非易失性存储器件以及该两端开关元件形成的串联支路一端连接该位线,另一端连接该源线。
进一步地,还包括:放大器,该放大器连接各条位线,用于将各条位线上的总的模拟电流/电压与参考信息进行对比,输出非易失性存内计算模块的运算结果。
进一步地,还包括:计数器,该计数器连接该读写电路,该计数器的输出作为非易失性存内计算模块的运算结果。
进一步地,该非易失性存储单元为阻变存储单元、相变存储单元、铁电存储单元、自旋存储单元。
第二方面,提供一种基于非易失性存内计算实现乘积累加运算的控制方法,包括:
将第一二进制运算信号存入一行非易失性存储单元,每个非易失性存储单元中存储该第一二进制运算信号的一位;
将第二二进制运算信号加载至该行非易失性存储单元,第一二进制运算信号和第二二进制运算信号执行乘积累加运算时的对应位施加于同一非易失性存储单元;
将同或运算指令加载至该行非易失性存储单元,以使该行非易失性存储单元响应于该同或运算指令执行该第一二进制运算信号和该第二二进制运算信号对应位的同或运算,并将运算结果存储在对应的非易失性存储单元中;
读取该行非易失性存储单元中每个非易失性存储单元中的数据并累加,得到该第一二进制运算信号和第二二进制运算信号各位的乘积累加运算结果。
第三方面,提供一种基于非易失性存内计算实现二值神经网络运算的控制方法,包括:
将至少一个二值权重信号存入至少一行非易失性存储单元,每个非易失性存储单元中存储该二值权重信号的一位;
将特征信号加载至该行非易失性存储单元,二值权重信号和特征信号执行乘积累加运算时的对应位施加于同一非易失性存储单元;
将同或运算指令加载至该行非易失性存储单元,以使该行非易失性存储单元响应于该同或运算指令执行该二值权重信号和该特征信号对应位的同或运算,并将运算结果存储在对应的非易失性存储单元中;
读取该行非易失性存储单元中每个非易失性存储单元中的数据并累加,得到该二值权重信号和该特征信号各位的乘积累加运算结果。
进一步地,还包括:
缓存该乘积累加运算结果,作为下一层的特征信号。
进一步地,还包括:
对该乘积累加运算结果进行后处理,得到二值神经网络运算结果。
本发明实施例提供的非易失性存内计算芯片及其运算控制方法,该非易失性存内计算芯片包括:缓存模块,用于缓存数据;非易失性存内计算模块,连接该缓存模块,用于对该缓存模块发送的数据执行运算;后处理模块,连接该非易失性存内计算模块,用于对该非易失性存内计算模块的运算结果进行后处理;其中,该非易失性存内计算模块包括:非易失性存储单元阵列、连接该非易失性存储单元阵列的行列译码器、连接该非易失性存储单元阵列的读写电路。其中,通过上述非易失性存内计算芯片配合运算控制方法,基于存算一体技术实现乘积累加运算和二值神经网络运算,不需要在存储器与处理器之间传输数据,降低功耗与时延。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中非易失性存内计算芯片的结构框图一;
图2示出图1中非易失性存内计算模块20的结构;
图3为本发明实施例中非易失性存内计算芯片的结构框图二;
图4示出了图2中非易失性存储单元的一种结构;
图5示出了基于图4所示非易失性存储单元阵列的一种结构;
图6a示出了图2中非易失性存储单元的另一种结构;
图6b示出了图2中非易失性存储单元的第三种结构;
图7示出了基于图6b所示非易失性存储单元阵列的另一种结构;
图8a至图8c示出了本发明实施例提供的三种非易失性存储单元的运算逻辑;
图9示出了采用图8a至图8c示出的逻辑实现同或运算或异或运算的真值表;
图10a示出了利用图5所示非易失性存储单元阵列实现同或逻辑运算或者异或逻辑运算的电路结构;
图10b示出了利用图5所示非易失性存储单元阵列实现同或逻辑运算或者异或逻辑运算的另一种电路结构;
图11a示出了利用图7所示非易失性存储单元阵列实现同或逻辑运算或者异或逻辑运算的电路结构;
图11b示出了利用图7所示非易失性存储单元阵列实现同或逻辑运算或者异或逻辑运算的另一种电路结构;
图12示出了图1中后处理模块30的具体结构;
图13示出了本发明实施例中基于非易失性存内计算实现乘积累加运算的控制方法的流程图一;
图14示出了本发明实施例中基于非易失性存内计算实现乘积累加运算的控制方法的流程图二;
图15示出了本发明实施例中基于非易失性存内计算实现二值神经网络运算的控制方法的流程图。
图16示出了一种神经网络运算架构。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
以下在实施方式中详细叙述本发明的详细特征以及优点,其内容足以使任何本领域技术人员,了解本发明的技术内容并据以实施,且根据本说明书所揭露的内容、权利要求及图式,任何本领域技术人员可轻易地理解本发明相关的目的及优点。以下的实施例进一步详细说明本发明的观点,但非以任何观点限制本发明的范畴。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
目前,虽然二值神经网络与浮点型神经网络相变,能够减少存储空间占用,降低运算时间,但是,由于二值神经网络仍然需要在存储器与处理器之间传输数据,频繁的数据移动仍然会带来较高的功耗与时延。
为至少部分解决现有技术中存在的上述技术问题,本发明实施例提供一种非易失性存内计算芯片,能够将存储于计算融合在同一个芯片,基于存算一体技术实现乘积累加运算和二值神经网络运算,从而直接利用存储器进行计算,减少存储器与处理器之间的数据传输,降低功耗与时延。
图1为本发明实施例中非易失性存内计算芯片的结构框图一。如图1所示,该非易失性存内计算芯片包括:缓存模块10、非易失性存内计算模块20以及后处理模块30。
其中,缓存模块10用于接收输入数据并缓存数据,也可以用于输出数据,其中,缓存的数据可以为输入数据,也可以为非易失性存内计算模块20的中间运算结果或者后处理模块输出的计算结果等,比如:输入数据、权重数据、特征图数据等。
具体地,该缓存模块10可采用SRAM或MRAM实现。
非易失性存内计算模块20连接该缓存模块,用于对该缓存模块发送的数据执行运算。
其中,该非易失性存内计算模块20可以存储数据,也可以基于非易失的特性,实现与逻辑运算、或逻辑运算、异或逻辑运算、同或逻辑运算、乘加累积运算(MAC)等。
后处理模块(Post-processing Engine)30连接该非易失性存内计算模块,用于对该非易失性存内计算模块的运算结果进行后处理。
具体地,该后处理可以包括:池化(Pooling)、批归一化(Batch Normalization)、移位、偏置、求平均值、取最大最小值、激活函数等运算。
其中,该非易失性存内计算模块20包括:非易失性存储单元阵列21、连接该非易失性存储单元阵列的行列译码器23、连接该非易失性存储单元阵列的读写电路22,还可以包括连接所述非易失性存储单元阵列21的MAC***电路24(如计数器、放大器等),参见图2。
具体地,该非易失性存储单元阵列21可为RRAM,PCRAM,MRAM等。
值得说明的是,本发明实施例提供的非易失性存内计算芯片,通过采用缓存模块接收或缓存数据,通过控制非易失性存内计算模块20,以使非易失性存内计算模块20对待运算数据执行逻辑运算,由后处理模块30对运算结果进行处理后,发送至缓存模块输出或者继续参与下一轮运算,进而可基于存算一体技术实现乘积累加运算或二值神经网络运算等运算过程,不需要在存储器与处理器之间传输数据,降低功耗与时延。
在一个可选的实施例中,参见图3,该缓存模块10可以包括:第一缓存单元11和第二缓存单元12。
第一缓存单元11连接在非易失性存内计算模块20的前端,用于接收并缓存输入数据以及特征图数据;第二缓存单元12连接所述非易失性存内计算模块,用于缓存权重数据。
其中,通过设置两个缓存单元分别缓存不同数据,能够提高数据缓存读取速度,提高非易失性存内计算芯片的灵活性。
在一个可选的实施例中,该缓存模块20还可以连接一非易失性片外存储器(可以是传统Flash、硬盘,也可是新型非易失性存储器RRAM,MRAM,PCRAM),以此提高片外存储的容量和存取速度,防止大规模运算时缓存数据严重溢出而影响运算的问题。
在一个可选的实施例中,该行列译码器包括:行译码器和列译码器,所述非易失性存储单元阵列包括:多个阵列排布的非易失性存储单元;每列非易失性存储单元均通过一位线BL连接列译码器,每行非易失性存储单元均通过一字线WL连接所述行译码器,每行非易失性存储单元的位线BL和源线SL均连接所述读写电路。
在一个进一步地实施例中,该非易失性存储单元包括:串联连接的非易失性存储器件R以及三端开关元件T1(简称1T1R结构),参见图4;
非易失性存储器件R一端连接所述位线BL,另一端连接所述三端开关元件T1的第一端,所述三端开关元件T1的第二端连接所述字线WL,所述三端开关元件T1的第三端连接所述源线SL,由该非易失性存储单元阵列排布形成的非易失性存储单元阵列的结构参见图5。
其中,开关元件可采用PMOS晶体管或NMOS晶体管实现,该第一端可为MOS管的漏极,该第二端可为MOS管的栅极,该第三端可为MOS管的源极。
当然,本发明实施例提供的晶体管的第一端可以为源极,则第三端为漏极,本发明对此不作限定,可根据晶体管的类型合理选择即可。
在另一个可选的实施例中,行列译码器包括:行译码器和列译码器,非易失性存储单元阵列包括:多个阵列排布的非易失性存储单元;
每列非易失性存储单元均通过一位线连接列译码器,每行非易失性存储单元均通过一源线连接所述行译码器,每行非易失性存储单元的位线和源线均连接所述读写电路。
在一个进一步地实施例中,所述非易失性存储单元包括:串联连接的非易失性存储器件R以及两端开关元件T2或T3(也称1T1R结构),参见图6a和图6b;
由所述非易失性存储器件以及所述两端开关元件形成的串联支路一端连接所述位线BL,另一端连接所述源线SL。由该非易失性存储单元阵列排布形成的非易失性存储单元阵列(简称交叉点阵列)的结构参见图7。
在1T1R单元结构中,非易失性存储器件的状态(通常有两个状态,表示逻辑0的低阻态和表示逻辑1的高阻态,或者反之亦可)取决于位线BL与源线SL上的电压差(注意:高压代表1,低压代表0),当位线BL与源线SL之间的电压差超过某个阈值时,非易失性存储器件的状态就翻转(不论当前是何状态),当位线BL与源线SL之间的电压不超过阈值时,非易失性存储器件的状态保持初始状态,如单向RRAM器件、电场调控MRAM器件等。基于此原理,发明人通过大量研究分析发现,可以利用上述1T1R结构实现同或运算XNOR。如图8a、图8b、图8c所示,令BL上的电压为输入操作数A,SL上的电压为输入操作数C,非易失性存储器件当前存储的数据为操作数Bi,则可以得到真值表,参见图9,可以看到,当C=0时,Bi与A执行异或(XOR)操作,但当C=1时,Bi与A执行同或(XNOR)操作。
通过发明人大量的研究发现,对两个向量的MAC运算的过程能够等效于两个两项的各元素的同或运算(XNOR)的累加,例如,序列A=[0101]和B=[1011],A×B=a1×b1+a2×b2+a3×b3+a4×b4=a1⊙b1+a2⊙b2+a3⊙b3+a4⊙b4=1。其中,XNOR的符号是⊙,另外,XNOR=XOR(异或运算⊕)取反。
基于上述原理,对于图5和图7所示的非易失性存储单元阵列,通过增加***电路,可以实现两个向量的XNOR操作。
图10a示出了利用图5所示非易失性存储单元阵列实现同或逻辑运算或者异或逻辑运算的电路结构。如图10a所示,各条位线上均连接一个放大器(相当于读写电路的读写单元),各放大器的输出端均连接至计数器,计数器对读取的数据中表示1的数据进行计数,计数结果作为非易失性存内计算模块的运算结果。
可以将运算数据B={b1,b2,…,bM}(针对神经网络运算,B相当于某一层的权重数据,针对卷积神经网络运算,B相当于卷积核数据)存储于某一行非易失性存储单元中(通过读写电路配合行列译码器,通过控制位线与源线的电压差实现),将表征A={a1,a2,…,aM}的信号加载在该行非易失性存储单元的位线,将同或运算指令{1,1,…,1}加载在非易失性存储单元的源线,当所有位线为高时,在A的作用下,在每一个单元中执行XNOR操作,对应每一行执行A与B的XNOR操作,最后通过选通不同的WL,读取每一行单元1的状态并通过计数器累加,即可实现MAC操作。
本领域技术人员可以理解的是,也可将异或运算指令{0,0,…,0}加载在非易失性存储单元的源线,在A的作用下,在每一个单元中执行XOR操作,对应每一行执行A与B的XOR操作,最后通过选通不同的WL,读取每一行单元0的状态并通过计数器累加,也可实现MAC操作。
图10b示出了利用图5所示非易失性存储单元阵列实现同或逻辑运算或者异或逻辑运算的另一种电路结构;如图10b所示,放大器连接各条位线,用于将各条位线上的总的模拟电流/电压与参考信息进行对比,输出非易失性存内计算模块的运算结果。
可将运算数据B={b1,b2,…,bM}(针对神经网络运算,B相当于某一层的权重数据,针对卷积神经网络运算,B相当于卷积核数据)存储于某一行非易失性存储单元中(通过读写电路配合行列译码器,通过控制位线与源线的电压差实现),将表征A={a1,a2,…,aM}的信号加载在该行非易失性存储单元的位线,将同或运算指令{1,1,…,1}加载在非易失性存储单元的源线,当所有位线为高时,在A的作用下,在每一个单元中执行XNOR操作,对应每一行执行A与B的XNOR操作,通过读取所有单元总的模拟电流/电压的方式,通过放大器将所有单元总的模拟电流/电压与参考信号的对比,并将对比结果作为MAC操作结果。
图11a示出了利用图7所示非易失性存储单元阵列实现同或逻辑运算或者异或逻辑运算的电路结构。图11b示出了利用图7所示非易失性存储单元阵列实现同或逻辑运算或者异或逻辑运算的另一种电路结构。其运算原理和电路描述参考图10a和图10b,在此不再赘述。
图12示出了图1中后处理模块30的具体结构。参见图12,该后处理模块30包括多个PE通道,分别实现不同中预算组配的后处理功能,该PE通道1包括:非线性函数+池化+批归一化+激活函数。不同PE通道由不同种运算按所需顺序组配实现。
值得说明的是,后处理模块为本领域常见的技术,在此不再赘述。
值得说明的是,本发明实施例中所采用的非易失性存储单元优选为阻变存储单元、相变存储单元、铁电存储单元、自旋存储单元等。
其中,该非易失性存内计算芯片还可以包括控制器,用于控制整个芯片的状态与时序。
图13示出了本发明实施例中基于非易失性存内计算实现乘积累加运算的控制方法的流程图一;如图13所示,该基于非易失性存内计算实现乘积累加运算的控制方法可以用于控制上述的非易失性存内计算芯片实现乘积累加运算。
该基于非易失性存内计算实现乘积累加运算的控制方法可以包括以下内容:
步骤S100:将第一二进制运算信号存入一行非易失性存储单元。
其中,每个非易失性存储单元中存储所述第一二进制运算信号的一位。
具体地,通过行列译码器、读写电路配合,控制非易失性存储单元位线和源线上的电压差将每个二进制位写入一个非易失性存储单元中。
值得说明的是,第一二进制运算信号表征第一二进制运算数据。
步骤S200:将第二二进制运算信号加载至该行非易失性存储单元。
其中,第一二进制运算信号和第二二进制运算信号执行乘积累加运算时的对应位施加于同一非易失性存储单元;
具体地,通过行列译码器、读写电路配合,根据第二二进制运算信号配置该行非易失性存储单元对应存储单元的位线。
值得说明的是,第二二进制运算信号表征第二二进制运算数据。
步骤S300:将同或运算指令加载至该行非易失性存储单元,以使该行非易失性存储单元响应于所述同或运算指令执行所述第一二进制运算信号和所述第二二进制运算信号对应位的同或运算,并将运算结果存储在对应的非易失性存储单元中。
其中,同或运算指令可以设置为全1或全0,根据电路情况进行配置,异或运算指令与同或运算指令相反即可。
具体地,通过行列译码器、读写电路配合,根据同或运算指令配置该行非易失性存储单元。
步骤S400:读取该行非易失性存储单元中每个非易失性存储单元中的数据并累加,得到所述第一二进制运算信号和第二二进制运算信号各位的乘积累加运算结果。
具体地,可以通过行列译码器、读写电路配合,读取该行非易失性存储单元中每个非易失性存储单元中的数据,通过计数器对读取的该行各非易失性存储单元的某一特定状态进行计数,即可实现MAC操作,参考图10a和图11a,首先,读取该行非易失性存储单元中每个非易失性存储单元中的数据;然后,对读取的数据中表示1的数据进行计数;最后,将计数结果作为所述第一二进制运算信号和第二二进制运算信号各位的乘积累加运算结果。
或者,通过读取所有单元总的模拟电流/电压的方式,通过放大器将所有单元总的模拟电流/电压与参考信号的对比,并将对比结果作为MAC操作结果,参考图10b和图11b,首先,读取该行非易失性存储单元中所有非易失性存储单元的总模拟电流/电压;然后,将所述总模拟电流/电压与第一参考信号进行比较;最后,将比较结果作为所述第一二进制运算信号和第二二进制运算信号各位的乘积累加运算结果。
通过上述技术方案可以的值,本发明可以采用上述控制方法控制上述基于非易失性存内计算实现乘积累加运算,不需要在存储器与处理器之间传输数据,降低功耗与时延。
图14示出了本发明实施例中基于非易失性存内计算实现乘积累加运算的控制方法的流程图二;如图14所示,该基于非易失性存内计算实现乘积累加运算的控制方法可以用于控制上述的非易失性存内计算芯片实现乘积累加运算。
该图14示出的基于非易失性存内计算实现乘积累加运算的控制方法与图13示出的控制方法原理相同,区别在于步骤S300’中将异或运算指令加载至该行非易失性存储单元,利用同或运算为异或运算取反的原理,在读取运算结果时,对读取的数据中表示0的数据进行计数;最后,将计数结果作为所述第一二进制运算信号和第二二进制运算信号各位的乘积累加运算结果。
或者,通过读取所有单元总的模拟电流/电压的方式,通过放大器将所有单元总的模拟电流/电压与参考信号的对比,并将对比结果作为MAC操作结果时,所采用的参考信号与执行同或运算时所采用的参考信号不同,其他原理与采用同或运算时相同,在此不再赘述。
图15示出了本发明实施例中基于非易失性存内计算实现二值神经网络运算的控制方法的流程图。如图15所示,该基于非易失性存内计算实现二值神经网络运算的控制方法可以包括以下内容:
步骤S1000:将至少一个二值权重信号(相当于Bi)存入至少一行非易失性存储单元;
值得说明的是,参见图16,神经网络运算包括多层,每层用于对输入数据和权重数据进行MAC运算,并将运算结果作为下一层的输入。
其中,每个非易失性存储单元中存储所述二值权重信号的一位。
具体地,通过行列译码器、读写电路配合,控制非易失性存储单元位线和源线上的电压差将每个二进制位写入一个非易失性存储单元中。
另外,针对卷积神经网络来说,一层可能对应多个卷积核,此时,将每个卷积核对应的数据作为一权重数据,将多个卷积核对应的多个权重数据分别写入多行非易失性存储单元中,以便同时实现多个卷积核对应的运算。
步骤S2000:将特征信号(相当于A)加载至该行非易失性存储单元。
二值权重信号和特征信号执行乘积累加运算时的对应位施加于同一非易失性存储单元;
具体地,通过行列译码器、读写电路配合,根据特征信号配置该行非易失性存储单元对应存储单元的位线。
步骤S3000:将同或运算指令加载至该行非易失性存储单元,以使该行非易失性存储单元响应于所述同或运算指令执行所述二值权重信号和所述特征信号对应位的同或运算,并将运算结果存储在对应的非易失性存储单元中;
其中,同或运算指令可以设置为全1或全0,根据电路情况进行配置,异或运算指令与同或运算指令相反即可。
具体地,通过行列译码器、读写电路配合,根据同或运算指令配置该行非易失性存储单元。
步骤S4000:读取该行非易失性存储单元中每个非易失性存储单元中的数据并累加,得到所述二值权重信号和所述特征信号各位的乘积累加运算结果。
具体地,可以通过行列译码器、读写电路配合,读取该行非易失性存储单元中每个非易失性存储单元中的数据,通过计数器对该行各非易失性存储单元的某一状态进行计数,即可实现MAC操作,参考图10a和图11a,首先,读取该行非易失性存储单元中每个非易失性存储单元中的数据;然后,对读取的数据中表示1的数据进行计数;最后,将计数结果作为权重信号和特征信号各位的乘积累加运算结果。
或者,通过读取所有单元总的模拟电流/电压的方式,通过放大器将所有单元总的模拟电流/电压与参考信号的对比,并将对比结果作为MAC操作结果,参考图10b和图11b,首先,读取该行非易失性存储单元中所有非易失性存储单元的总模拟电流/电压;然后,将所述总模拟电流/电压与第一参考信号进行比较;最后,将比较结果作为所述权重信号和特征信号各位的乘积累加运算结果。
值得说明的是,假设权重数据本身存储在非易失性存储单元阵列中,那么,首先需要把权重数据Bi读出到缓存模块(因为运算过程中,运算结果Bi+1存储在当前单元中,意味着初始的权重数据Bi会被破坏,因此在执行MAC运算时,需要把Bi先拷贝到缓存模块,执行完之后,再写回);
另外,如果权重数据存储于片外存储器中,那么首先把权重数据导入非易失性存储单元阵列当中。
通过上述技术方案可以得知,本发明可以采用上述控制方法控制上述基于非易失性存内计算实现神经网络运算,尤其对于卷积神经网络运算,效果更佳明显,不需要在存储器与处理器之间传输数据,降低功耗与时延。
在一个可选的实施例中,该基于非易失性存内计算实现二值神经网络运算的控制方法还可以包括:
缓存所述乘积累加运算结果,作为下一层的特征信号。
具体地,将乘积累加运算结果缓存至缓存模块中,以便后续使用。
在一个可选的实施例中,该基于非易失性存内计算实现二值神经网络运算的控制方法还可以包括:
对所述乘积累加运算结果进行后处理,得到二值神经网络运算结果。
具体地,该后处理可以包括:池化(Pooling)、批归一化(Batch Normalization)、移位、偏置、求平均值、取最大最小值、激活函数等运算。
本领域技术人员可以理解的是,针对上述基于非易失性存内计算实现二值神经网络运算的控制方法,可以采用异或运算指令替代该同或运算指令,因为异或运算与同或运算的结果互为相返,因此,若采用同或运算时统计存储单元中1的个数,那么采用异或运算时统计存储单元中0的个数即可,原理与上述方法相同,在此不再赘述。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅是本发明的较佳实施例而已,并非对本发明做任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何本领域技术人员,在不脱离本发明技术方案的范围内,当可利用上述揭示的技术内容做出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
Claims (13)
1.一种非易失性存内计算芯片,其特征在于,包括:
缓存模块,用于缓存数据;
非易失性存内计算模块,连接所述缓存模块,用于对所述缓存模块发送的数据执行运算;
后处理模块,连接所述非易失性存内计算模块,用于对所述非易失性存内计算模块的运算结果进行后处理;
其中,所述非易失性存内计算模块包括:非易失性存储单元阵列、连接所述非易失性存储单元阵列的行列译码器、连接所述非易失性存储单元阵列的读写电路;
所述非易失性存内计算模块的各条位线上均连接一个放大器,各放大器的输出端均连接至计数器,所述计数器对读取的数据中表示1的数据进行计数,计数结果作为所述非易失性存内计算模块的运算结果;或
将所述各条位线上的总的模拟电流/电压与参考信息进行对比,输出所述非易失性存内计算模块的运算结果。
2.根据权利要求1所述的非易失性存内计算芯片,其特征在于,所述缓存模块包括:第一缓存单元和第二缓存单元,
所述第一缓存单元连接在所述非易失性存内计算模块的前端,用于接收并缓存输入数据以及特征图数据;
所述第二缓存单元连接所述非易失性存内计算模块,用于缓存权重数据。
3.根据权利要求1所述的非易失性存内计算芯片,其特征在于,所述行列译码器包括:行译码器和列译码器,所述非易失性存储单元阵列包括:多个阵列排布的非易失性存储单元;
每列非易失性存储单元均通过一位线连接列译码器,每行非易失性存储单元均通过一字线连接所述行译码器,每行非易失性存储单元的位线和源线均连接所述读写电路。
4.根据权利要求3所述的非易失性存内计算芯片,其特征在于,所述非易失性存储单元包括:串联连接的非易失性存储器件以及三端开关元件;
所述非易失性存储器件一端连接所述位线,另一端连接所述三端开关元件的第一端,所述三端开关元件的第二端连接所述字线,所述三端开关元件的第三端连接所述源线。
5.根据权利要求1所述的非易失性存内计算芯片,其特征在于,所述行列译码器包括:行译码器和列译码器,所述非易失性存储单元阵列包括:多个阵列排布的非易失性存储单元;
每列非易失性存储单元均通过一位线连接列译码器,每行非易失性存储单元均通过一源线连接所述行译码器,每行非易失性存储单元的位线和源线均连接所述读写电路。
6.根据权利要求5所述的非易失性存内计算芯片,其特征在于,所述非易失性存储单元包括:串联连接的非易失性存储器件以及两端开关元件;
由所述非易失性存储器件以及所述两端开关元件形成的串联支路一端连接所述位线,另一端连接所述源线。
7.根据权利要求3或5任一项所述的非易失性存内计算芯片,其特征在于,还包括:放大器,所述放大器连接各条位线,用于将各条位线上的总的模拟电流/电压与参考信息进行对比,输出非易失性存内计算模块的运算结果。
8.根据权利要求3或5任一项所述的非易失性存内计算芯片,其特征在于,还包括:计数器,所述计数器连接所述读写电路,所述计数器的输出作为非易失性存内计算模块的运算结果。
9.根据权利要求4或6任一项所述的非易失性存内计算芯片,其特征在于,所述非易失性存储单元为阻变存储单元、相变存储单元、铁电存储单元、自旋存储单元。
10.一种基于非易失性存内计算实现乘积累加运算的控制方法,其特征在于,包括:
将第一二进制运算信号存入一行非易失性存储单元,每个非易失性存储单元中存储所述第一二进制运算信号的一位;
将第二二进制运算信号加载至该行非易失性存储单元,第一二进制运算信号和第二二进制运算信号执行乘积累加运算时的对应位施加于同一非易失性存储单元;
将同或运算指令加载至该行非易失性存储单元,以使该行非易失性存储单元响应于所述同或运算指令执行所述第一二进制运算信号和所述第二二进制运算信号对应位的同或运算,并将运算结果存储在对应的非易失性存储单元中;
读取该行非易失性存储单元中每个非易失性存储单元中的数据并累加,得到所述第一二进制运算信号和第二二进制运算信号各位的乘积累加运算结果;
其中,所述非易失性存储单元位于非易失性存内计算模块内;所述非易失性存内计算模块的各条位线上均连接一个放大器,各放大器的输出端均连接至计数器,所述计数器对读取的数据中表示1的数据进行计数,计数结果作为所述非易失性存内计算模块的运算结果;或
将所述各条位线上的总的模拟电流/电压与参考信息进行对比,输出所述非易失性存内计算模块的运算结果。
11.一种基于非易失性存内计算实现二值神经网络运算的控制方法,其特征在于,包括:
将至少一个二值权重信号存入至少一行非易失性存储单元,每个非易失性存储单元中存储所述二值权重信号的一位;
将特征信号加载至该行非易失性存储单元,二值权重信号和特征信号执行乘积累加运算时的对应位施加于同一非易失性存储单元;
将同或运算指令加载至该行非易失性存储单元,以使该行非易失性存储单元响应于所述同或运算指令执行所述二值权重信号和所述特征信号对应位的同或运算,并将运算结果存储在对应的非易失性存储单元中;
读取该行非易失性存储单元中每个非易失性存储单元中的数据并累加,得到所述二值权重信号和所述特征信号各位的乘积累加运算结果;
其中,所述非易失性存储单元位于非易失性存内计算模块内;所述非易失性存内计算模块的各条位线上均连接一个放大器,各放大器的输出端均连接至计数器,所述计数器对读取的数据中表示1的数据进行计数,计数结果作为所述非易失性存内计算模块的运算结果;或
将所述各条位线上的总的模拟电流/电压与参考信息进行对比,输出所述非易失性存内计算模块的运算结果。
12.根据权利要求11所述的基于非易失性存内计算实现二值神经网络运算的控制方法,其特征在于,还包括:
缓存所述乘积累加运算结果,作为下一层的特征信号。
13.根据权利要求11所述的基于非易失性存内计算实现二值神经网络运算的控制方法,其特征在于,还包括:
对所述乘积累加运算结果进行后处理,得到二值神经网络运算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910713399.0A CN110597555B (zh) | 2019-08-02 | 2019-08-02 | 非易失性存内计算芯片及其运算控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910713399.0A CN110597555B (zh) | 2019-08-02 | 2019-08-02 | 非易失性存内计算芯片及其运算控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110597555A CN110597555A (zh) | 2019-12-20 |
CN110597555B true CN110597555B (zh) | 2022-03-04 |
Family
ID=68853414
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910713399.0A Active CN110597555B (zh) | 2019-08-02 | 2019-08-02 | 非易失性存内计算芯片及其运算控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110597555B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10643705B2 (en) | 2018-07-24 | 2020-05-05 | Sandisk Technologies Llc | Configurable precision neural network with differential binary non-volatile memory cell structure |
US11170290B2 (en) | 2019-03-28 | 2021-11-09 | Sandisk Technologies Llc | Realization of neural networks with ternary inputs and binary weights in NAND memory arrays |
US10643119B2 (en) | 2018-07-24 | 2020-05-05 | Sandisk Technologies Llc | Differential non-volatile memory cell for artificial neural network |
US11328204B2 (en) | 2018-07-24 | 2022-05-10 | Sandisk Technologies Llc | Realization of binary neural networks in NAND memory arrays |
US11568200B2 (en) | 2019-10-15 | 2023-01-31 | Sandisk Technologies Llc | Accelerating sparse matrix multiplication in storage class memory-based convolutional neural network inference |
US11625586B2 (en) | 2019-10-15 | 2023-04-11 | Sandisk Technologies Llc | Realization of neural networks with ternary inputs and ternary weights in NAND memory arrays |
US11657259B2 (en) | 2019-12-20 | 2023-05-23 | Sandisk Technologies Llc | Kernel transformation techniques to reduce power consumption of binary input, binary weight in-memory convolutional neural network inference engine |
US11586896B2 (en) | 2020-03-02 | 2023-02-21 | Infineon Technologies LLC | In-memory computing architecture and methods for performing MAC operations |
CN111462798B (zh) * | 2020-03-31 | 2022-06-14 | 复旦大学 | 一种用于存储器或存内计算的阵列单元结构及其工作方法 |
US11397885B2 (en) | 2020-04-29 | 2022-07-26 | Sandisk Technologies Llc | Vertical mapping and computing for deep neural networks in non-volatile memory |
CN111798896B (zh) * | 2020-06-01 | 2022-04-12 | 北京航空航天大学 | 一种基于磁随机存储器的支持通用计算的存内计算*** |
US11544547B2 (en) | 2020-06-22 | 2023-01-03 | Western Digital Technologies, Inc. | Accelerating binary neural networks within latch structure of non-volatile memory devices |
US11568228B2 (en) | 2020-06-23 | 2023-01-31 | Sandisk Technologies Llc | Recurrent neural network inference engine with gated recurrent unit cell and non-volatile memory arrays |
US11663471B2 (en) | 2020-06-26 | 2023-05-30 | Sandisk Technologies Llc | Compute-in-memory deep neural network inference engine using low-rank approximation technique |
CN111984921B (zh) * | 2020-08-27 | 2024-04-19 | 华中科技大学 | 一种存内数值计算加速器及存内数值计算方法 |
CN112153139B (zh) * | 2020-09-23 | 2022-06-14 | 成都市深思创芯科技有限公司 | 基于传感器网络和存内计算神经网络的控制***及方法 |
CN113222107A (zh) * | 2021-03-09 | 2021-08-06 | 北京大学 | 数据处理方法、装置、设备及存储介质 |
CN113393879B (zh) * | 2021-04-27 | 2022-06-10 | 北京航空航天大学 | 非易失存储器与sram混合的存算一体数据快速加载结构 |
CN113539318B (zh) * | 2021-07-16 | 2024-04-09 | 南京后摩智能科技有限公司 | 基于磁性缓存的存内计算电路芯片和计算装置 |
CN113296734B (zh) * | 2021-07-28 | 2021-11-26 | 中科南京智能技术研究院 | 一种多位存算装置 |
CN114627937A (zh) * | 2022-02-28 | 2022-06-14 | 成都市硅海武林科技有限公司 | 基于非易失存储器件的存内计算电路和方法 |
CN115469799B (zh) * | 2022-05-18 | 2023-12-15 | 上海江波龙数字技术有限公司 | 数据存储方法、存储装置及计算机可读存储装置 |
CN114783482B (zh) * | 2022-06-20 | 2022-09-16 | 中科南京智能技术研究院 | 一种存内计算装置 |
CN115660057B (zh) * | 2022-12-13 | 2023-05-12 | 至讯创新科技(无锡)有限公司 | Nand闪存实现卷积运算的控制方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101630249A (zh) * | 2009-08-26 | 2010-01-20 | 中山大学 | 一种通用的嵌入式优化*** |
CN107341127A (zh) * | 2017-07-05 | 2017-11-10 | 西安电子科技大学 | 基于OpenCL标准的卷积神经网络加速方法 |
CN109784483A (zh) * | 2019-01-24 | 2019-05-21 | 电子科技大学 | 基于fd-soi工艺的二值化卷积神经网络内存内计算加速器 |
CN109902822A (zh) * | 2019-03-07 | 2019-06-18 | 北京航空航天大学合肥创新研究院 | 基于斯格明子赛道存储器的内存计算***及方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10699778B2 (en) * | 2017-04-28 | 2020-06-30 | Arizona Board Of Regents On Behalf Of Arizona State University | Static random access memory (SRAM) cell and related SRAM array for deep neural network and machine learning applications |
CN108038542B (zh) * | 2017-12-27 | 2022-01-07 | 上海闪易半导体有限公司 | 一种基于神经网络的存储模块、模组及数据处理方法 |
CN108876702A (zh) * | 2018-06-21 | 2018-11-23 | 北京邮电大学 | 一种加速分布式深度神经网络的训练方法及装置 |
-
2019
- 2019-08-02 CN CN201910713399.0A patent/CN110597555B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101630249A (zh) * | 2009-08-26 | 2010-01-20 | 中山大学 | 一种通用的嵌入式优化*** |
CN107341127A (zh) * | 2017-07-05 | 2017-11-10 | 西安电子科技大学 | 基于OpenCL标准的卷积神经网络加速方法 |
CN109784483A (zh) * | 2019-01-24 | 2019-05-21 | 电子科技大学 | 基于fd-soi工艺的二值化卷积神经网络内存内计算加速器 |
CN109902822A (zh) * | 2019-03-07 | 2019-06-18 | 北京航空航天大学合肥创新研究院 | 基于斯格明子赛道存储器的内存计算***及方法 |
Non-Patent Citations (3)
Title |
---|
"A multilevel cell stt-MRAM-Based Computing In-Memory Accelerator for Binary Convolutional Neural Network";Yu Pan,Weisheng Zhao,et al.;《IEEE Transactions on Magnetics》;20180714;第54卷(第11期);第1-5页 * |
CORN: In-Buffer Computing for Binary Neural Network;Weisheng Zhao,et al.;《IEEE》;20190516;第384-389页 * |
Weisheng Zhao,et al..CORN: In-Buffer Computing for Binary Neural Network.《IEEE》.2019,第384-389页. * |
Also Published As
Publication number | Publication date |
---|---|
CN110597555A (zh) | 2019-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110597555B (zh) | 非易失性存内计算芯片及其运算控制方法 | |
US10878884B2 (en) | Apparatuses and methods to reverse data stored in memory | |
CN111652363B (zh) | 存算一体电路 | |
Chen et al. | Design and optimization of FeFET-based crossbars for binary convolution neural networks | |
CN110598858A (zh) | 基于非易失性存内计算实现二值神经网络的芯片和方法 | |
US8934313B2 (en) | Negative voltage generator and semiconductor memory device | |
US8676734B2 (en) | Methods and systems for replaceable synaptic weight storage in neuro-processors | |
WO2019067980A1 (en) | ARCHITECTURE OF COMPUTER MEMORY | |
CN111126579B (zh) | 一种适用于二值卷积神经网络计算的存内计算装置 | |
CN114072876B (zh) | 存储器处理单元和计算点积的方法 | |
US11119674B2 (en) | Memory devices and methods for operating the same | |
US11934798B2 (en) | Counter-based multiplication using processing in memory | |
CN110569962B (zh) | 一种基于1t1r存储器阵列的卷积计算加速器及其操作方法 | |
KR102517711B1 (ko) | 메모리 셀 및 이를 포함하는 메모리 장치 | |
US11605420B2 (en) | Memory with artificial intelligence mode | |
CN110729011B (zh) | 用于类神经网路的存储器内运算装置 | |
US20230253020A1 (en) | Activation functions for artificial intelligence operations | |
CN109521995B (zh) | 一种内嵌于忆阻器阵列的逻辑运算装置的计算方法 | |
US10853066B1 (en) | Memory processing units and methods of computing DOT products including zero bit skipping | |
CN118036682A (zh) | 加法神经网络的存内计算实现方法、装置、设备及介质 | |
CN114974337B (zh) | 一种基于自旋磁随机存储器的时间域存内计算电路 | |
US20200302996A1 (en) | Read and Logic Operation Methods for Voltage-Divider Bit-Cell Memory Devices | |
US20190238136A1 (en) | Memory device including nitegrated deterministic pattern recognition circuitry | |
CN116670763A (zh) | 具有电容性耦合写入操作的存储器内计算位单元 | |
US20240028298A1 (en) | Memory device and method with in-memory computing |
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 |