CN117751406A - 可配置为以模拟形式或数字形式存储神经存储器权重数据的混合存储器系统 - Google Patents
可配置为以模拟形式或数字形式存储神经存储器权重数据的混合存储器系统 Download PDFInfo
- Publication number
- CN117751406A CN117751406A CN202180100746.8A CN202180100746A CN117751406A CN 117751406 A CN117751406 A CN 117751406A CN 202180100746 A CN202180100746 A CN 202180100746A CN 117751406 A CN117751406 A CN 117751406A
- Authority
- CN
- China
- Prior art keywords
- array
- analog
- output
- memory cells
- mode
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 294
- 230000001537 neural effect Effects 0.000 title claims abstract description 51
- 210000004027 cell Anatomy 0.000 description 257
- 230000006870 function Effects 0.000 description 58
- 239000013598 vector Substances 0.000 description 52
- 210000000225 synapse Anatomy 0.000 description 36
- 210000002569 neuron Anatomy 0.000 description 35
- 238000013528 artificial neural network Methods 0.000 description 28
- 239000011159 matrix material Substances 0.000 description 27
- 238000003491 array Methods 0.000 description 24
- 230000004913 activation Effects 0.000 description 23
- 239000000758 substrate Substances 0.000 description 12
- 239000000463 material Substances 0.000 description 10
- 238000000034 method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 102100036301 C-C chemokine receptor type 7 Human genes 0.000 description 6
- 102100031658 C-X-C chemokine receptor type 5 Human genes 0.000 description 6
- 101000716065 Homo sapiens C-C chemokine receptor type 7 Proteins 0.000 description 6
- 101000922405 Homo sapiens C-X-C chemokine receptor type 5 Proteins 0.000 description 6
- 238000011176 pooling Methods 0.000 description 6
- 238000013507 mapping Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 230000006403 short-term memory Effects 0.000 description 4
- 101100165540 Arabidopsis thaliana BLH9 gene Proteins 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000007787 long-term memory Effects 0.000 description 3
- 210000005036 nerve Anatomy 0.000 description 3
- 206010040736 Sinoatrial block Diseases 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 150000004767 nitrides Chemical class 0.000 description 2
- 210000004205 output neuron Anatomy 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 230000000946 synaptic effect Effects 0.000 description 2
- 230000005641 tunneling Effects 0.000 description 2
- 238000010396 two-hybrid screening Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 229910052799 carbon Inorganic materials 0.000 description 1
- 210000003169 central nervous system Anatomy 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 239000002784 hot electron Substances 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000002493 microarray Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Non-Volatile Memory (AREA)
Abstract
公开了混合存储器系统的许多实施方案。混合存储器可在用于模拟神经存储器系统中时以模拟形式存储阵列中的权重数据,或在用于数字神经存储器系统中时以数字形式存储这些权重数据。输入电路和输出电路能够支持这两种形式的权重数据。
Description
优先权声明
本申请要求2021年8月11日提交的名称为″可配置为以模拟形式或数字形式存储神经存储器权重数据的混合存储器系统(Hybrid Memory System Configurable to StoreNeural Memory Weight Data in Analog Form or Digital Form)″的第63/232,149号美国临时申请和2021年11月4日提交的名称为″可配置为以模拟形式或数字形式存储神经存储器权重数据的混合存储器系统(Hybrid Memory System Configurable to StoreNeural Memory Weight Data in Analog Form or Digital Form)″的第17/519,241号美国专利申请的优先权。
技术领域
公开了混合存储器系统的许多实施方案。混合存储器可在用于模拟神经存储器系统中时以模拟形式存储阵列中的权重数据,或在用于数字神经存储器系统中时以数字形式存储这些权重数据。输入电路和输出电路能够支持这两种形式的权重数据。
背景技术
人工神经网络模拟生物神经网络(动物的中枢神经系统,特别是大脑),并且用于估计或近似可取决于大量输入并且通常未知的函数。人工神经网络通常包括互相交换消息的互连″神经元″层。
图1示出了人工神经网络,其中圆圈表示神经元的输入或层。连接部(称为突触)用箭头表示并且具有可以根据经验进行调整的数值权重。这使得神经网络适应于输入并且能够学习。通常,神经网络包括多个输入的层。通常存在神经元的一个或多个中间层,以及提供神经网络的输出的神经元的输出层。处于每一级别的神经元分别地或共同地根据从突触所接收的数据作出决定。
在开发用于高性能信息处理的人工神经网络方面的主要挑战中的一个挑战是缺乏足够的硬件技术。实际上,实际神经网络依赖于大量的突触,从而实现神经元之间的高连通性,即非常高的计算并行性。原则上,此类复杂性可通过数字超级计算机或专用图形处理单元集群来实现。然而,相比于生物网络,这些方法除了高成本之外,能量效率也很普通,生物网络主要由于其执行低精度的模拟计算而消耗更少的能量。CMOS模拟电路已被用于人工神经网络,但由于给定大量的神经元和突触,大多数CMOS实现的突触都过于庞大。
申请人先前在美国专利申请第15/594,439号中公开了一种利用一个或多个非易失性存储器阵列作为突触的人工(模拟)神经网络,该专利申请以引用方式并入本文。非易失性存储器阵列作为模拟神经存储器操作。神经网络设备包括被配置为接收第一多个输入并从其生成第一多个输出的第一多个突触,以及被配置为接收第一多个输出的第一多个神经元。第一多个突触包括多个存储器单元,其中存储器单元中的每个存储器单元包括:形成于半导体衬底中的间隔开的源极区和漏极区,其中沟道区在源极区和漏极区之间延伸;设置在沟道区的第一部分上方并且与第一部分绝缘的浮栅;以及设置在沟道区的第二部分上方并且与第二部分绝缘的非浮栅。多个存储器单元中的每个存储器单元被配置为存储与浮栅上的多个电子相对应的权重值。多个存储器单元被配置为将第一多个输入乘以所存储的权重值以生成第一多个输出。
非易失性存储器单元
非易失性存储器是众所周知的。例如,美国专利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上的电子经由福勒-诺德海姆(FN)隧穿从浮栅20到字线端子22隧穿通过中间绝缘体。
通过将正电压置于字线端子22上以及将正电压置于源极区14上来由带有热电子的源极侧注入(SSI)编程存储器单元210(其中电子被置于浮栅上)。电子流将从漏极区16流向源极区14。当电子到达字线端子22和浮栅20之间的间隙时,电子将加速并且变热。由于来自浮栅20的静电引力,一些加热的电子将通过栅极氧化物被注入到浮栅20上。
通过将正的读取电压置于漏极区16和字线端子22(其接通沟道区18的在字线端子下方的部分)上来读取存储器单元210。如果浮栅20带正电(即,电子被擦除),则沟道区18的在浮栅20下方的部分也被接通,并且电流将流过沟道区18,该沟道区被感测为擦除状态或"1″状态。如果浮栅20带负电(即,通过电子进行了编程),则沟道区的在浮栅20下方的部分被大部分或完全关断,并且电流将不会(或者有很少的电流)流过沟道区18,该沟道区被感测为编程状态或“0″状态。
表1示出可施加到存储器单元110的端子以用于执行读取操作、擦除操作和编程操作的典型电压和电流范围:
表1:图3的闪存存储器单元210的操作
WL | BL | SL | |
读取 | 2-3V | 0.6-2V | 0V |
擦除 | 约11-13v | 0V | 0V |
编程 | 1-2V | 10.5-3μA | 9-10V |
作为其他类型的闪存存储器单元的其他分裂栅存储器单元配置是已知的。例如,图3示出了四栅极存储器单元310,其包括源极区14、漏极区16、在沟道区18的第一部分上方的浮栅20、在沟道区18的第二部分上方的选择栅22(通常耦接到字线WL)、在浮栅20上方的控制栅28以及在源极区14上方的擦除栅30。这种配置在美国专利6,747,310中有所描述,该专利以引用方式并入本文以用于所有目的。这里,除了浮栅20之外,所有的栅极均为非浮栅,这意味着它们电连接到或能够电连接到电压源。编程由来自沟道区18的将自身注入到浮栅20的加热的电子执行。擦除通过从浮栅20隧穿到擦除栅30的电子来执行。
表2示出可施加到存储器单元310的端子以用于执行读取操作、擦除操作和编程操作的典型电压和电流范围:
表2:图3的闪存存储器单元310的操作
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 | 0.1-1μA | 8-11V | 4.5-9V | 4.5-5V |
图4示出三栅极存储器单元410,其为另一种类型的闪存存储器单元。存储器单元410与图3的存储器单元310相同,不同的是存储器单元410没有单独的控制栅。除了没有施加控制栅偏置,擦除操作(由此通过使用擦除栅进行擦除)和读取操作与图3的操作类似。在没有控制栅偏置的情况下,编程操作也被完成,并且结果,在编程操作期间必须在源极线上施加更高的电压,以补偿控制栅偏置的缺乏。
表3示出可施加到存储器单元410的端子以用于执行读取操作、擦除操作和编程操作的典型电压和电流范围:
表3:图4的闪存存储器单元410的操作
WL/SG | BL | EG | SL | |
读取 | 0.7-2.2V | 0.6-2V | 0-2.6V | 0V |
擦除 | -0.5V/0V | 0V | 11.5V | 0V |
编程 | 1V | 0.2-3μA | 4.5V | 7-9V |
图5示出堆叠栅级存储器单元510,其为另一种类型的闪存存储器单元。存储器单元510与图2的存储器单元210类似,不同的是浮栅20在整个沟道区18上方延伸,并且控制栅22(其在这里将耦接到字线)在浮栅20上方延伸,由绝缘层(未示出)分开。通过电子从FG到衬底的FN隧穿来进行擦除,通过在沟道18与漏极区16之间的区域处的沟道热电子(CHE)注入、通过电子从源极区14朝向漏极区16流动以及类似于带有较高控制栅电压的存储器单元210的读取操作来进行编程。
表4示出可施加到存储器单元510和衬底12的端子以用于执行读取操作、擦除操作和编程操作的典型电压范围:
表4:图5的闪存存储器单元510的操作
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 |
本文所述的方法和装置可以应用于其他非易失性存储器技术,诸如但不限于FINFET分裂栅闪存或堆叠栅闪存存储器、NAND闪存、SONOS(硅-氧化物-氮化物-氧化物-硅,电荷捕获在氮化物中)、MONOS(金属-氧化物-氮化物-氧化物-硅,金属电荷捕获在氮化物中)、ReRAM(电阻式ram)、PCM(相变存储器)、MRAM(磁性ram)、FeRAM(铁电ram)、CT(电荷捕获)存储器、CN(碳管)存储器、OTP(双电平或多电平一次可编程)和CeRAM(关联电子ram)等。
为了在人工神经网络中利用包括上述类型的非易失性存储器单元之一的存储器阵列,进行了两个修改。第一,对线路进行配置,使得每个存储器单元可被单独编程、擦除和读取,而不会不利地影响阵列中的其他存储器单元的存储器状态,如下文进一步解释。第二,提供存储器单元的连续(模拟)编程。
具体地,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全擦除状态变为完全编程状态。在另一个实施方案,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全编程状态变为完全擦除状态,反之亦然。这意味着单元存储装置是模拟的,或者至少可存储许多离散值(诸如16或64个不同的值)中的一个离散值,这允许对存储器阵列中的所有单元进行非常精确且单独的调谐,并且这使得存储器阵列对于存储和对神经网络的突触权重进行精细调谐是理想的。
采用非易失性存储器单元阵列的神经网络
图6概念性地示出本实施方案的利用非易失性存储器阵列的神经网络的非限制性示例。该示例将非易失性存储器阵列神经网络用于面部识别应用,但任何其他适当的应用也可使用基于非易失性存储器阵列的神经网络来实现。
对于该示例,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特征映射可全部涉及相同图像特征的不同方面,诸如边界识别。例如,第一映射(使用第一权重组生成,针对用于生成该第一映射的所有扫描而共享)可识别圆形边缘,第二映射(使用与第一权重组不同的第二权重组生成)可识别矩形边缘,或某些特征的纵横比,以此类推。
在从层C1转到层S1之前,应用激活函数P1(池化),该激活函数将来自每个特征映射中连续的非重叠2×2区域的值进行池化。池化函数P1的目的是对邻近位置求均值(或者也可使用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个神经元,其中最高输出神经元确定类。例如,该输出可指示对原始图像的内容的识别或分类。
使用非易失性存储器单元的阵列或阵列的一部分来实现每层的突触。
图7为可用于该目的的阵列的框图。矢量-矩阵乘法(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的经修正的输出值成为作为下一层(例如,图6中的层C1)的特征映射的元素,然后被应用于下一个突触以产生下一个特征映射层或最终层。因此,在该示例中,非易失性存储器单元阵列33构成多个突触(其从现有神经元层或从输入层诸如图像数据库接收它们的输入),并且求和运算放大器38和激活函数块39构成多个神经元。
图7中对VMM阵列32的输入(WLx、EGx、CGx以及任选的BLx和SLx)可为模拟电平、二进制电平或数字位(在这种情况下,提供DAC以将数字位转换成适当的输入模拟电平),并且输出可为模拟电平、二进制电平或数字位(在这种情况下,提供输出ADC以将输出模拟电平转换成数字位)。
图8为描绘此处标记为VMM阵列32a、32b、32c、32d和32e的多层VMM阵列32的使用的框图。如图8所示,通过数模转换器31将输入(表示为Inputx)从数字转换成模拟,并且将其提供至输入VMM阵列32a。转换的模拟输入可以是电压或电流。第一层的输入D/A转换可通过使用将输入Inputx映射到输入VMM阵列32a的矩阵乘法器的适当模拟电平的函数或LUT(查找表)来完成。输入转换也可以由模拟至模拟(A/A)转换器完成,以将外部模拟输入转换成到输入VMM阵列32a的映射模拟输入。
由输入VMM阵列32a生成的输出被作为到下一个VMM阵列(隐藏级别1)32b的输入提供,该输入继而生成作为下一VMM阵列(隐藏级别2)32c的输入而提供的输出,以此类推。VMM阵列32的各层用作卷积神经网络(CNN)的突触和神经元的不同层。每个VMM阵列32a、32b、32c、32d和32e可以是独立的物理非易失性存储器阵列、或者多个VMM阵列可以利用相同非易失性存储器阵列的不同部分、或者多个VMM阵列可以利用相同物理非易失性存储器阵列的重叠部分。图8所示的示例包含五个层(32a,32b,32c,32d,32e):一个输入层(32a)、两个隐藏层(32b,32c)和两个全连接层(32d,32e)。本领域的普通技术人员将会知道,这仅仅是示例性的,并且相反,系统可包括两个以上的隐藏层和两个以上的完全连接的层。
矢量-矩阵乘法(VMM)阵列
图9示出神经元VMM阵列900,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列900包括非易失性存储器单元的存储器阵列901和非易失性参考存储器单元的参考阵列902(在阵列的顶部)。另选地,可将另一个参考阵列置于底部。
在VMM阵列900中,控制栅线(诸如控制栅线903)在竖直方向上延伸(因此参考阵列902在行方向上与控制栅线903正交),并且擦除栅线(诸如擦除栅线904)在水平方向上延伸。此处,到VMM阵列900的输入设置在控制栅线(CG0,CG1,CG2,CG3)上,并且VMM阵列900的输出出现在源极线(SL0,SL1)上。在一个实施方案中,仅使用偶数行,并且在另一个实施方案中,仅使用奇数行。置于各源极线(分别为SL0、SL1)上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
如本文针对神经网络所述,VMM阵列900的非易失性存储器单元(即VMM阵列900的存储器单元310)优选地被配置为在亚阈值区域中操作。
在弱反转(亚阈值区域)中偏置本文所述的非易失性参考存储器单元和非易失性存储器单元:
Ids=Io*e(Vg-Vth)/nVt=w*Io*e(Vg)/nVt,
其中w=e(-Vth)/nVt
其中Ids为漏极到源极电流;Vg为存储器单元上的栅极电压;Vth是存储器单元的阈值电压;Vt是热电压=k*T/q,其中k是玻尔兹曼常数,T是以开尔文为单位的温度,并且q是电子电荷;n是斜率因子=1+(Cdep/Cox),其中Cdep=耗尽层的电容,并且Cox是栅极氧化物层的电容;Io是等于阈值电压的栅极电压下的存储器单元电流,Io与(Wt/L)*u*Cox*(n-1)*Vt2成比例,其中u是载流子迁移率,并且Wt和L分别是存储器单元的宽度和长度。
对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入电流转换为输入电压的I到V对数转换器:
Vg=n*Vt*log[Ids/wp*Io]
其中,wp为参考存储器单元或外围存储器单元的w。
对于用作带有电流输入的矢量矩阵乘法器VMM阵列的存储器阵列,输出电流为:
Iout=wa*Io*e(Vg)/nVt,即
Iout=(wa/wp)*Iin=W*Iin
W=e(Vthp-Vtha)/nVt
此处,wa=存储器阵列中的每个存储器单元的w。
Vthp是外围存储器单元的有效阈值电压,并且Vtha是主要(数据)存储器单元的有效阈值电压。注意,晶体管的阈值电压是衬底主体偏置电压的函数,并且可以对表示为Vsb的衬底主体偏置电压进行调制以补偿在此类温度下的各种条件。阈值电压Vth可以表示为:
其中Vth0是具有零衬底偏置的阈值电压,是表面电位,并且γ是主体效应参数。
字线或控制栅可用作输入电压的存储器单元的输入。
另选地,本文所述的VMM阵列的闪存存储器单元可被配置为在线性区域中操作:
Ids=β*(Vgs-Vth)*Vds;β=u*Cox*Wt/L
W=α(Vgs-Vth)
意指线性区域中的权重W与(Vgs-Vth)成比例
字线或控制栅或位线或源极线可以用作在线性区域中操作的存储器单元的输入。位线或源极线可用作存储器单元的输出。
对于I-V线性转换器,在线性区域工作的存储器单元(例如参考存储器单元或外围存储器单元)或晶体管可以用来将输入/输出电流线性转换成输入/输出电压。
另选地,本文所述的VMM阵列的存储器单元可被配置为在饱和区域中操作:
Ids=1/2*β*(Vgs-Vth)2;β=u*Cox*Wt/L
Wα(Vgs-Vth)2,意指权重W与(Vgs-Vth)2成比例
字线、控制栅或擦除栅可以用作在饱和区域中操作的存储器单元的输入。位线或源极线可用作输出神经元的输出。
另选地,本文所述的VMM阵列的存储器单元可用于神经网络的每个层或多个层的所有区域或其组合(亚阈值、线性或饱和区域)。
美国专利号10,748,630中描述了图7的VMM阵列32的其他实施方案,该专利以引用方式并入本文。如本文所述,源极线或位线可以用作神经元输出(电流求和输出)。
图10示出神经元VMM阵列1000,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的突触。VMM阵列1000包括非易失性存储器单元的存储器阵列1003、第一非易失性参考存储器单元的参考阵列1001和第二非易失性参考存储器单元的参考阵列1002。在阵列的列方向上布置的参考阵列1001和1002用于将流入端子BLR0、BLR1、BLR2和BLR3的电流输入转换为电压输入WL0、WL1、WL2和WL3。实际上,第一非易失性参考存储器单元和第二非易失性参考存储器单元通过多路复用器1014(仅部分示出)二极管式连接,其中电流输入流入其中。参考单元被调谐(例如,编程)为目标参考电平。目标参考电平由参考微阵列矩阵(未示出)提供。
存储器阵列1003用于两个目的。首先,它将VMM阵列1000将使用的权重存储在其相应的存储器单元上。其次,存储器阵列1003有效地将输入(即,在端子BLR0、BLR1、BLR2和BLR3中提供的电流输入,参考阵列1001和1002将这些电流输入转换为输入电压以供应到字线WL0、WL1、WL2和WL3)乘以存储在存储器阵列1003中的权重,然后将所有结果(存储器单元电流)相加,以在相应位线(BL0-BLN)上产生输出,该输出将为到下一层的输入或到最终层的输入。通过执行乘法和加法函数,存储器阵列1003消除了对单独的乘法逻辑电路和加法逻辑电路的需要,并且也是高功效的。这里,电压输入在字线(WL0、WL1、WL2和WL3)上提供,并且输出在读取(推断)操作期间出现在相应位线(BL0-BLN)上。置于位线BL0-BLN中的每个位线上的电流执行来自连接到该特定位线的所有非易失性存储器单元的电流的求和函数。
表5示出用于VMM阵列1000的操作电压和电流。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表5:图10的VMM阵列1000的操作:
图11示出神经元VMM阵列1100,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1100包括非易失性存储器单元的存储器阵列1103、第一非易失性参考存储器单元的参考阵列1101和第二非易失性参考存储器单元的参考阵列1102。参考阵列1101和1102在VMM阵列1100的行方向上延伸。VMM阵列与VMM 1000类似,不同的是在VMM阵列1100中,字线在竖直方向上延伸。这里,输入设置在字线(WLA0,WLB0,WLA1,WLB2,WLA2,WLB2,WLA3,WLB3)上,并且输出在读取操作期间出现在源极线(SL0,SL1)上。置于各源极线上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
表6示出用于VMM阵列1100的操作电压和电流。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表6:图11的VMM阵列1100的操作
图12示出神经元VMM阵列1200,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1200包括非易失性存储器单元的存储器阵列1203、第一非易失性参考存储器单元的参考阵列1201和第二非易失性参考存储器单元的参考阵列1202。参考阵列1201和1202用于将流入端子BLR0、BLR1、BLR2和BLR3的中的电流输入转换为电压输入CG0、CG1、CG2和CG3。实际上,第一非易失性参考存储器单元和第二非易失性参考存储器单元通过多路复用器1212(仅部分示出)二极管式连接,其中电流输入通过BLR0、BLR1、BLR2和BLR3流入其中。多路复用器1212各自包括相应的多路复用器1205和共源共栅晶体管1204,以确保在读取操作期间第一非易失性参考存储器单元和第二非易失性参考存储器单元中的每一者的位线(诸如BLR0)上的电压恒定。将参考单元调谐至目标参考电平。
存储器阵列1203用于两个目的。首先,它存储将由VMM阵列1200使用的权重。第二,存储器阵列1203有效地将输入(提供到端子BLR0、BLR1、BLR2和BLR3的电流输入,参考阵列1201和1202将这些电流输入转换成输入电压以提供给控制栅(CG0、CG1、CG2和CG3))乘以存储在存储器阵列中的权重,然后将所有结果(单元电流)相加以产生输出,该输出出现在BL0-BLN并且将是下一层的输入或最终层的输入。通过执行乘法和加法函数,存储器阵列消除了对单独的乘法和加法逻辑电路的需要,并且也是高功效的。这里,输入提供在控制栅线(CG0、CG1、CG2和CG3)上,输出在读取操作期间出现在位线(BL0-BLN)上。置于各位线上的电流执行来自连接到该特定位线的存储器单元的所有电流的求和函数。
VMM阵列1200对存储器阵列1203中的非易失性存储器单元实现单向调谐。也就是说,每个非易失性存储器单元被擦除,然后被部分编程,直到达到浮栅上的所需电荷。如果在浮栅上放置过多电荷(使得错误的值存储在单元中),则单元被擦除,并且部分编程操作的序列重新开始。如图所示,共享同一擦除栅(诸如EG0或EG1)的两行被一起擦除(其被称为页面擦除),并且此后,每个单元被部分编程,直到达到浮栅上的所需电荷。
表7示出用于VMM阵列1200的操作电压和电流。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表7:图12的VMM阵列1200的操作
图13示出神经元VMM阵列1300,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1300包括非易失性存储器单元的存储器阵列1303、第一非易失性参考存储器单元的参考阵列1301和第二非易失性参考存储器单元的参考阵列1302。EG线EGR0、EG0、EGl和EGRl竖直延伸,而CG线CG0、CG1、CG2和CG3以及SL线WL0、WL1、WL2和WL3水平延伸。VMM阵列1300与VMM阵列1400类似,不同的是VMM阵列1300实现双向调谐,其中由于使用单独的EG线,每个单独的单元可根据需要被完全擦除、部分编程和部分擦除,以在浮栅上达到期望的电荷量。如图所示,参考阵列1301和1302将端子BLR0、BLR1、BLR2和BLR3中的输入电流转换为要在行方向上施加到存储器单元的控制栅电压CG0、CG1、CG2和CG3(通过经由多路复用器1314的二极管式连接的参考单元的动作)。电流输出(神经元)在位线BL0-BLN中,其中每个位线对来自连接到该特定位线的非易失性存储器单元的所有电流求和。
表8示出用于VMM阵列1300的操作电压和电流。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表8:图13的VMM阵列1300的操作
图22示出神经元VMM阵列2200,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在VMM阵列2200中,输入INPUT0、…、INPUTN分别在位线BL0、…、BLN上被接收,并且输出OUTPUT1、OUTPUT2、OUTPUT3和OUTPUT4分别在源极线SL0、SL1、SL2和SL3上生成。
图23示出神经元VMM阵列2300,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、INPUT1、INPUT2和INPUT3分别在源极线SL0、SL1、SL2和SL3上被接收,并且输出OUTPUT0、…、OUTPUTN在位线BL0、…、BLN上生成。
图24示出神经元VMM阵列2400,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、...、INPUTM分别在字线WL0、...、WLM上被接收,并且输出OUTPUT0、...、OUTPUTN在位线BL0、...、BLN上生成。
图25示出神经元VMM阵列2500,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、...、INPUTM分别在字线WL0、...、WLM上被接收,并且输出OUTPUT0、...、OUTPUTN在位线BL0、...、BLN上生成。
图26示出神经元VMM阵列2600,该神经元VMM阵列特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、...、INPUTn分别在竖直控制栅线CG0、...、CGN上被接收,并且输出OUTPUT1和OUTPUT2在源极线SL0和SL1上生成。
图27示出神经元VMM阵列2700,该神经元VMM阵列特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0至INPUTN分别在位线控制栅2701-1、2701-2至2701-(N-1)和2701-N的栅极上被接收,这些栅极分别耦接到位线BL0至BLN。示例性输出OUTPUT1和OUTPUT2在源极线SL0和SL1上生成。
图28示出神经元VMM阵列2800,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0,...,INPUTM在字线WL0,...,WLM上被接收,并且输出OUTPUT0,...,OUTPUTN分别在位线BL0,...,BLN上生成。
图29示出神经元VMM阵列2900,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0至INPUTM在控制栅线CG0至CGM上被接收。输出OUTPUT0,...,OUTPUTN分别在竖直源极线SLo,...,SLN上生成,其中每个源极线SLi耦接到列i中的所有存储器单元的源极线。
图30示出神经元VMM阵列3000,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0至INPUTM在控制栅线CG0至CGM上被接收。输出OUTPUT0、...、OUTPUTN分别在竖直位线BL0、...、BLN上生成,其中每个位线BLi耦接到列i中的所有存储器单元的位线。
长短期存储器
现有技术包括被称为长短期存储器(LSTM)的概念。LSTM单元通常用于神经网络中。LSTM允许神经网络在预定的任意时间间隔内记住信息并在后续操作中使用该信息。常规的LSTM单元包括单元、输入栅、输出栅和忘记栅。三个栅调控进出单元的信息流以及信息在LSTM中被记住的时间间隔。VMM尤其可用于LSTM单元中。
图14示出示例性LSTM 1400。该示例中的LSTM 1400包括单元1401、1402、1403和1404。单元1401接收输入矢量x0并生成输出矢量h0和单元状态矢量c0。单元1402接收输入矢量x1、来自单元1401,的输出矢量(隐藏状态)h0和来自单元1401的单元状态c0,并生成输出矢量h1和单元状态矢量c1。单元1403接收输入矢量x2、来自单元1402的输出矢量(隐藏状态)h1和来自单元1402的单元状态c1,并生成输出矢量h2和单元状态矢量c2。单元1404接收输入矢量x3、来自单元1403的输出矢量(隐藏状态)h2和来自单元1403的单元状态c2,并生成输出矢量h3。可以使用另外的单元,并且具有四个单元的LSTM仅仅是示例。
图15示出可用于图14中的单元1401、1402、1403和1404的LSTM单元1500的示例性具体实施。LSTM单元1500接收输入矢量x(t)、来自前一单元的单元状态矢量c(t-1)和来自前一单元的输出矢量h(t-1),并生成单元状态矢量c(t)和输出矢量h(t)。
LSTM单元1500包括sigmoid函数设备1501、1502和1503,每个sigmoid函数设备应用0与1之间的一个数字来控制允许输入矢量中的每个分量有多少通过到达输出矢量。LSTM单元1500还包括用于将双曲线正切函数应用于输入矢量的tanh设备1504和1505、用于将两个矢量乘在一起的乘法器设备1506、1507和1508以及用于将两个矢量加在一起的加法设备1509。输出矢量h(t)可被提供给系统中的下一个LSTM单元,或者其可被访问用于其他目的。
图16示出LSTM单元1600,该LSTM单元为LSTM单元1500的具体实施的示例。为了方便读者,LSTM单元1600中使用与LSTM单元1500相同的编号。Sigmoid函数设备1501、1502和1503以及tanh设备1504各自包括多个VMM阵列1601和激活函数块1602。因此,可以看出,VMM阵列在某些神经网络系统中使用的LSTM单元中特别有用。乘法器设备1506、1507和1508以及加法设备1509以数字方式或模拟方式实现。激活函数块1602可以数字方式或模拟方式实现。
LSTM单元1600的替代形式(以及LSTM单元1500的具体实施的另一示例)在图17中示出。在图17中,sigmoid函数设备1501、1502和1503以及tanh设备1504以时分复用方式共享相同的物理硬件(VMM阵列1701和激活函数块1702)。LSTM单元1700还包括将两个矢量相乘在一起的乘法器设备1703,将两个矢量相加在一起的加法设备1708,tanh设备1505(其包括激活函数块1702),当从sigmoid函数块1702输出值i(t)时存储该值i(t)的寄存器1707,当值f(t)*c(t-1)通过多路复用器1710从乘法器设备1703输出时存储该值的寄存器1704,当值i(t)*u(t)通过多路复用器1710从乘法器设备1703输出时存储该值的寄存器1705,以及当值o(t)*c~(t)通过多路复用器1710从乘法器设备1703输出时存储该值的寄存器1706,以及多路复用器1709。
LSTM单元1600包含多组VMM阵列1601和相应的激活函数块1602,而LSTM单元1700仅包含一组VMM阵列1701和激活函数块1702,它们用于表示LSTM单元1700的实施方案中的多个层。LSTM单元1700将需要比LSTM 1600少的空间,因为与LSTM单元1600相比,LSTM单元1700只需要其1/4的空间用于VMM和激活函数块。
还可理解,LSTM单元通常将包括多个VMM阵列,每个VMM阵列需要由VMM阵列之外的某些电路区块(诸如求和器和激活函数块以及高电压生成块)提供的功能。为每个VMM阵列提供单独的电路区块将需要半导体设备内的大量空间,并且将在一定程度上是低效的。因此,下文所述的实施方案减小VMM阵列本身之外所需的电路。
栅控递归单元
模拟VMM具体实施可用于栅控递归单元(GRU)系统。GRU是递归神经网络中的栅控机构。GRU类似于LSTM,不同的是GRU单元一般包含比LSTM单元更少的部件。
图18示出示例性GRU 1800。该示例中的GRU 1800包括单元1801、1802、1803和1804。单元1801接收输入矢量x0并生成输出矢量h0。单元1802接收输入矢量x1、来自单元1801的输出矢量h0并生成输出矢量h1。单元1803接收输入矢量x2和来自单元1802的输出矢量(隐藏状态)h1并生成输出矢量h2。单元1804接收输入矢量x3和来自单元1803的输出矢量(隐藏状态)h2并生成输出矢量h3。可以使用另外的单元,并且具有四个单元的GRU仅仅是示例。
图19示出可用于图18的单元1801、1802、1803和1804的GRU单元1900的示例性具体实施。GRU单元1900接收输入矢量x(t)和来自前一个GRU单元的输出矢量h(t-1),并生成输出矢量h(t)。GRU单元1900包括sigmoid函数设备1901和1902,每个sigmoid函数设备将介于0与1之间的数字应用于来自输出矢量h(t-1)和输入矢量x(t)的分量。GRU单元1900还包括用于将双曲线正切函数应用于输入矢量的tanh设备1903,用于将两个矢量相乘在一起的多个乘法器设备1904、1905和1906,用于将两个矢量相加在一起的加法设备1907,以及用于从1中减去输入以生成输出的互补设备1908。
图20示出GRU单元2000,该GRU单元为GRU单元1900的具体实施的示例。为了方便读者,GRU单元2000中使用与GRU单元1900相同的编号。如图20中可见,sigmoid函数设备1901和1902以及tanh设备1903各自包括多个VMM阵列2001和激活函数块2002。因此,可以看出,VMM阵列在某些神经网络系统中使用的GRU单元中特别有用。乘法器设备1904、1905和1906、加法设备1907以及互补设备1908以数字方式或模拟方式实现。激活函数块2002可以数字方式或模拟方式实现。
GRU单元2000的替代形式(以及GRU单元1900的具体实施的另一示例)在图21中示出。在图21中,GRU单元2100利用VMM阵列2101和激活函数块2102,该激活函数块在被配置为sigmoid函数时应用0与1之间的数字来控制允许输入矢量中的每个分量有多少通过到达输出矢量。在图21中,sigmoid函数设备1901和1902以及tanh设备1903以时分复用方式共享相同的物理硬件(VMM阵列2101和激活函数块2102)。GRU单元2100还包括将两个矢量乘在一起的乘法器设备2103、将两个矢量加在一起的加法设备2105、从1减去输入以生成输出的互补设备2109、多路复用器2104、当值h(t-1)*r(t)通过多路复用器2104从乘法器设备2103输出时保持该值的寄存器2106、当值h(t-1)*z(t)通过多路复用器2104从乘法器设备2103输出时保持该值的寄存器2107,以及当值h^(t)*(1-z(t))通过多路复用器2104从乘法器设备2103输出时保持该值的寄存器2108。
GRU单元2000包含多组VMM阵列2001和激活函数块2002,而GRU单元2100仅包含一组VMM阵列2101和激活函数块2102,它们用于表示GRU单元2100的实施方案中的多个层。GRU单元2100将需要比GRU单元2000更少的空间,因为与GRU单元2000相比,GRU单元2100只需要其1/3的空间用于VMM和激活函数块。
还可以理解的是,GRU系统通常将包括多个VMM阵列,每个VMM阵列需要由VMM阵列之外的某些电路区块(诸如求和器和激活函数块以及高电压生成块)提供的功能。为每个VMM阵列提供单独的电路区块将需要半导体设备内的大量空间,并且将在一定程度上是低效的。因此,下文所述的实施方案减小VMM阵列本身之外所需的电路。
VMM阵列的输入可为模拟电平、二进制电平、脉冲、时间调制脉冲或数字位(在这种情况下,需要DAC来将数字位转换成适当的输入模拟电平),并且输出可为模拟电平、二进制电平、定时脉冲、脉冲或数字位(在这种情况下,需要输出ADC来将输出模拟电平转换成数字位)。
一般来讲,对于VMM阵列中的每个存储器单元,每个权重W可由单个存储器单元或由差分单元或由两个混合存储器单元(2个单元的平均值)来实现。在差分单元的情况下,需要两个存储器单元来实现权重W作为差分权重(W=W+-W-)。在两个混合存储器单元中,需要两个存储器单元来实现权重W作为两个单元的平均值。
图31示出VMM系统3100。在一些实施方案中,存储在VMM阵列中的权重W被存储为差分对W+(正权重)和W-(负权重),其中W=(W+)-(W-)。在VMM系统3100中,位线的一半被指定为W+线,即连接到将存储正权重W+的存储器单元的位线,并且位线的另一半被指定为W-线,即连接到实现负权重W-的存储器单元的位线。W-线以交替方式散布在W+线之间。减法操作由求和电路(诸如求和电路3101和3102)执行,该求和电路从W+线和W-线接收电流。W+线的输出和W-的输出组合在一起,以对于所有(W+、W-)线对的每个(W+、W-)单元对有效地给出W=W+-W-。虽然上文已关于以交替方式散布于W+线之间的W-线进行描述,但在其他实施方案中,W+线和W-线可任意位于阵列中的任何地方。
图32示出另一实施方案。在VMM系统3210中,在第一阵列3211中实现正权重W+,并且在第二阵列3212中实现负权重W-,第二阵列3212与第一阵列分开,并且所得权重通过求和电路3213适当地组合在一起。
图33示出了VMM系统3300,存储在VMM阵列中的权重W被存储为差分对W+(正权重)和W-(负权重),其中W=(W+)-(W-)。VMM系统3300包括阵列3301和阵列3302。阵列3301和阵列3302中的每个阵列中的位线的一半被指定为W+线,即连接到将存储正权重W+的存储器单元的位线,并且阵列3301和阵列3302中的每个阵列中的位线的另一半被指定为W-线,即连接到实现负权重W-的存储器单元的位线。W-线以交替方式散布在W+线之间。减法操作由求和电路(诸如求和电路3303、3304、3305和3306)执行,该求和电路从W+线和W-线接收电流。来自每个阵列3301、3302的W+线的输出和W-的输出分别组合在一起,以对于所有(W+、W-)线对的每个(W+、W-)单元对有效地给出W=W+-W-。另外,来自每个阵列3301和3302的W值可以通过求和电路3307和3308进一步组合,使得每个W值是来自阵列3301的W值减去来自阵列3302的W值的结果,这意味着来自求和电路3307和3308的最终结果是两个差值中的一个差值。
要擦除和编程在模拟神经存储器系统中使用的每个非易失性存储器单元,以在浮栅中保持非常特定且精确的电荷量(即电子数量)。例如,每个浮栅必须保持N个不同值中的一个,其中N是可由每个单元指示的不同权重的数量。N的示例包括16、32、64、128和256。
类似地,读取操作必须能够准确地辨别N个不同的电平。
需要一种灵活的存储器系统,其在一个模式中可作为模拟神经存储器系统操作,并且在另一模式中还可作为数字神经存储器系统操作。
发明内容
公开了混合存储器系统的许多实施方案。混合存储器可在用于模拟神经存储器系统中时以模拟形式存储阵列中的权重数据,或在用于数字神经存储器系统中时以数字形式存储这些权重数据。输入电路和输出电路能够支持这两种形式的权重数据。
附图说明
图1为示出人工神经网络的示意图。
图2示出现有技术的分裂栅闪存存储器单元。
图3示出另一现有技术的分裂栅闪存存储器单元。
图4示出另一现有技术的分裂栅闪存存储器单元。
图5示出另一现有技术的分裂栅闪存存储器单元。
图6为示出利用一个或多个非易失性存储器阵列的示例性人工神经网络的不同级别的示意图。
图7为示出矢量-矩阵乘法系统的框图。
图8为示出利用一个或多个矢量-矩阵乘法系统的示例性人工神经网络的框图。
图9示出矢量-矩阵乘法系统的另一实施方案。
图10示出矢量-矩阵乘法系统的另一实施方案。
图11示出矢量-矩阵乘法系统的另一实施方案。
图12示出矢量-矩阵乘法系统的另一实施方案。
图13示出矢量-矩阵乘法系统的另一实施方案。
图14示出现有技术的长短期存储器系统。
图15示出在长短期存储器系统中使用的示例性单元。
图16示出图15的示例性单元的一个实施方案。
图17示出图15的示例性单元的另一实施方案。
图18示出现有技术的栅控递归单元系统。
图19示出在栅控递归单元系统中使用的示例性单元。
图20示出图19的示例性单元的一个实施方案。
图21示出图19的示例性单元的另一实施方案。
图22示出矢量-矩阵乘法系统的另一实施方案。
图23示出矢量-矩阵乘法系统的另一实施方案。
图24示出矢量-矩阵乘法系统的另一实施方案。
图25示出矢量-矩阵乘法系统的另一实施方案。
图26示出矢量-矩阵乘法系统的另一实施方案。
图27示出矢量-矩阵乘法系统的另一实施方案。
图28示出矢量-矩阵乘法系统的另一实施方案。
图29示出矢量-矩阵乘法系统的另一实施方案。
图30示出矢量-矩阵乘法系统的另一实施方案。
图31示出矢量-矩阵乘法系统的另一实施方案。
图32示出矢量-矩阵乘法系统的另一实施方案。
图33示出矢量-矩阵乘法系统的另一实施方案。
图34示出矢量-矩阵乘法系统的另一实施方案。
图35A示出混合存储器系统。
图35B示出另一混合存储器系统。
图36示出混合存储器操作方法。
图37示出与混合存储器系统一起使用的可配置宏电路。
图38示出包括多个混合阵列片的系统。
图39示出可重新配置电流-电压和模数转换器电路。
具体实施方式
本发明的人工神经网络利用CMOS技术和非易失性存储器阵列的组合。
VMM系统综述
图34示出了VMM系统3400的框图。VMM系统3400包括VMM阵列3401、行解码器3402、高电压解码器3403、列解码器3404、位线驱动器3405、输入电路3406、输出电路3407、控制逻辑部件3408和偏置发生器3409。VMM系统3400进一步包括高电压生成块3410,该高电压生成块包括电荷泵3411、电荷泵调节器3412和高电压模拟精密电平发生器3413。VMM系统3400进一步包括(编程/擦除,或权重调谐)算法控制器3414、模拟电路3415、控制引擎3416(其可以包括诸如算术函数、激活函数、嵌入式微控制器逻辑等特殊函数,而没有限制)以及测试控制逻辑部件3417。下文所述的系统和方法能够在VMM系统3400中实现。
输入电路3406可包括各种电路,诸如DAC(数模转换器)、DPC(数字-脉冲转换器,数字-时间调制脉冲转换器)、AAC(模拟-模拟转换器,诸如电流-电压转换器,对数转换器)、PAC(脉冲-模拟电平转换器)或任何其他类型的转换器。输入电路3406能够实现归一化、线性或非线性上/下缩放函数或算术函数。输入电路3406能够实现对输入水平的温度补偿函数。输入电路3406能够实现激活函数,诸如ReLU或sigmoid。输出电路3407能够包括电路,诸如ADC(模数转换器,用于将神经元模拟输出转换成数字位)、AAC(模拟到模拟转换器,诸如电流到电压转换器,对数转换器)、APC(模拟到脉冲转换器,模拟到时间调制脉冲转换器)或任何其他类型的转换器。
输出电路3407能够实现激活函数,例如,整流线性激活函数(ReLU)或sigmoid。输出电路3407可在神经元输出上实现统计归一化、正则化、上/下缩放/增益函数、统计舍入或算术函数(例如,加法、减法、除法、乘法、移位、对数)。输出电路3407能够在神经元输出或阵列输出(诸如位线输出)上实现温度补偿函数,以便保持阵列的功率消耗大致恒定或诸如通过使IV斜率保持大致相同来提高阵列(神经元)输出的精度。
图35A和图35B分别描绘了混合存储器系统3500和3550。混合存储器系统3500和3550各自能够在第一模式中作为多级数字神经存储器系统操作以从阵列获得数字权重数据,或者在第二模式中作为多级模拟神经存储器系统操作以从阵列获得模拟权重数据。
在图35A中,混合存储器系统3500包括:混合阵列3501,该混合阵列包括排列成行和列的非易失性存储器单元的阵列;可配置输入电路3502;以及可配置输出电路3503。
可配置输入电路3502向混合阵列3501提供输入,并且包括用于第一模式的行寄存器和数模(DAC)块3505以及用于第二模式的行解码器块3504。
可配置输出电路3503响应于从混合阵列3501接收的信号而提供输出,并且包括用于第一模式的电流-电压转换器(ITV)和模数转换器(ADC)块3506以及用于第二模式的多状态读出放大器(MS SA)块3507。ITV+ADC模块3506包括多个ITV电路和多个ADC电路。MS SA块3507包括多个MS SA电路。
在第一模式中,混合阵列3501作为非易失性存储器存储装置操作,来以多位数字形式(数字多级形式,意指一个物理存储器单元可存储例如4或8或16或32个级等多个离散级中的一者,意指一个单元的输出将分别等同于2个数字位或3个数字位或4个数字位或5个数字位)存储或检索权重数据。例如,如果每个单元可存储8个不同的值(3位或3b单元),则数字权重数据可以从000变化到111。作为另一示例,如果每个单元可存储2个不同的值,例如在二进制存储器单元(1位单元)中,则数字权重数据可从0变化到1。
在第一模式中,行寄存器和数模转换器(DAC)块3505响应于接收到的数字信号而生成模拟输入信号以读取混合阵列3501中的一个或多个行。数字MLC(多电平单元)读取模式一次仅读取一行,神经读取模式一次读取多于一行,通常一次读取数十或数百行。块ITV+ADC 3506从混合阵列3501的多个或所有列接收模拟(电流)输出,以生成表示对整个混合阵列3501的大部分的神经读取(一次读取多个行和多个列)的数字输出。一个ITV电路用于一次读取一个位线以输出模拟值,该模拟值可包括同一位线上的多个单元。ITV通常用于将阵列输出电流转换为电压。一个ADC电路通常用于一次读取一个位线以输出数字位,该数字位可包括同一位线上的多个单元。ADC电路通常用于将电压转换为数字输出位。在一个实施方案中,ADC电路可用于将阵列电流直接转换为数字输出位。例如,对于使用电压参考的SARADC,其可替代地使用电流参考用于操作。
在第二模式中,混合阵列3501作为模拟神经存储器中的VMM操作,从而以模拟多级形式存储权重数据,这意指每个单元存储在各级之间具有连续模拟值的模拟多级。例如,对于8个级的数字多级单元,该单元具有不同的级1、2、3、4、...、8。对于8个级的模拟多级单元,该单元在各级之间具有连续值,例如在级1与2之间,存在1.001、1.002、...、1.01、...、1.1、1.2、...、1.999、2.0的模拟值。对于用于神经阵列存储器应用的矢量矩阵乘法器(VMM)应用,需要模拟多级。
在第二模式中,行解码器块3504用于选择(启用)混合阵列3501中的一行以进行读取、编程或擦除操作。在读取或编程操作期间,MS SA块3507用于读取或验证混合阵列3501中的一个或多个列中的一个或多个单元。一个MS SA电路用于一次读取一个单元。
因此,混合存储器系统3500可在第一模式中作为多级数字神经存储器系统操作以从阵列获得数字权重数据,或者在第二模式中作为多级模拟神经存储器系统操作以从阵列获得模拟权重数据。
在图35B中,混合存储器系统3550包括:混合阵列3551,该混合阵列包括排列成行和列的非易失性存储器单元的阵列;可配置输入电路3552;以及可配置输出电路3553。
可配置输入电路3552向混合阵列3551提供输入,并且包括行解码器、行寄存器和数模块3554。即,图35A的块3504和3505被合并成单个块3554。可配置输出电路3503响应于从混合阵列3551接收的信号而提供输出,并且包括电流-电压转换器、模数转换器以及读出放大器块3555。即,来自图35A的块3506和3507被合并成单个块3555。
在第一模式,混合阵列3551作为非易失性存储器存储装置来操作而以多级数字形式存储权重数据。块3554响应于所接收的数字信号而生成模拟输入信号以读取混合阵列3551中的一个或多个行。块3555从混合阵列3551的一些或所有列接收模拟(电流)输出,以生成表示混合阵列3551中的至少大部分单元的神经读取的数字输出。
在第二模式,混合阵列3551作为模拟神经存储器中的VMM操作而以多级模拟形式存储权重数据。块3554用于通过充当行解码器来选择混合阵列3501中的一行以进行读取、编程或擦除操作。块3555用于通过充当多状态读出放大器来读取或验证混合阵列3551中的一个或多个列中的一个或多个单元。每个MS Sa电路一次对一个单元进行操作(即,一个位线中启用一个单元)。
因此,混合存储器系统3550可在第一模式中作为数字神经存储器系统操作以从混合阵列3551获得数字权重数据,或者在第二模式中作为模拟神经存储器系统操作以从混合阵列3551获得模拟权重数据。
图36示出混合存储器操作方法3600,其可由图35A的混合存储器系统3500或图35B的混合存储器系统3550执行。
在步骤3601中,系统确定是否要执行VMM模拟神经存储器操作。如果是,则系统进行到步骤3602。如果否,则系统进行到步骤3609。
在步骤3602中,VMM模拟神经操作开始。在步骤3603中,由数模转换器提供输入,并且由模数转换器提供所得输出。DAC可以是1位DAC。
在步骤3604中,启用多个行。
在步骤3605中,启用多个列。
在步骤3606中,将来自混合存储器阵列的输出转换为不同形式,例如数字输出位(模拟权重数据)。
在步骤3607中,执行部分和存储。
在步骤3608中,执行求和、激活和/或池化的动作以生成神经输出。
在步骤3609中,将执行数字非易失性存储器操作。
在步骤3610中,由行解码器提供输入,并且由多状态读出放大器提供输出。
在步骤3611中,启用行。
在步骤3612中,启用列。
在步骤3613中,将来自混合存储器阵列的输出转换为不同形式,例如数字输出位(数字权重数据)。
在步骤3614中,将来自步骤3613的输出存储在诸如SRAM存储器的缓冲存储器中。
在步骤3615中,系统确定是否已对所有目标行进行了操作。如果是,则系统进行到步骤3616。如果否,则系统返回到步骤3611并执行上述步骤。
在步骤3616中,执行求和、激活和/或池化的动作以生成输出。
图37示出可配置存储器系统3700,该系统包括混合存储器系统3500或3550以及可配置宏电路3701。可配置宏电路3701可被配置为结合混合存储器系统3500或3550的第一模式或第二模式操作。这种配置可在启动期间或在操作期间实时发生。可配置宏电路3701可选地包括SRAM 3702、SIMD(单指令、多数据指令处理)模块3703、互连矩阵3704(用于将可配置的宏电路3701连接到混合存储器系统3500或3550)以及eMCU(控制单元)3705。
图38示出系统3800,该系统包括多个混合阵列片3801(每个片可包括混合存储器系统3500或3550或3700)、互连件3802、系统级SIMD模块3803、eMCUsys(系统级控制器)3804、系统级存储器3805和系统级接口IFTC 3806(其为诸如OctoSPI、PCIe、因特网等高速接口)。
图39示出可重新配置的ITV+ADC电路3900。可重新配置的ITV+ADC电路3900包括可调整电流源3901、电流源3902(其为所选存储器单元)、比较器3903以及逻辑部件3904。可重新配置的ITV+ADC电路3900可作为具有由电流参考块3901提供的电流参考的电流SAR ADC来执行。例如,对于8位电流SARADC,IDAC 3901将提供用于8个位的15个电平。通过调整IDAC参考值来重新配置该电路以用于数字权重读取或模拟权重神经读取(例如,对于读取神经,IDAC参考值将更大,这取决于启用多少行以及数字权重或模拟权重神经读取的最大位线电流是多少)。
应当指出,如本文所用,术语″在...上方″和″在...上″两者包容地包括″直接在…上″(之间未设置中间材料、元件或空间)和″间接在…上″(之间设置有中间材料、元件或空间)。类似地,术语″相邻″包括″直接相邻″(之间没有设置中间材料、元件或空间)和″间接相邻″(之间设置有中间材料、元件或空间),″安装到″包括″直接安装到″(之间没有设置中间材料、元件或空间)和″间接安装到″(之间设置有中间材料、元件或空间),并且″电耦接至″包括″直接电耦接至″(之间没有将元件电连接在一起的中间材料或元件)和″间接电耦接至″(之间有将元件电连接在一起的中间材料或元件)。例如,″在衬底上方″形成元件可包括在两者间没有中间材料/元件的情况下在衬底上直接形成元件,以及在两者间有一个或多个中间材料/元件的情况下在衬底上间接形成元件。
Claims (40)
1.一种系统,所述系统包括:
非易失性存储器单元的阵列,所述非易失性存储器单元的阵列按行和列布置;
可配置输入电路,所述可配置输入电路耦接到所述阵列以用于向所述阵列提供输入;和
可配置输出电路,所述可配置输出电路耦接到所述阵列以用于提供从所述阵列接收的输出;
其中在第一模式,所述可配置输入电路和所述可配置输出电路从所述阵列获得数字数据;并且
其中在第二模式,所述可配置输入电路和所述可配置输出电路从所述阵列获得模拟数据。
2.根据权利要求1所述的系统,其中所述数字数据包括数字权重数据,并且所述模拟数据包括模拟权重数据。
3.根据权利要求1所述的系统,其中所述可配置输入电路包括:
用于在所述第一模式期间使用的行寄存器和数模转换器块;和
用于在所述第二模式期间使用的行解码器块。
4.根据权利要求3所述的系统,其中所述可配置输出电路包括:
用于在所述第一模式期间使用的电流-电压转换器和模数转换器块;和
用于在所述第二模式期间使用的多状态读出放大器块。
5.根据权利要求1所述的系统,其中所述可配置输出电路包括:
用于在所述第一模式期间使用的电流-电压转换器和模数转换器块;和
用于在所述第二模式期间使用的多状态读出放大器块。
6.根据权利要求1所述的系统,其中所述非易失性存储器单元是堆叠栅闪存存储器单元。
7.根据权利要求1所述的系统,其中所述非易失性存储器单元是分裂栅闪存存储器单元。
8.根据权利要求1所述的系统,其中所述系统是模拟神经存储器系统。
9.一种系统,所述系统包括:
非易失性存储器单元的阵列,所述非易失性存储器单元的阵列按行和列布置;
输入电路,所述输入电路耦接到所述阵列以用于向所述阵列提供输入;和
输出电路,所述输出电路耦接到所述阵列以用于提供从所述阵列接收的输出;
其中所述输入电路能够在第一模式向所述阵列提供数字输入,或者在第二模式向所述阵列提供模拟输入。
10.根据权利要求9所述的系统,其中在所述第一模式,所述输出电路从所述阵列获得数字数据。
11.根据权利要求10所述的系统,其中所述数字数据包括数字权重数据。
12.根据权利要求10所述的系统,其中在所述第二模式,所述输出电路从所述阵列获得模拟数据。
13.根据权利要求12所述的系统,其中所述模拟数据包括模拟权重数据。
14.根据权利要求9所述的系统,其中所述输入电路包括:
用于在所述第一模式期间使用的行寄存器和数模转换器块;和
用于在所述第二模式期间使用的行解码器块。
15.根据权利要求14所述的系统,其中所述输出电路包括:
用于在所述第一模式期间使用的电流-电压转换器和模数转换器块;和
用于在所述第二模式期间使用的多状态读出放大器块。
16.根据权利要求9所述的系统,其中所述输出电路包括:
用于在所述第一模式期间使用的电流-电压转换器和模数转换器块;和
用于在所述第二模式期间使用的多状态读出放大器块。
17.根据权利要求9所述的系统,其中所述非易失性存储器单元是堆叠栅闪存存储器单元。
18.根据权利要求9所述的系统,其中所述非易失性存储器单元是分裂栅闪存存储器单元。
19.根据权利要求9所述的系统,其中所述系统是模拟神经存储器系统。
20.一种系统,所述系统包括:
非易失性存储器单元的阵列,所述非易失性存储器单元的阵列按行和列布置;
输入电路,所述输入电路耦接到所述阵列以用于向所述阵列提供输入;和
输出电路,所述输出电路耦接到所述阵列以用于提供从所述阵列接收的输出;
其中所述输出电路能够在第一模式提供来自所述阵列的数字位输出或者在第二模式提供来自所述阵列的模拟输出。
21.根据权利要求20所述的系统,其中所述输入电路包括:
用于在所述第一模式期间使用的行寄存器和数模转换器块;和
用于在所述第二模式期间使用的行解码器块。
22.根据权利要求21所述的系统,其中所述输出电路包括:
用于在所述第一模式期间使用的电流-电压转换器和模数转换器块;和
用于在所述第二模式期间使用的多状态读出放大器块。
23.根据权利要求20所述的系统,其中所述输出电路包括:
用于在所述第一模式期间使用的电流-电压转换器和模数转换器块;和
用于在所述第二模式期间使用的多状态读出放大器块。
24.根据权利要求20所述的系统,其中所述非易失性存储器单元是堆叠栅闪存存储器单元。
25.根据权利要求17所述的系统,其中所述非易失性存储器单元是分裂栅闪存存储器单元。
26.根据权利要求17所述的系统,其中所述系统是模拟神经存储器系统。
27.一种可重新配置的输出块,所述输出块包括:
运算放大器,所述运算放大器包括同相输入端、反相输入端和输出端,所述同相输入端接收参考电压;和
可变电流源,所述可变电流源耦接到所选存储器单元和所述反相输入端并且由逻辑部件响应于所述输出端而控制。
28.根据权利要求27所述的输出块,其中所选存储器单元是堆叠栅闪存存储器单元。
29.根据权利要求27所述的输出块,其中所选存储器单元是分裂栅闪存存储器单元。
30.根据权利要求27所述的系统,其中所述系统是模拟神经存储器系统。
31.一种可重新配置的输出块,所述输出块包括:
输出电路,所述输出电路被配置为能够对存储的数字数据进行操作并且被配置为能够对存储的模拟数据进行操作。
32.根据权利要求31所述的系统,其中所述数字数据包括数字权重数据,并且所述模拟数据包括模拟权重数据。
33.根据权利要求31所述的输出块,其中所选存储器单元是堆叠栅闪存存储器单元。
34.根据权利要求31所述的输出块,其中所选存储器单元是分裂栅闪存存储器单元。
35.根据权利要求31所述的系统,其中所述系统是模拟神经存储器系统。
36.一种可重新配置的输入块,所述输入块包括:
输入电路,所述输入电路被配置为能够存储和检索数字数据并且被配置为能够存储和检索模拟数据。
37.根据权利要求36所述的系统,其中所述数字数据包括数字权重数据,并且所述模拟数据包括模拟权重数据。
38.根据权利要求36所述的输出块,其中所选存储器单元是堆叠栅闪存存储器单元。
39.根据权利要求36所述的输出块,其中所选存储器单元是分裂栅闪存存储器单元。
40.根据权利要求36所述的系统,其中所述系统是模拟神经存储器系统。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/232,149 | 2021-08-11 | ||
US17/519,241 | 2021-11-04 | ||
US17/519,241 US11989440B2 (en) | 2021-08-11 | 2021-11-04 | Hybrid memory system configurable to store neural memory weight data in analog form or digital form |
PCT/US2021/059286 WO2023018432A1 (en) | 2021-08-11 | 2021-11-13 | Hybrid memory system configurable to store neural memory weight data in analog form or digital form |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117751406A true CN117751406A (zh) | 2024-03-22 |
Family
ID=90253099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180100746.8A Pending CN117751406A (zh) | 2021-08-11 | 2021-11-13 | 可配置为以模拟形式或数字形式存储神经存储器权重数据的混合存储器系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117751406A (zh) |
-
2021
- 2021-11-13 CN CN202180100746.8A patent/CN117751406A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112868063B (zh) | 深度学习人工神经网络中的模拟神经存储器的编程的精确调谐 | |
KR102457394B1 (ko) | 딥 러닝 신경 네트워크에서 사용되는 아날로그 신경 메모리 시스템 내의 메모리 셀들에 대한 온도 및 누설 보상 | |
CN114930458A (zh) | 用于人工神经网络中的模拟神经存储器的精确数据调谐方法和装置 | |
JP2023525771A (ja) | 論理セル及び改善されたプログラミング機構を備える人工ニューラルネットワーク内のアナログニューラルメモリアレイ | |
CN115516565A (zh) | 人工神经网络中的具有源极线拉低机构的模拟神经存储器阵列 | |
CN116917905A (zh) | 用于人工神经网络中的模拟神经存储器的精确数据调谐方法和装置 | |
CN117751406A (zh) | 可配置为以模拟形式或数字形式存储神经存储器权重数据的混合存储器系统 | |
TWI834397B (zh) | 包含類比陣列及數位陣列的人工神經網路 | |
TWI814383B (zh) | 深度學習人工神經網路中類比神經記憶體的輸出電路 | |
US20240220154A1 (en) | Array of non-volatile memory cells to store data in analog form and digital form | |
US20230244903A1 (en) | Artificial neural network comprising an analog array and a digital array | |
TWI842636B (zh) | 深度學習人工神經網路中類比神經記憶體的輸出電路 | |
TWI846378B (zh) | 利用類比輸入的向量矩陣乘法陣列 | |
TWI843232B (zh) | 決定施加至神經網路中的一或多個記憶體胞元的偏壓 | |
CN117178324A (zh) | 用于深度学习人工神经网络中模拟神经存储器的分裂阵列架构 | |
US20230154528A1 (en) | Determination of a bias voltage to apply to one or more memory cells in a neural network | |
US20230048411A1 (en) | Input circuitry for analog neural memory in a deep learning artificial neural network | |
US20230325645A1 (en) | Artificial neural network comprising a three-dimensional integrated circuit | |
US20230325650A1 (en) | Vector-by-matrix-multiplication array utilizing analog outputs | |
CN117716427A (zh) | 用于深度学习人工神经网络中的模拟神经存储器的输入电路 | |
CN118043889A (zh) | 要施加到神经网络中的一个或多个存储器单元的偏置电压的确定 | |
CN117813653A (zh) | 用于深度学习人工神经网络中的模拟神经存储器的输出电路 | |
TW202312035A (zh) | 深度學習人工神經網路中類比神經記憶體的分離陣列架構 | |
WO2022245384A1 (en) | Output circuit for analog neural memory in a deep learning artificial neural network | |
TW202407579A (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 |