深度神经网络在非易失性存储器中的垂直映射和计算

文档序号:170900 发布日期:2021-10-29 浏览:26次 >En<

阅读说明:本技术 深度神经网络在非易失性存储器中的垂直映射和计算 (Vertical mapping and computation of deep neural networks in non-volatile memory ) 是由 T.T.霍昂 M.利克-博登 A.库卡尼 于 2021-04-06 设计创作,主要内容包括:本发明题为“深度神经网络在非易失性存储器中的垂直映射和计算”。本发明提供了一种非易失性存储器结构,该非易失性存储器结构能够存储深度神经网络(DNN)的层并在该结构内执行推断操作。接合管芯对的叠堆通过硅通孔连接。每个接合管芯对包括:存储器管芯,具有一个或多个存储器阵列,神经网络的层被映射到该存储器阵列上;和外围电路管芯,包括用于执行接合管芯对的卷积或乘法的控制电路。该乘法可以在存储器管芯上的阵列内或在外围电路管芯上的逻辑内完成。该阵列可形成为沿着通孔的列,从而允许通过沿着列上下传播输入来执行推断操作,其中一个层级的输出为后续层的输入。(The invention provides vertical mapping and calculation of deep neural networks in non-volatile memory. A non-volatile memory structure is provided that is capable of storing layers of a Deep Neural Network (DNN) and performing inference operations within the structure. The stacks of bonded die pairs are connected by through-silicon vias. Each bonded die pair includes: a memory die having one or more memory arrays onto which layers of a neural network are mapped; and a peripheral circuit die including a control circuit for performing convolution or multiplication of the bonded die pair. The multiplication may be done within an array on the memory die or within logic on the peripheral circuit die. The array may be formed as columns along the vias, allowing inference operations to be performed by propagating inputs up and down the columns, with the output of one level being the input of a subsequent level.)

具体实施方式

当神经网络执行推断或训练操作时,执行涉及大量数据的大量计算,特别是在深度神经网络或DNN的情况下,其涉及大量的必须通过其进行输入传播的层。为了避免大量数据移入和移出存储器设备,神经网络的层的权重被存储在存储器设备的非易失性存储器阵列中,并且每个层的计算在该设备上执行。为了提高性能和能力,下文所述的实施方案使用接合管芯对,其中第一管芯包括一个或多个存储器阵列,并且外围电路(包括用于执行存储器操作的控制电路)被移到第二管芯上。接合管芯对的第二存储器管芯可具有更高的容量,因为其所有区域都专用于存储器单元,并且其处理可针对存储器单元技术进行优化。接合管芯对的外围电路管芯可使用针对控制电路元件所优化的处理,诸如CMOS处理,并且CMOS管芯上可用的附加区域可用于附加逻辑元件和功能。当用于神经网络时,层的权重可存储在接合管芯对的存储器管芯的阵列中,并且神经网络的激活可在接合管芯对的CMOS管芯的逻辑元件中执行。根据该实施方案,层的输入与其权重的计算(乘法、卷积)可在存储器内通过将输入转换成沿阵列字线所施加的电压电平来执行,或者在逻辑内通过将权重读出到CMOS管芯中并在此处的逻辑元件中执行计算来执行。

接合管芯对可以堆叠成三维结构,其中一层的接合管芯对可以通过使用硅通孔或TSV连接到其他叠堆层上的接合管芯对。然后可将一个叠堆层的输出转移到另一叠堆层,在那里它们用作输入。可以将存储器管芯的阵列分组成沿着通孔的列。通过将神经网络映射成堆叠存储器管芯对的3D结构,每个层的权重,无论是卷积层还是全连接层,可沿着列以阵列存储,并且推断操作可通过在第一层处接收网络输入并通过结构的层传播输入来执行。

图1是连接到主机120的存储器系统100的一个实施方案的框图。存储器系统100可实现本文提出的技术,其中从主机120接收神经网络输入或其他数据。根据实施方案,可从主机120接收输入,然后将该输入提供给存储器封装件104以用于对先前编程到存储器封装件104的存储器阵列中的权重进行推断。许多不同类型的存储器系统可与本文提出的技术一起使用。示例性存储器系统包括固态驱动器(“SSD”)、存储卡和嵌入式存储器设备;然而,也可以使用其他类型的存储器系统。

图1的存储器系统100包括控制器102、用于存储数据的非易失性存储器104、以及本地存储器(例如,DRAM/ReRAM)106。控制器102包括前端处理器(FEP)电路110和一个或多个后端处理器(BEP)电路112。在一个实施方案中,FEP电路110在ASIC上实现。在一个实施方案中,每个BEP电路112在单独ASIC上实现。在其他实施方案中,统一控制器ASIC可组合前端功能和后端功能两者。用于BEP电路112和FEP电路110中的每一者的ASIC在同一半导体上实现,使得控制器102被制造为片上系统(“SoC”)。FEP电路110和BEP电路112均包括其本身的处理器。在一个实施方案中,FEP电路110和BEP电路112用作主从配置,其中FEP电路110是主设备,并且每个BEP电路112是从设备。例如,FEP电路110实现闪存转换层(FTL)或媒体管理层(MML),该FTL或MML执行存储器管理(例如,垃圾收集、损耗均衡等)、逻辑到物理地址转换、与主机的通信、DRAM(本地易失性存储器)的管理以及SSD(或其他非易失性存储系统)的整体操作的管理。BEP电路112根据FEP电路110的请求来管理存储器封装件/管芯中的存储器操作。例如,BEP电路112可进行读取、擦除和编程过程。另外,BEP电路112可执行缓冲器管理,设置FEP电路110所需的特定电压电平,执行纠错(ECC),控制到存储器封装件的切换模式接口等。在一个实施方案中,每个BEP电路112负责其本身的一组存储器封装件。

在一个实施方案中,非易失性存储器104包括多个存储器封装件。每个存储器封装件都包括一个或多个存储器管芯。因此,控制器102连接到一个或多个非易失性存储器管芯。在一个实施方案中,存储器封装件104中的每个存储器管芯利用NAND闪存存储器(包括二维NAND闪存存储器和/或三维NAND闪存存储器)。在其他实施方案中,存储器封装件可包括其他类型的存储器,诸如基于电阻式随机存取存储器(诸如,ReRAM、MRAM、FeRAM或RRAM)的存储级存储器(SCM)或相变存储器(PCM)。

控制器102经由接口130与主机120通信,该接口实现PCI Express(PCIe)上的NVMExpress(NVMe)。为了与存储器系统100一起工作,主机120包括沿着总线128连接的主机处理器122、主机存储器124和PCIe接口126。主机存储器124是主机的物理存储器,并且可以是DRAM、SRAM、非易失性存储器或另一类型的存储装置。主机120在存储器系统100的外部并与该存储器系统分开。在一个实施方案中,存储器系统100嵌入在主机120中。

图2是FEP电路110的一个实施方案的框图。图2示出与主机120通信的PCIe接口150,以及与该PCIe接口通信的主机处理器152。主机处理器152可以是本领域中已知的适于实现的任何类型的处理器。主机处理器152与片上网络(NOC)154通信。NOC是集成电路上的通信子系统,通常在SoC中的核心之间。NOC可跨越同步和异步时钟域,或者使用非时钟的异步逻辑。NOC技术将网络理论和方法应用于片上通信,并且与常规总线和交叉开关互连相比带来了显著的改善。与其他设计相比,NOC提高了SoC的可扩展性以及复杂SoC的功率效率。NOC的导线和链路由许多信号共享。由于NOC中的所有链路可在不同的数据分组上同时运行,因此实现了高度并行。因此,随着集成子系统的复杂性不断增大,与先前的通信架构(例如,专用的点对点信号线、共享总线或具有桥的分段总线)相比,NOC提供增强的性能(诸如吞吐量)和可扩展性。连接到NOC 154并且与NOC 154通信的是存储器处理器156、SRAM 160和DRAM控制器162。DRAM控制器162用于操作DRAM(例如,DRAM 106)并且与该DRAM通信。SRAM160是由存储器处理器156使用的本地RAM存储器。存储器处理器156用于运行FEP电路并且执行各种存储器操作。与NOC通信的还有两个PCIe接口164和166。在图2的实施方案中,SSD控制器将包括两个BEP电路112;因此,存在两个PCIe接口164/166。每个PCIe接口与BEP电路112中的一个通信。在其他实施方案中,可存在多于或少于两个BEP电路112;因此,可存在多于两个PCIe接口。

