CN117581300A - 深度学习人工神经网络中模拟神经存储器的可编程输出块 - Google Patents

深度学习人工神经网络中模拟神经存储器的可编程输出块 Download PDF

Info

Publication number
CN117581300A
CN117581300A CN202180100017.2A CN202180100017A CN117581300A CN 117581300 A CN117581300 A CN 117581300A CN 202180100017 A CN202180100017 A CN 202180100017A CN 117581300 A CN117581300 A CN 117581300A
Authority
CN
China
Prior art keywords
output
analog
digital
array
input
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
CN202180100017.2A
Other languages
English (en)
Inventor
H·V·特兰
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.)
Silicon Storage Technology Inc
Original Assignee
Silicon Storage Technology Inc
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
Priority claimed from US17/367,542 external-priority patent/US11893478B2/en
Application filed by Silicon Storage Technology Inc filed Critical Silicon Storage Technology Inc
Publication of CN117581300A publication Critical patent/CN117581300A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • 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/0464Convolutional networks [CNN, ConvNet]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Non-Volatile Memory (AREA)
  • Read Only Memory (AREA)

Abstract

公开了与人工神经网络内的VMM阵列一起使用的可编程输出块的许多实施方案。在一个实施方案中,输出块的增益可通过配置信号进行配置。在另一个实施方案中,该输出块中ADC的分辨率可通过配置信号进行配置。

Description

