基于存储器的矢量-矩阵乘法

文档序号:1957963 发布日期:2021-12-10 浏览:9次 >En<

阅读说明:本技术 基于存储器的矢量-矩阵乘法 (Memory-based vector-matrix multiplication ) 是由 J·R·詹姆士 于 2020-05-28 设计创作,主要内容包括:存储器装置包括:以行和列设置的存储器阵列;处于各个行列交点处的存储器单元层,其中,各个存储器单元层被配置为设定成预定电导状态;行控制电路,该行控制电路被配置成,通过在各个行上施加子电压,来向所述行施加电压,其中,各个子电压皆对应于不同的存储器单元层,并且其中,各个子电压与对应行上的电压成比例;以及感测电路,该感测电路被配置成,响应于向所述行施加了电压,来确定流过选定列的列电流,其中,该列电流是流过与选定列相对应的各个存储器单元层的电流的总和。(The memory device includes: a memory array arranged in rows and columns; a layer of memory cells at each row-column intersection, wherein each layer of memory cells is configured to be set to a predetermined conductance state; row control circuitry configured to apply voltages to the rows by applying sub-voltages on each row, wherein each sub-voltage corresponds to a different memory cell layer, and wherein each sub-voltage is proportional to the voltage on the corresponding row; and a sensing circuit configured to determine a column current flowing through a selected column in response to application of a voltage to the row, wherein the column current is a sum of currents flowing through respective memory cell layers corresponding to the selected column.)

具体实施方式

现在,将详细说明本发明的特定实施方式,其示例在附图中示出。虽然将结合优选实施方式描述本发明,但应当明白,并非旨在将本发明限制于这些实施方式。正相反,本发明旨在覆盖可以包括在所附权利要求所限定的本发明的精神和范围内的另选例、修改例以及等同物。而且,在以下本发明的详细描述中,阐述了许多具体细节,以便提供对本发明的详尽理解。然而,本领域技术人员应当容易明白,本发明可以在没有这些具体细节的情况下来实践。在其它情况下,公知方法、过程、进程、组件、结构以及电路未被详细描述,以免不必要地模糊本发明的各个方面。

从进程、过程、逻辑框、功能框、处理、示意性符号和/或针对计算机、处理器、控制器、装置和/或存储器内的数据流、信号或波形的操作的其它符号表示的方面来呈现以下详细描述的一些部分。这些描述和表示是数据处理领域的技术人员通常所使用的,以向本领域其它技术人员有效地传达其工作的实质。通常,尽管不是必要的,但是被操纵的量采取电、光或量子信号的形式,这些信号能够被存储、传递、组合、比较以及以其它方式在计算机或数据处理系统中进行操纵。有时主要出于通用的原因,已经证明将这些信号称为比特、波、波形、流、值、要素、符号、字符、术语、数字等是方便的。

特定的实施方式可以致力于存储器装置,包括诸如SRAM和DRAM的易失性存储器,并且包括诸如闪速存储器装置的非易失性存储器(NVM)和/或电阻性开关存储器(例如,导电桥接随机存取存储器[CBRAM]、电阻性RAM[ReRAM]等)。特定的实施方式可以包括操作可以在一个或更多个电阻性和/或电容性状态之间写入(编程/擦除)的闪速和/或电阻性开关存储器的结构和方法。在一个特定的示例中,可以将CBRAM存储部件配置成,使得当在CBRAM存储部件的电极上施加大于阈值电压的正向或反向偏压时,CBRAM存储部件的电特性(例如,电阻)可以发生改变。在任何情况下,某些实施方式适于任何类型的存储器装置,特别是NVM装置(诸如闪速存储器装置),并且在一些情况下可以包括电阻开关存储器装置。