FEP电路110还可包括闪存转换层(FTL),或更一般地媒体管理层(MML)158,该FTL或MML执行存储器管理(例如,垃圾收集、损耗均衡、负载平衡等)、逻辑到物理地址转换、与主机的通信、DRAM(本地易失性存储器)的管理,以及SSD或其他非易失性存储系统的整体操作的管理。媒体管理层(MML)158可被集成为可以处理存储器错误并与主机界面交互的存储器管理的一部分。具体地讲,MML可以是FEP电路110中的模块,并且可以负责存储器管理的内部。具体地讲,MML 158可包括存储器设备固件中的算法,该算法将来自主机的写入转换为对管芯的存储器结构(例如,下图5中的326)的写入。可能需要MML 158,因为:1)存储器可能具有有限的耐久性;2)该存储器结构可以只写入多个页面;并且/或者3)除非将存储器结构作为块擦除,否则可以不写入该存储器结构。MML 158理解存储器结构的这些潜在限制,这些限制可能对主机不可见。因此,MML 158尝试将来自主机的写入转换为向存储器结构的写入。

图3是BEP电路112的一个实施方案的框图。图3示出用于与FEP电路110通信(例如,与图2的PCIe接口164和166中的一个通信)的PCIe接口200。PCIe接口200与两个NOC 202和204通信。在一个实施方案中,两个NOC可组合成一个大的NOC。每个NOC(202/204)通过XOR引擎(224/254)和ECC引擎(226/256)连接到SRAM(230/260)、缓冲器(232/262)、处理器(220/250)和数据路径控制器(222/252)。ECC引擎226/256用于执行纠错,如本领域所知。XOR引擎224/254用于对数据执行XOR,使得可在存在编程错误的情况下以可恢复的方式组合和存储数据。数据路径控制器222连接到接口模块,以用于经由四个信道与存储器封装件进行通信。因此,顶部NOC 202与用于与存储器封装件通信的四个信道的接口228相关联,并且底部NOC 204与用于与存储器封装件通信的四个附加信道的接口258相关联。每个接口228/258包括四个切换模式接口(TM接口)、四个缓冲器和四个调度器。对于信道中的每一个存在一个调度器、缓冲器和TM接口。处理器可以是本领域中已知的任何标准处理器。数据路径控制器222/252可以是处理器、FPGA、微处理器、或其他类型的控制器。XOR引擎224/254和ECC引擎226/256是专用的硬件电路,称为硬件加速器。在其他实施方案中,XOR引擎224/254和ECC引擎226/256可在软件中实现。调度器、缓冲器和TM接口是硬件电路。

图4是包括连接到存储器总线(数据线和芯片使能线)294的多个存储器管芯292的存储器封装件104的一个实施方案的框图。存储器总线294连接到切换模式接口296以用于与BEP电路112的TM接口进行通信(参见例如图3)。在一些实施方案中,存储器封装件可以包括连接到存储器总线和TM接口的小控制器。存储器封装件可以具有一个或多个存储器管芯。在一个实施方案中,每个存储器封装件包括八个或16个存储器管芯;然而,也可以实现其他数量的存储器管芯。本文描述的技术不限于任何特定数量的存储器管芯。

图5是存储器管芯300的一个实施方案的功能框图。图5中描绘的部件为电子电路。在一个实施方案中,每个存储器管芯300包括存储器结构326、控制电路310和读/写电路328。存储器结构126能够经由行解码器324由字线来寻址,并且经由列解码器332由位线来寻址。读/写电路328包括多个感测块350并且允许存储器单元页面被并行读取或并行编程,该感测块包括SB1、SB2、…、SBp(感测电路)。命令和数据经由线路318在控制器与存储器管芯300之间传输。在一个实施方案中,存储器管芯300包括连接到线路318的一组输入和/或输出(I/O)引脚。

控制电路310与读/写电路328配合以在存储器结构326上执行存储器操作(例如,写入、读取等),并且包括状态机312、片上地址解码器314,以及功率控制电路316。状态机312提供存储器操作的管芯级控制。在一个实施方案中,状态机312可由软件编程。在其他实施方案中,状态机312不使用软件并且完全地在硬件(例如,电子电路)中实现。在另一个实施方案中,状态机312被微控制器替换。在一个实施方案中,控制电路310包括缓冲器,诸如寄存器、ROM熔丝和用于存储默认值(诸如基准电压和其他参数)的其他存储设备。

片上地址解码器314提供控制器102所用的地址和解码器324和332所用的硬件地址之间的地址接口。功率控制模块316控制在存储器操作期间提供给字线和位线的功率和电压。功率控制模块316可以包括用于产生电压的充电泵。感测块包括位线驱动器。

出于本文档的目的,短语“一个或多个控制电路”可包括控制器、状态机、微控制器和/或控制电路310、或用于控制非易失性存储器的其他类似电路。

在一个实施方案中,存储器结构326包括非易失性存储器单元的三维存储器阵列,其中多个存储器级形成在单个基板诸如晶圆上方。存储器结构可包括任何类型的非易失性存储器,该非易失性存储器在具有设置在硅(或其他类型的)基板上方的有源区域的存储器单元的一个或多个物理级中一体地形成。在一个示例中,非易失性存储器单元包括具有电荷捕获材料的竖直NAND串,诸如例如在美国专利9,721,662中所述的,该专利全文以引用方式并入本文。

在另一个实施方案中,存储器结构326包括非易失性存储器单元的二维存储器阵列。在一个示例中,非易失性存储器单元是利用浮栅的NAND闪存存储器单元,诸如例如在美国专利9,082,502中所述的,该专利全文以引用方式并入本文。也可使用其他类型的存储器单元(例如,NOR型闪存存储器)。

包括在存储器结构326中的存储器阵列架构或存储器单元的确切类型不限于上述示例。许多不同类型的存储器阵列架构或存储器技术可用于形成存储器结构326。实现本文提出的要求保护的新实施方案不需要特定的非易失性存储器技术。用于存储器结构326的存储器单元的合适技术的其他示例包括ReRAM存储器(电阻式随机存取存储器)、磁阻存储器(例如,MRAM、自旋转移扭矩MRAM、自旋轨道扭矩MRAM)、FeRAM、相变存储器(例如,PCM)等。用于存储器结构126的存储器单元架构的合适技术的示例包括二维阵列、三维阵列、交叉点阵列、堆叠二维阵列、竖直位线阵列等等。

ReRAM交叉点存储器的一个示例包括可逆电阻切换元件,其布置在由X线和Y线(例如,字线和位线)访问的交叉点阵列中。在另一个实施方案中,存储器单元可包括导电桥存储器元件。导电桥存储器元件也可称为可编程金属化单元。基于固体电解质内的离子的物理重新定位,导电桥存储器元件可用作状态改变元件。在一些情况下,导电桥存储器元件可包括两个固体金属电极,一个是相对惰性的(例如,钨),而另一个是电化学活性的(例如,银或铜),在两个电极之间具有固体电解质的薄膜。随着温度升高,离子的迁移率也增加,这导致导电桥存储器单元的编程阈值降低。因此,导电桥存储器元件可在整个温度范围内具有宽范围的编程阈值。

磁阻存储器(MRAM)通过磁存储元件存储数据。元件由两个铁磁板形成,每个铁磁板可保持磁化,由薄的绝缘层隔开。两个板中的一个是设置为特定极性的永磁体;可以改变另一个板的磁化以匹配外磁场的磁化来存储内存。存储器设备由此类存储器单元的网格构建。在用于编程的一个实施方案中,每个存储器单元位于一对写入线之间,该对写入线被布置成彼此成直角,与单元平行,一个在单元上方并且一个在单元下方。当电流通过它们时,产生感应磁场。