深度学习人工神经网络中模拟神经存储器的可编程输出块
优先权声明
本申请是于2019年3月14日提交并且名称为″System for Converting NeuronCurrent Into Neuron Current-Based Time Pulses in an Analog Neural Memory in aDeep Learning Artificial Neural Network″的美国专利申请16/353,830号的部分继续申请,该美国专利申请要求于2019年3月6日提交并且名称为″System for ConvertingNeuron Current Into Neuron Current-Based Time Pulses in an Analog NeuralMemory in a Deep Learning Artificial Neural Network″的美国临时申请62/814,813号以及于2019年1月18日提交并且名称为″System for Converting Neuron Current IntoNeuron Current-Based Time Pulses in an Analog Neural Memory in a DeepLearning Artificial Neural Network″的美国临时申请62/794,492号的优先权,这些申请全部以引用方式并入本文。
技术领域
公开了与人工神经网络内的矢量-矩阵乘法(VMM)阵列一起使用的可编程输出块的许多实施方案。
背景技术
人工神经网络模拟生物神经网络(动物的中枢神经系统,特别是大脑),并且用于估计或近似可取决于大量输入并且通常未知的函数。人工神经网络通常包括互相交换消息的互连″神经元″层。
图1示出了人工神经网络,其中圆圈表示神经元的输入或层。连接部(称为突触)用箭头表示,并且具有可以根据经验进行调整的数值权重。这使得神经网络适应于输入并且能够学习。通常,神经网络包括多个输入的层。通常存在神经元的一个或多个中间层,以及提供神经网络的输出的神经元的输出层。处于每一级别的神经元分别地或共同地根据从突触所接收的数据作出决定。
在开发用于高性能信息处理的人工神经网络方面的主要挑战中的一个挑战是缺乏足够的硬件技术。实际上,实际神经网络依赖于大量的突触,从而实现神经元之间的高连通性,即非常高的计算并行性。原则上,此类复杂性可通过数字超级计算机或专用图形处理单元集群来实现。然而,相比于生物网络,这些方法除了高成本之外,能量效率也很普通,生物网络主要由于其执行低精度的模拟计算而消耗更少的能量。CMOS模拟电路已被用于人工神经网络,但由于需要大量神经元和突触,大多数CMOS实现的突触都过于庞大。
申请人先前在美国专利申请15/594,439(公开为美国专利公布2017/0337466)中公开了一种利用一个或多个非易失性存储器阵列作为突触的人工(模拟)神经网络,该专利申请以引用方式并入本文。非易失性存储器阵列作为模拟神经形态存储器操作。神经网络设备包括被配置成接收第一多个输入并从其生成第一多个输出的第一多个突触,以及被配置成接收第一多个输出的第一多个神经元。第一多个突触包括多个存储器单元,其中存储器单元中的每个存储器单元包括:形成于半导体衬底中的间隔开的源极区和漏极区,其中沟道区在源极区和漏极区之间延伸;设置在沟道区的第一部分上方并且与第一部分绝缘的浮栅;以及设置在沟道区的第二部分上方并且与第二部分绝缘的非浮栅。多个存储器单元中的每个存储器单元被配置成存储与浮栅上的多个电子相对应的权重值。多个存储器单元被配置成将第一多个输入乘以所存储的权重值以生成第一多个输出。
必须擦除和编程在模拟神经形态存储器系统中使用的每个非易失性存储器单元,以在浮栅中保持非常特定且精确的电荷量(即电子数量)。例如,每个浮栅必须保持N个不同值中的一个,其中N是可由每个单元指示的不同权重的数量。N的示例包括16、32、64、128和256。
使用VMM阵列的系统面临的一个挑战是能够准确测量VMM阵列的输出并将该输出传输至另一级(诸如另一VMM阵列的输入块)。已知有许多方法,但每个方法都有一定的缺点,诸如电流泄漏导致信息丢失。
需要的是用于从VMM阵列接收输出电流并将该输出电流转换为更适用于传输至另一级电子器件的形式的改进输出块。
发明内容
公开了与人工神经网络内的VMM阵列一起使用的可编程输出块的许多实施方案。在一个实施方案中,输出块的增益可通过配置信号进行配置。在另一个实施方案中,输出块中ADC的分辨率可通过配置信号进行配置。
附图说明
图1为示出现有技术的人工神经网络的示意图。
图2示出现有技术的分裂栅闪存存储器单元。
图3示出另一现有技术的分裂栅闪存存储器单元
图4示出另一现有技术的分裂栅闪存存储器单元。
图5示出另一现有技术的分裂栅闪存存储器单元。
图6示出另一现有技术的分裂栅闪存存储器单元。
图7示出现有技术的堆叠栅闪存存储器单元。
图8为示出利用一个或多个非易失性存储器阵列的示例性人工神经网络的不同级别的示意图。
图9为示出矢量-矩阵乘法系统的框图。
图10为示出使用一个或多个矢量-矩阵乘法系统的示例性人工神经网络的框图。
图11示出矢量-矩阵乘法系统的另一实施方案。
图12示出矢量-矩阵乘法系统的另一实施方案。
图13示出矢量-矩阵乘法系统的另一实施方案。
图14示出矢量-矩阵乘法系统的另一实施方案。
图15示出矢量-矩阵乘法系统的另一实施方案。
图16示出现有技术的长短期存储器系统。
图17示出在长短期存储器系统中使用的示例性单元。
图18示出图17的示例性单元的一个实施方案。
图19示出图17的示例性单元的另一实施方案。
图20示出现有技术的栅控递归单元系统。
图21示出在栅控递归单元系统中使用的示例性单元。
图22示出图21的示例性单元的一个实施方案。
图23示出图21的示例性单元的另一实施方案。
图24示出矢量-矩阵乘法系统的另一实施方案。
图25示出矢量-矩阵乘法系统的另一实施方案。
图26示出矢量-矩阵乘法系统的另一实施方案。
图27示出矢量-矩阵乘法系统的另一实施方案。
图28示出矢量-矩阵乘法系统的另一实施方案。
图29示出矢量-矩阵乘法系统的另一实施方案。
图30示出矢量-矩阵乘法系统的另一实施方案。
图31示出矢量-矩阵乘法系统的另一实施方案。
图32示出VMM系统。
图33示出闪存模拟神经存储器系统。
图34A示出积分型模数转换器。
图34B示出图34A的积分型模数转换器的电压特性。
图35A示出积分型模数转换器。
图35B示出图35A的积分型模数转换器的电压特性。
图36A和36B示出图34A和35A的模数转换器的操作示例的波形。
图36C示出定时控制电路。
图37示出脉冲-电压转换器。
图38示出电流-电压转换器。
图39示出电流-电压转换器。
图40示出电流-对数电压转换器。
图41示出电流-对数电压转换器。
图42示出数字数据-电压转换器。
图43示出数字数据-电压转换器。
图44示出参考阵列。
图45示出数字比较器。
图46示出转换器和数字比较器。
图47示出模拟比较器。
图48示出转换器和模拟比较器。
图49示出输出电路。
图50示出在数字化后被激活的输出的一个方面。
图51示出在数字化后被激活的输出的一个方面。
图52示出电荷求和器电路。
图53示出电流求和器电路。
图54示出数字求和器电路。
图55A和55B分别示出数字位-脉冲行转换器和波形。
图56示出功率管理方法。
图57示出另一功率管理方法。
图58示出另一功率管理方法。
图59示出可编程神经元输出块。
图60示出在神经元输出块中使用的可编程模数转换器。
图61A、图61B和图61C示出混合输出转换块。
图62示出可配置串行模数转换器。
图63示出可配置神经元SAR(逐次逼近寄存器)模数转换器。
图64示出流水线SAR ADC电路。
图65示出混合SAR和串行ADC电路。
图66示出算法ADC输出块。
具体实施方式
本发明的人工神经网络利用CMOS技术和非易失性存储器阵列的组合。
非易失性存储器单元
数字非易失性存储器是众所周知的。例如,以引用方式并入本文的美国专利5,029,130(″’130专利″)公开了分裂栅非易失性存储器单元阵列,它是一种类型的闪存存储器单元。此类存储器单元210在图2中示出。每个存储器单元210包括形成于半导体衬底12中的源极区14和漏极区16,其间具有沟道区18。浮栅20形成在沟道区18的第一部分上方并且与其绝缘(并控制其电导率),并且形成在源极区14的一部分上方。字线端子22(其通常被耦接到字线)具有设置在沟道区18的第二部分上方并且与该沟道区的第二部分绝缘(并且控制其电导率)的第一部分,以及向上延伸并且位于浮栅20上方的第二部分。浮栅20和字线端子22通过栅极氧化物与衬底12绝缘。位线24耦接到漏极区16。
通过将高的正电压置于字线端子22上来对存储器单元210进行擦除(其中电子从浮栅去除),这导致浮栅20上的电子经由福勒-诺德海姆隧穿从浮栅20到字线端子22隧穿通过中间绝缘体。
通过将正的电压置于字线端子22上以及将正的电压置于源极区14上来编程存储器单元210(其中电子被置于浮栅上)。电子电流将从源极区14流向漏极区16。当电子到达字线端子22和浮栅20之间的间隙时,电子将加速并且变热。由于来自浮栅20的静电引力,一些加热的电子将通过栅极氧化物被注入到浮栅20上。
通过将正的读取电压置于漏极区16和字线端子22(其接通沟道区18的在字线端子下方的部分)上来读取存储器单元210。如果浮栅20带正电(即,电子被擦除),则沟道区18的在浮栅20下方的部分也被接通,并且电流将流过沟道区18,该沟道区被感测为擦除状态或″1″状态。如果浮栅20带负电(即,通过电子进行了编程),则沟道区的在浮栅20下方的部分被大部分或完全关断,并且电流将不会(或者有很少的电流)流过沟道区18,该沟道区被感测为编程状态或″0″状态。
表1示出可施加到存储器单元110的端子以用于执行读取操作、擦除操作和编程操作的典型电压范围:
表1:图2的闪存存储器单元210的操作
WL BL SL
读取 2-3V 0.6-2V 0V
擦除 约11-13v 0V 0V
编程 1-2V 1-3μA 9-10V
图3示出了存储器单元310,其与图2的存储器单元210类似,但增加了控制栅(CG)28。控制栅28在编程中被偏置在高电压处(例如,10V),在擦除中被偏置在低电压或负电压处(例如,0v/-8V),在读取中被偏置在低电压或中等电压处(例如,0v/2.5V)。其他端子类似于图2那样偏置。
图4示出了四栅极存储器单元410,其包括源极区14、漏极区16、在沟道区18的第一部分上方的浮栅20、在沟道区18的第二部分上方的选择栅22(通常耦接到字线WL)、在浮栅20上方的控制栅28、以及在源极区14上方的擦除栅30。这种配置在美国专利6,747,310中有所描述,该专利以引用方式并入本文以用于所有目的。这里,除了浮栅20之外,所有的栅极均为非浮栅,这意味着它们电连接到或能够电连接到电压源。编程由来自沟道区18的将自身注入到浮栅20的加热的电子执行。擦除通过从浮栅20隧穿到擦除栅30的电子来执行。
表2示出可施加到存储器单元310的端子以用于执行读取操作、擦除操作和编程操作的典型电压范围:
表2:图4的闪存存储器单元410的操作
WL/SG BL CG EG SL
读取 1.0-2V 0.6-2V 0-2.6V 0-2.6V 0V
擦除 -0.5V/0V 0V 0V/-8V 8-12V 0V
编程 1V 1μA 8-11V 4.5-9V 4.5-5V
图5示出了存储器单元510,除了不含擦除栅EG,存储器单元510与图4的存储器单元410类似。通过将衬底18偏置到高电压并将控制栅CG 28偏置到低电压或负电压来执行擦除。另选地,通过将字线22偏置到正电压并将控制栅28偏置到负电压来执行擦除。编程和读取类似于图4的那样。
图6示出三栅极存储器单元610,其为另一种类型的闪存存储器单元。存储器单元610与图4的存储器单元410相同,不同的是存储器单元610没有单独的控制栅。除了没有施加控制栅偏置,擦除操作(由此通过使用擦除栅进行擦除)和读取操作与图4的操作类似。在没有控制栅偏置的情况下,编程操作也被完成,并且结果,在编程操作期间必须在源极线上施加更高的电压,以补偿控制栅偏置的缺乏。
表3示出可施加到存储器单元610的端子用于执行读取操作、擦除操作和编程操作的典型电压范围:
表3:图6的闪存存储器单元610的操作
WL/SG BL EG SL
读取 0.7-2.2V 0.6-2V 0-2.6V 0V
擦除 -0.5V/0V 0V 11.5V 0V
编程 1V 2-3μA 4.5V 7-9V
图7示出堆叠栅级存储器单元710,其为另一种类型的闪存存储器单元。存储器单元710与图2的存储器单元210类似,不同的是浮栅20在整个沟道区18上方延伸,并且控制栅22(其在这里将耦接到字线)在浮栅20上方延伸,由绝缘层(未示出)分开。擦除、编程和读取操作以与先前针对存储器单元210所述类似的方式操作。
表4示出可以施加到存储器单元710和衬底12的端子以用于执行读取操作、擦除操作和编程操作的典型电压范围:
表4:图7的闪存存储器单元710的操作
CG BL SL 衬底
读取 2-5V 0.6-2V 0V 0V
擦除 -8至-10V/0V FLT FLT 8-10V/15-20V
编程 8-12V 3-5V 0V 0V
为了在人工神经网络中利用包括上述类型的非易失性存储器单元之一的存储器阵列,进行了两个修改。第一,对线路进行配置,使得每个存储器单元可被单独编程、擦除和读取,而不会不利地影响阵列中的其他存储器单元的存储器状态,如下文进一步解释。第二,提供存储器单元的连续(模拟)编程。
具体地,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全擦除状态变为完全编程状态。在另一个实施方案,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全编程状态变为完全擦除状态,反之亦然。这意味着单元存储装置是模拟的,或者至少可存储许多离散值(诸如16或64个不同的值)中的一个离散值,这允许对存储器阵列中的所有单元进行非常精确且单独的调谐,并且这使得存储器阵列对于存储和对神经网络的突触权重进行精细调谐是理想的。
本文所述的方法和装置可应用于其他非易失性存储器技术,诸如SONOS(硅-氧化物-氮化物-氧化物-硅,电荷捕获在氮化物中)、MONOS(金属-氧化物-氮化物-氧化物-硅,金属电荷捕获在氮化物中)、ReRAM(电阻式ram)、PCM(相变存储器)、MRAM(磁性ram)、FeRAM(铁电ram)、OTP(双层或多层式一次可编程)和CeRAM(关联电子ram)等。本文所述的方法和装置可应用于用于神经网络的易失性存储器技术,诸如但不限于SRAM、DRAM和/或易失性突触单元。
采用非易失性存储器单元阵列的神经网络
图8概念性地示出本实施方案的利用非易失性存储器阵列的神经网络的非限制性示例。该示例将非易失性存储器阵列神经网络用于面部识别应用,但任何其他适当的应用也可使用基于非易失性存储器阵列的神经网络来实现。
对于该示例,S0为输入层,其为具有5位精度的32×32像素RGB图像(即,三个32×32像素阵列,分别用于每个颜色R、G和B,每个像素为5位精度)。从输入层S0到层C1的突触CB1在一些情况下应用不同的权重集,在其他情况下应用共享权重,并且用3×3像素重叠滤波器(内核)扫描输入图像,将滤波器移位1个像素(或根据模型所指示的多于1个像素)。具体地,将图像的3×3部分中的9个像素的值(即,称为滤波器或内核)提供给突触CB1,其中将这9个输入值乘以适当的权重,并且在对该乘法的输出求和之后,由CB1的第一突触确定并提供单个输出值以用于生成特征映射的其中一层C1的像素。然后将3×3滤波器在输入层S0内向右移位一个像素(即,添加右侧的三个像素的列,并释放左侧的三个像素的列),由此将该新定位的滤波器中的9个像素值提供给突触CB1,其中将它们乘以相同的权重并且由相关联的突触确定第二单个输出值。继续该过程,直到3×3滤波器在输入层S0的整个32×32像素图像上扫描所有三种颜色和所有位(精度值)。然后使用不同组的权重重复该过程以生成C1的不同特征映射,直到计算出层C1的所有特征映射。
在层C1处,在本示例中,存在16个特征映射,每个特征映射具有30×30像素。每个像素是从输入和内核的乘积中提取的新特征像素,因此每个特征映射是二维阵列,因此在该示例中,层C1由16层二维阵列构成(记住,本文所引用的层和阵列是逻辑关系,而不必是物理关系,即阵列不必以物理二维阵列定向)。在层C1中的16个特征映射中的每个特征映射均由应用于滤波器扫描的十六个不同组的突触权重中的一组生成。C1特征映射可全部涉及相同图像特征的不同方面,诸如边界识别。例如,第一映射(使用第一权重组生成,针对用于生成该第一映射的所有扫描而共享)可识别圆形边缘,第二映射(使用与第一权重组不同的第二权重组生成)可识别矩形边缘,或某些特征的纵横比,以此类推。
在从层Cl转到层S1之前,应用激活函数P1(池化),该激活函数将来自每个特征映射中连续的非重叠2×2区域的值进行池化。池化函数的目的是对邻近位置求均值(或者也可使用max函数),以例如减少边缘位置的依赖性,并在进入下一阶段之前减小数据大小。在层S1处,存在16个15×15特征映射(即,十六个每特征映射15×15像素的不同阵列)。从层S1到层C2的突触CB2利用4×4滤波器扫描S1中的映射,其中滤波器移位1个像素。在层C2处,存在22个12×12特征映射。在从层C2转到层S2之前,应用激活函数P2(池化),该激活函数将来自每个特征映射中连续的非重叠2×2区域的值进行池化。在层S2处,存在22个6×6特征映射。将激活函数(池化)应用于从层S2到层C3的突触CB3,其中层C3中的每个神经元经由CB3的相应突触连接至层S2中的每个映射。在层C3处,存在64个神经元。从层C3到输出层S3的突触CB4完全将C3连接至S3,即层C3中的每个神经元都连接到层S3中的每个神经元。S3处的输出包括10个神经元,其中最高输出神经元确定类。例如,该输出可指示对原始图像的内容的识别或分类。
使用非易失性存储器单元的阵列或阵列的一部分来实现每层的突触。
图9为可用于该目的的阵列的框图。矢量-矩阵乘法(VMM)阵列32包括非易失性存储器单元,并且用作一层与下一层之间的突触(诸如图6中的CB1、CB2、CB3和CB4)。具体地,VMM阵列32包括非易失性存储器单元阵列33、擦除栅和字线栅解码器34、控制栅解码器35、位线解码器36和源极线解码器37,这些解码器对非易失性存储器单元阵列33的相应输入进行解码。对VMM阵列32的输入可来自擦除栅和字线栅解码器34或来自控制栅解码器35。在该示例中,源极线解码器37还对非易失性存储器单元阵列33的输出进行解码。另选地,位线解码器36可以解码非易失性存储器单元阵列33的输出。
非易失性存储器单元阵列33用于两个目的。首先,它存储将由VMM阵列32使用的权重。其次,非易失性存储器单元阵列33有效地将输入与存储在非易失性存储器单元阵列33中的权重相乘并且每个输出线(源极线或位线)将它们相加以产生输出,该输出将作为下一层的输入或最终层的输入。通过执行乘法和加法函数,非易失性存储器单元阵列33消除了对单独的乘法和加法逻辑电路的需要,并且由于其原位存储器计算其也是高功效的。
将非易失性存储器单元阵列33的输出提供至差分求和器(诸如求和运算放大器或求和电流镜)38,该差分求和器对非易失性存储器单元阵列33的输出进行求和,以为该卷积创建单个值。差分求和器38被布置用于执行正权重和负权重的求和。
然后将差分求和器38的输出值求和后提供至激活函数电路39,该激活函数电路对输出进行修正。激活函数电路39可提供sigmoid、tanh或ReLU函数。激活函数电路39的经修正的输出值成为作为下一层(例如,图8中的层C 1)的特征映射的元素,随后被应用于下一个突触以产生下一个特征映射层或最终层。因此,在该示例中,非易失性存储器单元阵列33构成多个突触(其从现有神经元层或从输入层诸如图像数据库接收它们的输入),并且求和器38和激活函数电路39构成多个神经元。
图9中对VMM阵列32的输入(WLx、EGx、CGx以及任选的BLx和SLx)可为模拟电平、二进制电平、数字脉冲(在这种情况下,可能需要脉冲-模拟转换器PAC来将脉冲转换至合适的输入模拟电平)或数字位(在这种情况下,提供DAC以将数字位转换至合适的输入模拟电平);输出可为模拟电平、二进制电平、数字脉冲或数字位(在这种情况下,提供输出ADC以将输出模拟电平转换成数字位)。
图10为示出多层VMM阵列32(此处标记为VMM阵列32a、32b、32c、32d和32e)的使用的框图。如图10所示,通过数模转换器31将输入(表示为Inputx)从数字转换成模拟,并将其提供到输入VMM阵列32a。转换的模拟输入可以是电压或电流。第一层的输入D/A转换可通过使用将输入Inputx映射到输入VMM阵列32a的矩阵乘法器的适当模拟电平的函数或LUT(查找表)来完成。输入转换也可以由模拟至模拟(A/A)转换器完成,以将外部模拟输入转换成到输入VMM阵列32a的映射模拟输入。输入转换也可以由数字至数字脉冲(D/P)转换器完成,以将外部数字输入转换成到输入VMM阵列32a的映射的一个或多个数字脉冲。
由输入VMM阵列32a产生的输出被作为到下一个VMM阵列(隐藏级别1)32b的输入提供,该输入继而生成作为下一VMM阵列(隐藏级别2)32c的输入而提供的输出,以此类推。VMM阵列32的各层用作卷积神经网络(CNN)的突触和神经元的不同层。每个VMM阵列32a、32b、32c、32d和32e可以是独立的物理非易失性存储器阵列,或者多个VMM阵列可利用同一非易失性存储器阵列的不同部分,或者多个VMM阵列可利用同一物理非易失性存储器阵列的重叠部分。每个VMM阵列32a、32b、32c、32d和32e也可针对其阵列或神经元的不同部分进行时分复用。图10所示的示例包含五个层(32a,32b,32c,32d,32e):一个输入层(32a)、两个隐藏层(32b,32c)和两个全连接层(32d,32e)。本领域的普通技术人员将会知道,这仅仅是示例性的,并且相反,系统可包括两个以上的隐藏层和两个以上的完全连接的层。
矢量-矩阵乘法(VMM)阵列
图11示出神经元VMM阵列1100,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1100包括非易失性存储器单元的存储器阵列1101和非易失性参考存储器单元的参考阵列1102(在阵列的顶部)。另选地,可将另一个参考阵列置于底部。
在VMM阵列1100中,控制栅线(诸如控制栅线1103)在竖直方向上延伸(因此参考阵列1102在行方向上与控制栅线1103正交),并且擦除栅线(诸如擦除栅线1104)在水平方向上延伸。此处,到VMM阵列1100的输入设置在控制栅线(CG0,CG1,CG2,CG3)上,并且VMM阵列1100的输出出现在源极线(SL0,SL1)上。在一个实施方案中,仅使用偶数行,并且在另一个实施方案中,仅使用奇数行。置于各源极线(分别为SL0、SL1)上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
如本文针对神经网络所述,VMM阵列1100的非易失性存储器单元(即VMM阵列1100的闪存存储器)优选地被配置为在亚阈值区域中操作。
在弱反转中偏置本文所述的非易失性参考存储器单元和非易失性存储器单元:
Ids=Io*e(Vg-vm)′kVt=w*Io*e(Vg)/kVt
其中w=e(-Vth)/kVt
对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入电流转换为输入电压的I到V对数转换器:
Vg=k*Vt*log[Ids/wp*Io]
此处,wp为参考存储器单元或外围存储器单元的w。
对于用作矢量矩阵乘法器VMM阵列的存储器阵列,输出电流为:
Iout=wa*Io*e(Vg)/kVt,即
Iout=(wa/wp)*Iin=W*Iin
W=e(Vthp-Vtha)/kVt
此处,wa=存储器阵列中的每个存储器单元的w。
字线或控制栅可用作输入电压的存储器单元的输入。
另选地,本文所述的VMM阵列的闪存存储器单元可被配置成在线性区域中操作:
Ids=β*(Vgs-Vth)*Vds;β=u*Cox*W/L
W=α(Vgs-Vth)
字线或控制栅或位线或源极线可以用作在线性区域中操作的存储器单元的输入。位线或源极线可用作存储器单元的输出。
对于I到V线性转换器,在线性区域工作的存储器单元(例如参考存储器单元或外围存储器单元)或晶体管或电阻器可以用来将输入/输出电流线性转换成输入/输出电压。
图9的VMM阵列32的其他实施方案在美国专利申请15/826,345号中有所描述,该申请以引用方式并入本文。如本文所述,源极线或位线可以用作神经元输出(电流求和输出)。另选地,本文所述的VMM阵列的闪存存储器单元可被配置成在饱和区域中操作:
Ids=α1/2*β*(Vgs-Vth)2;β=u*Cox*W/L
W=α(Vgs-Vth)2
字线、控制栅或擦除栅可以用作在饱和区域中操作的存储器单元的输入。位线或源极线可用作输出神经元的输出。
另选地,本文所述的VMM阵列的闪存存储器单元可用于所有区域或其组合(亚阈值、线性或饱和区域)。
图12示出神经元VMM阵列1200,其特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的突触。VMM阵列1200包括非易失性存储器单元的存储器阵列1203、第一非易失性参考存储器单元的参考阵列1201和第二非易失性参考存储器单元的参考阵列1202。在阵列的列方向上布置的参考阵列1201和1202用于将流入端子BLR0、BLR1、BLR2和BLR3的电流输入转换为电压输入WL0、WL1、WL2和WL3。实际上,第一非易失性参考存储器单元和第二非易失性参考存储器单元通过多路复用器1214(仅部分示出)二极管式连接,其中电流输入流入其中。参考单元被调谐(例如,编程)为目标参考电平。目标参考电平由参考微阵列矩阵(未示出)提供。
存储器阵列1203用于两个目的。首先,它将VMM阵列l200将使用的权重存储在其相应的存储器单元上。其次,存储器阵列1203有效地将输入(即,在端子BLR0、BLR1、BLR2和BLR3中提供的电流输入,参考阵列1201和1202将这些电流输入转换为输入电压,以供应到字线WL0、WL1、WL2和WL3)乘以存储在存储器阵列1203中的权重,然后将所有结果(存储器单元电流)相加,以在相应位线(BL0-BLN)上产生输出,该输出将为到下一层的输入或到最终层的输入。通过执行乘法和加法函数,存储器阵列1203消除了对单独的乘法逻辑电路和加法逻辑电路的需要,并且也是高功效的。这里,电压输入在字线(WL0、WL1、WL2和WL3)上提供,并且输出在读取(推断)操作期间出现在相应位线(BL0-BLN)上。置于位线BL0-BLN中的每个位线上的电流执行来自连接到该特定位线的所有非易失性存储器单元的电流的求和函数。
表5示出用于VMM阵列1200的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表5:图12的VMM阵列1200的操作
图13示出神经元VMM阵列1300,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1300包括非易失性存储器单元的存储器阵列1303、第一非易失性参考存储器单元的参考阵列1301和第二非易失性参考存储器单元的参考阵列1302。参考阵列1301和1302在VMM阵列1300的行方向上延伸。VMM阵列与VMM 1000类似,不同的是在VMM阵列1300中,字线在竖直方向上延伸。这里,输入设置在字线(WLA0、WLB0、WLA1、WLB2、WLA2、WLB2、WLA3、WLB3)上,并且输出在读取操作期间出现在源极线(SL0、SL1)上。置于各源极线上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
表6示出用于VMM阵列1300的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表6:图13的VMM阵列1300的操作
图14示出神经元VMM阵列1400,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1400包括非易失性存储器单元的存储器阵列1403、第一非易失性参考存储器单元的参考阵列1401和第二非易失性参考存储器单元的参考阵列1402。参考阵列1401和1402用于将流入端子BLR0、BLR1、BLR2和BLR3的中的电流输入转换为电压输入CG0、CG1、CG2和CG3。实际上,第一非易失性参考存储器单元和第二非易失性参考存储器单元通过多路复用器1412(仅部分示出)二极管式连接,其中电流输入通过BLR0、BLR1、BLR2和BLR3流入其中。多路复用器1412各自包括相应的多路复用器1405和共源共栅晶体管1404,以确保在读取操作期间第一非易失性参考存储器单元和第二非易失性参考存储器单元中的每一者的位线(诸如BLR0)上的电压恒定。将参考单元调谐至目标参考电平。
存储器阵列1403用于两个目的。首先,它存储将由VMM阵列1400使用的权重。其次,存储器阵列1403有效地将输入(提供到端子BLR0、BLR1、BLR2和BLR3的电流输入,参考阵列1401和1402将这些电流输入转换为输入电压以提供给控制栅(CG0、CG1、CG2和CG3))乘以存储在存储器阵列中的权重,然后将所有结果(单元电流)相加以产生输出,该输出出现在BL0-BLN并且将为到下一层的输入或到最终层的输入。通过执行乘法和加法函数,存储器阵列消除了对单独的乘法和加法逻辑电路的需要,并且也是高功效的。此处,输入在控制栅线(CG0、CG1、CG2和CG3)上提供,输出在读取操作期间出现在位线(BL0-BLN)上。置于各位线上的电流执行来自连接到该特定位线的存储器单元的所有电流的求和函数。
VMM阵列1400对存储器阵列1403中的非易失性存储器单元实现单向调谐。也就是说,每个非易失性存储器单元被擦除,然后被部分编程,直到达到浮栅上的所需电荷。这可例如使用下文所述的精确编程技术来执行。如果在浮栅上放置过多电荷(使得错误的值存储在单元中),则必须擦除单元,并且部分编程操作的序列必须重新开始。如图所示,共享同一擦除栅(诸如EG0或EG1)的两行需要一起擦除(其被称为页面擦除),并且此后,每个单元被部分编程,直到达到浮栅上的所需电荷。
表7示出用于VMM阵列1400的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表7:图14的VMM阵列1400的操作
图15示出神经元VMM阵列1500,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1500包括非易失性存储器单元的存储器阵列1503、第一非易失性参考存储器单元的参考阵列1501和第二非易失性参考存储器单元的参考阵列1502。EG线EGR0、EG0、EG1和EGR1竖直延伸,而CG线CG0、CG1、CG2和CG3以及SL线WL0、WL1、WL2和WL3水平延伸。VMM阵列1500与VMM阵列1400类似,不同的是VMM阵列1500实现双向调谐,其中每个单独的单元可根据需要被完全擦除、部分编程和部分擦除,以由于使用单独的EG线而在浮栅上达到期望的电荷量。如图所示,参考阵列1501和1502将端子BLR0、BLR1、BLR2和BLR3中的输入电流转换为要在行方向上施加到存储器单元的控制栅电压CG0、CG1、CG2和CG3(通过经由多路复用器1514的二极管式连接的参考单元的动作)。电流输出(神经元)在位线BL0-BLN中,其中每个位线对来自连接到该特定位线的非易失性存储器单元的所有电流求和。
表8示出用于VMM阵列1500的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表8:图15的VMM阵列1500的操作
图24示出神经元VMM阵列2400,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在VMM阵列2400中,输入INPUT0、.....、INPUTN分别在位线BL0、......、BLN上接收,并且输出OUTPUT1、OUTPUT2、OUTPUT3和OUTPUT4分别在源极线SL0、SL1、SL2和SL3上生成。
图25示出神经元VMM阵列2500,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、INPUT1、INPUT2和INPUT3分别在源极线SL0、SL1、SL2和SL3上接收,并且输出OUTPUT0、.....、OUTPUTN在位线BL0、……、BLN上生成。
图26示出神经元VMM阵列2600,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、......、INPUTM分别在字线WL0、......、WLM上接收,并且输出OUTPUT0、.....、OUTPUTN在位线BL0、......、BLN上生成。
图27示出神经元VMM阵列2700,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、......、INPUTM分别在字线WL0、......、WLM上接收,并且输出OUTPUT0、......、OUTPUTN在位线BL0、......、BLN上生成。
图28示出神经元VMM阵列2800,该神经元VMM阵列特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、......、INPUTn分别在位线BL0、......、BLN上接收,并且输出OUTPUT1和OUTPUT2在擦除栅线EG0和EG1上生成。
图29示出神经元VMM阵列2900,该神经元VMM阵列特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、......、INPUTN分别在位线控制栅极2901-1、2901-2、......、2901-(N-1)和2901-N的栅极上接收,这些栅极分别耦接到位线BL0、......、BLN,。示例性输出OUTPUT1和OUTPUT2在擦除栅线SL0和SL1上生成。
图30示出神经元VMM阵列3000,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、.....、INPUTM在字线WL0、......、WLM上接收,并且输出OUTPUT0、.....、OUTPUTN分别在位线BL0、.....、BLN上生成。
图31示出神经元VMM阵列3100,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、......、INPUTM在控制栅极线CG0、.....、CGM上接收。输出OUTPUT0、.....、OUTPUTN分别在源极线SL0、......、SLN,上生成,其中每条源极线SLi耦接到列i中所有存储器单元的源极线端子。
图32示出VMM系统3200。VMM系统3200包括VMM阵列3201(其可基于先前讨论的VMM设计中的任一种,诸如VMM 900、1000、1100、1200和1320,或其他VMM设计)、低电压行解码器3202、高电压行解码器3203、参考单元低电压列解码器3204(在列方向上示出,这意味着其在行方向上提供输入到输出的转换)、位线多路复用器3205、控制逻辑3206、模拟电路3207、神经元输出块3208、输入VMM电路块3209、预解码器3210、测试电路3211、擦除-编程控制逻辑EPCTL 3212、模拟和高电压生成电路3213、位线PE驱动器3214、冗余阵列3215和3216、NVR扇区3217以及参考扇区3218。输入电路块3209用作从外部输入到存储器阵列的输入端子的接口。神经元输出块3208用作从存储器阵列输出到外部接口的接口。
低电压行解码器3202为读取操作和编程操作提供偏置电压,并且为高电压行解码器3203提供解码信号。高电压行解码器3203为编程操作和擦除操作提供高电压偏置信号。参考单元低电压列解码器3204为参考单元提供解码功能。位线PE驱动器3214为处于编程、验证和擦除操作期间的位线提供控制功能。模拟和高电压生成电路3213是提供各种编程、擦除、编程验证和读取操作所需的多个电压的共享偏置块。冗余阵列3215和3216提供用于替换缺陷阵列部分的阵列冗余。NVR(非易失性寄存器,也称为信息扇区)扇区3217是作为用于存储用户信息、设备ID、密码、安全密钥、修整位、配置位和制造信息的阵列扇区等的扇区。
图33示出了模拟神经存储器系统3300。模拟神经存储器系统3300包括宏块3301a、3301b、3301c、3301d、3301e、330If、3301g和3301h;神经元输出块(诸如求和器电路以及采样和保持S/H电路)3302a、3302b、3302c、3302d、3302e、3302f、3302g和3302h;以及输入电路块3303a、3303b、3303c、3303d、3303e、3303f、3303g和3304h。宏块3301a、3301b、3301c、3301d、3301e和3301f中的每一者为包含VMM阵列的VMM子系统,该VMM阵列包括非易失性存储器单元(诸如闪存存储器单元)的行和列。神经存储器子系统3333包括宏块3301、输入块3303和神经元输出块3302。神经存储器子系统3333可具有其自己的数字控制块。
模拟神经存储器系统3300还包括系统控制块3304、模拟低电压块3305、高电压块3306和定时控制电路3670,这些部件在下文中参照图36进一步详细讨论。
系统控制块3304可包括一个或多个微控制器内核诸如ARM/MIPS/RISC_V内核以处理通用控制功能和算术操作。系统控制块3304还可包括SIMD(单条指令多条数据)单元以利用单条指令对多个数据进行操作。该系统控制块可包括DSP内核。该系统控制块可包括用于执行函数诸如但不限于池化、平均、最小、最大、softmax、加、减、乘、除、对数、反对数、ReLu、sigmoid、tanh和数据压缩的硬件或软件。该系统控制块可包括执行诸如激活逼近器/量化器/归一化器功能的硬件或软件。该系统控制块可包括执行诸如输入数据逼近器/量化器/归一化器功能的能力。该系统控制块可包括执行激活逼近器/量化器/归一化器功能的硬件或软件。神经存储器子系统3333的控制块可包括系统控制块3304的类似元件,诸如微控制器内核、SIMD内核、DSP内核和其他功能单元。
在一个实施方案中,神经元输出块3302a、3302b、3302c、3302d、3302e、3302f、3302g和3302h各自包括缓冲(例如,运算放大器)低阻抗输出型电路,该电路可驱动长且可配置的互连器。在一个实施方案中,输入电路块3303a、3303b、3303c、3303d、3303e、3303f、3303g和3303h各自提供求和高阻抗电流输出。在另一个实施方案中,神经元输出块3302a、3302b、3302c、3302d、3302e、3302f、3302g和3302h各自包括激活电路,在这种情况下,需要附加的低阻抗缓冲器来驱动输出。
在另一个实施方案中,神经元输出块3302a、3302b、3302c、3302d、3302e、3302f、3302g和3302h各自包括输出数字位而非模拟信号的模数转换块。在该实施方案中,输入电路块3303a、3303b、3303c、3303d、3303e、3303f、3303g和3303h各自包括从相应的神经元输出块接收数字位并将该数字位转换为模拟信号的数字-模拟转换块。
因此,神经元输出块3302a、3302b、3302c、3302d、3302e、3302f、3302g和3302h从宏块3301a、3301b、3301c、3301d、3301e和3301f接收输出电流,并且任选地将该输出电流转换为模拟电压、数字位或一个或多个数字脉冲,其中每个脉冲的宽度或脉冲数量响应于输出电流的值而变化。类似地,输入电路块3303a、3303b、3303c、3303d、3303e、3303f、3303g和3303h任选地接收模拟电流、模拟电压、数字位或数字脉冲,其中每个脉冲的宽度或脉冲数量响应于输出电流的值而变化,并且将模拟电流提供到宏块3301a、3301b、3301c、3301d、3301e和3301f。输入电路块3303a、3303b、3303c、3303d、3303e、3303f、3303g和3303h任选地包括电压-电流转换器、用于对输入信号中的数字脉冲的数目或输入信号中的数字脉冲的宽度的长度进行计数的模拟或数字计数器、或数模转换器。
任选地,当神经元输出块3302a、3302b、3302c、3302d、3302e、3302f、3302g和3302h将输出电流转换为模拟电压、数字位或一个或多个数字脉冲时,它们可应用可编程增益。这可称为可编程神经元。
图59示出可编程神经元输出块5900的示例,该可编程神经元输出块从VMM阵列即增益配置5901接收输出神经元电流Ineu,并且生成输出5902,该输出表示具有增益G的输出神经元电流Ineu,其中G的值响应于增益配置5901而设置。增益配置5901可以是模拟信号或数字位。在一个实施方案中,可编程神经元输出块5900包括增益控制电路5903,该增益控制电路继而包括由增益配置5901控制以生成增益G的可变电阻器5904或可变电容器5905。输出5902可以是模拟电压、模拟电流、数字位或一个或多个数字脉冲。在一些实施方案中,增益配置5901用于修整可编程神经元输出块5900的增益G,以补偿不期望的现象诸如电流泄露。
任选地,每个可编程神经元输出块5900可具备不同的增益配置5901。例如,这将允许在神经网络的不同层处实现不同的增益(诸如用于缩放阵列输出)。
在另一个实施方案中,增益配置5901部分地取决于例如意指启用多少行以生成输出神经元电流Ineu的输入大小。
在另一个实施方案中,增益配置5901部分地取决于所有行的输入到VMM阵列的值。例如,对于VMM阵列的8位行输入,作为输入对于一行最大值是256(2^8),对于4行最大值是1024等。例如,如果启用256行,则作出关于这些行的总值的确定并且响应于该值而修改增益配置5901。
在另一个实施方案中,增益配置5901取决于输出神经元范围。例如,如果输出神经元电流Ineu在第一范围内,则通过增益配置5901施加第一增益G1;如果输出神经元电流Ineu在第二范围内,则通过增益配置5901施加第二增益G2。虽然这一点已经关于范围进行了描述,但本领域技术人员将认识到,可不受限制地实现更大数量的范围。
长短期存储器
现有技术包括被称为长短期存储器(LSTM)的概念。LSTM单元通常用于神经网络中。LSTM允许神经网络在预定的任意时间间隔内记住信息并在后续操作中使用该信息。常规的LSTM单元包括单元、输入栅、输出栅和忘记栅。该三个栅调控进出单元的信息流以及信息在LSTM中被记住的时间间隔,VMM在LSTM单元中特别有用。
图16示出示例性LSTM 1600。该示例中的LSTM 1600包括单元1601、1602、1603和1604。单元1601接收输入矢量x0并生成输出矢量h0和单元状态矢量c0。单元1602接收输入矢量x1、来自单元1601的输出矢量(隐藏状态)h0和来自单元1601的单元状态c0,并生成输出矢量h1和单元状态矢量c1。单元1603接收输入矢量x2、来自单元1602的输出矢量(隐藏状态)h1和来自单元1602的单元状态c1,并生成输出矢量h2和单元状态矢量c2。单元1604接收输入矢量x3、来自单元1603的输出矢量(隐藏状态)h2和来自单元1603的单元状态c2,并生成输出矢量h3。可以使用另外的单元,并且具有四个单元的LSTM仅仅是示例。
图17示出可用于图16中的单元1601、1602、1603和1604的LSTM单元1700的示例性具体实施。LSTM单元1700接收输入矢量x(t)、来自前一单元的单元状态矢量c(t-1)和来自前一单元的输出矢量h(t-1),并生成单元状态矢量c(t)和输出矢量h(t)。
LSTM单元1700包括sigmoid函数设备1701、1702和1703,每个sigmoid函数设备应用0至1之间的一个数字来控制允许输入矢量中的每个分量有多少通过到达输出矢量。LSTM单元1700还包括用于将双曲线正切函数应用于输入矢量的tanh设备1704和1705、用于将两个矢量乘在一起的乘法器设备1706、1707和1708以及用于将两个矢量加在一起的加法设备1709。输出矢量h(t)可被提供给系统中的下一个LSTM单元,或者其可被访问用于其他目的。
图18示出LSTM单元1800,该LSTM单元为LSTM单元1700的具体实施的示例。为了方便读者,在LSTM单元1800中使用与LSTM单元1700相同的编号。sigmoid函数设备1701、1702和1703以及tanh设备1704各自包括多个VMM阵列1801和激活电路块1802。因此,可以看出,VMM阵列在某些神经网络系统中使用的LSTM单元中特别有用。乘法器设备1706、1707和1708以及加法设备1709以数字方式或模拟方式实施。激活函数块1802可以数字方式或模拟方式实施。
LSTM单元1800的另选形式(以及LSTM单元1700的具体实施的另一示例)在图19中示出。在图19中,sigmoid函数设备1701、1702和1703以及tanh设备1704以时分复用方式共享相同的物理硬件(VMM阵列1901和激活函数块1902)。LSTM单元1900还包括将两个矢量乘在一起的乘法器设备1903,将两个矢量加在一起的加法设备1908,tanh设备1705(其包括激活电路块1902),当从sigmoid函数块1902输出值i(t)时存储i(t)的寄存器1907,当值f(t)*c(t-1)通过多路复用器1910从乘法器设备1903输出时存储该值的寄存器1904,当值i(t)*u(t)通过多路复用器1910从乘法器设备1903输出时存储该值的寄存器1905,当值o(t)*c~(t)通过多路复用器1910从乘法器设备1903输出时存储该值的寄存器1906,以及多路复用器1909。
LSTM单元1800包含多组VMM阵列1801和相应的激活函数块1802,LSTM单元1900仅包含一组VMM阵列1901和激活函数块1902,它们用于表示LSTM单元1900的实施方案中的多个层。LSTM单元1900将需要比LSTM 1800少的空间,因为与LSTM单元1800相比,LSTM单元1900只需要其1/4的空间用于VMM和激活函数块。
还可理解,LSTM单元通常将包括多个VMM阵列,每个VMM阵列需要由VMM阵列之外的某些电路区块(诸如求和器和激活电路区块以及高电压生成区块)提供的功能。为每个VMM阵列提供单独的电路区块将需要半导体设备内的大量空间,并且将在一定程度上是低效的。
栅控递归单元
模拟VMM具体实施可用于栅控递归单元(GRU)系统。GRU是递归神经网络中的栅控机构。GRU类似于LSTM,不同的是GRU单元一般包含比LSTM单元更少的部件。
图20示出示例性GRU 2000。该示例中的GRU 2000包括单元2001、2002、2003和2004。单元2001接收输入矢量x0并生成输出矢量h0。单元2002接收输入矢量x1、来自单元2001的输出矢量h0并生成输出矢量h1。单元2003接收输入矢量x2和来自单元2002的输出矢量(隐藏状态)h1并生成输出矢量h2。单元2004接收输入矢量x3和来自单元2003的输出矢量(隐藏状态)h2并生成输出矢量h3。可以使用另外的单元,并且具有四个单元的GRU仅仅是示例。
图21示出可用于图20的单元2001、2002、2003和2004的GRU单元2100的示例性具体实施。GRU单元2100接收输入矢量x(t)和来自前一个GRU单元的输出矢量h(t-1),并生成输出矢量h(t)。GRU单元2100包括sigmoid函数设备2101和2102,每个sigmoid函数设备将介于0和1之间的数字应用于来自输出矢量h(t-1)和输入矢量x(t)的分量。GRU单元2100还包括用于将双曲线正切函数应用于输入矢量的tanh设备2103,用于将两个矢量相乘在一起的多个乘法器设备2104、2105和2106,用于将两个矢量相加在一起的加法设备2107,以及用于从1中减去输入以生成输出的互补设备2108。
图22示出GRU单元2200,该GRU单元为GRU单元2100的具体实施的示例。为了方便读者,GRU单元2200中使用与GRU单元2100相同的编号。如图22所示,sigmoid函数设备2101和2102以及tanh设备2103各自包括多个VMM阵列2201和激活函数块2202。因此,可以看出,VMM阵列在某些神经网络系统中使用的GRU单元中特别有用。乘法器设备2104、2105和2106、加法设备2107以及互补设备2108以数字方式或模拟方式实施。激活函数块2202可以数字方式或模拟方式实施。
GRU单元2200的另选形式(以及GRU单元2300的具体实施的另一示例)在图23中示出。在图23中,GRU单元2300利用VMM阵列2301和激活函数块2302,该激活函数块在被配置为sigmoid函数时应用0与1之间的数字来控制允许输入矢量中的每个分量有多少通过到达输出矢量。在图23中,sigmoid函数设备2101和2102以及tanh设备2103以时分复用方式共享相同的物理硬件(VMM阵列2301和激活函数块2302)。GRU单元2300还包括将两个矢量乘在一起的乘法器设备2303,将两个矢量加在一起的加法设备2305,从1减去输入以生成输出的互补设备2309,多路复用器2304,当值h(t-1)*r(t)通过多路复用器2304从乘法器设备2303输出时保持该值的寄存器2306,当值h(t-1)*z(t)通过多路复用器2304从乘法器设备2303输出时保持该值的寄存器2307,以及当值h^(t)*(1-z(t))通过多路复用器2304从乘法器设备2303输出时保持该值的寄存器2308。
GRU单元2200包含多组VMM阵列2201和激活函数块2202,GRU单元2300仅包含一组VMM阵列2301和激活函数块2302,它们用于表示GRU单元2300的实施方案中的多个层。GRU单元2300将需要比GRU单元2200更少的空间,因为与GRU单元2200相比,GRU单元2300只需要其1/3的空间用于VMM和激活函数块。
还可以理解的是,GRU系统通常将包括多个VMM阵列,每个VMM阵列需要由VMM阵列之外的某些电路区块(诸如求和器和激活电路区块以及高电压生成区块)提供的功能。为每个VMM阵列提供单独的电路区块将需要半导体设备内的大量空间,并且将在一定程度上是低效的。
VMM阵列的输入可为模拟电平、二进制电平或数字位(在这种情况下,需要DAC来将数字位转换成适当的输入模拟电平),并且输出可为模拟电平、二进制电平或数字位(在这种情况下,需要输出ADC来将输出模拟电平转换成数字位)。
对于VMM阵列中的每个存储器单元,每个权重w可由单个存储器单元或由差分单元或由两个混合存储器单元(2个单元的平均值)来实现。在差分单元的情况下,需要两个存储器单元来将权重w实现为差分权重(w=w+-w-)。在两个混合存储器单元中,需要两个存储器单元来实现权重w作为两个单元的平均值。
输出电路
图34A示出应用于输出神经元以将输出神经元电流INEU3406转换为数字脉冲或数字输出位的积分型双混合斜率模数转换器(ADC)3400。
在一个实施方案中,ADC 3400将神经元输出块(诸如图32中的神经元输出块3302a、3302b、3302c、3302d、3302e、3302f、3302g和3302h)中的模拟输出电流转换为其宽度与神经元输出块中的模拟输出电流的量值成正比地变化的数字脉冲。包括积分型运算放大器3401和积分型电容器3402的积分器相对于参考电流IREF 3407对存储器阵列电流INEU3406(其为输出神经元电流)进行积分。
任选地,IREF 3407可包括温度系数为0或温度系数跟踪神经元电流INEU3406的带隙滤波器。后一种温度系数任选地可从包含在测试阶段期间确定的值的参考阵列获得。
任选地,可在电路处于或高于工作温度时执行校准步骤,以抵消阵列或控制电路中存在的任何电流泄漏,然后可从图34B或图35B中的Ineu中减去该偏移值。
在初始化阶段期间,开关3408闭合。然后,Vout 3403和运算放大器3401的负端子的输入将变为VREF。此后,如图34B所示,开关33408打开,并且在固定时间段tref期间,神经元电流INEU3406向上积分。在固定时间段tref期间,Vout上升,并且其斜率随着神经元电流变化而变化。此后,在时间段tmeas期间,恒定参考电流IREF在时间段tmeas期间(在此期间Vout下降)向下积分,其中tmeas是将Vout向下积分到VREF所需的时间。
当Vout>VREFV时,输出EC 3405将为高,反之则为低。因此,EC3405生成脉冲,该脉冲的宽度反映时间段tmeas,该时间段继而与电流INEU3406成正比。在图34B中,EC3405在tmeas=Ineu1的示例中被示出为波形3410,在tmeas=Ineu2的示例中被示出为波形3412。因此,输出神经元电流INEU3406被转换为数字脉冲EC 3405,其中数字脉冲EC 3405的宽度与输出神经元电流INEU3406的量值成正比地变化。
电流INEU3406=tmeas/tref*IREF。例如,对于所需的10位输出位分辨率,tref相当于1024个时钟周期的时间段。根据INEU3406的值和Iref的值,时间段tmeas在等于0至1024个时钟周期间变化。图34B示出INEU3406的两个不同值的示例,其中一个INEU3406=Ineu1,而另一个INEU3406=Ineu2。因此,神经元电流INEU3406影响充电的速率和斜率。
任选地,输出脉冲EC 3405可被转换成具有均匀周期的一系列脉冲,以传输至电路的下一级,诸如另一个VMM阵列的输入块。在时间段tmeas开始时,将输出EC 3405连同参考时钟3441输入到与门3440中。在Vout>VREF的时间段期间,输出将是脉冲序列3442(其中脉冲序列3442中脉冲的频率与时钟3441的频率相同)。脉冲数与时间段tmeas成正比,该时间段与电流INEU3406成正比。
任选地,脉冲序列3443可被输入到计数器3420,该计数器将对脉冲序列3442中的脉冲数进行计数并且将生成计数值3421,该计数值是脉冲序列3442中的脉冲数的数字计数,该数字计数与神经元电流INEU3406成正比。计数值3421包括一组数字位在另一个实施方案中,积分型双斜率ADC 3400可将神经元电流INEU3407转换为脉冲,其中该脉冲的宽度与神经元电流INEU3407的量值成反比。这种反转可以以数字或模拟方式完成,并被转换成一系列脉冲或数字位以用于输出到跟随电路。
图35A示出施加到输出神经元INEU3504以将单元电流转换为不同宽度的数字脉冲或一系列数字输出位的积分型双混合斜率ADC 3500。例如,ADC 3500可用于将神经元输出块(诸如图32中的神经元输出块3302a、3302b、3302c、3302d、3302e、3302f、3302g和3302h)中的模拟输出电流转换为一组数字输出位。包括积分型运算放大器3501和积分型电容器3502的积分器相对于参考电流IREF 3503对神经元电流INEU3504进行积分。开关3505可闭合以重置Vout。
在初始化阶段期间,开关3505闭合,并且Vout被充电到电压VBIAS。此后,如图35B所示,开关3505打开,并且在固定时间tref期间,单元电流INEU 3504向上积分。此后,参考电流IREF 3503向下积分一段tmeas时间,直到Vout降至零。电流INEU3504=tmeas Ineu/treUIREF。例如,对于所需的10位输出位分辨率,tref相当于1024个时钟周期的时间段。根据INEU3504和Iref的值,时间段tmeas从等于O至1024个时钟周期间变化。图35B示出了两个不同Ineu值的示例,一个具有电流Ineul,另一个具有电流Ineu2。因此,神经元电流INEU3504影响充电和放电的速率和斜率。
当Vout>VREF时,输出3506将为高,反之则为低。因此,输出3506生成脉冲,该脉冲的宽度反映时间段tmeas,该时间段继而与电流INEU3404成正比。在图35B中,输出3506在tmeas=Ineu1的示例中被示出为波形3512,在tmeas=Ineu2的示例中被示出为波形3515。因此,输出神经元电流INEU3504被转换为脉冲即输出3506,其中该脉冲的宽度与输出神经元电流INEU3504的量值成正比地变化。
任选地,输出3506可被转换成具有均匀周期的一系列脉冲,以传输至电路的下一级,诸如另一VMM阵列的输入块。在时间段tmeas开始时,将输出3506连同参考时钟3507输入到与门3508中。在Vout>VREF的时间段期间,输出将是脉冲序列3509(其中脉冲序列3509中脉冲的频率与参考时钟3507的频率相同)。脉冲数与时间段tmeas成正比,该时间段与电流INEU3504成正比。
任选地,脉冲序列3509可被输入到计数器3510,该计数器将对脉冲序列3509中的脉冲数进行计数并且将生成计数值3511,该计数值为脉冲序列3509中的脉冲数的数字计数,该数字计数如波形3514、3517所示与神经元电流INEU3504成正比。计数值3511包括一组数字位。
在另一个实施方案中,积分型双斜率ADC 3500可将神经元电流INEU3504转换为脉冲,其中该脉冲的宽度与神经元电流INEU3504的量值成反比。这种反转可以以数字或模拟方式完成,并被转换成一个或多个脉冲或数字位以用于输出到跟随电路。
图35B分别示出INEU3504的两个神经元电流值Ineu1和Ineu2的计数值3511(数字位)。
图36A和36B示出了与在操作期间在VMM中执行的示例性方法3600和3650相关联的波形。在每种方法3600和3650中,字线WL0、WL1和WL2接收多种不同的输入,这些输入任选地可被转换成模拟电压波形以施加到字线。在这些示例中,电压VC表示分别在图34A和图35A中的积分型电容器3402或3502上的电压,该积分型电容器在第一VMM的输出块中的ADC3400或3500中;OT脉冲(=″1″)表示使用积分双斜率ADC 3400或3500捕获神经元的输出(其与神经元的值成正比)的时间段。如参考图34和图35所示,输出块的输出可以是宽度与第一VMM的输出神经元电流成正比地变化变化的脉冲,或者其可以是具有均匀宽度的一系列脉冲,其中脉冲数量与第一VMM的神经元电流成正比地变化。然后可将那些脉冲作为输入施加到第二VMM。
在方法3600期间,将该系列脉冲(诸如脉冲序列3442或脉冲序列3509)或将来源于该系列脉冲的模拟电压施加到第二VMM阵列的字线中。另选地,可将该系列脉冲或来源于该系列脉冲的模拟电压施加到第二VMM阵列内的单元的控制栅。脉冲(或时钟周期)的数量直接对应于输入的量值。在该特定示例中,WL1上的输入的量值是WL0上的4倍(4个脉冲对比1个脉冲)。
在方法3650期间,将不同宽度的单个脉冲(诸如EC 3405或输出3506)或来源于单个脉冲的模拟电压施加到第二VMM阵列的字线中,但该脉冲具有可变的脉冲宽度。另选地,可将该脉冲或来源于该脉冲的模拟电压施加到控制栅。单个脉冲的宽度直接对应于输入的量值。例如,WL 1上的输入的量值是WL0上的4倍(WL1的脉冲宽度是WL0的脉冲宽度的4倍)。
此外,参考图36C,通过管理VMM阵列的输出接口和输入接口和依次拆分各种输出或各种输入的转换,定时控制电路3670可用于管理VMM系统的功率。图56示出功率管理方法5600。第一步:接收用于矢量-矩阵乘法阵列的多个输入(步骤5601);第二步:将该多个输入组织成多组输入(步骤5602);第三步:将该多组输入中的每组依次提供给该阵列(步骤5603)。
功率管理方法5600的实施方案如下。可对VMM系统(诸如VMM阵列的字线或控制栅)随时间推移依次地施加输入。例如,对于具有512个字线输入的VMM阵列,字线输入可分为4组:WL0-127、WL128-255、WL256-383和WL383-511。可以在不同时间启用每个组,并且可以对对应于四组字线中的一组执行输出读取操作(将神经元电流转换为数字位),诸如通过图34至图36中的输出积分型电路。然后,在依次读取四个组中的每一个组之后,将输出数字位结果组合在一起。该操作可由定时控制电路3670控制。
在另一个实施方案中,定时控制电路3670在矢量-矩阵乘法系统(诸如图33中的模拟神经存储器系统3300)中执行功率管理。定时控制电路3670可诸如通过在不同时间启用输入电路块3303a、3303b、3303c、3303d、3303e、3303f、3303g和3303h来致使输入随时间推移依次施加到VMM子系统3333。类似地,定时控制电路3670可诸如通过在不同时间启用神经元输出块3302a、3302b、3302c、3302d、3302e、3302f、3302g和3302h来致使来自VMM子系统333的输出随时间推移依次读取。
图57示出功率管理方法5700。第一步:从矢量-矩阵乘法阵列接收多个输出(步骤5701)。第二步:将来自该阵列的多个输出组织成多组输出(步骤5702)。第三步:将该多组输出中的每组依次提供给转换器电路(步骤5703)。
功率管理方法5700的实施方案如下。功率管理可由定时控制电路3670通过在不同时间依次读取神经元输出组来实现,即,通过跨多个神经元输出(位线)复用输出电路(诸如输出ADC电路)来实现。位线可被放置到不同的组中,并且输出电路在定时控制电路3670的控制下按照顺序一次在一个组上操作。
图58示出功率管理方法5800。第一步:在包括多个阵列的矢量-矩阵乘法系统中接收多个输入。第二步:依次启用该多个阵列中的一个或多个阵列以接收该多个输入中的一些或全部输入(步骤5802)。
功率管理方法5800的实施方案如下。定时控制电路3670可一次在一个神经网络层上操作。例如,如果在第一VMM阵列中表示一个神经网络层,在第二VMM阵列中表示第二个神经网络层,则可一次在一个VMM阵列上依次执行输出读取操作(诸如神经元输出被转换成数字位的情况),从而管理VMM系统的功率。
在另一个实施方案中,定时控制电路3670可通过依次启用如图33所示的多个神经存储器子系统3333或多个宏3301来操作。
在另一个实施方案中,定时控制电路3670可通过依次启用如图33所示的多个神经存储器子系统3333或多个宏3301而不在非活动期间(即,打开和闭合依次启用之间的时间段)释放阵列偏置(例如,字线WL和/或位线BL上的偏置,用于将控制栅CG作为输入和位线BL作为输出,或控制栅CG和/或位线BL上的偏置,用于将字线WL作为输入和位线BL作为输出)来操作。这是为了节省在一个或多个读取操作期间(例如,在推断或分类操作期间)要多次使用的阵列偏置的不必要的放电和充电的功率。
图37至图44示出可在VMM输入块(诸如图33中的输入电路块3303a、3303b、3303c、3303d、3303e、3303f、3303g和3303h)或神经元输出块(诸如图33中的神经元输出块3302a、3302b、3302c、3302d、3302e、3302f、3302g和3302h)中使用的各种电路。
图37示出了脉冲-电压转换器3700,其任选地可用于将积分型双斜率ADC 3400或3500生成的数字脉冲转换成例如可作为VMM存储器阵列的输入(例如,在WL或CG线上)被施加的电压。脉冲-电压转换器3700包括生成参考电流IREF的参考电流生成器3701、电容器3702和开关3703。输入用于控制开关3703。当在输入端上接收到脉冲时,该开关闭合,并且电荷在电容器3702上累积,使得输入信号完成之后电容器3702的电压将指示所接收的脉冲数。电容器任选地可为字线或控制栅电容。
图38示出了电流-电压转换器3800,其任选地可用于将神经元输出电流转换成例如可作为VMM存储器阵列的输入(例如,在WL或CG线上)被施加的电压。电流-电压转换器3800包括电流生成器3801和可变电阻器3802,该电流发生器在此处表示所接收的神经元电流Ineu(或Iin)。输出Vout将随着神经元电流增大而增大。可变电阻器3802可根据需要进行调节以增大或减小Vout的最大范围。
图39示出了电流-电压转换器3900,其任选地可用于将神经元输出电流转换成例如可作为VMM存储器阵列的输入(例如,在WL或CG线上)被施加的电压。电流-电压转换器3900包括运算放大器3901、电容器3902、开关3903、开关3904和此处表示神经元电流ICELL的电流源3905。在操作期间,开关3903将打开,开关3904将闭合。输出Vout的振幅将与神经元电流ICELL 3905的量值成正比地增加。
图40示出了电流-对数电压转换器4000,其任选地可用于将神经元输出电流转换成例如可作为VMM存储器阵列的输入(例如,在WL或CG线上)被施加的对数电压。电流-对数电压转换器4000包括存储器单元4001、开关4002(其选择性地将存储器单元4001的字线端子连接到生成Vout的节点)以及此处表示神经元电流Iin的电流源4003。在操作期间,开关4002将闭合,输出Vout的振幅将与神经元电流iIN的量值成正比地增加。
图41示出了电流-对数电压转换器4100,其任选地可用于将神经元输出电流转换成例如可作为VMM存储器阵列的输入(例如,在WL或CG线上)被施加的对数电压。电流-对数电压转换器4100包括存储器单元4101、开关4102(其将存储器单元4101的控制栅端子选择性地连接到生成Vout的节点)以及此处表示神经元电流Iin的电流源4103。在操作期间,开关4102将闭合,并且输出Vout的振幅将与神经元电流Iin的量值成正比地增加。
图42示出数字数据-电压转换器4200,该数字数据-电压转换器任选地可用于将数字数据(即,为0s和1s)转换为例如可作为VMM存储器阵列的输入(例如,在WL或CG线上)施加的电压。数字数据-电压转换器4200包括电容器4201、可调节电流源4202(这里是来自存储器单元的参考阵列的电流)和开关4203。数字数据控制开关4203。例如,开关4203可在数字数据为″1″时闭合,在数字数据为″0″时打开。在电容器4201上累积的电压将为输出OUT并且将对应于数字数据的值。任选地,电容器可以是字线或控制栅电容。
图43示出数字数据-电压转换器4300,其任选地可用于将数字数据(即,0s和1s的数据)转换成例如可作为VMM存储器阵列的输入(例如,在WL或CG线上)被施加的电压。数字数据-电压转换器4300包括可变电阻器4301、可调节电流源4302(这里是来自存储器单元的参考阵列的电流)和开关4303。数字数据控制开关4303。例如,开关4303可在数字数据为″1″时闭合并且在数字数据为″0″时打开。输出电压将对应于数字数据的值。
图44示出了参考阵列4400,其可用于提供图42和43中的可调电流源4202和4302的参考电流。
图45至图47示出了用于在编程操作之后验证VMM中的闪存存储器单元包含与预期要存储在该闪存存储器单元中的w值对应的适当电荷的部件。
图45示出了数字比较器4500,其从多个编程的闪存存储器单元接收作为数字输入的一组参考w值和所感测的w数字值。如果存在失配,则数字比较器4500生成标记,这将表示一个或多个闪存存储器单元尚未用正确的值编程。
图46示出了与转换器4600协作的图45的数字比较器4500。所感测的w值由转换器4600的多个实例化提供。转换器4600从闪存存储器单元接收单元电流ICELL并将该单元电流转换成数字数据,该数字数据可使用前述转换器中的一者或多者(诸如ADC 3400或3500)提供给数字比较器4500。
图47示出了模拟比较器4700,其从多个编程的闪存存储器单元接收作为模拟输入的一组参考w值和所感测的w模拟值。如果存在失配,则模拟比较器4700生成标记,这将表示一个或多个闪存存储器单元尚未用正确的值编程。
图48示出了与转换器4800协作的图47的模拟比较器4700。所感测的w值由转换器4800提供。转换器4800接收所感测的w值的数字值并将它们转换成模拟信号,该模拟信号可使用先前所述的转换器(诸如脉冲-电压转换器3700、数字数据-电压转换器4200或数字数据-电压转换器4300)中的一者或多者提供给模拟比较器4700。
图49示出了输出电路4900。应当理解,如果神经元的输出被数字化(诸如通过使用如前所述的积分型双斜率ADC 3400或3500),则仍然可能需要对神经元输出执行激活函数操作。图49示出了一个实施方案,其中激活在神经元输出被转换成可变宽度的脉冲或脉冲序列之前发生。输出电路4900包括激活电路4901和电流-脉冲转换器4902。激活电路从各种闪存存储器单元接收Ineuron值并生成Ineuron_act,其为所接收的Ineuron值的总和。然后,电流-脉冲转换器4902将Ineuron_act转换为一系列数字脉冲和/或表示一系列数字脉冲的计数的数字数据。可代替转换器4902使用先前所述的其他转换器(诸如积分型双斜率ADC 3400或3500)。
在另一个实施方案中,激活可在数字脉冲生成之后发生。在该实施方案中,使用由激活映射单元5010实现的激活映射表或函数将数字输出位映射到新的一组数字位。此类映射的示例在图50和图51中以图形方式示出。激活数字映射可模拟sigmoid、tanh、ReLu或任何激活函数。此外,激活数字映射可量化输出神经元。
图52示出了电荷求和器5200的示例,该电荷求和器可用于在编程操作之后的验证操作期间对VMM的输出进行求和以获得单个模拟值,该模拟值表示输出并且随后可被任选地转换为数字位值。电荷求和器5200包括电流源5201和采样保持电路,该采样保持电路包括开关5202和采样保持(S/H)电容器5203。如针对4位数字值的示例所示,存在4个S/H电路以保持来自4个评估脉冲的值,其中这些值在过程结束时相加。S/H电容器5203被选择为具有与该S/H电容器的2^n*DINn位位置相关联的比例;例如,C_DIN3=x8 Cu,C_DIN2=x4 Cu,C_DIN1=x2 Cu,DIN0=x1 Cu。电流源5201也被相应地赋予比例。
图53示出了可用于在编程操作之后的验证操作期间对VMM的输出进行求和的电流求和器5300。电流求和器5300包括电流源5301、开关5302、开关5303和5304以及开关5305。如针对4位数字值的示例所示,存在电流源电路以保持来自4个评估脉冲的值,其中这些值在过程结束时相加。电流源基于2^n*DINn位位置被赋予比例;例如,I_DIN3=x8 Icell单位,I_DIN2=x4Icell单位,I_DIN1=x2 Icell单位,I_DIN0=x1 Icell单位。
图54示出数字求和器5400,该数字求和器接收多个数字值,将它们加在一起并且生成表示输入的总和的输出DOUT。数字求和器5400可在编程操作之后的验证操作期间使用。如针对4位数字值的示例所示,存在数字输出位以保持来自4个评估脉冲的值,其中这些值在过程结束时相加。数字输出基于2^n*DINn位位置例如DOUT3=x8 DOUT0,_DOUT2=x4DOUT1,I_DOUT1=x2 DOUT0,I_DOUT0=DOUT0在数字上按比例缩放。
图55A和图55B示出要在输入块、行解码器或输出块内使用的数字位-脉冲宽度转换器5500。来自数字位-脉冲宽度转换器5500的脉冲宽度输出与上文关于图36B所述的值成正比。数字位-脉冲宽度转换器包括二进制计数器5501。二进制计数器5501的状态Q[N:0]可由加载序列中的串行或并行数据加载。行控制逻辑5510输出电压脉冲,该电压脉冲具有与从块诸如图34和图35中的积分型ADC提供的数字数据输入的值成正比的脉冲宽度。
图55B示出了输出脉冲宽度的波形,该输出脉冲宽度具有与其数字位值成正比的宽度。首先,反转所接收的数字位中的数据,并将反转的数字位串行地或并行地加载到计数器5501中。然后由行控制逻辑5510生成行脉冲宽度,该行脉冲宽度如波形5520所示,通过以二进制方式计数直到其达到最大计数器值。
任选地,脉冲序列-脉冲转换器可用于将包括脉冲序列(诸如图34B中的信号3411或3413和图35B中的信号3513或3516)的输出转换为宽度与脉冲序列中的脉冲数成正比地变化的单脉冲(诸如图36B中的信号WL0、WL1和WLe),该脉冲序列用作VMM阵列的将施加到VMM阵列内的字线或控制栅的输入。脉冲序列-脉冲转换器的示例是具有控制逻辑的二进制计数器。
4位数字输入的示例如表9所示:
表9:数字输入位到输出脉冲宽度
另一个实施方案使用向上二进制计数器和数字比较逻辑。即,通过计数向上二进制计数器直到该二进制计数器的数字输出与数字输入位相同来生成输出脉冲宽度。
另一个实施方案使用向下二进制计数器。首先,将向下二进制计数器串行或并行地加载有数字数据输入模式。然后通过倒计向下二进制计数器直到该二进制计数器的数字输出达到最小值(即″0″逻辑状态)来生成输出脉冲宽度。
在另一个实施方案中,模数转换器的分辨率可通过控制信号进行配置。图60示出可编程ADC 6000。可编程ADC 6000接收模拟信号,诸如输出神经元电流Ineu,并且将该模拟信号转换成包括一组数字位的输出6002。可编程ADC 600接收配置6001,该配置可以是模拟控制信号或一组数字控制位。在一个示例中,输出6002的分辨率由配置6001确定。例如,如果配置6001具有第一值,则输出可以是一组4位,但如果配置6001具有第二值,则输出可以是一组8位。
可使用粗略电平感测电路(未示出)来对多个阵列输出电流进行采样,并且基于该电流的值,可配置增益(缩放因子)。
增益可针对每个特定神经网络来配置,并且增益可在神经网络训练期间设置以获得最佳性能。
在另一个实施方案中,ADC可以是上述架构的混合。例如,第一ADC可以是SAR ADC和斜率ADC的混合;第二ADC可以是SAR ADC和斜坡ADC的混合;并且第三ADC可以是算法ADC和斜坡ADC的混合;等。
图61A示出混合输出转换块6100。输出块6100接收差分信号Iw+和IW-。逐次逼近寄存器ADC 6101接收差分信号Iw+和IW-,并且确定最对应于由Iw+和IW-表示的模拟值的较高阶数字位(例如,8位数字表示中的最高有效位B7-B4)。一旦SAR ADC 6101确定那些较高阶位,就将表示信号Iw+和IW-减去由较高阶位表示的值的模拟信号提供到串行ADC块6102(诸如斜率ADC或斜坡ADC),该串行ADC块然后确定对应于该差的较低阶位(例如,8位数字表示中的最低有效位B3-B0)。然后以串行方式组合较高阶位和较低阶位,以产生表示输入信号Iw+和IW-的数字输出。
图61B示出输出块6110。输出块6110接收差分信号Iw+和IW-。算法ADC 6103确定对应于Iw+和IW-的较高阶位(例如,8位数字表示中的位B7-B4),并且串行ADC块6104然后确定较低阶位(例如,8位数字表示的位B3-B0)。
图61C示出输出块6120。输出块6120接收差分信号Iw+和IW-。输出块6120包括混合ADC,该混合ADC通过将(诸如图61A和61B中的)不同转换方案组合到一个电路中来将差分信号Iw+和IW-转换为数字位。
图62示出可配置串行ADC 6200。它包括积分器6270,该积分器将输出神经元电流Ineu积分到积分电容器6202(Cint)中。
在一个实施方案中,将VRAMP 6250提供到比较器6204的反相输入。在这种情况下,IREF 6251关断。通过斜升VRAMP 6250直到比较器6204切换极性为止来产生数字输出(计数值)6221,其中计数器6220从斜坡开始计数时钟脉冲直到比较器6204切换极性为止,此时计数器6220提供数字输出(计数值)6221。
在另一个实施方案中,将VREF 6255提供到比较器6204的反相输入。VOUT 6203由斜坡电流6251(IREF)斜降,直到VOUT 6203达到VREF 6255为止,此时EC 6205信号停用计数器6220的计数,此时计数器6220提供数字输出(计数值)6221。(n位)ADC 6200可被配置成具有较低精度(小于n位)或较高精度(大于n位),这取决于目标应用。精度的可配置性通过配置电容器6202的电容、电流6251(IREF)、VRAMP 6250的斜变速率或时钟6241的时钟频率等来实现。
在另一实施方案中,VMM阵列的ADC电路被配置成具有低于n位的精度,而另一VMM阵列的ADC电路被配置成具有高于这些位的高精度。
在另一个实施方案中,一个神经元电路的串行ADC电路6200的一个实例被配置成与下一神经元电路的串行ADC电路6200的另一实例组合,以例如通过组合串行ADC电路6200的两个实例的积分电容器6202来产生具有高于n位精度的ADC电路。
图63示出可配置神经元SAR(逐次逼近寄存器)ADC 6300。该电路是基于使用二进制电容器的电荷再分布的逐次逼近转换器,该逐次逼近转换器基于参考电压VREF将电压输入Vin转换为数字输出6306。该电路包括二进制电容器DAC(CDAC)6301、运算放大器/比较器6302、SAR逻辑和寄存器6303。如图所示,GndV 6304是低电压参考电平,例如接地电平。SAR逻辑和寄存器6303提供数字输出6306。可用加权参考电压或用输出校正来实施其它非二进制电容器结构。
图64示出流水线SAR ADC电路6400,该流水线SAR ADC电路可用于与下一个SARADC组合,以按流水线方式增加位数。SAR ADC电路6400包括二进制CDAC 6401、运算放大器/比较器6402、运算放大器/比较器6403以及SAR逻辑和寄存器6404。如图所示,GndV是低电压参考电平,例如接地电平。SAR逻辑和寄存器6404提供数字输出6406。Vin为输入电压并且VREF为接地电压。Vresidue由电容器6405产生,并作为输入提供至SAR ADC转换序列的下一级。
图65示出可用于以混合方式增加位数的混合SAR+串行ADC电路6500。SAR ADC电路6500包括二进制CDAC 6501、运算放大器/比较器6502以及SAR逻辑和寄存器6503。如图所示,GndV是低电压参考电平,例如,在SAR ADC操作期间的接地电平。SAR逻辑和寄存器6503提供数字输出。Vin为输入电压并且VREF为接地电压。VREFRAMP在串行ADC操作期间用作参考斜坡电压以取代到运算放大器/比较器6502的GndV输入。
混合ADC架构的其他实施方案是SAR ADC加∑ΔADC、闪存ADC加串行ADC、流水线ADC加串行ADC、串行ADC加SAR ADC以及其他架构。
图66示出算法ADC输出块6600。输出块6600包括如图所示配置的采样和保持电路6601、1位模数转换器6602、数模转换器6603、加法器6604、运算放大器6605以及开关6606和6607。
在另一个实施方案中,采样和保持电路用于到VMM阵列中每行的输入。例如,如果输入包括DAC,则DAC可包括采样和保持电路。
应当指出,如本文所用,术语″在…上方″和″在…上″两者包容地包括″直接在…上″(之间未设置中间材料、元件或空间)和″间接在…上″(之间设置有中间材料、元件或空间)。类似地,术语″相邻″包括″直接相邻″(之间没有设置中间材料、元件或空间)和″间接相邻″(之间设置有中间材料、元件或空间),″安装到″包括″直接安装到″(之间没有设置中间材料、元件或空间)和″间接安装到″(之间设置有中间材料、元件或空间),并且″电耦接至″包括″直接电耦接至″(之间没有将元件电连接在一起的中间材料或元件)和″间接电耦接至″(之间有将元件电连接在一起的中间材料或元件)。例如,″在衬底上方″形成元件可包括在两者间没有中间材料/元件的情况下在衬底上直接形成元件,以及在两者间有一个或多个中间材料/元件的情况下在衬底上间接形成元件。