现在参照图1,示出了根据本发明的实施方式的示例存储器装置和主机布置100。在该示例中,主机102可以经由串行接口与存储器装置104对接。例如,主机102可以是任何合适的控制器(例如,CPU、MCU、通用处理器、GPU、DSP等),并且存储器装置104可以是任何类型的存储器装置(例如,SRAM、DRAM、EEPROM、闪存、CBRAM、磁性RAM、ReRAM等)。因此,存储器装置104可以以多种存储器技术(诸如非易失性类型)来实现。在一些情况下,存储器装置104可以是串行闪速存储器,其可以以更传统的非易失性存储器或者以CBRAM/ReRAM电阻性开关存储器来实现。

可以包括诸如串行外围接口(SPI)中的各种接口信号,以用于在主机102与存储器装置104之间进行通信。例如,串行时钟(SCK)可以向装置104提供时钟,并且可以被用于控制到装置的数据流。在SCK的上升沿,可以通过存储器装置104锁存命令、地址以及输入数据(例如,经由I/O引脚),同时可以根据SCK或数据选通(DS),从存储器装置104以时钟输出输出数据(例如,经由I/O引脚)。可以将芯片选择(CS)(其可以是低电平有效(active low))用于诸如从共享公共总线或电路板的多个此类存储器装置当中选择存储器装置104,或者以其它方式作为存取所述装置的方式。当芯片选择信号被解除断言(de-assert)(例如,处于高电平)时,存储器装置104可被取消选定,并且被置于待机模式。可以将启用芯片选择信号(例如,经由CS上的高到低转换)用于开始操作,并且可以将将芯片选择信号返回至高状态用于终止操作。对于内部自定时操作(例如,编程或擦除循环),如果在操作期间将芯片选8特定的进行中的操作完成为止。

在示例接口中,可以经由I/O信号向存储器装置104提供数据(例如,用于写入操作、其它命令等)以及从存储器装置104提供数据(例如,用于读取操作、验证操作等)。例如,可以在SCK的边沿,通过存储器装置104锁存I/O上的输入数据,并且如果该装置被取消选定(例如,当芯片选择信号被解除断言时),那么可以忽略此输入数据。也可以经由I/O信号从存储器装置104输出数据。例如,可在DS或SCK的边沿,对从存储器装置104输出的数据进行时钟输出以用于定时一致性,并且当装置被取消选定时(例如,当芯片选择信号被解除断言时),输出信号可以处于高阻抗状态。

现在参照图2,示出了根据本发明的实施方式的示例存储器装置104结构的示意性框图。例如,存储器装置104可以包括:存储器阵列202、缓冲器204(例如,SRAM或其它快速存取存储器)以及I/O接口206。在一些布置中,可以提供多于一个的缓冲器204,诸如用于输入路径的缓冲器,以及用于输出路径的另一缓冲器。另选地,或者另外,可以提供多个缓冲器用于多层缓冲。例如,可以将存储器装置104配置为数据闪存装置和/或串行闪存装置。可以将存储器阵列202组织为任何合适数量的数据页面。例如,各个页面皆可以包括256或264字节的数据。类似地,缓冲器204可存储至少一个数据页面。I/O接口206可以提供存储器阵列202、缓冲器204与串行数据输入(SI)和输出(SO)之间的接口。例如,I/O接口206可以是SPI或其它串行类型的接口的一部分,并且还可以支持许多SPI接口模式(例如,单SPI、QPI以及八进制模式)。

现在参照图3,示出了根据本发明的实施方式的示例存储器装置的框图。存储器装置104可以包括接口控制和逻辑208,该接口控制和逻辑可以管理接口(例如,SPI接口)并且解码命令和地址信息。控制和保护逻辑902可以包括用于对存储器阵列进行读取和写入的控制电路,包括用于字节存取和组寻址/排序的地址映射和控制,如下面将更详细讨论的。例如,控制和保护逻辑902可以包括:命令解码器、用于命令执行参数(例如,读取参数、编程/擦除参数等)的寄存器、以及用于命令执行的控制器。