相变存储器(PCM)利用了硫属化合物玻璃的独特性能。一个实施方案使用GeTe-Sb2Te3超晶格通过仅利激光脉冲(或来自另一个源的光脉冲)改变锗原子的配位状态来实现非热相变。因此,编程的剂量是激光脉冲。可以通过阻止存储器单元接收光来抑制存储器单元。在其他PCM实施方案中,存储器单元通过电流脉冲来编程。应当注意,在该文件中使用“脉冲”不需要矩形脉冲,但包括声音、电流、电压光或其他波的(连续或非连续)振动或脉冲串。

本领域普通技术人员将认识到,本文所述的技术不限于单个特定存储器结构、存储器配置或材料构成,但涵盖了在如本文所述的以及如本领域普通技术人员所理解的技术实质与范围内的许多相关的存储器结构。

可以将图5的元件分成两个部分:存储器单元的存储器结构326;和外围电路,包括所有其他元件。存储器电路的重要特性是其容量,该容量可通过如下方式增加:增加留给存储器结构326作特定用途的存储器管芯300的面积;然而,这减小了可用于外围电路的存储器管芯300的面积。这可对这些外围元件造成相当严重的限制。例如,需要在可用区域内装配感测放大器电路,这可是对感测放大器设计架构的重大限制。相对于管芯上控制电路310,可用面积减小会限制可在芯片上实现的可用功能。因此,在存储器管芯300的设计中,需要对存储器结构326的专用面积量以及外围电路的专用面积量进行基本权衡。

存储器结构326和外围电路通常相左的另一个领域是形成这些区域所涉及的处理,因为这些区域通常涉及不同的处理技术以及赋予单个管芯以不同制式的权衡。例如,当存储器结构326是NAND闪存时,这是NMOS结构,而外围电路通常是基于CMOS的。例如,感测块350中的感测放大器电路、功率控制块316中的电荷泵、状态机312中的逻辑元件以及其他外围电路通常采用PMOS设备。用于制造CMOS管芯的处理操作在许多方面将不同于针对NMOS闪存NAND存储器或其他存储器单元技术所优化的处理操作。

为了改进这些限制,下文所述的实施方案可将图5的元件分离到单独形成的管芯上,然后将这些管芯接合在一起。更具体地,存储器结构326可形成在一个管芯上,并且外围电路元件中的一些或全部(包括一个或多个控制电路)可形成在单独的管芯上。例如,存储器管芯可以仅由存储器元件形成,诸如闪存NAND存储器、PCM存储器、ReRAM存储器或其他存储器类型的存储器单元阵列。然后可以将外围电路中的一些或全部电路(甚至包括诸如解码器和感测放大器等元件)移到单独的管芯上。这允许根据其技术单独地优化存储器管芯中的每个管芯。例如,NAND存储器管芯可针对存储器阵列结构进行优化,而无需担心现在已移到可针对CMOS处理进行优化的独立外围电路管芯上的CMOS元件。这为外围元件提供了更多空间,如果外围元件被限制于容纳了存储器单元阵列的相同管芯的边缘,则现在可结合可能不容易结合的附加能力。然后可在接合式多管芯存储器电路中将两个管芯接合在一起,其中一个管芯上的阵列连接到另一个存储器电路上的外围元件。例如,虽然下面将集中介绍一个存储器管芯和一个外围电路管芯的接合式存储器电路,但其他实施方案可使用更多管芯,诸如两个存储器管芯和一个外围电路管芯。

图6A示出了在形成互连和接合特征部之后的非易失性存储器管芯(诸如,存储器结构326)的一些层。图6A示出了工件500的横截面,该工件包括基板501,例如硅基板,诸如,硅晶圆(例如,300mm晶圆)或晶圆的一部分。术语工件可指基板(例如,晶圆或晶圆的一部分)以及形成于基板之中或之上的部件,包括电子部件,诸如有源部件、互连层、介电层和接合焊盘。在基板501上面及其上方的是中间区域502,该中间区域可包括非易失性存储器单元的块。在工件500的上部区域503(互连区域)中,一个或多个金属层在导电路径中进行了图案化以承载电信号。这些层可包括位线和通孔。图案化金属层由提供电隔离的介电层(例如,二氧化硅或其他绝缘体)隔开。上部区域503上方是接合区域504,该接合区域包括接合焊盘,该接合焊盘连接到上部区域503的导电路径以及/或者中间区域502和/或基板501的部件,以通过上部区域503的导电迹线提供与中间区域502中的非易失性存储器单元的电耦合。接合区域504可包括介电层,其中接合焊盘形成在介电层之中或之上,使得焊盘暴露在表面506(主表面)处并且可在晶圆对晶圆接合工艺中与相对的接合焊盘接合。

图6B示出了工件500的主表面506的一部分的俯视图,其示出了包括焊盘508a-508d(其可包括耦接到位线、字线、虚设字线、选定栅极线以及为测试目的而提供的测试焊盘的有源焊盘)的裸露焊盘。尽管在该示例中示出了少量焊盘,但应当理解,大量焊盘可设置在存储器管芯诸如工件500的表面上。单个管芯可包括例如数百万个焊盘,其中晶圆包括数百或数千个管芯。接合区域504可包括围绕焊盘延伸并且隔离相邻焊盘的介电层。焊盘可由合适的电导体(诸如,铜或含铜的铜合金、或其他合适的金属或金属合金)制成。

图7A示出了外围电路管芯工件600的示例,该工件包含控制电路,诸如图5中的管芯上控制电路310和其他外围元件。工件600包括基板601,例如硅晶圆(例如,300mm晶圆)或晶圆的一部分。在基板601之上和上方的是中间区域602,该中间区域可包括形成在基板601之上(和/或之中)的控制电路。例如,中间区域可包括CMOS(互补型金属氧化物半导体)电路,该电路包括形成在基板601的有源区域中的控制电路310。在工件600的上部区域603(互连区域)中,一个或多个金属层在导电路径中进行了图案化以承载电信号。这些可包括:相对于基板的主表面,横向延伸的迹线以及竖直延伸的通孔。此类导电路径形成不同电路(例如,控制器122的连接部件)之间的电连接。图案化金属层由提供电隔离的介电层(例如,二氧化硅或其他绝缘体)隔开。在上部区域603上方是接合区域604,该接合区域包括接合焊盘,该接合焊盘连接到上部区域603的导电路径以及/或者中间区域602和/或基板601的部件,以通过上部区域603的导电路径提供与中间区域602中的电路的电耦合。接合区域604可包括介电层,其中接合焊盘形成在介电层之中或之上,使得接合焊盘暴露在表面606(主表面)处并且可在晶圆对晶圆接合工艺中与相对的接合焊盘接合。

图7B示出了工件600的主表面606的一部分的俯视图,其示出了包括焊盘608a-608d(其可包括用于测试目的的有源焊盘和测试焊盘)和焊盘616的裸露焊盘。接合区域604可包括围绕焊盘延伸并且隔离相邻焊盘的介电层。焊盘可由合适的电导体(诸如,铜或含铜的铜合金、或其他合适的金属或金属合金)制成。

焊盘608a-608d和616可布置成与另一个工件的对应焊盘连接以用于晶圆对晶圆接合工艺。例如,可定位焊盘616,使得当工件500和600对准并接合时,焊盘616接合到焊盘416然后接合到阵列位线,并且可由工件600的中间区域602中的控制电路进行控制。工件500可包括多个存储器管芯,并且工件600可在对应图案(例如,一对一图案,使得对于工件500的每个存储器管芯,存在工件600的对应控制电路管芯)中包括相等数量的控制电路管芯。相对的成对管芯具有对应的焊盘图案,使得当工件精确对准时,每个焊盘与相对管芯的对应焊盘对准,使得工件600的控制电路电连接到工件500的存储器单元。

