CN117157636A - 存算一体装置、系统及其操作方法 - Google Patents

存算一体装置、系统及其操作方法 Download PDF

Info

Publication number
CN117157636A
CN117157636A CN202280026508.1A CN202280026508A CN117157636A CN 117157636 A CN117157636 A CN 117157636A CN 202280026508 A CN202280026508 A CN 202280026508A CN 117157636 A CN117157636 A CN 117157636A
Authority
CN
China
Prior art keywords
nvm
row
mac
values
value
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.)
Pending
Application number
CN202280026508.1A
Other languages
English (en)
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.)
Infineon Technology Co ltd
Original Assignee
Infineon Technology Co 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 Infineon Technology Co ltd filed Critical Infineon Technology Co ltd
Publication of CN117157636A publication Critical patent/CN117157636A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0408Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
    • G11C16/0433Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors comprising cells containing a single floating gate transistor and one or more separate select transistors
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0466Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells with charge storage in an insulating layer, e.g. metal-nitride-oxide-silicon [MNOS], silicon-oxide-nitride-oxide-silicon [SONOS]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/24Bit-line control circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M1/00Analogue/digital conversion; Digital/analogue conversion
    • H03M1/12Analogue/digital converters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M1/00Analogue/digital conversion; Digital/analogue conversion
    • H03M1/12Analogue/digital converters
    • H03M1/1205Multiplexed conversion systems
    • H03M1/122Shared using a single converter or a part thereof for multiple channels, e.g. a residue amplifier for multiple stages
    • H03M1/1225Shared using a single converter or a part thereof for multiple channels, e.g. a residue amplifier for multiple stages using time-division multiplexing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Neurology (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • Analogue/Digital Conversion (AREA)

Abstract

方法可以包括,对于非易失性存储器(NVM)单元阵列中的每行,通过在位线上应用输入值来生成该行的乘积累加(MAC)结果。每个MAC结果包括模拟电流或电压的总和,模拟电流或电压取决于通过该行的NVM单元所存储的对应的权重值来修改的每个输入值。通过操作至少一个复用器,其中一行可以被连接至模数转换器(ADC)电路,以将该行的模拟电流或电压转换成数字MAC值。每个NVM单元的存储元件可以被配置成存储能够在不少于三个的不同值之间变化的权重值。还公开了对应的装置和系统。

Description

存算一体装置、系统及其操作方法
相关申请
本申请是于2021年3月29日提交的美国非临时申请第17/215,372号的国际申请,该美国非临时申请的全部内容通过引用并入本文。
技术领域
本公开内容总体上涉及存算一体装置(CIM),并且更特别地,涉及可被配置成执行用于诸如神经网络的应用中的乘积累加(MAC)运算的非易失性CIM装置。
背景技术
能够执行乘积累加(MAC)运算的电路可以是许多系统的理想附加。一个这样的系统可以是人工神经网络(ANN)。图19示出了ANN 1901的示例。ANN 1901可以包括输入层、输出层和一个或更多个隐藏层。隐藏层和输出层可以包括一个或更多个人工神经元。在所示的示例中,隐藏层包括三个神经元(H1、H2、H3),并且输出层包括一个神经元(OUT)。
神经元可以对输入值执行MAC运算,以生成输出值,输出值可以传递至下一层,或者作为ANN的输出。神经元还可以包括额外的操作,诸如激活函数和/或过滤/池化。这样的MAC运算包括将权重值应用于输入值(可以与乘法运算对应)和所得到的乘积的求和(可以与累加运算对应)。
在训练操作中,ANN 1901可以具有初始权重值集,该初始权重值集可以随着训练输入数据集的应用以及所得到的输出值的生成和评估而被修改。一旦经过训练,可以基本上设置权重值,并且ANN 1901可以执行推理操作,从新的输入数据集生成预测的输出值。
在图19中,隐藏层神经元的权重值示为Wi,j,其中i=1至3并且j=1至3。因此,神经元H1将值X1乘以权重W11,X2乘以权重W21,X3乘以权重W31,以及X4乘以权重W41。这些乘积将被求和(并可能经受其他运算),并且结果从神经元H1输出,并作为输入提供给神经元OUT。神经元OUT将H1的输出乘以权重W1。从此描述中可以理解图19的其他神经元的操作。
在许多应用中,神经元操作可以用矩阵乘法来表示。图20A示出了这样的矩阵乘法的示例。向量V(具有分量Vi(i=1至3))可以与输入值对应,运算向量G(具有分量(Gi,j)(j=1至3))可以与权重值对应,并且向量Ii可以与所得到的输出值对应。
实现图20A所示的向量运算的一种常规方式可以是使用纵横存储器阵列(crossbar memory array)。图20B示出了常规的纵横存储器阵列2003。纵横存储器阵列2003可以包括布置成行和列的、由电阻表示的存储器元件(Gi,j)。相同行的存储器元件可以连接至相同字线,而相同列的存储器元件可以连接至相同位线。例如,存储元件G1,1、G1,2与G1,3可以连接至相同字线(其接收电压V1)。纵横存储器阵列2003的列可以连接至相同位线。例如,存储器元件G1,1、G2,1与G3,1可以连接至相同位线(其可以提供电流I1)。
在操作中,可以用输入值电压(V1、V2、V3)驱动字线,从而在位线上生成电流,电流可以表示MAC结果。例如,如果存储元件权重(Gi,j)是电导率,则电流I1可以是Vi*Gi,1的和。给定求和运算的权重项可以被认为是一个“核”。因此,图20B示出了三个逐列的核:Gi.1、Gi,2和Gi,3
图21示出了用于执行如图20B所示的MAC运算的常规“存算一体”(CIM)阵列2103。CIM阵列2103可以包括布置成行和列的存储单元(两个存储单元示出为2105-0/2105-1)。所有存储单元可以共同连接至源极线(SL),源极线可以由源极线驱动器2107驱动。列对(一个列对示出为2109)可以被编程以存储核(三个核示出为2111-0至2111-2)。对中的一列存储单元可以存储核的正分量(+ve),而对中的另一列存储单元可以存储核的负分量(-ve)。
图21示出了被配置成对类似于图19的神经网络执行MAC运算的CIM阵列2103。列对可以提供表示隐藏层神经元(H1、H2、H3)结果的电流值。
在计算操作中,SL驱动器2107可以将公共SL驱动至预设电压。行驱动器(一个行驱动器示出为2113)可以基于输入值X1至X3(X4未显示)激活行。当一行被激活时,它的存储单元可以在对应的位线上生成电流,电流根据所编程的权重值而变化。由于多个存储单元连接至相同位线,位线可以从该列的所激活的存储单元生成电流的总和。
在列上生成的总和电流可以提供给复用器(MUX)(一个复用器示出为2115)。MUX2115可以依次将位线对连接至积分器(一个积分器示出为2117),积分器可以对电流进行积分。然后可以通过模数转换器(ADC)电路2119将积分值转换成数字值。
图22是示出图21的CIM阵列2203的一部分的示意图。每个存储单元(一个存储单元示出为2205-0)可以包括选择晶体管M221和硅-氧化物-氮化物-氧化物-硅(SONOS)型晶体管M223。SONOS型晶体管可以具有电荷俘获栅极绝缘体层,电荷俘获栅极绝缘体层可以被编程至SONOS型晶体管的多电平或模拟的阈值电压(Vt)或漏极电流(ID)。可编程的Vt或ID可以建立存储单元的权重值。一列存储单元2221-0可以存储正权重分量(+ve),从而为核生成正权重MAC结果,而另一列存储单元2221-1可以存储负权重分量(-ve),从而为核生成负权重MAC结果。列对的最终MAC输出可以通过将正MAC结果和负MAC结果转换成数字值,然后减去或反向积分这样的值,然后将结果转换成数字值来生成。
注意,为了适应负输入值,常规的CIM阵列2203要求每个输入值有四列。一个列对专用于正输入值,而具有相反编程权重的另一个列对专用于负输入值。
类似于图21和图22的常规CIM阵列可以以高度并行的方式生成MAC结果。在CIM阵列的一种实施方式中,MAC结果吞吐量会受到限制。因为积分器和ADC电路(例如,2117、2119)消耗大量的衬底面积,所以MUX 2115必须在ADC电路的大量位线之间切换,以顺序地生成MAC结果。此外,当正权重结果值和负权重结果值二者都被转换成数字结果并且负权重结果被从另一个减去时,正权重结果和负权重结果的处理会消耗功率。
另一个特性可以是相对低的写入/刷新周期时间。非易失性存储单元可以要求随时间重新编程的值。此外,核值可能需要定期更新。这样的情况可能需要对多行进行重新编程,对一个单元的编程操作有干扰相邻单元的风险。
希望得到利用这样的SONOS或类似的基于存储器阵列的CIM阵列和系统,其可以解决上述潜在问题。
附图说明
图1是根据实施方式的存算一体(CIM)装置的示意图。
图2A至图2E是示出可以包括在根据实施方式的CIM阵列中的非易失性存储器(NVM)单元的图。
图3是根据另一实施方式的CIM装置的示意图。
图4是示出根据实施方式的带符号输入值的位线电压电平的表。
图5A和图5B是示出根据实施方式的正输入值和负输入值对NVM单元对的应用的示意图。
图6是可以包括在实施方式中的NVM单元的侧截面图。
图7是可以包括在实施方式中的一行NVM单元的俯视图。
图8是可以包括在实施方式中的编程电路的示意图。
图9是根据实施方式的CIM装置的俯视图。
图10是根据实施方式的CIM阵列的俯视图。
图11A和图11B是示出根据实施方式的CIM装置的程序和MAC生成操作的图。
图12A至图12D是示出根据各种实施方式的CIM阵列的神经网络(NN)操作的图。
图13是根据实施方式的CIM架构的框图。
图14是根据实施方式的处理元件的框图。
图15是示出根据实施方式的被配置成提供NN功能的CIM架构的图。
图16是根据实施方式的方法的流程图。
图17是根据实施方式的另一方法的流程图。
图18是根据实施方式的又一方法的流程图。
图19是NN的示意图。
图20A是示出引起乘积累加(MAC)运算的常规矩阵运算的图。图20B是用于生成MAC结果的常规交叉点阵列的图。
图21是常规CIM装置的示意图。
图22是常规CIM阵列的示意图。
具体实施方式
根据实施方式,可以通过在存算一体(CIM)阵列的存储单元行中存储乘数值集(例如,权重)来生成乘积累加(MAC)结果。被乘数值(例如,输入值)可以以逐列的方式应用于CIM阵列。响应于被乘数值,存储单元可以生成根据所存储的权重值而变化的单元电流或电压。单元电流或电压可以累加为每行共有的导电线(例如,源极线)上的模拟MAC值。每行的模拟MAC值可以复用至模数转换器(ADC)以生成数字MAC值。
根据实施方式,来自CIM阵列的MAC结果可以包括人工神经元的操作。CIM阵列可以通过可编程交换结构彼此相互连接,以形成人工神经网络。
根据实施方式,被乘数(输入)值可以带符号。对于一个符号的输入值,位线可以被驱动至一个电压(例如,正)。对于另一个符号的输入值,位线可以被驱动至另一个电压(例如,零或负)。在一些实施方式中,权重值成对存储,正权重(+ve)存储在一个存储单元中,负权重(-ve)存储在相邻的存储单元中。对于正输入值,对应的位线对可以被驱动至不同的值(例如,BL0=VHI,BL1=VLOW)。对于负输入值,对应的位线对可以被驱动至相反的值(例如,BL0=VLOW,BL1=VHI)
根据实施方式,累加MAC结果的导电线(例如,源极线)可以具有比位线更低的电阻。
根据实施方式,存储单元在行方向上可以比在列方向上更窄。也就是说,存储单元的行高可以大于列宽。在一些实施方式中,存储单元高度(即,列方向上的单元尺寸)可以不小于存储单元宽度(即,行方向上的单元尺寸)的三倍。
根据实施方式,在MAC运算中,可以根据输入值驱动位线。字线驱动器电路可以激活CIM阵列的一行或更多行的字线。所激活的字线可以将行中每个存储单元的可编程元件连接至对应的位线。位线与源极线之间的电位差可以生成流过存储单元的电流,电流根据可编程元件而变化。由于源极线可以每行连接一个,因此源极线上的所得到的电流可以是该行的存储单元生成的所有电流的累加。
根据实施方式,CIM阵列可以是非易失性存储器阵列,具有以非易失性方式存储的权重值。在一些实施方式中,存储单元可以包括具有可编程阈值电压的绝缘栅型场效应晶体管(IGFET)结构。在一些实施方式中,存储单元可以是两个晶体管存储单元,具有选择晶体管和可编程晶体管。
在下面的各种实施方式中,相似的项由相同的附图标记表示,但是前导数字与附图编号对应。
图1是根据实施方式的CIM装置100的框图。CIM装置100可以包括非易失性存储器(NVM)单元阵列102、字线驱动器104-0至104-n、位线驱动器106、源极线复用器(MUX)部分108与ADC部分112。NVM单元阵列102可以包括布置成行(一行示出为114)和列(一列示出为116)的NVM单元110。相同列的NVM单元110可以连接至相同位线(一个位线示出为118)。相同行的NVM单元110可以连接至相同字线WL0至WLn(或字线集)和相同源极线SL0至SLn。与常规方法不同,源极线(SL0至SLn)不共同连接,而是彼此分离。在一种实施方式中,NVM单元可以是基于硅-氧化物-氮化物-氧化物-硅(SONOS)的电荷俘获存储单元,能够被编程并保存电荷以表示多个(多于两个)状态或电平。在其他实施方式中,NVM单元可以是其他多级存储单元,诸如浮栅、R-RAM等。
当被选择时,NVM单元110可以被编程至对应的源极线(SL0至SLn)的预设多电平电流或电压(例如,漏极电流或阈值电压)。这样的电流或电压用Gi,j表示,其中i=1至k,并且j=1至n。在一些实施方式中,NVM单元110可以被编程为存储用于MAC运算的乘数项集(例如,核)。然而,与常规方法相比,这样的集合(一个集合示出为120)可以按行而不是按列存储。根据实施方式,NVM单元110可以被编程为在至少三种不同的状态或模拟电平之间,以提供或表示不同的模拟权重值。也就是说,NVM单元110不是用二进制值编程的。
字线驱动器(104-0至104-n)可以为每行114驱动一个或更多个字线,以选择该行的NVM单元110。在一些实施方式中,诸如在双晶体管(2T)配置或1.5T(分离栅极)配置中,每行114可以有不止一个字线(例如,选择栅极字线和控制栅极字线),并且可以根据操作模式分别驱动这些不同的字线。然而,在其他实施方式中,每行114可以有一个字线。位线驱动器106可以根据输入(例如,被乘数)值(X1、X2…)124来驱动位线118。不同的位线可以表示不同的输入项。在一些实施方式中,位线118可以被驱动在两个不同的电压(即,输入项可以是二进制值)之间。在其他实施方式中,位线118可以被驱动在多于两个的不同状态之间,或者被驱动至模拟值。因此,位线驱动器106可以包括以下各项中的任何一项:数字驱动器电路106A、多位驱动器电路106B或模拟驱动器电路106C。数字驱动器电路106A可以响应于二进制输入值X1[0]来驱动两个电压水平之间的位线。多位驱动器电路106B可以驱动三个或更多电平之间的位线。在一些实施方式中,位线驱动器106B可以包括数模转换器(DAC),其可以响应于多位输入值X1[0:n](其中n≥1)生成不同的输出电压(V0至Vi)。模拟驱动器电路106C可以响应于模拟输入电压Vin将位线驱动至模拟电压Vout,模拟输入电压Vin可以与Vout相同,也可以不相同。
MUX部分108可以包括一个或更多个MUX,用于选择性地将源极线(SL0至SLn)连接至ADC部分112。ADC部分112可以将所选择的源极线(SL0至SLn)上的电压或电流转换成数字值。
在描述了CIM装置100的总体部分之后,现在将描述MAC运算。核(例如120)可以存储在NVM单元阵列102的行中。输入值124可以由BL驱动器106在位线上驱动。行驱动器(104-0至104-n)可以驱动字线(WL0至WLn)。作为响应,可以在每个位线118与该行的源极线(SL0至SLn)之间通过所选择的行的NVM单元110启用电流路径。因此,这样的单元电流在源极线上相加,作为模拟MAC结果(122-0至122-n)。
MUX部分108可以将源极线(SL0至SLn)连接至ADC部分112。ADC部分112可以将所选择的模拟MAC结果(122-0至122-n)转换成数字MAC结果126。响应于位线118上的相同输入值集,可以重复这样的操作以为每行生成MAC结果(122-0至122-n)。
CIM装置100可以具有不同于常规方法的各种特征。根据实施方式,NVM单元阵列102可以以行而不是列的形式存储核。输入值可以通过位线而不是字线应用。此外,NVM单元阵列102可以具有专用于每行的源极线(SL0至SLn),而不是像在常规情况下那样具有统一的源极线。MAC结果可以在源极线上求和,而不是在位线上求和。类似地,与列(例如位线)相反,行(例如源极线)可以复用至ADC电路。
在一些实施方式中,位线驱动器106可以为神经元提供输入,核120可以是这样的神经元输入的权重值。每个模拟MAC结果(122-0至122-n)可以与响应于相同输入值集的不同神经元(例如,相同隐藏层的神经元)对应。
实施方式可以包括任何合适类型的存储单元,其可以在多于两个的状态之间编程,其中每个不同的状态可以提供不同的电流或电压响应。图2A至图2E是示出可以包括在实施方式中的NVM单元的示例的图。
图2A是根据实施方式的可以包括在CIM阵列中的存储单元210A的框图。存储单元210A可以连接至位线218、字线228和源极线230。存储单元210A可以用权重值进行编程,权重值可以指示流过存储单元210A的电流大小。响应于字线228上的电压,可以启用位线218与源极线230之间的导电路径。位线218可以处于电压VBL,该电压VBL可以根据输入值Xn而变化。源极线230可以处于源极线电位VSL。流过存储单元210A的电流(I)可以根据所存储的权重值而变化,并且在一些实施方式中,I=Xn×权重。电流I的方向可以根据VBL和VSL的值而变化。
图2B是可以包括在根据实施方式的CIM阵列中的一个晶体管(1T)单元210B的示意图。1T单元210B可以具有IGFET结构,IGFET结构具有可编程在不少于三个值之间的阈值电压(Vt)。阈值电压(Vt)可以用任何合适的结构来建立,包括浮栅或其他电荷俘获结构,诸如SONOS型器件。SONOS型器件可以包括硅衬底、ONO栅极电介质和硅(例如多晶硅栅极),然而SONOS型器件也可以受到栅极类型、衬底类型和栅极电介质结构的变化影响。1T单元210B可以如针对图2A的单元所描述的那样被选择。所得到的单元电流Icell可以根据所编程的Vt而变化。
图2C示出了可以包括在根据实施方式的CIM阵列中的双器件存储单元210C。存储单元210C可以包括访问装置232和可编程元件234。响应于字线228上的电压,选择装置232可以启用位线218与可编程元件234之间的导电路径。可编程元件234可以在三个或更多个权重值之间进行编程。在一些实施方式中,可编程元件234可以连接至一个或更多个其他节点(如236所示),以启用可编程元件和/或将权重值编程至可编程元件中。所得到的电流可以根据可编程元件中所编程的权重值而变化。可编程元件可以是双端器件或三端器件。
图2D示出了根据实施方式的可以包括在CIM阵列中的双晶体管(2T)存储单元210D。存储单元210D可以包括选择晶体管M20和可编程晶体管M22。选择晶体管M20可以通过选择栅极(SG)字线228-0上的电压启用,以在位线218与可编程晶体管M22之间提供电流路径。可编程晶体管M22可以具有如本文中描述的可编程Vt及等同物。在一些实施方式中,可编程晶体管可以是SONOS型器件。在一些实施方式中,在电流生成(例如,MAC)操作中,控制栅极228-1可以被偏置以生成期望的加权电流(Icell)。虽然图2D示出了n型导电性晶体管,但是替选实施方式可以包括p型导电性晶体管,以及增强型或耗尽型晶体管。
图2E示出了根据实施方式的可以包括在CIM阵列中的另一1T存储单元210E。存储单元210E可以包括选择晶体管M20和可编程元件234'。选择晶体管M20可以通过选择栅极(SG)字线228上的电压来启用,以在位线218与可编程元件234'之间提供电流路径。可编程元件234'可以在三种或更多种电阻状态之间进行编程。可编程元件234'可以采取任何合适的形式,包括但不限于:铁电随机存取存储器(FRAM)元件、磁阻RAM(MRAM)元件、相变RAM(PCM)元件或电阻RAM(RRAM)元件。
图3是根据另一实施方式的CIM装置300的框图。在一些实施方式中,CIM装置300可以是图1所示的一种实现方式。CIM装置300可以包括类似于图1的项目,并且这样的类似项目可以以相同或相似的方式操作。
在图3中,权重值可以具有正分量和负分量。正负权重值存储在列对(一个列对示出为336)的相邻存储单元(两个存储单元示出为310-0、310-1)中。例如,存储单元310-0可以存储权重W11的正分量(+ve),而存储单元310-1可以存储权重W11的负分量(-ve)(反之亦然)。
根据实施方式,CIM装置300可以在行中存储权重值集。此外,权重值可以按行编程。这与可以在列中存储权重值集的常规方法相反。通过将权重值存储在行中的实施方式,与常规装置相比可以更快地更新权重值集,并且具有更少的干扰可能性。实施方式可以对单行进行编程,而不是对多行进行编程以更新一个权重值集。
位线驱动器电路306可以在不同电压之间驱动列对336的位线。这样的特征可以使输入值具有极性。在一些实施方式中,如果输入值为正(例如,X1),一个位线318-0可以被驱动至第一电压,而另一个位线318-1被驱动至第二电压。然而,如果输入值为负(例如,-X1),一个位线318-0可以被驱动至第二电压,而另一个位线318-1被驱动至第一电压。这与可能必须在第二列中存储权重值的负版本的常规方法相反。在一些实施方式中,位线驱动器电路306可以通过将两列都驱动至取消选择电压来取消选择列对。取消选择电压可以是在由字线选择的存储单元中基本上不生成电流的电压。
在操作中,行集可以通过对应的源极线SL0至SLn连接至MUX 308-0至308-i。每个复用器(308-0至308-i)可以响应于选择信号SL_SEL0至SL_SELi而将源极线(SL0至SLn)连接至ADC电路。所选择的源极线(SL0至SLn)上的模拟电流可以由对应的积分器338-0至338-i积分。积分电荷可以通过对应的ADC电路312-0至312-i被转换成数字值(DIG.MAC VALUE)。
在一些实施方式中,存储单元在列方向上可以比在行方向上更长。在常规装置中,MUX可以具有连接至列并在行方向上扩展的输入。相反,根据实施方式,MUX可以具有连接至行并在列方向上扩展的输入。因此,与常规装置相比,MUX每个输入的面积更大。
图3示出了布置成行的核(权重集)320-0至320-2。核320-0包括存储权重W11、W21、W31和W41的存储单元。通过输入值X1至X4的应用,可以在与MAC结果(X1×W11+X2×W21+X3×W31+X4×W41)对应的源极线SL0上生成电流,这可以是神经元(H1)的求和运算。核320-1、320-2分别在源极线SL1和SL2上提供相似的结果。这样的布置可以使核能够用单行编程操作来更新。这与常规方法相反,常规方法在列方向存储核,需要对多行进行编程以更新核,引入了干扰其他存储单元的状态的可能性,以及增加了存储单元阵列的磨损率。
图4是示出根据实施方式的用于提供带符号输入值的位线电压的表。图4示出了位线对(VBL+、VBL-)的电压。对于具有正极性(Xj(pos))的输入值,第一位线电压(VBL+)可以比第二位线电压(VBL-=L)相对更高(H)。相反,对于具有负值(Xj(neg))的输入值,VBL+=L并且VBL-=H。在一些实施方式中,可以通过将位线对驱动至取消选择电压来取消选择列对,该取消选择电压在一些实施方式中可以是源极线电压(VSL)。
图5A和图5B是示出正输入和负输入的存储单元对操作的图。图5A和图5B示出了存储单元510-0/510-1,每个存储单元包括选择晶体管M51/M52和可编程晶体管M50/M53。存储单元510-0的可编程晶体管M50可以被编程以存储正权重值(ve+),而存储单元510-1的可编程晶体管M53可以被编程以存储负权重值(ve-)。每个选择晶体管M51/M52可以具有连接至对应的位线518-0/518-1的漏极、连接至选择字线540-1的栅极与连接至对应的可编程晶体管M50/M53的漏极的源极。每个可编程晶体管M50/M53可以具有连接至程序字线540-0的栅极和连接至源极线542的源极。
参照图5A,当输入值Xj为正时,位线518-0可以被驱动至VBL+,而位线518-1可以被驱动至VBL-。选择字线540-1可以被驱动至导通选择晶体管M51/M52的电位,使得电流流过选择晶体管M51/M52,该电流根据对应的可编程晶体管M50/M53的编程状态而变化。在一些实施方式中,这还可以包括偏置程序字线540-0。位线电压VBL+可以大于源极线电压VSL,因此正权重电流分量Ive+可以从位线518-0流过存储单元510-0流向源极线542。位线电压VBL-可以小于源极线电压VSL,因此负权重电流分量Ive-可以从源极线542流过存储单元510-1流向位线518-1。
参照图5B,当输入值Xj为负时,位线518-0可以被驱动至VBL-,而位线518-1可以被驱动至VBL+。因此,权重电流分量Ive+、Ive-可以与图5A相反的方向流动。
在一些实施方式中,可以一起选择存储单元对510-0/510-1,其中电流分量Ive+、Ive-在对应的源极线542处相互对抗。然而,在其他的实施方式中,MAC生成操作可以是两步过程,该MAC生成操作选择一个电流分量集而取消选择另一个电流分量集。例如,在第一步骤中,位线518-0可以被驱动至VBL+(或VBL-),而位线518-1被驱动至VSL。因此,源极线542可以生成正权重电流。在第二步骤中,另一位线518-1可以被驱动至VBL+(或VBL-),而位线518-0被驱动至VSL。因此,源极线542可以生成负权重电流。
图6是可以包括在实施方式中的存储单元610的横截面图。存储单元610可以包括选择晶体管M62和由衬底656形成的可编程晶体管M63。选择晶体管M62可以具有连接至接收位线电压VBL的漏极646、连接至选择字线640-1或形成选择字线640-1的一部分的选择栅极(SG)以及用作源极的扩散644。选择栅极SG可以在栅极电介质648上形成。选择栅极(SG)可以被驱动至电压VWL,电压VWL可以根据操作变化。
可编程晶体管M63可以具有扩散漏极644、连接至编程字线640-0或形成编程字线640-0的一部分的控制栅极(CG)以及连接至源极线642或形成源极线642的一部分的源极。控制栅极(CG)可以形成在电荷存储栅极电介质650上,在一些实施方式中,电荷存储栅极电介质650可以包括形成在氧化硅层(即ONO)之间的氮化硅层。可编程晶体管M63可以具有SONOS型结构。控制栅极(CG)可以被驱动至电压VWLNV,电压VWLNV可以根据操作变化。在一些实施方式中,VWLNV的脉冲的幅度和/或数量可用于将权重值编程至可编程晶体管中。源极线642可以被驱动至电压VSL,电压VSL也可以根据操作变化。
在所示的实施方式中,选择晶体管M62和可编程晶体管M63可以是n沟道器件。然而,可替选的实施方式可以包括不同的导电型晶体管。选择晶体管和可编程晶体管(M62/M63)可以具有绝缘栅型场效应晶体管类型的结构。然而,可替选的实施方式可以具有不同的晶体管结构类型。
选择晶体管M62和可编程晶体管M63可以形成在第一区域652中,在一些实施方式中,第一区域652可以是掺杂到与M62/M63的源极/漏极相反导电性类型的阱(例如,p阱)。根据实施方式,第一区域652可以被驱动至电压VSPW,电压VSPW可以根据操作变化。在所示的实施方式中,第一区域652本身可以包含在第二区域654中。在一些实施方式中,第二区域654可以是掺杂到与第一区域652相反导电性类型的深势阱。这样的布置能够使第一区域652偏置到装置的电源电压之外的电压。例如,第一区域652可以被驱动至负电压,以擦除和/或编程可编程晶体管M63来存储权重值。
图7是可以包括在实施方式中的NVM单元阵列702的一部分的俯视图。图7示出了形成在衬底756中的存储单元区域752。存储单元区域752可以各自与CIM装置中的NVM阵列的存储单元对应。存储单元区域752可以沿行方向758设置(例如,平行于字线并且基本上垂直于位线)。如图所示,可以在第二区域754内形成一行存储单元区域752。这样的布置可以使一行存储单元的衬底被驱动以编程/擦除偏置电压,而不必驱动其他行。这可以有利地实现存储单元行的擦除和编程,而很少或没有干扰被编程的行之外的存储单元的风险。
图8是示出可以包括在实施方式中的各种编程电路的框图。编程电路可以对存储单元施加条件,从而产生相当于乘法运算的电流响应。虽然存储单元可以采取任何合适的形式,但是图8示出了可以包括用于可编程晶体管的电路。
部分860-0示出了字线驱动器电路,其可以应用字线(例如,控制栅极)条件来建立可编程晶体管的阈值电压。数模转换器(DAC)864可以响应于数字权重值生成控制栅极电压VCG。字线驱动器804-0可以用控制栅极电压VCG驱动一个或更多个字线(840-0/840-1)。附加地或可替选地,脉冲发生器868可以基于数字权重值862改变电压脉冲的数量和/或持续时间。字线驱动器804-0可以基于这样的脉冲驱动一个或更多个字线(840-0/840-1)。
部分860-1示出了可以包括在实施方式中的位线电压发生器。DAC 870可以响应于数字权重值862生成漏极电压Vdrain。漏极电压(Vdrain)可以在位线上驱动。在一些实施方式中,漏极电压(Vdrain)可以是脉冲的,具有多个脉冲和/或响应于数字权重值862而变化的脉冲持续时间。
部分860-2示出了可以包括在实施方式中的衬底电压发生器。DAC 872可以响应于数字权重值862生成衬底电压(VSPW、VDNW)。DAC 872可以生成多于一个衬底电压。此外,这样的衬底电压的极性可以变化。
实施方式可以包括用于CIM装置的NVM单元阵列,CIM装置具有沿行方向延伸的源极线(即,平行于字线)。此外,每个源极线可以仅连接至一行存储单元。位线可以基本上垂直于源极线延伸。
图9是根据实施方式的CIM装置900的俯视图。CIM可以包括NVM单元阵列902,其具有连接至ADC-MUX电路908/912的行和连接至位线驱动器906的列。NVM单元阵列902可以包括具有大于单元宽度910W的单元高度910H的存储单元(一个存储单元示出为910)。每行存储单元可以连接至源极线(一个源极线示出为942)。每列存储单元可以连接至位线(一个位线示出为918)。
位线918可以具有位线电阻RBL,源极线942可以具有源极线电阻RSL。根据实施方式,RBL>RSL。与在位线上提供MAC结果的常规情况相比,这样的布置可以允许ADC转换的积分器级具有更大的动态感测范围。在一些实施方式中,位线518可以具有长度位LBL,而源极线942可以具有LSL,LBL>LSL
图10是可以包括在实施方式中的NVM阵列1002的一部分的俯视图。NVM阵列1002可以包括布置成行和列的存储单元(三个存储单元示出为1010)。存储单元1010可以是2T型存储单元,包括选择晶体管和SONOS型晶体管。相同行的存储单元可以连接至相同控制栅极WL1040-1和相同SONOS栅极WL 1040-0。相同列的存储单元1010可以连接至位线(两个位线的位置示出为1018)。在一些实施方式中,存储单元可以具有大约4:1的纵横比,在列方向上是行方向上四倍长。
源极线1042可以平行于字线(1040-0、1040-1)延伸。源极线1042和位线1018可以由金属镀层(未示出)形成。可替选地,源极线1042的全部或一部分可以由衬底内的扩散区域形成。位线1018可以通过位线触点(两个触点示出为1074)连接至存储单元1010。图10示出了包括由隔离结构1076限定的两行的一部分的区域。
如本文中描述的,位线1018可以接收输入项(Xj,Xk),这可以导致在源极线1042上生成电流。这样的电流可以与存储单元中由SONOS型晶体管存储的权重值对应。电流可以是可以转换成数字值的模拟MAC结果1026'。
图11A和图11B是示出根据实施方式的CIM装置的操作的框图。图11A和图11B示出了具有CIM阵列1102、行驱动器1104、位线驱动器1106和数据缓冲器1179的CIM装置1100。CIM阵列1102可以包括根据本文中公开的任何实施方式或对应物的一个或更多个NVM阵列。行驱动器1140可以将CIM阵列1102的字线驱动至各种电位,以访问(例如,生成MAC结果)和编程(包括擦除)其中的存储单元。类似地,位线驱动器1106可以将CIM阵列1102的位线驱动至各种电位,以访问和编程其中的存储单元。数据缓冲器1179可以存储将由位线驱动器1106在位线上驱动的数据值。
图11A示出了可以将权重集(核)加载至CIM阵列1102的行中的编程操作。根据存储在数据缓冲器1179中的权重值1120-0至1120-y,位线驱动器1178-0可以根据编程操作1178-0驱动位线。在一些实施方式中,可以基于要存储在存储单元中的权重值来驱动位线。行驱动器1104也可以根据编程操作1178-1驱动字线。像位线一样,在一些实施方式中,字线可以由行驱动器1104根据要存储的权重值来驱动。源极线(未示出)也可以在编程操作中驱动。仅作为一个示例,待编程行的源极线可以被驱动至与未编程行的源极线不同的电位。应当理解,这样的编程步骤可以将存储单元编程为多种状态中的任何一种,以提供可以在一系列值的范围内变化的电流。
在一些实施方式中,核可以逐行编程。权重值集(KERNEL0)1120-0可以被编程至一行中,随后权重值集(KERNEL1)1120-1被编程至下一行中,等等。核可以有各种尺寸。因此,一行可以适合多于一个的核和/或核可以仅填充一行的一部分。
图11B示出了根据实施方式的MAC生成操作。在图11B中,假设核1120-0至1120-y已经被编程至CIM阵列1002中。根据存储在数据缓冲器1179中的输入值1124-0至1124-p,位线可以由位线驱动器1178-2驱动。然而,位线可以根据MAC运算1178-2被驱动至电压,这可以不同于程序操作的电压。如本文中描述的,在一些实施方式中,输入值(1124-0至1124-p)可以是二进制值。行驱动器1104可以驱动字线以选择一行或更多行来接收位线上的输入值。这样的行驱动器1104操作可以是MAC运算,这也可以不同于程序操作。
在位线上驱动的输入值(1124-0至1124-p)会导致电流在位线与一行的存储单元之间流动,从而在源极线上生成模拟MAC结果(1126-0'至1126-y')。各种输入值(1124-0至1124-p)可以应用于由行驱动器1104选择的权重集。
根据实施方式,CIM阵列可以被配置成为人工神经网络(NN)的神经元生成MAC结果。特别地,可以应用到NN层的输入值,并且可以在CIM阵列的不同行上生成NN层的每个神经元的MAC结果。
图12A和图12B示出了如何将不同的输入值集应用于CIM阵列以生成不同NN 1282-0/1282-1中的层的MAC结果。图12A和图12B示出了具有CIM阵列1202的CIM装置1200,CIM阵列1202具有连接至MUX 1208-0至1208-3的行。CIM阵列1202在连接至不同复用器的行上存储不同神经元的权重值。在所示的实施方式中,NN 1282-0包括由神经元H11、H12和H13形成的隐藏层。这些神经元1220-0、1220-1和1220-2的权重分别存储在连接至复用器1208-0、1208-1和1208-2的行中。
图12A示出了通过位线应用于CIM阵列1202的NN 1282-0的输入值X1、X2、X3。MUX1208-0至1208-3可以被配置成选择与隐藏层神经元对应的行。因此,与神经元H11对应的MAC结果(H11sum)可以使用权重集H11生成,并通过MUX 1208-0输出。以类似的方式,权重集H12可以生成与神经元H12对应的MAC结果(H12),该MAC结果由MUX 1208-1输出。权重集H13可以生成与神经元H12对应的MAC结果(H12),该MAC结果由MUX 1208-2输出。
图12B示出了为不同NN 1282-1的层生成MAC结果的相同CIM阵列1202。MUX 1208-0至1208-3可以切换与隐藏层(H21、H22、H23、H24)对应的行,以输出这样的神经元的MAC结果(H21sum、H22sum、H23sum、H24sum)。
各种MAC结果可以是模拟结果,并且可以通过ADC电路(未示出)转换成数字值。
图12C和图12D示出了CIM阵列如何通过迭代操作来执行相同NN 1282-2中的层的MAC结果。图12C/图12D示出了具有类似于图12A/图12B的结构的CIM装置1200,但是还示出了分别连接至MUX 1208-0至1208-2的输出的ADC电路1212-0至1212-2,以及可选的激活函数电路1284和数据缓冲器1279。
NN 1282-2可以包括由神经元H31、H32和H33形成的隐藏层和输出层神经元OUT。隐层神经元1220-0、1220-1和1220-2的权重分别存储在连接至复用器1208-0、1208-1和1208-2的行中。输出神经元OUT的权重可以存储在连接至复用器1208-0的另一行中。
图12C示出了通过位线应用于CIM阵列1202以生成对应的MAC结果的输入值X1、X2、X3。这样的MAC结果可以通过ADC电路(1212-0至1212-2)转换成数字值,并且可选地应用于与每个神经元对应的激活函数1284。激活可以包括任何合适的激活函数,包括但不限于sigmoid、tanh、整流线性单元(ReLU)、指数线性单元(ELU)或maxout函数。激活函数1284可以以任何合适的方式实现,包括但不限于执行指令的处理器、自定义逻辑或可编程逻辑。可替选地,激活函数可以在ADC转换之前用模拟电路实现。
最终神经元输出可以作为值H31out、H32out和H33out存储在输入缓冲器1279中。
图12D示出了来自隐藏层(H31out、H32out和H33out)的输出值被应用作为输出神经元OUT的权重1220-4的输入值。这可以生成由MUX 1208-0输出至ADC电路1212-0的对应的模拟MAC结果。可选地,所得到的数字值可以应用于激活函数1284'。所得到的数字值可以是NN 1282-2的NN输出值1226。
图13示出了根据实施方式的CIM架构1386。CIM架构1386可以实现为片上系统(SoC)集成电路器件,由封装中形成的一个或更多集成电路衬底组成。架构1386可以包括通过总线系统1395通信的可配置部分1393和控制部分1390。可配置部分1393可以包括形成在可配置结构内的处理元件(PE)(一个处理元件示出为1392),以使PE能够根据需要彼此互联。PE 1392可以包括一个或更多CIM装置,如本文中公开的,或者等同物。PE 1392还可以包括用于启用与生成MAC结果相关功能的附加电路,包括但不限于在输入值被应用于生成MAC结果之前对其进行处理,以及处理数字MAC结果。在一些实施方式中,PE块(例如,1392)都可以用单个单片管芯形成。在所示的实施方式中,可配置结构可以包括可配置总线(一个可配置总线示出为1388-0)和开关块(1388-1)。可配置总线1388-0可以实现对PE的输入和/或输出的可编程连接。开关块1388-1可以启用可配置总线1388-0之间的可编程连接。
控制部分1390可以包括池化块1390-0、累加单元1390-1、激活块1390-2、全局CPU1390-3和存储器(SRAM)1390-4。池化块1390-0可以对数据值执行池化操作,包括但不限于根据池化特征聚合数据值集。池化特征可以包括但不限于导出数据集的最大值、最小值、平均值或平均数值。累加单元1390-1可以将来自多个PE的输出与偏置值组合,并生成可由一个或更多PE进一步使用或作为输入提供给池化块1390-0或激活块1390-2的输出。激活块1390-2可以对PE生成的输出执行激活函数(例如,ReLu、tanh、sigmoid等),并且其输出可以被提供给池化块1390-0或PE。全局CPU 1390-3可以基于指令控制架构1386,并管理架构1386的内部操作,在一些实施方式中,架构1386可以是单个集成电路。架构可以将存储器1390-4用于任何合适的功能,包括但不限于存储用于配置总线1388-0、开关块1388-1的配置数据以及PE的权重。在所示的实施方式中,存储器可以包括SRAM,但是实施方式可以包括任何合适的存储器类型。
图14是根据实施方式的PE 1492的框图。PE 1492可以包括在类似于图13的架构中。PE 1492可以包括CIM块(四个CIM块示出为1494)、控制块1492-0、I/O接口1492-1、输入激活缓冲器1492-2、输入流量控制1492-3、输入总线系统1492-4、输出总线系统1492-5、数据路径控制1492-6、累加部分1492-7、输出激活部分1492-8、输出缓冲器1492-9和定时控制块1492-10。
CIM块1494可以包括CIM阵列1402、位线驱动器1406、MUX 1408、字线驱动器1040-0/1040-1和ADC 1412。这样的项目可以采取本文中描述的任何形式或等同形式。此外,CIM块1494可以包括页锁存器1494-0、积分器/放大器电路1494-1、移位/加法电路1492-2和块寄存器1494-3。页锁存器1494-0可以存储来自CIM阵列1402的页数据。CIM阵列1402可以用非二进制权重数据编程。当对CIM阵列1402中的权重进行编程时,输入权重数据可以存储在页锁存器1494-0中,然后在编程操作期间使用该页锁存器1494-0。在推理操作中,积分器/放大器电路1494-1可以积分由MUX 1408提供的电流值,并在ADC转换之前放大所得到的值。
移位/加法电路1492-2可以修改数字MAC结果。块寄存器1494-3可以存储CIM块1494的输出值,用于PE 1492的后续输出。在一些实施方式中,块寄存器1494-3也可以将输入数据存储至CIM块1494。因此,来自一个CIM块1494的输出数据可以作为输入数据提供给另一个CIM块1494。
控制块1492-0可以控制PE 1492的操作。在一些实施方式中,控制块可以包括CPU和对应的ROM和RAM。I/O接口1492-1可以接收PE 1492的输入数据。输入激活缓冲器1492-2可以存储输入数据,并且在一些实施方式中,可以基于预设标准选择性地使输入数据能够应用于CIM阵列。在一些实施方式中,输入激活缓冲器1492-4可以用作一个或更多个神经元输入激活函数。输入流量控制1492-3可以控制哪些输入数据被应用于哪些CIM块1494。输入流量控制1492-3可以用任何合适的方法来控制输入数据,包括但不限于通过伴随输入数据的目的值或时分复用。输入总线系统1492-4可以为每个CIM块1494的输入数据提供数据路径。输出总线系统1492-5可以为来自每个CIM块1494的输出提供数据路径。输入总线系统1492-4和输出总线系统1492-5可以是并行总线、串行总线或两者的组合。
数据路径控制1492-6可以选择性地传递来自CIM块1494的输出数据。累加部分1492-7可以累加来自CIM块1494的输出值。输出激活缓冲器1492-8可以存储PE 1492的输出数据并执行激活函数(例如,ReLu、tanh、sigmoid)。在一些实施方式中,输出激活缓冲器1492-8可以用作一个或更多个神经元输出激活函数。在一些实施方式中,输出激活缓冲器1492-8可以对输出数据执行其他运算,包括池化或其他聚合或过滤函数。输出缓冲器1492-9可以驱动输出连接点上(例如,在可配置的开关结构上)的输出数据。定时和控制块1492-10可以生成用于协调PE 1492的操作的定时和控制信号。
图15包括示出CIM架构1592如何被配置以实现NN 1582的图。CIM架构1592可以包括PE 1592-0至1592-4、可配置总线1588-00至1588-04和开关块1588-10至1588-13。在所示的实施方式中,一个PE 1592-0可以具有用与隐藏层的一些神经元(H1,H2)对应的权重值编程的CIM阵列。PE 1592-3可以用与相同隐藏层的另一个神经元(H3)对应的权重值来编程。PE 1592-1可以具有用与隐藏层的后续层对应的权重值编程的CIM阵列。在所示的实施方式中,这可以是输出层神经元(OUT)。
通过配置开关块1588-13、1588-10和可配置总线1588-01,可以将输入值X1、X2、X3作为输入值提供给PE 1592-0。通过配置开关块1588-13和可配置总线1588-03,输入值X1、X2、X3也可以作为输入值提供给PE 1592-3。PE 1592-0可以被配置成对与神经元H1、H2对应的输入值X1、X2、X3执行MAC运算。在一些实施方式中,PE 1592-0也可以执行神经元H1、H2的输入和/或输出激活功能。类似地,PE 1592-3可以被配置成对与神经元H3对应的输入值X1、X2、X3执行MAC运算,并且可选地,对神经元H3执行输入和/或输出激活函数。
通过配置开关块1588-11和可配置总线1588-03、1588-02,与神经元H1、H2的输出对应的来自PE 1592-0的输出值可以作为输入值提供给PE 1592-1。通过配置开关模块1588-14、1588-11和可配置总线1588-02、1588-04,与神经元H3的输出对应的来自PE 1592-3的输出值可以作为输入值提供给PE 1592-1。PE 1592-1可以被配置成执行与神经元OUT对应的MAC运算。在一些实施方式中,PE 1592-1也可以执行神经元OUT的输入和/或输出激活函数。来自PE 1592-1的输出值,与来自NN 1582的输出对应,可以连接至系统的输出,或者通过配置可配置总线1588-05和开关块1588-12连接至另一PE。
虽然上述实施方式已经示出了各种系统、装置和相应的方法,但是将参照流程图描述附加的方法。
图16是根据实施方式的MAC生成方法1696的流程图。方法1696可以包括在NVM阵列的NVM单元中存储乘数值(1696-0)。这样的操作可以包括对NVM单元进行编程,以存储范围大于2的值。当在MAC生成操作中被选择时,NVM单元可以生成与其存储的乘数和输入值的乘积对应的电流。
方法1696可以包括将被乘数值应用于NVM阵列的列,以生成NVM单元的行电流(1696-1)。这样的操作可以包括通过NVM单元阵列的位线应用被乘数值。所选择的行的NVM单元的电流可以被组合以生成被乘数/乘数对的MAC结果(1696-2)。所选择的行可以通过MUX连接至ADC(1696-3)。这样的操作可以使ADC电路由多行NVM单元共享。ADC可以将所选择的行的电流转换成数字值(1696-4)。这样的转换可以根据任何合适的方法,并且可以包括将电流与积分电容器积分。如本文中指出的,对于具有正乘数值、负乘数值(例如,权重)的实施方式,ADC转换可以是采用由正权重、负权重生成的总电流的一个步骤。然而,在其他实施方式中,转换可以是两步过程:转换正权重值,转换对应的负权重值,以及从正权重值中减去负权重值。
图17是用于生成MAC结果的方法的流程图1796,该MAC结果使用可以具有不同极性的输入(例如,被乘数值)。方法1796可以包括用正权重和负权重对NVM单元对进行编程。这样的操作可以包括为每个预期输入值编程两个权重值,其中正权重值将增加MAC结果,而负权重值将减少MAC结果。方法1796可以包括在根据极性变化的位线对上应用输入值(1796-1)。这样的操作可以包括基于输入值是正还是负,将位线对驱动至不同的电压。在一些实施方式中,对于正输入值,第一位线可以被驱动至相对高的电压,而第二位线可以被驱动至相对低的电压。对于负输入值,位线对上的电压水平可以切换。
NVM单元中的存取装置可以使电流从位线流过NVM单元流向行源极线(1796-2)。在一些实施方式中,这样的操作可以包括激活NVM单元的行的字线。此外,源极线可以专用于行。方法1796可以包括将多个源极线之一复用至ADC电路(1796-3)。源极线的电流可以转换成数字值(1796-4)。
图18示出了根据实施方式的在CIM装置上执行NN操作的方法1896。方法1896可以包括将NN层的神经元的权重值编程至NVM单元的CIM阵列的行中(1896-0)。NN层的输入值可以应用于CIM阵列的列,以生成行电流。该行电流可以与NN层的神经元的MAC结果对应(1896-1)。
CIM行上的电流可以转换成数字结果(1896-2)。激活函数可以应用于数字结果(1896-3)。然后,数字结果可以作为CIM行的输入值应用,该CIM行与NN的不同层或不同的NN对应(1896-4)。这样的操作可以包括启用CIM装置的不同CIM阵列之间的可编程路径。
实施方式可以提供优于常规方法的各种优点。
可以减少用于将模拟电流连接至ADC电路的MUX的数量,特别是当NVM单元纵横比在列方向大于行方向时。对于具有纵横比为4:1的NVM单元的NVM阵列,MUX的数量减少大约四倍。
实施方式可以为ADC转换提供较短的积分路径。在常规方法中,可以在位线上提供MAC电流值。相反地,实施方式可以在源极线上提供这样的电流,源极线可以比位线短。
类似地,实施方式可以提供更大的积分电流范围,因为源极线可以具有比位线更低的电阻。对于具有纵横比为4:1的NVM单元的NVM阵列,转换路径中的IR降减少大约四倍。
根据实施方式,可以使用带符号输入值执行MAC运算,而不必重复阵列中的正列和负列,从而提供更有效地使用CIM阵列空间。
根据实施方式,CIM装置可以具有比常规方法更高的精度。权重值集(例如,核)可以逐行更新。这可以使权重值集通过单个编程操作进行更新,而不是在一个核的权重集存储在多个列和行中时进行多个这样的操作。同样,更新权重值可以更简单、更快速。
其他优点将被本领域技术人员很好地理解。
实施方式可以在各种领域中享有广泛的应用,以高度并行的方式提供快速、容易更新的MAC运算。实施方式可以有利地用于提供能够执行快速、节能推理操作的神经网络。此外,神经网络可以进行更快的学习操作,因为神经元权重值可以快速准确地更新。
其他应用将被本领域技术人员很好地理解。
应当理解,贯穿本说明书对“一种实施方式”或“实施方式”的引用意味着结合该实施方式描述的特定特征、结构或特性包括在本发明的至少一种实施方式中。因此,要强调并应当理解的是,在本说明书的各个部分中对“一种实施方式”或“实施方式”或“可替选的实施方式”的两个或更多个引用不一定都是指相同实施方式。此外,在本发明的一种或更多种实施方式中,特定的特征、结构或特性可以适当地组合。
类似地,应该理解,在本发明的示例性实施方式的前述描述中,出于简化本公开内容,帮助理解各种发明方面中的一个或更多方面的目的,本发明的各种特征有时在单个实施方式、图或其描述中被组合在一起。然而,本公开内容的方法不应被解释为反映权利要求需要比每个权利要求中明确列举的特征更多的特征的意图。相反,发明方面在少于单个前述公开实施方式的所有特征。因此,详细描述之后的权利要求在此明确地并入该具体实施方式,每个权利要求独立地作为本发明的单独实施方式。

Claims (20)

1.一种方法,包括:
将权重值存储在非易失性存储器(NVM)单元阵列的NVM单元的存储元件中,所述NVM单元阵列具有行和列,其中,所述NVM单元的一行和一列被分别耦接至字线和位线;
对于至少一行,通过在位线上应用输入值来生成所述行的乘积累加(MAC)结果,每个MAC结果包括模拟电流或电压的总和,所述模拟电流或电压取决于每个输入值和由该行的NVM单元存储的对应权重值;以及
通过操作至少一个复用器,将多个行中的一行连接至模数转换器(ADC)电路,以将该行的模拟电流或电压转换成数字MAC值;其中,
每个NVM单元的存储元件被配置成存储能够在不少于三个的不同值之间变化的权重值。
2.根据权利要求1所述的方法,其中:
在所述存储元件中存储权重值包括,对于每个NVM单元,对所述NVM单元的绝缘栅型场效应晶体管(IGFET)器件的电荷存储层进行编程,以建立所述IGFET器件的阈值电压。
3.根据权利要求2所述的方法,其中:
所述电荷存储层包括氮化物层。
4.根据权利要求1所述的方法,其中:
在所述存储元件中存储权重值包括在一个所选择的行中存储一个权重值集,所述权重值集与MAC运算的乘数值对应;
应用输入值包括将用于所述MAC运算的被乘数值应用于所选择的行;以及
生成所述MAC结果包括为每个所选择的行生成MAC结果,所述MAC结果与每个被乘数值乘以不同乘数值的总和对应。
5.根据权利要求4所述的方法,还包括:
用不同的ADC电路将每个所选择的行的MAC结果转换成数字值。
6.根据权利要求1所述的方法,还包括:
累加多行的数字MAC值以生成输出值集;
通过能够编程的连接结构,将所述输出值耦接至第二NVM单元阵列;以及
通过在所述第二NVM单元阵列的位线上应用所述输出值作为第二阵列输入值,利用所述第二NVM单元阵列来生成第二MAC结果。
7.根据权利要求1所述的方法,其中:
每个NVM单元包括选择装置和对应的存储元件,所述存储元件能够在不少于三种的不同电导状态之间编程;以及
生成所述行的MAC结果包括使所述行的每个NVM单元中的选择装置能够将所述对应的存储元件耦接至位线;其中,
一行的每个存储元件导被电耦接至该行而不是其他行的源极线,以及
所述MAC结果是所述源极线上的电流。
8.一种非易失性存储器(NVM)装置,包括:
至少一个NVM阵列,其包括被布置成行和列的多个NVM单元,每个NVM单元被配置成存储权重值并且提供按照所述权重值而变化的单元电压或电流;
多个位线,每个位线被耦接至所述NVM单元阵列的列;
多个字线,每个字线被耦接至所述NVM单元的相应的行,每个字线被配置成选择所述相应的行的NVM单元;
多个分开的源极线,每个源极线被耦接至NVM单元的不同行;
多个复用器(MUX),每个复用器具有被耦接至不同的源极线集的MUX输入,并且每个复用器被配置成选择性地将一个MUX输入连接至MUX输出;以及
多个模数转换器(ADC)部分,每个模数转换器部被耦接至不同MUX的MUX输出;其中,
每个NVM单元能够在不少于三个的不同权重值之间编程。
9.根据权利要求8所述的NVM装置,其中:
每个NVM单元包括绝缘栅型场效应晶体管(IGFET)器件,所述IGBT器件具有表示由所述NVM单元存储的权重值的阈值电压。
10.根据权利要求9所述的NVM装置,其中:
每个IGFET器件具有从包括以下的组选出的电荷存储栅极层:氧化物-氮化物-氧化物层和高k电介质层、氮化物层和氧化物层。
11.根据权利要求8所述的NVM装置,其中:
每个ADC部分包括
积分器电路,其被配置成对模拟信号进行积分以生成积分模拟值,
所述模拟信号在由相应的MUX选择的源极线上被生成;以及
ADC电路,其被配置成将所述积分模拟值转换成数字值。
12.根据权利要求8所述的NVM装置,还包括:
位线驱动器电路,其被耦接至所述位线,并且被配置为响应于输入值和模拟电压范围而在至少两个不同的电压水平中的任何选择的电压水平之间驱动每个位线。
13.根据权利要求12所述的NVM装置,其中:
每行的NVM单元都包括相邻的单元对,每个单元对包括
第一NVM单元,其被配置成存储正权重值,以及
第二NVM单元,其被配置成存储负权重值;
所述位线包括位线对;以及
所述位线驱动器电路被配置成基于输入值的极性而将位线对驱动至互补值。
14.根据权利要求8所述的NVM装置,其中:
每个源极线的电阻低于每个位线的电阻。
15.一种系统,包括:
多个处理元件(PE),每个PE包括:
多个非易失性存储器(NVM)阵列,每个NVM阵列包括布置成行和列的NVM单元,每行的NVM单元被耦接至字线,每列的NVM单元被耦接至位线,每行被配置成:
将权重值存储在该行的NVM单元中,
通过将输入值应用于该行的NVM单元来生成乘积累加(MAC)结果,每个MAC结果包括模拟电流或电压的总和,所述模拟电流或电压取决于每个输入值和由该行的NVM单元存储的对应的权重值;
多个模拟数字转换器(ADC),每个ADC被配置成将来自所选择的行的MAC结果转换成数字MAC值;以及
能够被配置成将所述PE彼此导电互联的电路。
16.根据权利要求15所述的系统,其中:
所述PE由相同的半导体衬底形成。
17.根据权利要求15所述的系统,其中:
每个PE还包括被耦接至所述NVM阵列并且被配置成累加数字MAC值的累加电路。
18.根据权利要求15所述的系统,其中:
所述电路包括能够配置的开关结构,所述开关结构包括:
被耦接至所述PE的多个能够配置的总线,以及
能够被配置成将所述能够配置的总线彼此连接的多个开关块。
19.根据权利要求15所述的系统,其中:
所述PE还包括被配置成聚集累加数字MAC值集的池化电路。
20.根据权利要求15所述的系统,其中:
多个所述PE被配置成至少一个神经网络,所述神经网络包括
第一组PE,其被配置成隐藏层的神经元,每个第一组PE被耦接成接收输入值并且将这样的值应用于它们的至少一个NVM阵列,以生成数字MAC值,以及
至少一个PE,其被配置成输出神经元,并且被耦接成接收由所述隐藏层生成的数字MAC值作为输入值。
CN202280026508.1A 2021-03-29 2022-03-28 存算一体装置、系统及其操作方法 Pending CN117157636A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/215,372 2021-03-29
US17/215,372 US20220309328A1 (en) 2021-03-29 2021-03-29 Compute-in-memory devices, systems and methods of operation thereof
PCT/US2022/022188 WO2022212282A1 (en) 2021-03-29 2022-03-28 Compute-in-memory devices, systems and methods of operation thereof

Publications (1)

Publication Number Publication Date
CN117157636A true CN117157636A (zh) 2023-12-01

Family

ID=83364785

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280026508.1A Pending CN117157636A (zh) 2021-03-29 2022-03-28 存算一体装置、系统及其操作方法

Country Status (5)

Country Link
US (1) US20220309328A1 (zh)
CN (1) CN117157636A (zh)
DE (1) DE112022001822T5 (zh)
TW (1) TW202303382A (zh)
WO (1) WO2022212282A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230317161A1 (en) * 2022-03-31 2023-10-05 Crossbar, Inc. Matrix multiplication with resistive memory circuit having good substrate density
US20240089632A1 (en) * 2022-09-08 2024-03-14 Micron Technology, Inc. Image Sensor with Analog Inference Capability

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5258934A (en) * 1990-05-14 1993-11-02 California Institute Of Technology Charge domain bit serial vector-matrix multiplier and method thereof
US7184290B1 (en) * 2000-06-28 2007-02-27 Marvell International Ltd. Logic process DRAM
JP2004303918A (ja) * 2003-03-31 2004-10-28 Renesas Technology Corp 半導体装置の製造方法および半導体装置
US7574482B2 (en) * 2003-10-31 2009-08-11 Agere Systems Inc. Internal memory controller providing configurable access of processor clients to memory instances
US7551486B2 (en) * 2006-05-15 2009-06-23 Apple Inc. Iterative memory cell charging based on reference cell value
CA2810457C (en) * 2013-03-25 2018-11-20 Gerald Bradley PENN System and method for applying a convolutional neural network to speech recognition
US9779355B1 (en) * 2016-09-15 2017-10-03 International Business Machines Corporation Back propagation gates and storage capacitor for neural networks
US20210064379A1 (en) * 2019-08-29 2021-03-04 Arm Limited Refactoring MAC Computations for Reduced Programming Steps

Also Published As

Publication number Publication date
US20220309328A1 (en) 2022-09-29
TW202303382A (zh) 2023-01-16
WO2022212282A1 (en) 2022-10-06
DE112022001822T5 (de) 2024-01-25

Similar Documents

Publication Publication Date Title
US11663457B2 (en) Neural network circuits having non-volatile synapse arrays
US12106211B2 (en) Mixed signal neuromorphic computing with nonvolatile memory devices
US10552510B2 (en) Vector-by-matrix multiplier modules based on non-volatile 2D and 3D memory arrays
CN109214510B (zh) 神经形态多位式数字权重单元
CN110825345B (zh) 使用非易失性存储器单元的乘法
US11875249B2 (en) Counter based resistive processing unit for programmable and reconfigurable artificial-neural-networks
CN111722830A (zh) 快闪存储器的非易失性计算方法
JPWO2019049741A1 (ja) 不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路
CN113467751B (zh) 一种基于磁性随机存储器的模拟域存内计算阵列结构
CN117157636A (zh) 存算一体装置、系统及其操作方法
JPWO2019049842A1 (ja) 不揮発性半導体記憶素子を用いたニューラルネットワーク演算回路
CN110729011B (zh) 用于类神经网路的存储器内运算装置
US20220044099A1 (en) Method for in-memory convolutional computation and corresponding integrated circuit
Dutta et al. A logic-in-memory design with 3-terminal magnetic tunnel junction function evaluators for convolutional neural networks
CN111859261A (zh) 计算电路及其操作方法
CN113222131B (zh) 基于1t1r的可实现带符号权重系数的突触阵列电路
US20240355386A1 (en) Voltage-mode crossbar circuits
US20220085107A1 (en) Topologies of unit crossbars
US20220383083A1 (en) Method for training a binarized neural network and related electronic circuit
US20240202512A1 (en) Non-volatile memory-based activation function
WO2024220704A1 (en) Voltage-mode crossbar circuits
Ovy et al. Compact Multiplexer Design with Multi-threshold Ferroelectric FETs
Song et al. A Ta2O5/ZnO Synaptic SE-FET for supervised learning in a crossbar
CN117559980A (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