I/O缓冲器和锁存器904可以控制来自接口控制和逻辑208的数据输入,以及到接口控制和逻辑208的数据输出。例如,可以经由I/O缓冲器及锁存器904来适应对从存储器阵列202读取的数据的基于芯片选择的控制及基于时钟的控制。即,I/O缓冲器和锁存器904中的寄存器/锁存器可以在突发读取和顺序取数据(fetch)操作期间通过SCK的切换来进行控制,如本文所模式的。SRAM数据缓冲器204可以在存储器阵列202与I/O缓冲器和锁存器904之间缓冲/存储数据。地址锁存框906可以经由接口控制和逻辑208接收地址信息,并且可以向行地址的X解码器908提供锁存的地址,并且向列地址的Y解码器910提供锁存的地址。可以经由地址锁存框906和/或控制和保护逻辑902来执行地址的递增。Y解码器910可以向Y选通912提供列地址,该Y选通可以包括针对去往/来自存储器阵列202的多路复用I/O线的通过选通(pass gate)等。如上面所讨论的,存储器阵列202可以包括易失性存储器单元的阵列或非易失性存储器单元(例如,CBRAM、ReRAM、闪存等)的阵列。

在一个实施方式中,存储器装置可以包括:以多个行和多个列布置的存储器阵列;处于各个行列交点处的单个存储器单元层,其中,各个存储器单元层皆被配置为设定成预定电导(conductance)状态,使得所述多个存储器单元层对应于多个预定电导状态;c)行控制电路,该行控制电路被配置成,通过在所述多个行中的各个行上施加多个子电压,来向所述多个行施加多个电压,其中,所述多个子电压中的各个子电压皆对应于所述多个存储器单元层中的不同的存储器单元层,并且其中,各个子电压与所述多个电压中的在对应行上的电压成比例;以及d)感测电路,该感测电路被配置成,响应于向所述多个行施加了所述多个电压,来确定流过所述多个列中的选定列的列电流,其中,该列电流是流过与选定列相对应的各个存储器单元层的电流的总和。

现在参照图4,示出了根据本发明的实施方式的示例存储器布置400的示意性框图。例如,可以将存储器阵列202以行和列进行设置,并且可以包括任何数量的子阵列,以及其它支持电路。行控制电路402可以在行上施加电压电平,诸如用于对存储器单元进行存取、对各种存储器单元层上的电导值进行设定等。另外,可以将感测电路404用于读取存储器单元,包括用于存储器单元电导值验证,并且特别地使用,以便确定在列线上流动的电流。例如,读取时的电流可以对应于各种存储器单元层电导值,如基于被施加至其中的各种存储器单元层的字线/行电压电平。

现在参照图5,示出了根据本发明的实施方式的基于存储器的矢量-矩阵乘法的示例的框图。可以形成2D存储器阵列500,包括导电线的行和列。在各个节点处形成一个或更多个存储器装置。在特定实施方式中,存储器装置/存储器单元可以包括非易失性存储器单元,诸如电阻性RAM(RRAM)单元、导电桥接存储器(CBRAM)单元、磁性RAM(MRAM)单元,自旋转移力矩MRAM(STT-MRAM)单元、相变存储器(PCM)单元、闪速存储器单元、浮动栅极闪存单元、分裂栅极闪存单元、SONOS单元、MNOS单元、铁电RAM(FRAM)单元,这只是举了几个例子。在特定实施方式中,存储器装置还可以包括存取装置(例如,晶体管、双极晶体管、场效应晶体管、二极管、薄膜二极管、肖特基二极管、双极二极管、双向阈值开关、半导体二极管、硅二极管等)。