图8A示出了工件500和工件600的晶圆对晶圆接合的过程。对基板501进行处理,以制造存储器阵列(例如,存储器结构326)、互连结构以及用于接合的焊盘,如上面参照图6A至图6B所论,从而形成工件500。对基板601进行处理,以制造外围电路,该外围电路包括控制电路(例如,形成为CMOS电路的逻辑电路)、互连结构以及用于接合的焊盘,如上文参照图7A至图7B所论,从而形成工件600。然后在该示例中,将工件500翻转(可翻转任一工件),使得工件500的主表面506与工件600的主表面606相对。将工件500、600对准,使得对应的管芯成对对准,并且此类管芯对上的焊盘对准以用于接合。随后,在工件500、600对准的情况下,对工件500、600施加压力和/或热或其他条件,以将相应焊盘接合在一起,从而在工件500的存储器阵列与工件600的控制电路之间形成电连接(即,沿着主表面506、606之间的界面进行接合)。所接合的工件500和600形成包括管芯对的组合工件700,其中每一对包括形成存储器系统的存储器阵列管芯和控制电路管芯。

图8B示出了包括工件600和工件500的组合工件700。可以看出,工件500的接合区域504沿着界面701(即,工件500、600的主表面之间的界面)与工件600的接合区域604接触。

图8C示出了组合工件700的一部分,包括基板601、中间区域602(包括形成为基板601之内和之上的CMOS芯片部件的有源部件)、上部区域603(包括由电介质分隔的迹线和通孔所形成的导电路径)和接合区域604,该接合区域包括接合到接合区域504的对应焊盘上的焊盘。通过上部区域503的导电路径,接合区域504的焊盘耦接到中间区域502中的形成在基板501上的存储器阵列元件。

尽管沿着工件500、600主表面的焊盘可接合在一起并且在接合之后可以不露出来,但可提供附加焊盘以用于连接到其他电路(例如,连接到组合工件700的外部电路)并且可以露出来以用于进行接合和/或探测。工件600中的裸露焊盘720由延伸穿过工件500的开口722而露出。可在工件500的每个管芯中提供一个或多个此类开口,使得工件600的指定焊盘在工件500、600的晶圆对晶圆接合之后仍然露出。例如,可在晶圆对晶圆接合之前(或之后)穿过工件500进行开口蚀刻。尽管示出了一个裸露焊盘(焊盘720),但应当理解,可提供任何数量的裸露焊盘。例如,可提供焊盘以用于与主机进行交互、接收电力、测试和其他目的。

用于形成工件500的制造工艺可与用于形成工件600的制造工艺完全不同。例如,尽管工件500的存储器结构326可例如包括在3-D结构中的基板表面上方的多个有源区域,但是工件600的逻辑电路可形成在单个有源区域中。逻辑电路可通过CMOS工艺形成,而存储器结构126使用适于3D存储器制造的工艺步骤,该工艺步骤可不同于CMOS工艺步骤。因此,所用的层数和材料可不同。设备尺寸和公差也可不同。并且热预算可以不同。在工件(诸如,工件500)中嵌入逻辑电路可能需要附加的工艺步骤,因为用于形成存储器结构126的相同工艺步骤可能与形成逻辑电路的工艺步骤不兼容。因此,外围区域(例如,CMOS或外围区域104中的其他逻辑电路)中提供的逻辑电路可单独形成。这增加了工艺步骤的数量,从而增加了损坏风险并产生热预算问题。

尽管图5示出了存储器管芯300包括可形成在外围区域中的除存储器结构326之外的各种电路(例如,控制电路310、读/写电路328和行解码器324)的示例,但是减少或消除阵列工件中的逻辑电路可减少所需的处理步骤的数量并且减少热预算问题。晶圆对晶圆接合提供了相对较大的区域以用于接合大量的焊盘,使得可在阵列工件与控制电路工件之间提供宽的界面。这可有利于与图5所示电路不同的电路布置方式。例如,在一些示例中,外围电路中的一些或全部电路,包括在存储器管芯300上示出的控制电路310、读/写电路328和行解码器324,可位于外围或控制电路工件上,而不是位于与存储器结构326相同的管芯上。这可允许制造用于存储器单元的阵列工件,该阵列工件具有很少逻辑电路或不具有逻辑电路(例如,不具有CMOS部件),使得制造过程可得到显著简化并且减少了热预算问题。

图9示出了图5的布置方式的替代性布置方式,其可通过晶圆对晶圆接合来实现。图9示出了外围电路的示例,该外围电路包括形成于控制电路管芯808(例如,工件600中的外围电路管芯)中的控制电路,该控制电路管芯耦接到形成于阵列管芯810(例如,工件500中的阵列管芯)中的存储器结构326。通用部件如图5那样编号。可以看出,控制电路310、读/写电路328和行解码器324(其可通过CMOS工艺形成)位于控制电路管芯808中。附加元件,诸如来自控制器102的功能,也可移到控制电路管芯808中。控制电路310、读/写电路328、行解码器324和控制器322可以由常规工艺(例如,CMOS工艺)形成,使得添加更常见于存储器控制器102上的元件和功能可能需要很少的附加工艺步骤或不需要附加工艺步骤(即:用于制造控制器102的相同工艺步骤也可用于制造控制电路310、读/写电路328和行解码器324)。因此,尽管移走管芯(诸如,存储器管芯300)中的此类电路可减少制造此类管芯所需的步骤数量,但向管芯(诸如,控制电路管芯808)添加此类电路可能不需要任何附加的工艺步骤。

图9示出了通过电路径812耦接到存储器结构326的读/写电路328。例如,电路径812可以提供读/写电路328与存储器结构326位线之间的电连接。电路径可以从控制电路管芯808中的读/写电路328延伸穿过控制电路管芯上的焊盘(例如,焊盘616),该焊盘接合到阵列管芯810的对应焊盘(例如,焊盘416)上,该对应焊盘连接到存储器结构326的位线。存储器结构326的每根位线可具有电路径812中对应的电路径,包括连接到读/写电路328的一对接合焊盘。类似地,行解码器电路324通过电路径814耦接到存储器结构326。电路径814中的每条电路径可以对应于字线、虚设字线或选定栅极线。也可在控制电路管芯808与阵列管芯810之间提供附加的电路径。

在下文中,状态机312和/或控制器102(或等效功能电路)与图9所示其他电路的全部电路或子集电路相结合,这可视为执行本文所述功能的一个或多个控制电路的一部分。控制电路可以仅包括硬件或者包括硬件和软件(包括固件)的组合。例如,由固件编程以执行本文描述的功能的控制器是控制电路的一个示例。控制电路可包括处理器、FGA、ASIC、集成电路或其他类型的电路。

现在转到可存储在非易失性存储器设备上的数据类型,在以下讨论中,所关注的数据类型的具体示例是人工神经网络所用的权重,诸如卷积神经网络或CNN。名称“卷积神经网络”是指网络采用称为卷积的数学运算,即一种专用的线性运算。卷积网络是:在其各层中的至少一层中,用卷积代替通用矩阵乘法的神经网络。CNN由输入层和输出层、以及多个中间隐藏层形成。CNN的隐藏层通常是一系列卷积层,这些卷积层对乘法或其他点积进行“卷积”。虽然这些层通常称为卷积,但从技术上来讲,这些层常常为滑动点积或互相关,诸如下文参照图13所述。

神经网络中的每个神经元通过将特定函数应用于来自前一层中的接收域的输入值来计算输出值。输入值的应用函数通过权重矢量和偏置来确定。在神经网络中,通过对这些偏置和权重进行迭代调整来进行学习。权重矢量和偏置被称为滤波器并且表示输入的具体特征(例如,具体形状)。CNN的区别特征是:许多神经元可共享同一滤波器。