Claims (14)

1.一种用于生成神经网络存储器阵列的输出的可编程神经元输出块,包括:
一个或多个输入节点,所述一个或多个输入节点用于从神经网络存储器阵列接收电流;和
增益配置电路,所述增益配置电路用于接收增益配置信号并且响应于所述增益配置信号而将增益因子应用于所接收的电流以生成输出。
2.根据权利要求1所述的可编程神经元输出块,其中所述增益配置信号包括模拟信号。
3.根据权利要求1所述的可编程神经元输出块,其中所述增益配置信号包括数字位。
4.根据权利要求1所述的可编程神经元输出块,其中所述增益配置电路包括由所述增益配置信号控制的可变电阻器。
5.根据权利要求1所述的可编程神经元输出块,其中所述增益配置电路包括由所述增益配置信号控制的可变电容器。
6.根据权利要求1所述的可编程神经元输出块,其中所述增益配置信号取决于从其接收所述电流的所述神经网络存储器阵列中启用的数目或行或列。
7.一种用于生成神经网络存储器阵列的输出的可编程神经元输出块,包括:
模数转换器,所述模数转换器用于接收来自所述神经网络存储器阵列的电流以及控制信号并且生成数字输出,其中所述数字输出的分辨率由所述控制信号确定。
8.根据权利要求7所述的可编程神经元输出块,其中所述控制信号包括模拟信号。
9.根据权利要求7所述的可编程神经元输出块,其中所述控制信号包括数字位。
10.一种用于生成神经网络存储器阵列的输出的可编程神经元输出块,包括:
混合模数转换器,所述混合模数转换器用于将所述神经网络存储器阵列的所述输出转换为数字输出,所述混合模数转换器包括:
第一模数转换器,所述第一模数转换器用于生成所述数字输出的第一部分;和
第二模数转换器,所述第二模数转换器用于生成所述数字输出的第二部分。
11.根据权利要求10所述的可编程神经元输出块,其中所述第一模数转换器包括逐次逼近寄存器模数转换器。
12.根据权利要求11所述的可编程神经元输出块,其中所述第二模数转换器包括串行模数转换器。
13.根据权利要求10所述的可编程神经元输出块,其中所述第一模数转换器包括算法模数转换器。
14.根据权利要求13所述的可编程神经元输出块,其中所述第二模数转换器包括串行模数转换器。
CN202180100017.2A 2021-07-05 2021-10-05 深度学习人工神经网络中模拟神经存储器的可编程输出块 Pending CN117581300A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/367,542 US11893478B2 (en) 2019-01-18 2021-07-05 Programmable output blocks for analog neural memory in a deep learning artificial neural network
US17/367,542 2021-07-05
PCT/US2021/053644 WO2023282923A1 (en) 2021-07-05 2021-10-05 Programmable output blocks for analog neural memory in a deep learning artificial neural network