可以将节点ij处的一个或更多个存储器装置或存储器单元层配置成,提供行i与列j之间的电导Gij的路径。例如,可以将输入电压Vi施加至行(例如,通过行控制电路402)。可以将通过给定列j上的所有节点的电流相加,从而产生总电流Ij(例如,可以经由感测电路404感测的)。例如,图5左侧的第一(j=1)列中的电流是Ii·=·V1G11·+·V2G21·+·V3G31·+·V4G41。这样,可以实现矢量-矩阵乘法VG=I,并且可以将Vi、Gij以及Ij的数值映射至特定的关注问题中的变量。仅仅作为一个示例,矢量-矩阵乘法在诸如神经网络、深度神经网络、卷积网络等的机器学习算法中是常见的。这样的算法被用于诸如图像标识、自然语言处理(例如,翻译)、信号分类等的任务。在该背景下,例如,图5中的电导Gij可以对应于网络的层的“权重”,并且电压Vi和电流Ij可以分别对应于到该层的输入和输出。如本领域技术人员所熟悉的,这种网络的一个层的输出可以用作到网络的下一层的输入。还可以将附加操作(例如,启用功能)应用于层的输出,以便生成可以用作到网络的下一层的输入的一组经修改的输出。可以利用矢量-矩阵乘法的其它应用包括诸如最小化、微分方程的数值解以及频谱分析(例如,傅立叶分析)此类事物,这只是举了几个例子。

输入Vi通常可以是连续的(例如,模拟的)变量,并且对于许多关注问题,希望电导Gij也是连续的变量,以便允许使用任何矢量V和矩阵G并且使乘法尽可能准确。对于给定的输入矢量V,电导Gij中的一个或更多个电导的值的任何不准确性或非预期变化均可以导致一个或更多个输出电流Ij的不准确性。因此,基于存储器的矢量-矩阵乘法的一般情况可以要求具有以下电导的存储器单元:(i)可以以可控的方式设定大量不同的电导值;以及(ii)在设定之后不会改变值。在现有的存储器技术的情况下,这可能难以满足,并且随着大多数存储器技术被扩展到更小的节点而变得越来越难以满足。因此,基于存储器的矢量-矩阵乘法的挑战是使计算的数值准确度最大化,同时还使存储器单元要实现的稳定且可重复的电导水平的数量最小化。

在特定实施方式中,公开了一种用于基于存储器的矢量乘法的“分压”方法。数值准确度可以根据沿j列向下流动的电流Ij与它们的预期值匹配得有多好来加以判断。尽管可以将给定列上的电流写为ViGij乘积的总和(例如,I1=V1G11+V2G21+V3G31+V4G41),但是单独的项(例如,V2G21)本身作为独立的值可能不太重要。而相反,单个乘积的总和可能是更重要的,因此,准确度和可重复性可以主要基于保持ViGij乘积的这个求和不变来加以确定。在某些实施方式的“子电压”方法中,引入第三“维度”或层k,使得可以将各个ViGij乘积写为总和ViGij=∑kVkiGkij,其中,∑k表示k分量上的总和。因此,最初沿列j向下流动的电流Ij可以是k个“子电流”I的总和,即,Ij=∑kIkj=∑kiVkiGkij。这可以提供附加的自由度,其允许通过对“子电压”Vik和层的数量k的适当选择来适应对可通过存储器单元实现的物理电导的限制。

现在参照图6,示出了根据本发明的实施方式的示例基于分压存储器的矢量-矩阵乘法的框图。在示例600中,沿2D阵列的第4列向下流动的电流I4将相应地通过对沿k个不同层的第4列向下流动的电流进行求和来获得(例如,I4=∑kIk4)。这样,先前的2D系统可以有效地扩展到所示的第三维。当然,在某些实施方式中,可适应任何数量的k个不同层以及存储器单元层布置和阵列/子阵列大小。