图10是CNN示例的示意图。从像素值阵列的输入图像开始,接着是多个卷积层,继而是多个全连接层,其中最后一层提供输出。第一卷积层中的每个神经元获取来自输入图像的n×n像素子区域中的输入数据。神经元所习得的权重(统称为其卷积滤波器)确定神经元响应于该输入的单值输出。在该卷积中,通过沿着图像的x和y维度滑动输入区域以生成卷积层的值,将神经元滤波器应用于输入图像中。实际上,等效卷积通常由神经元针对不同输入区域进行静态相同拷贝来实现。使用每个层的习得权重,通过卷积层来重复该过程,之后使用其习得权重,通过全连接层来传播该过程。

图11更详细地示出了神经网络的若干全连接层。在图11中,所示的三层人工神经网络表示为圆圈所示的节点或人工神经元的互连组、以及从一个人工神经元的输出到另一个人工神经元的输入的一组连接。该示例示出了三个输入节点(I1、I2、I3)和两个输出节点(O1、O2),以及具有四个隐藏或中间节点(H1、H2、H3、H4)的中间层。人工神经网络的节点或人工神经元/突触由主机或其他处理系统的逻辑元件实现为数学函数,该数学函数接收一个或多个输入并将它们进行求和以产生输出。通常,对每个输入进行单独加权,并将总和通过节点的数学函数传递以提供节点的输出。

在常见人工神经网络实施方式中,节点(人工神经元/突触)之间的连接处的信号是实数,并且每个人工神经元的输出通过其输入之总和的一些非线性函数来计算。节点及其连接通常具有随着学习过程的进行而调节的权重。权重增大或减小连接处的信号强度。节点可具有阈值,使得仅当聚合信号超过该阈值时才发送信号。通常,节点聚集为层。不同的层可对其输入执行不同类型的转换。信号可能在多次遍历各层之后从第一层(输入层)行进到最后一层(输出层)。虽然图6仅示出单个中间或隐藏层,但是复杂的深度神经网络(DNN)可具有许多此类中间层。

受监督的人工神经网络通过供应输入,然后检查和校正输出而被“训练”。例如,受过识别狗品种训练的神经网络将处理一组图像并计算图像中的狗是某一品种的概率。用户可查看结果并选择网络应显示哪些概率(高于特定阈值等),并返回所提议的标签。每一如此的数学变换都被视为一层,并且复杂的神经网络具有许多层。由于大量的中间或隐藏层提供的深度,因此神经网络可以在受训练时对复杂的非线性关系建模。

图12A是描述用于训练神经网络以生成一组权重的过程的一个实施方案的流程图。该训练过程往往在云端执行,从而实现待使用的附加或更强大的处理。在步骤1201处,接收输入,诸如一组图像(例如,图10中的图像输入)。在步骤1203处,使用当前滤波器或权重组,通过将输入连接到下一层(例如,图10中的CON1)的层来传播输入。然后在步骤1205中,在下一层(例如,图10中的CON2)处接收神经网络的输出,使得作为来自一层中的输出所收到的值用作下一层的输入。来自第一层的输入以这种方式通过所有中间层或隐藏层传播,直到它们到达输出。在先前段落的狗品种示例中,输入将是许多狗的图像数据,并且中间层使用当前权重值来计算图像中的狗是某一品种的概率,以及将提议的狗品种标签在步骤1205处返回。然后,用户可在步骤1207处查看结果,以选择神经网络应返回哪些概率并确定当前权重组是否提供了足够准确的标签,并且如果是,则训练完成(步骤1211)。如果结果不够精确,则神经网络基于用户所选择的概率而在步骤1209处调节权重,然后循环返回到步骤1203以使用所调节的权重再次运行输入数据。一旦已确定了神经网络的权重组,该权重就可用于“推断”,“推断”是使用所确定的权重来根据输入到神经网络的数据生成输出结果的过程。一旦在步骤1211处确定权重,就可以将该权重存储在非易失性存储器中以供稍后使用,其中这些权重在非易失性存储器中的存储过程在下文中进一步详细讨论。

图12B是描述了一种使用神经网络进行推断阶段的监督学习的过程的流程图,该过程使用所估计的精确度来预测输入数据的“含义”。根据情况,神经网络可在云端中并且由边缘设备(例如,智能电话、汽车加工,硬件加速器)的处理器进行推断。在步骤1221处,接收输入,诸如在上面使用的示例中的狗的图像。如果在运行神经网络应用程序的设备中不存在先前确定的权重,则在步骤1222处加载该先前确定的权重。例如,在执行神经网络的主机处理器上,可从存储权重的SSD中读取权重,并加载到主机设备上的RAM中。在步骤1223处,随后通过神经网络的层来传播输入数据。步骤1223将类似于图12B的步骤1203,但现在使用在步骤1211处的训练过程结束时建立的权重。在通过中间层传播输入之后,然后在步骤1225处提供输出。

图13是输入图像与滤波器或权重组之间的卷积运算的示意图。在该示例中,输入图像是像素值的6×6阵列,并且滤波器是权重的3×3阵列。卷积运算通过将3×3滤波器与输入图像的3×3块的矩阵乘法来执行。例如,将图像的最左上3×3块与滤波器相乘得到输出矩阵的左上值。滤波器然后可在图像上滑过一个像素以生成输出的下一个条目,依此类推以生成用于输出的顶行4个元素。通过每次向下滑动滤波器一个像素来重复该过程,生成4×4输出矩阵。对每个层执行类似的操作。在实际CNN中,数据集的大小以及所执行卷积的数量意味着:执行极大量的此类操作,从而涉及非常大量的数据。

图14是矩阵乘法在神经网络的全连接层中的用途的示意图。矩阵乘法或MatMul是神经网络的训练阶段和推断阶段中常用的方法,并且用于机器学习的核方法中。图14的顶部类似于图11,其中在输入层与输出层之间仅示出单个隐藏层。输入数据被表示为长度与输入节点的数量对应的矢量。权重以权重矩阵表示,其中列的数量对应于隐藏层中的中间节点的数量,并且行的数量对应于输入节点的数量。输出是通过输入矢量与权重矩阵的矩阵乘法而确定的,其中输出矢量的每个要素是输入数据的矢量与权重矩阵的列的点积。

用于执行矩阵乘法的常用技术是使用乘法器-累加器(MAC,或MAC单元)。然而,这有许多问题。重新参见图12B,推断阶段在步骤1222处加载神经网络权重,然后在步骤1223处通过传播来执行矩阵乘法。然而,由于所涉及的数据量可能非常大,因此使用乘法器-累加器进行推断会产生与权重加载相关的几个问题。这些问题中的一个问题是由于必须使用具有所需位宽的大MAC阵列而引起的高能量耗散。另一个问题是由于MAC阵列的大小有限而导致的高能量耗散,从而导致逻辑与存储器之间的高数据移动以及可比逻辑计算本身中使用的能量耗散高得多的能量耗散。

为了帮助避免这些限制,可以使用其他存储器技术来替代乘法器-累加器阵列的使用。例如,通过利用NAND存储器和存储级存储器(SCM)的特性,诸如基于以下项的存储器,可以在存储器阵列内计算矩阵乘法:基于ReRAM、PCM、FeRAM或MRAM的存储器单元。这允许经由读取命令来提供神经网络输入,并且允许预加载神经权重以用于推断。通过使用内存计算,这可以解除对在MAC阵列中执行矩阵乘法的逻辑需要以及在存储器与MAC阵列之间移动数据的需要。

虽然将神经网络的权重存储在非易失性阵列的非易失性存储器单元中可节省神经网络计算中所涉及的数据传输,并且使用内存计算可消除在存储器与神经网络层的MAC阵列之间移动数据的需要,但神经网络可具有大量的层。通过多个层来传播初始输入,这将因此导致一个存储器管芯所传输的一个层的输出被用作另一存储器管芯上存储的层的输入。使用接合管芯对,诸如上文参照图6A至图9所述,可改善这种情况,因为存储器的容量增加可允许在存储器管芯上形成更多阵列、更大阵列或两者,使得可在给定管芯上进行更多层的计算。另外,外围电路管芯可具有比以下情况更大的能力:控制元件被限制于阵列容纳管芯的边缘。即使通过使用接合管芯对可获得改进,整个神经网络或甚至神经网络的相当大一部分也可能需要许多此类接合管芯对。