Publications (1)

Publication Number Publication Date
CN117581300A true CN117581300A (zh) 2024-02-20

Family

ID=78414766

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180100017.2A Pending CN117581300A (zh) 2021-07-05 2021-10-05 深度学习人工神经网络中模拟神经存储器的可编程输出块

Country Status (4)

Country Link
EP (1) EP4367665A1 (zh)
KR (1) KR20240029074A (zh)
CN (1) CN117581300A (zh)
WO (1) WO2023282923A1 (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155802A (en) * 1987-12-03 1992-10-13 Trustees Of The Univ. Of Penna. General purpose neural computer
US5029130A (en) 1990-01-22 1991-07-02 Silicon Storage Technology, Inc. Single transistor non-valatile electrically alterable semiconductor memory device
US5537512A (en) * 1993-05-26 1996-07-16 Northrop Grumman Corporation Neural network elements
US6747310B2 (en) 2002-10-07 2004-06-08 Actrans System Inc. Flash memory cells with separated self-aligned select and erase gates, and process of fabrication
US11308383B2 (en) 2016-05-17 2022-04-19 Silicon Storage Technology, Inc. Deep learning neural network classifier using non-volatile memory array
US10984860B2 (en) * 2019-03-26 2021-04-20 Hewlett Packard Enterprise Development Lp Self-healing dot-product engine

Also Published As

Publication number Publication date
KR20240029074A (ko) 2024-03-05
TW202307741A (zh) 2023-02-16
WO2023282923A1 (en) 2023-01-12
EP4367665A1 (en) 2024-05-15

Similar Documents

Publication Publication Date Title
JP7340612B2 (ja) 深層学習人工ニューラルネットワークにおけるアナログニューラルメモリ用の電力管理
CN112868063B (zh) 深度学习人工神经网络中的模拟神经存储器的编程的精确调谐
TWI805909B (zh) 用於深度學習人工神經網路中之類比神經記憶體的可組態輸入塊及輸出塊與實體佈局
US11893478B2 (en) Programmable output blocks for analog neural memory in a deep learning artificial neural network
CN114402391A (zh) 深度学习人工神经网络中的模拟神经存储器的编程的精确调谐
CN114651307A (zh) 用于人工神经网络中的模拟神经存储器的精确编程方法和装置
CN116635869A (zh) 深度学习人工神经网络中模拟神经存储器的数字输出机制
TWI841981B (zh) 深度學習人工神經網路中類比神經記憶體的可程式輸出區塊
CN117581300A (zh) 深度学习人工神经网络中模拟神经存储器的可编程输出块
TWI814383B (zh) 深度學習人工神經網路中類比神經記憶體的輸出電路
JP2024526147A (ja) 深層学習人工ニューラルネットワークにおけるアナログニューラルメモリ用のプログラム可能出力ブロック
CN116615784A (zh) 深度学习人工神经网络中模拟神经存储器的输入和数字输出机制
WO2022245384A1 (en) Output circuit for analog neural memory in a deep learning artificial neural network

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