现在参照图7,示出了根据本发明的实施方式的基于存储器的矢量-矩阵乘法的分压权重编码的示例的框图。在特定的示例700中,可以将单个存储器单元有效地编程成具有值G、2G、3G、4G的4个均匀间隔的电导状态,使得G=50uS,并且其分别对应于5kΩ、10kΩ、6.7kΩ以及20kΩ的电阻。举例来说,每权重可以使用三个存储器单元,并且子电压为V(例如,原始输入电压)、V/2以及V/4。因此,可实现以GV/4为增量从0到7GV的总电流(例如,3个单元的总和),如图所示。在这个示例中,可存取的电流电平的总数量为28(不包括0GV),或者大约4.8个无符号等效比特。通过在电压V处添加第四单元,可存取电平的数量可以增加至44,或者log2(44)=5.5个等效比特。此外,负电压的使用可以使可存取的电流电平的数量加倍,或log2(88),其大约等于6.5个等效比特。在这个示例中,来自具有4个电平的4个单元的理论最大值皆为log2(44)=8个等效比特。在该特定示例所示,第一单元:3G状态,第二单元:4G状态,第三单元:1G状态,并且电流=V*(3G)+(V/2)*4G+(V/4)*G=5.25GV。

在特定实施方式中,利用不同的分压方案可实现比其它方法在数量上高得多的状态。本文所描述的分压概念可以允许完全利用存储器单元的多电平能力,而无需此类存储器单元提供相对较小的电导变化或相对较大的电流。另外,该方法允许接近0电流的改善的分辨率。在某些实施方式中,子电压和单元数量的许多选择是可能的。下表1示出了对于子电压的各种不同选择可存取的电流电平的数量(不包括0GV),由此单元的电导状态被假设为以增量“G”被相等地间隔开,并且在该示例中输入电压被假设为正(即,V>=0)。

表1:

在特定实施方式中,不同列电流的数量等于其中,NG是预定电导状态的数量,NV是存储器单元层的数量,并且V/ki是施加到存储器单元层i的子电压。可以包括1,以便表示所有单元均处于断开状态并且电流约为0的情况(表1没有包括该0电流状态)。上面的这个示例公式假设所有子电压是相同的符号。对于任何给定的子电压可以是正的或负的情况,可以在NG之前添加2,即,此外,等效于不同列电流的数量的比特可以在子电压为相同符号时等于的以2为底的对数,或者在子电压可以为正或负时等于的以2为底的对数。

现在参照图8,图8示出了根据本发明的实施方式的基于存储器的矢量-矩阵乘法的2D分压方法的示例的框图。可以有效地展平子电压方法的k个层,以便允许在2D物理阵列中实现该方法。在示例800中,黑色正方形可以描绘连接(或以其它方式联接至)在该位置处相交的水平线与垂直线的存储器装置。没有正方形的节点不被连接,并且在该布置中代之以“断开”。在示例850中,所有节点均可以包含存储器装置/单元。在特定实施方式中,存储器装置可以包括存取装置(例如,晶体管、双极晶体管、场效应晶体管、二极管、薄膜二极管、肖特基二极管、双极二极管、双向阈值开关、半导体二极管、硅二极管等)。与示例800中所示的阵列不同,在特定示例850中,子电压可以利用公共垂直线。

现在参照图9,示出了根据本发明的实施方式的基于存储器的矢量-矩阵乘法的分压权重编码的示例的框图。为了减少可以非常小的增量改变存储器装置的电导的需求,可以将“分压”方法用于权重编码。在示例900中,可以将给定的输入Vi“分压”成k个“子电压”Vik,该子电压可以与Vi成比例通常不相等。在图9中,这些子电压是Vi、Vi/3以及Vi/5。在特定实施方式中,可以向单独的存储器单元层指派各个这样的子电压。在左侧的示例中,其权重最初为G11的单元现在可以由具有“子权重”G111、G112以及G113的三个存储器装置/单元来表示。可以将子权重选择成,使得它们的电流的总和尽可能接近地匹配最初由该节点生成的电流(例如,V1G11=V1G111+(V1/3)G112+(V1/5)G113)