为了增加容量,可堆叠并互连多个此类接合管芯对。当连接多个独立存储芯片时,诸如在存储器封装件中,各个集成电路芯片通常通过沿着芯片边缘接合到焊盘的导线来连接。这限制了此类互连的数量,因为实际上仅可沿着存储芯片边缘,在可用空间中形成如此多的焊盘。接合导线的特性也能限制信号可在各个集成电路芯片之间传输的速度,其中在可用的连接数量(支持较小的导线)和连接速度(支持较大的导线)之间也需要进行折衷。为了改进这种情况,下文介绍了将多个接合管芯对彼此堆叠并通过硅通孔(TSV)进行连接的实施方案。这允许来自叠堆中的一个接合管芯对中的层的神经网络输出通过该通孔进行传输,以用作神经网络的另一层的输入,该另一层具有存储在叠堆中的不同接合管芯对中的权重。这允许通过神经网络的多个层,用高带宽有效地进行数据传播,该多个层全部处于接合管芯对的叠堆内。图15示出了此类布置方式。

图15是由通孔所连接的接合管芯对的叠堆而形成的非易失性存储器结构1500的简化图示。在图15所示的示例中,示出了四个接合管芯对(1501、1503、1505、1507)的叠堆,其中每个接合管芯对在此处被视作位于CMOS逻辑管芯(例如,1501b)顶部上的存储器管芯MEM(例如,1501a)。实际的实施方案可包括更多的此类接合管芯对。接合管芯对的叠堆位于一组“凸块”1513上,该组“凸块”继而位于封装基板1515的顶部上。一组硅通孔(诸如1511)可充当信道,用于通过接合管芯对的叠堆进行向上和向下传输数据。与接合管芯对的数量一样,通孔的数量可基于实施方案而变化。相对于引线接合互连法,使用通孔结构可提供高带宽和低互连延迟。

存储器管芯1501a、1503a、1505a、1505a中的每个存储器管芯可容纳多个存储器阵列,并且不同存储器管芯的阵列可具有不同的结构。如下所述,当用于神经网络的推断操作时,计算结果可通过不同的接合管芯对向下或向上传播,其中每个接合管芯对处的操作对应于神经网络的层。不同类型或尺寸的存储器阵列可更好地适用于不同阶段的神经网络,并且存储器阵列的布置方式可反映这一点。例如,通过使用存储级存储器阵列,可以更好地实现卷积层,并且通过NAND存储器阵列,可以更好地实现全连接层,使得图15的三维叠堆可以被结构化,使得输入初始通过一系列存储级存储器阵列然后是一系列NAND存储器阵列进行传播。TSV信道的通孔,诸如1511,可用于将不同接合阵列对的阵列分组成列,以通过神经网络的层进行传播。(除了由水平布置的接合管芯对的竖直堆叠所产生的三维结构之外,应当注意,存储器管芯上的存储器单元阵列也可具有3D结构,诸如3D闪存NAND;然而,除非另外指明,否则在以下讨论中,3D结构将是指接合管芯对的堆叠。)

不同接合管芯对的CMOS管芯(1501b、1503b、1505b、1507b)也可按不同方式形成。将控制电路和其他外围电路移到单独管芯上,这提供了大量附加区域,以用于添加附加逻辑元件和功能,使得可在通过列的不同层进行数据传播时,对该数据执行不同操作。另外,CMOS层中的一个或多个层可被配置为在列之间横向移动,使得例如在通过神经网络的层向下传播一个通孔而到达该叠堆的CMOS底层1507之后,可以将这些值移位到另一列阵列上并且沿该阵列向上传播回来。虽然图15中未示出,但CMOS层中的每一层也可包括与图9的I/O引脚318对应的多个引脚,使得可以在接合管芯对的不同层处,将数据和命令传进与传出该叠堆。

以下讨论主要集中介绍了使用图15的结构进行推断,其中已经将权重编程到该结构的存储器单元中;然而,也可将该结构应用于确定权重值的训练过程。在一些实施方案中,用于训练的附加任务是计算在每个训练时段之后适宜的浮点梯度,然后更新权重值的权重。权重值的更新可通过如下方式来完成:重新写入其在存储器阵列中的当前位置中的权重的更新值,或将更新值写入该结构中的其他可用位置,同时也相应地更新了逻辑地址。CMOS管芯上可用的额外空间可用于实现CMOS管芯中的一个或多个管芯上的附加功能,从而在这些管芯上引入浮点处理器。

相对于图5,图9的管芯上控制电路也可包括其逻辑元件内的附加功能,既包括常见于存储器控制器102中较通用的能力,也包括一些CPU能力,而且也包括应用程序专用功能。在此处所述的实施方案中,这可包括各种激活函数,这些激活函数确定了输出的振幅,以用于下文所述并且如在管芯上控制电路的激活逻辑块313处所示的神经网络操作。例如,这些激活函数可包括多次累加(MAC)运算的累加部分所用的加法运算和阈值确定运算、以及更高级运算(诸如,S型函数或tanh函数)。图9的CMOS(或更一般地,外围)电路上可用的额外区域也可包括易失性或非易失性的缓冲存储器317,以存储数据(诸如,神经网络层的权重)以用于逻辑内存操作。

神经网络,诸如大规模深度神经网络(DNN),可具有非常深的网络结构(即,非常大数量的层)并使用非常大的模型(即,它们的层具有非常大数量的权重),这为支持大规模DNN提出了挑战。大规模DNN模型无法适配到典型片上存储器(SRAM)或甚至片外易失性存储器(DRAM)上,以供处理器利用该模型来执行推断操作。因此,大规模DNN的早期实现方式会面临以下问题:在训练阶段和推断阶段,DRAM、SRAM、高速缓存和CPU/GPU核心之间的数据移动成本高昂。虽然大规模DNN的各部分可映射成2D平面架构,但是在平面结构上横向移动阵列之间的数据会引入很大且不一致的延迟,这仅仅是由于围绕芯片结构横向移动大量数据的拓扑限制。

图15的架构可解决与大规模DNN相关的许多问题。多个存储器阵列管芯所堆叠的结构可存储非常大的模型。多个CMOS管芯,其可用于在不同层中实现异构功能,从而减少或消除以下需要:在存储器分级结构上将数据来回移到CPU/GPU核心甚至是控制器102。该结构也可通过利用通孔结构来提供高带宽和低互连延迟,从而显著降低数据移动成本。另外,该结构具有很高的扩展性。

图16和图17示意性地示出了:当分别在存储器管芯和CMOS管芯内执行层的卷积或全连接乘法运算时,通过图15的结构所进行的推断操作。在这两种方法中,层的权重可以用存储器管芯阵列进行存储,但是在图16的实施方案中,针对该层的输入被应用于该阵列内,而在图17的实施方案中,权重被读出到CMOS管芯中并且该层的输入被应用于CMOS管芯中。虽然在图16和图17中单独地示出,但这两种方法可与一些层之中的阵列内乘法运算以及将权重读出到CMOS管芯中的其他层进行组合。

当在图16或图17的实施方案中对神经网络执行推断操作时,在训练期间预先确定的权重已经存储在结构阵列中。在图16的布置方式中,使用内存管芯计算法,其既可利用存储器管芯进行权重存储,也可利用其进行计算,既可利用其进行矢量乘法,也可利用其进行矩阵乘法。然后可在对应CMOS层中执行激活函数(诸如,阈值确定函数、S型函数、tanh函数等)。例如,在(例如)接合管芯对1501的CMOS管芯1501b处,神经网络的初始输入具有存储在结构1500中的权重。将输入应用于存储权重的存储器管芯1501a的阵列,以执行阵列内乘法运算。阵列内乘法的结果在CMOS管芯1501b处接收回来,在此可应用激活函数,其中所得的输出沿着通孔传递到接合存储器管芯对中的另一个管芯(诸如1503),以用作神经网络下一层的输入。

在图17的布置方式中,在CMOS管芯的逻辑中执行计算。例如,在(例如)接合管芯对1501的CMOS管芯1501b处,神经网络的初始输入具有存储在结构1500中的权重。在收到输入之前或之后,从存储器管芯1501a的阵列中读出该层的权重,并且在CMOS管芯1501b的逻辑元件中,执行输入与权重之间的乘法。CMOS管芯1501b然后可将激活函数应用于逻辑内乘法的结果,其中所得的输出沿着通孔传递到接合存储器管芯对中的另一个管芯,以用作神经网络下一层的输入。

相对于接合管芯对的CMOS管芯的外围电路(例如,1501的1501b),可将多个功能映射到CMOS管芯上。如上文参照图6A至图9所论,可以将支持存储器阵列的典型外围电路(例如,感测放大器、解码器、电荷泵等)移到接合管芯对的CMOS管芯上。另外,在接合管芯对布置方式中,CMOS管芯上可用的额外空间可用于专用逻辑或核心元件,以加速域专用应用程序,诸如ECC、数据搜索、压缩、过滤等。CMOS管芯也可结合激活函数,诸如S型函数或tanh函数,以与神经网络层一起使用。在叠堆中,CMOS管芯中的一些或全部管芯也可包括一定程度的CPU功能以支持域通用应用程序。在叠堆中,不同CMOS管芯在能力上也会彼此不同,并且在一些实施方案中,可根据具体实施方案来布置,因为(例如)在神经网络中可能需要不同级别的不同激活函数,并且CMOS管芯可基于其在接合管芯对的叠堆中的位置而针对这些需要进行定制。

例如,如上所论,在一个接合管芯对之内所计算且来自神经网络的一个层的输出可通过通孔(诸如1511)向下或向上传递到另一接合管芯对,以用作神经网络后续层的输入。通过使CMOS管芯上的开关箱互连件能够将数据流从一列传输到另一列,可扩展神经网络的层序列:当一组输入沿叠堆中的一列存储器阵列向下传播时,底部接合管芯对的CMOS(诸如,图15中的CMOS管芯1507a)可具有开关箱互连件,以将该数据流横向传输到另一个通孔/列,在该通孔/列中,数据流被沿着该叠堆,向上传播回来。类似地,当数据流到达该叠堆的顶部时,其可再次横向传输并且沿该叠堆向下送回。图18示出了此类布置方式。

图18示出了将3D深度神经网络映射到图15的架构上。为便于展示,图18再次示出了四个接合管芯对的叠堆,编号如图15所示。存储器管芯1501a、1503a、1505a、1507a中的每个管芯均被表示为具有四个阵列或平面,这些阵列或平面被垂直分组成四列或“iPlane”1831、1833、1835和1837的,其中iPlane中的每一个可并行运行。在一些实施方案中,iPlane中的每一个均可用于映射一个或若干个神经层。在其他实施方案中,可使用若干iPlane来映射较大神经层以实现高级并行性。

在此处所示的实施方案中,每列阵列被示出为具有两个硅通孔(1841,1842)、(1843,1844)、(1845,1846)和(1847,1848)。根据该实施方案,接合管芯对的叠堆数量可以更小或更大,如可以是每个存储器管芯内的列数以及存储器阵列或平面的数量。

重新参考图10和图11所示的神经网络,每个层的权重存储在每个层/接合管芯对的存储器管芯的阵列中。在对应的CMOS管芯处接收一个层的输入,并通过阵列内操作(如参照图16所述的操作)或通过读出权重并在CMOS管芯的逻辑中执行该层的乘法(如图17所示),而将该输入应用于该层的权重。例如,初始输入可从CMOS管芯1501a处的存储器控制器进行接收并且应用于列1831的阵列中的第一卷积层的权重,以生成第一卷积层的输出,然后将该输出沿通孔组1841和1842中的一者或两者向下传输到接合管芯对1503。将来自前一层的输出用作列1831中的存储器管芯1503a阵列中所存储的第二卷积层权重的输入,CMOS管芯1503b生成第二卷积层的输出。此过程可沿接合管芯对的层向下传播,直到其到达该叠堆的底部(该示例中的1507),在此底部,此过程可通过CMOS管芯1507a中的开关箱互连件横向移动至列1833,在该列中,此过程可通过网络的层向上传播到叠堆顶部,并且在其穿过层运行时继续沿该列向下和向上移动。根据实现方式,可按各种层级来执行输入和输出。用于推断操作的一个或多个控制电路可为如针对图9的外围元件管芯808所示的各种元件,其中,根据该实施方案,控制器102也可为被配置为执行推断操作的控制电路的一部分。

图19和图20是用于通过如下方式来执行神经网络的推断操作的实施方案的流程图:通过如映射到图15的结构上的网络的层,经由神经网络进行输入传播。更明确地,图19对应于图16的布置方式,并且图20对应于图17的布置方式。虽然在以下讨论中被描述成两个单独的实施方案,但也可实现混合式实施方案,其中一些层使用内存计算(如图19所示),并且其他层使用内逻辑管芯计算(如图20所示)。

图19从步骤1901开始,其中图18的存储器结构接收神经网络的输入。在图18中,这被示出为在接合管芯对1501的CMOS管芯1501b的I/O引脚(图9中的318)处接收。该输入可以是神经网络的初始输入,诸如在图10的最左侧,或是网络中间层的输入。虽然被示出为叠堆的最高接合管芯对1501处的输入,但该输入也可在其他层处接收,这取决于实施方案以及适当网络层的权重所位于的层。在此处的示例中,输入最初将沿着列1831向下传播。

在步骤1903处,将该输入应用于对应存储器管芯1501a中的非易失性存储器单元的列1831中的阵列,以执行输入与存储在阵列中的权重的阵列内乘法。例如,输入值的矢量可以在CMOS管芯1501b的一个或多个控制电路中(诸如通过行解码电路324)转换成字线电压,并且在线814上方施加到存储器管芯1501的列1831中的阵列的字线。层的权重存储在非易失性存储器阵列中,并且阵列内乘法运算可以对应于上文参照图13或图14所示的运算。输入矩阵或矢量与层权重的矩阵或矢量之间的阵列内运算的结果可对应于该阵列的位线上的值,该值然后可通过线路812提供给CMOS管芯1501a上的读写电路328。在CMOS管芯1501b上,在步骤1905处,激活逻辑313可用于对步骤1903的内存乘法结果执行激活操作。步骤1905可以是累加操作或更高级的激活操作,并且生成第一层的输出。

步骤1907确定步骤1905的输出是否为神经网络计算的最终输出。如果不是,则将步骤1905的输出传播到神经网络下一层,或更具体地,传播到存储步骤1909处与该层对应的权重的接合管芯对,以在步骤1903处用作下一个卷积或乘法运算的输入。如图18所示,一个层(例如,1501)的输出沿着通孔(例如,1841、1842)向下传播一列(例如,1831)到下一层(例如,1503),在该下一层,该输出用作输入。在图18的实施方案中,卷积或乘法的结果沿着列1831的通孔1841和1842,向下传播到底层1507,在该底层中,卷积或乘法的结果传输至列1833并且沿着通孔1843和1844向上传播。一旦到了最顶层1501处,其再次横向移动并且沿着列1835向下传播,依此类推,穿过如映射到图18的结构上的神经网络层。

如果步骤1907确定步骤1905的输出是该序列的最后一层,则在步骤1911,将来自步骤1905中的输出提供为运算输出。根据该实施方案和实现方式,这可能是最终输出(如图10的最右侧那样)或中间结果。根据网络的深度和大小(层数、每层阵列数),从初始输入到最终输出的完整传播在如图18所示的单个设备上或通过使用若干此类设备是可能实现的。如果传播过程没有用完图18的结构的可用层,则其可进行传播,直至得到最终输出(诸如,图18的层1505和列1837中的输出),或者得到来自该层中的CMOS管芯的I/O引脚318的输出,从而生成最终输出。