在一个实施方式中,提供了一种控制存储器装置的方法,该存储器装置具有以多个行和多个列布置的存储器阵列,以及处于各个行列交点处的单个存储器单元层,该方法可以包括以下步骤:将各个存储器单元层设定成预定电导状态,使得所述多个存储器单元层对应于多个预定电导状态;通过在所述多个行中的各个行上施加多个子电压,来向所述多个行施加多个电压,其中,所述多个子电压中的各个子电压皆对应于所述多个存储器单元层中的不同的存储器单元层,并且其中,各个子电压与所述多个电压中的在对应行上的电压成比例;以及响应于向所述多个行施加了所述多个电压,确定流过所述多个列中的选定列的列电流,其中,该列电流是流过与选定列相对应的各个存储器单元层的电流的总和。

现在参照图10,示出了根据本发明的实施方式的使用CBRAM存储器单元的3D集成的分压方法的示例的图。这里在示例1000中示出了单个层的一部分。这个CBRAM存储单元阵列可以包括列(j)和行(i),并且在这个示例中示出了列和行各自中的4个。各个节点皆可以包括用作特定CBRAM单元的阴极的通孔1002。行可以用作存储器装置/单元的开关层和阳极。例如,列可以包括Cu,通孔可以包括金属(例如,Ta或TaxSiy),行可以是多层叠层,该多层叠层包括具有氧化物(例如,SiO2)、阳极(例如,HfxTey)、覆盖层(例如,TaxSiy)以及可选的用于减小线路电阻的跨接层(例如,金属)的子层。这种阵列的各个节点还可以包括位于各个节点处并且与CBRAM单元串联的2端子存取装置。

现在参照图11,示出了根据本发明的实施方式的使用RRAM存储器单元的3D集成的分压方法的示例的图。该示例1100示出了包括多个存储器单元层的3D集成。当然,在某些实施方式中,可以支持任何合适数量的存储器单元层、以及存储器阵列中的任何合适数量的行和列。

现在参照图12,示出了根据本发明的实施方式的验证基于存储器的矢量-矩阵乘法的单个单元的权重的示例的图。在示例1200中,可以使所有行和列达到读取电压VR(例如,0.2V)。可以将包含待验证单元的列(例如,j=2)的电压降低至0。然后,可以测量流出该列的电流Ij(例如,I2)。向包含待验证单元的行(例如,i=3)施加的电压可从VR改变成VR′(例如,VR′=0.4V)。可以测量流出该列的电流Ij′(例如,I2′)。待验证单元的电导可以被确定为G=(Ii’-Ii)/(VR'-VR)。以此方式,可以针对基于存储器的矢量-矩阵乘法来验证单个存储器单元的权重。

现在参照图13,示出了根据本发明的实施方式的验证基于存储器的矢量-矩阵乘法的单个单元的权重的示例方法的流程图。在示例1300中,在1302,可以使所有行和列达到读取电压VR。在1304,可以选择列和行(例如,包含待验证单元的行/列)。在1306,可以将选定列上的电压降至0V。在1308,可以测量流出选定列的电流Ij。在1310,可以将向选定列施加的电压从VR改变成VR′。在1312,可以测量流出选定列的电流Ij′,并且待验证单元的电导可以被确定为G=(Ii’-Ii)/(VR’VR)。

虽然上述示例包括某些存储器单元和可编程阻抗装置的电路、可操作实现以及结构性实现,但是本领域技术人员将认识到,根据实施方式可以使用其它技术和/或单元结构。此外,本领域技术人员将认识到,根据实施方式还可以使用其它装置电路布置、架构、部件等。此外,电阻水平、操作条件等可以取决于可编程阻抗部件的保持力、耐久性、开关速度以及变化要求。

呈现本发明的具体实施方式的前述描述是为了例示和描述。这些描述不旨在是详尽的或者将本发明限于所公开的精确形式,而是显见地可以根据上述教导进行许多修改和改变。选择和描述在这些实施方式,以便最好地说明本发明的原理及其实际应用,由此使得本领域其它技术人员能够最佳地利用本发明以及具有如适于预期特定用途的各种修改例的各种实施方式。本发明的范围旨在通过附于此的权利要求及其等同物来限定。

24页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:包括指纹传感器的设备的反欺骗方法和系统

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!