图20的实施方案也将网络权重存储在图18结构的存储器管芯中,但是在接合管芯对的CMOS(或更一般地讲,外围电路)管芯的逻辑中执行计算。图20的流程始于步骤2001,其中图18的存储器结构接收神经网络的输入。步骤2001可如上文针对图19的对应步骤1901所述。与图19中在步骤1903处在存储器阵列中执行计算的情况不同,在图20中的步骤2003处,现在将该层的权重从存储器管芯(例如,存储器管芯1501a的列18031中的阵列)读出到对应的CMOS管芯(例如,1501b)中,以便在步骤2005处将该层输入应用于该层权重,以执行逻辑内乘法。

更明确地,参见图9,在步骤2003处,CMOS管芯808上的控制电路通过线路812,将权重值从阵列结构326读出到读/写电路328上,其可包括缓冲存储器317以存储该层的权重值。输入与权重值的卷积或乘法,诸如上文参照图13或图14所述,然后可在存储器管芯上的逻辑内执行。在步骤2007处,可对步骤2005的乘法结果执行激活操作,类似于上文参照图19的步骤1905所述的过程。图20的流程然后可继续进行步骤2009、2011和2013,这些步骤可分别对应于如上所述的步骤1907、1909和1911。

对于图19或图20的实施方案中的任一个,通过图18的结构所进行的输入传播可按不同程度的自主性来执行,其中接合管芯对的CMOS管芯内的控制电路(如图9所示)独立于控制器102或按不同程度的控制器监督来执行初始神经网络输入通过层所进行的传播。另外,虽然图19和图20描述了单组输入到网络的传播过程,但多组输入也可通过图15至图18的结构依次进行传播:一旦一组输入从第一层移到第二层,就可在第一层处收到后续一组输入,从而产生了高级并行性。

虽然图18示出了并且图19和图20描述了,输入在第一接合管芯对的CMOS管芯处进行接收并且应用于对应存储器管芯的第一列中的阵列(诸如,在针对存储器管芯1501a的列1831中的阵列),并且通过层依次传播到输出端(诸如,列1837中的CMOS管芯1507b处的输出端),但是在另选实施方案中,许多变型是可能的。例如,可跳过一些层。当对于网络的同一层存在多组权重时,可使用此类跳过:例如,不同权重组可对应于同一网络的不同模型,并且可选择这些权重中的一个权重并且基于当前所选模型跳过其他权重。在其他变型中,附加输入可以在此过程中于不同层处进行接收;中间输出可由中间层提供;并且数据可在给定层的列之间横向移动以提供更通用的计算。

上述结构可提供以下功能:将深度神经网络3D映射到接合管芯对非易失性存储器设备的叠堆上。通过将接合管芯对的存储器管芯的多个阵列或平面分组成列,可以实现高度的并行性,并且由于避免了将大量数据移入和移出存储器的需要而提供了很高的性能。使用硅通孔(TSV)改进了面间数据传播。将存储器阵列和外围电路分离到接合管芯对的单独管芯上,这增加了可用于存储权重的存储器容量。接合管芯对的CMOS管芯上可用的增加面积增加了激活的复杂性以及在数据移动通过层时可对数据所采用的其他功能。虽然在此应用于3D深度神经网络,但该架构也可用于实现以加速器为中心的计算型内存储器或近存储器计算系统以用于其他应用领域(诸如,数据库应用场景)。

根据第一组方面,非易失性存储器设备包括多个堆叠的接合管芯对以及一个或多个通孔,每个通孔连接多个接合管芯对。每个接合管芯对包括:存储器管芯,其具有非易失性存储器单元的一个或多个阵列,每个阵列被配置为存储神经网络层的一个或多个权重;以及对应的外围电路管芯,该外围电路管芯与存储器管芯分开形成并接合到存储器管芯上,并且具有外围电路元件,包括一个或多个控制电路,该一个或多个控制电路连接到一个或多个阵列并被配置为对一个或多个阵列执行存储器操作。一个或多个控制电路被配置为:接收神经网络的一层的一组输入值,该层具有存储在存储器管芯阵列中的一个阵列中的权重;以及在该组输入值与神经网络层的权重之间执行乘法运算,以生成神经网络层的一组输出值。一个或多个通孔被配置为在与该通孔连接的连接型接合管芯对之间传输数据,该通孔被配置为将接合管芯对中的第一接合管芯对中的乘法运算的一组输出值传输为接合管芯对中的第二接合管芯对中的乘法运算的一组输入值。

在另外的方面,一种方法包括:在非易失性存储器结构的第一接合管芯对的外围电路管芯处,接收神经网络的初始输入。非易失性存储器结构包括多个接合管芯对,包括第一接合管芯对,每个接合管芯对包括外围电路管芯和非易失性存储器管芯,每个非易失性存储器管芯存储神经网络的一个或多个层的权重。该方法也包括:通过接合管芯对的序列,传播神经网络的输入,接合管芯对形成三维叠堆,其中接合管芯对通过硅通孔连接。传播包括:在第一接合管芯对处,通过初始输入,为存储在第一接合管芯对的存储器管芯上的神经网络层生成输出;以及,在该序列中的一个或多个后续接合管芯对中的每个管芯对处,沿着该通孔接收来自该序列中的前一接合管芯对的输出,并且使用来自该前一接合管芯对的输出作为输入,来为存储在后续接合管芯对的存储器管芯上的神经网络的层生成输出。该方法也包括:从后续接合管芯对中的一个管芯对的外围电路管芯中,提供神经网络的输出。

另外的方面包括一种非易失性存储器设备,该设备包括:多个接合管芯对的叠堆,每个接合管芯对具有带有非易失性存储器单元的一个或多个阵列的存储器管芯以及具有一个或多个控制电路的外围电路管芯,该一个或多个控制电路被配置为访问存储在接合管芯对的存储器管芯上的数据;以及穿过接合管芯对的叠堆的多个通孔,多个通孔被配置为在接合管芯对之间传输数据,存储器管芯的阵列沿着该通孔被分组成列。多个接合管芯对中的存储器管芯被配置为存储神经网络的多个层的权重,神经网络的层的序列被映射成沿着列的对应阵列序列。多个接合管芯对中的外围电路管芯的控制电路被进一步配置为通过如下方式来为神经网络执行推断操作:在接合管芯对的第一接合管芯对处,接收神经网络的输入;并且通过沿着列的对应阵列序列来传播输入,而通过神经网络的层来传播该输入;使用存储在对应阵列中的权重,在接合管芯对中的每个接合管芯对内执行乘法运算。

出于本文件的目的,说明书中提到“实施方案”、“一个实施方案”、“一些实施方案”或“另一个实施方案”可用于描述不同的实施方案或相同的实施方案。

出于本文件的目的,连接可为直接连接或间接连接(例如,经由一个或多个其他部件)。在一些情况下,当元件被提及连接或耦接到另一个元件时,该元件可直接连接至另一个元件,或者经由居间元件间接连接至另一个元件。当元件被提及直接连接至另一个元件时,则在该元件与另一个元件之间没有居间元件。如果两个设备是直接连接或间接连接的,则两个设备是“通信”的,使得它们能够在它们之间进行电子信号通信。

出于本文档的目的,术语“基于”可理解为“至少部分地基于”。

出于本文档的目的,在没有附加上下文的情况下,诸如“第一”对象、“第二”对象和“第三”对象的数字术语的使用可能不意味着对象的排序,而是可用于识别目的以识别不同的对象。

出于本文档的目的,对象的术语“组”可指一个或多个对象的“组”。

出于说明和描述的目的,已提供了上述详细描述。其并非旨在详尽的或旨在限制本发明所公开的精确形式。根据以上教导内容,很多修改和变型都是可能的。选择所述实施方案以便最好地解释所建议的技术的原理及其实际应用,从而使本领域的其他技术人员能够在各种实施方案中和适合于设想的具体使用的各种修改中最好地利用它。本发明的范围旨在由所附权利要求书限定。

43页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:半导体存储装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!