执行复数乘法累加运算的制作方法

文档序号:13518390阅读:566来源:国知局
执行复数乘法累加运算的制作方法



背景技术:

诸如忆阻器之类的忆阻元件是可以通过将电刺激(例如,电压或电流)施加至忆阻元件而被编程到不同状态的器件。在编程之后,可以读取忆阻元件的状态。忆阻元件的状态保持稳定足够长以将器件认为是非易失性的。多个忆阻元件可以被包括在阵列内,在该阵列中,多个列线路与多个行线路相交,忆阻元件位于列线路与行线路的交叉处。

附图简要说明

附图示出了在本文中所描述的原理的各种示例并且是说明书的一部分。所示出的示例仅仅是为了说明而给出的,并且不限制权利要求的范围。

图1是根据在本文中所描述的原理的一个示例的用于执行复数乘法累加(mac)运算的忆阻乘法器件的图。

图2是根据在本文中所描述的原理的一个示例的用于执行复数乘法累加(mac)运算的系统的图。

图3是根据在本文中所描述的原理的一个示例的用于执行复数乘法累加(mac)运算的方法的流程图。

图4a是根据在本文中所描述的原理的另一示例的用于执行复数乘法累加(mac)运算的系统的图。

图4b是根据在本文中所描述的原理的一个示例的输入乘法器。

图5是根据在本文中所描述的原理的一个示例的使用用于执行复数乘法累加(mac)运算的系统的计算设备的图。

在附图通篇中,相同的附图标记表示相似的但不一定相同的元件。

具体实施方式

可以在多种应用中使用诸如忆阻器之类的忆阻元件阵列,所述多种应用包括非易失性固态存储器、可编程逻辑、信号处理、控制系统、模式识别、以及其他应用。本应用针对用于执行例如权重值矩阵以及多个输入向量值的乘法累加(mac)运算的忆阻器件阵列。换句话说,忆阻阵列可以用于执行向量矩阵或乘法累加计算。输入到阵列中的电压信号在列中由忆阻元件的电阻加权,并且被累加为来自每一列的电流输出。

在多种应用中使用乘法累加运算或点积运算。例如,已知所接收的音频信号或所接收的视频信号,用户可以期望进行滤波、执行快速傅立叶变换、或者以其他方式处理模拟或数字信号。在这些示例中,乘法累加运算或点积运算用于执行这样的处理。

在另一示例中,一系列的阵列可以形成神经网络。神经网络是试图模拟诸如大脑之类的生物神经网络的计算网络。神经网络可以具有自适应的权重,即基于学习运算来调整的权重。神经网络也能够逼近输入的非线性函数。在神经网络中,输入在一个忆阻阵列处被接收和处理,接着,该阵列的输出被馈送到另一阵列中。该忆阻阵列的分层被称为神经网络。

考虑到在离散时间或离散空间信号处理中以及在神经联网的扩展领域中广泛使用mac运算,mac运算的优化是期望的以增加数字信号处理和实现mac运算的其他处理的效率。在一些示例中,阵列中的忆阻元件的电阻可以被用作在mac运算中要乘以输入信号的矩阵权重值。尽管使用这样的阵列在实行在许多应用中使用的mac运算中确实是有帮助的,但是阵列的一些特征限制了它们的充分使用。

例如,在执行信号滤波或其他mac相关的运算时,权重、输入、和输出可以包括复数值,所述复数值包括实数分量和虚数分量。在一个具体示例中,离散时间傅立叶变换(dtft)中的权重是复数,即,针对某一固定频率ω,采样值具有单位幅度的复指数函数e-jωt的形式。在负值权重能够利用其mac内核实现对信号的建设性和破坏性的求和的同时,复权重能进一步实现对频率相位的准确检测和操纵。

在神经网络中,尽管初始输入可以仅仅包括实数分量,但是当该输入乘以复数权重值时,输出也是复数,其中该复数输出可以成为对另一忆阻阵列的复数输入。

可以在笛卡尔表示中将复数输入表示为a+jb,其中j等于负1的平方根。复数权重也可以在笛卡尔表示中被表示为c+jd。具有复数权重的复数输入的乘积也可以在笛卡尔系统中被表示为(ac-bd)+j(ad+bc)。如从该表示可以看见的,在计算复数输入和复数权重的点积时,权重的每个分量c和d被使用了两次,并且输入信号的每个分量a和b也被使用了两次。由此,当使用复数输入进行mac运算时,系统应该允许在每一层的计算中将每个权重值使用两次。

已经呈现了两种方法来适应对这些权重值的重复使用。在一种方法中,两个忆阻元件用于指示单个分量c,并且两个忆阻元件用于指示另一个分量d。然而,由于难以复制忆阻元件电阻从而使得在表示分量c的忆阻元件之间会存在误差值,以及在在表示分量d的忆阻元件之间会存误差值,所以这样做是不现实的。

在另一种方法中,在单个忆阻元件上执行两次乘法运算。例如,执行一个乘法运算以产生与输出的实数分量相对应的输出(即,ac),该值被存储,并且接着,再次使用同一忆阻元件以执行第二运算从而产生与输出的虚数分量相对应的输出,bc。然而,由于执行了两个运算,因此这样做增加了任何mac运算的延迟。

由此,本说明书描述了用于对复数输入和复数权重执行mac运算的器件。具体地,本说明书描述了在针对每个分量使用单个忆阻元件的同时执行复数mac运算的子计算的器件和方法。换句话说,单个忆阻元件用于表示分量c,而单个忆阻元件用于表示复数权重值的分量d。权重值(例如,c)的一个分量的两个乘法并行地执行。类似地,另一分量d的两个乘法运算彼此并行地执行,并且也与c分量的乘法并行。这样做允许快速、实时的复数值滤波或神经网络运算。

更加具体地,本说明书描述了忆阻乘法器件。该器件包括至少两个忆阻单元。每个忆阻单元包括用于存储复数权重值的一个分量的忆阻元件。每个忆阻单元还包括耦合至忆阻元件的实数输入乘法器,其用于将忆阻元件的输出信号与输入信号的实数分量相乘。该器件还包括耦合至忆阻元件的虚数输入乘法器,其用于将忆阻元件的输出信号与输入信号的虚数分量相乘。

本说明书还描述了一种用于执行复数乘法累加运算的方法。根据该方法,分别将表示输入信号的实数分量的第一电压和表示输入信号的虚数分量的第二电压施加至第一忆阻单元的实数输入乘法器和虚数输入乘法器。类似地,第一电压和第二电压分别被施加至第二忆阻单元的实数输入乘法器和虚数输入乘法器。表示复数权重输入的实数分量的第一电流被施加至第一忆阻单元的实数输入乘法器和虚数输入乘法器,而表示复数权重输入的虚数分量的第二电流被施加至第二忆阻单元的实数输入乘法器和虚数输入乘法器。包括实数分量的乘法器的输出被收集并求和,而包括虚数分量的乘法器的输出也被收集并求和,当被一起查看时这些和表示复数输入和复数权重值的乘法累加运算。

本说明书还描述忆阻阵列。该阵列包括多个忆阻乘法器件。每个忆阻乘法器件包括第一忆阻单元和第二忆阻单元,第一忆阻单元包括用于存储复数权重值的实数分量的忆阻元件,而第二忆阻单元包括用于存储复数权重值的虚数分量的忆阻元件。忆阻单元中的每个忆阻单元还包括耦合至忆阻元件的实数输入乘法器,以用于:1)接收忆阻元件的输出信号,2)接收输入信号的实数分量,以及3)输出定义所述输出信号与所述实数分量的乘积的信号。忆阻单元中的每个忆阻单元还包括耦合至忆阻元件的虚数输入乘法器,以用于:1)接收忆阻元件的输出信号,2)接收输入信号的虚数分量,以及3)输出定义所述输出信号与所述虚数分量的乘积的信号。该阵列还包括用于对具有实数分量的输出求和的实数求和器件,以及用于对具有虚数分量的输出求和的虚数求和器件。

使用单个忆阻器件来表示复数权重的实数分量和虚数分量,而使用实数输入乘法器和虚数输入乘法器1)允许单个忆阻器件存储复数权重中的每个元件的值,以及2)同时执行复数乘法的子计算,因此增加了复数mac运算的效率。然而,可以预期的是,在本文中所公开的器件可以在多个技术领域中在解决其他事宜和缺陷方面提供帮助。因此,在本文中所公开的系统和方法不应当被解释为解决任何特定的事宜。

如在本说明书和权利要求中所使用的,术语“忆阻元件”可以指维持电流的时间积分和/或电压的时间积分之间的函数关系的无源的两终端电路元件。

进一步地,如在本说明书中和在所附权利要求中所使用的,术语“乘法累加运算”意在宽泛地被理解为用于形成标量的两个向量的乘积。在一个示例中,向量可以被表示为可以被乘的矩阵。针对乘积累加运算的其他名称包括点积、标量积、和内积。复数mac运算指的是包含复数输入信号和复数权重值中的至少一个的mac运算。

由此,如在本说明书中和在所附权利要求中所使用的,诸如复数权重或复数输入之类的术语“复数”指的是可以以a+jb为形式表达的数,其中a是实数分量,且b是复数的虚数分量。

进一步地,如在本说明书中和在所附权利要求中所使用的,术语“权重”可以指在执行mac运算时所使用的系数的矩阵。由此,权重值指的是矩阵内的个体的系数。权重的每个系数可以由阵列中的特定忆阻元件来指示。

进一步地,如在本说明书中和在所附权利要求书中所使用的,术语“实数输入乘法器”指的是将忆阻元件的输出信号(其中,输出信号指示权重的实数分量或权重的虚数分量)与输入信号的实数分量相乘的单元。应当注意的是,实数输入乘法器的输出可以是实数或虚数。例如,输入信号的实数分量a乘以权重的虚数分量d得出虚数输出ad。作为比较,输入信号的实数分量a乘以权重的实数分量c得出实数输出ac。

作为比较,如在本说明书中和在所附权利要求中所使用的,术语“虚数输入乘法器”指的是将忆阻元件的输出信号(其中,输出信号指示权重的实数分量或权重的虚数分量)与输入信号的实数分量相乘的单元。应当注意的是,虚数输入乘法器的输出可以是实数或虚数。例如,输入信号的虚数分量b乘以权重的虚数分量d得出实数输出bd。作为比较,输入信号的虚数分量b乘以实数分量c得出虚数输出bc。

甚至更进一步地,如在本说明书中和在所附权利要求中所使用的,术语“实数权重单元”是指具有表示权重的实数分量的忆阻元件的单元。

又进一步地,如在本说明书中和在所附权利要求中所使用的,术语“虚数权重单元”是指具有表示权重的虚数分量的忆阻元件的单元。

甚至更进一步地,如在本说明书中和在所附权利要求中所使用的,术语“的数量”或类似的语言指的是被宽泛地理解为包括1到无限的任何正数;零不是数量,而是没有数量。

在以下的描述中,出于解释的目的,阐述了多个具体细节以提高对本系统和方法的彻底理解。然而,对于本领域技术人员应当理解的是,可以在没有这些具体细节的情况下实践本装置、系统、和方法。本说明书中所引用的“示例”或类似的语言指示结合该示例所描述的具体的特征、结构、或特性如所描述的被包括,但是可以不被包括在其他示例中。

现在转到附图,图1是根据在本文中所描述的原理的一个示例的用于执行复数mac运算的忆阻乘法器件(100)的图。忆阻乘法器件(100)包括至少两个忆阻单元(102-1、102-2)。如在本说明书中所使用的,指示符“-*”是指元件的具体实例。例如,第一忆阻单元被标记为(102-1)。没有指示符“-*”是指一般的元件。例如,通用的忆阻单元被标记为(102)。

每个忆阻单元(102)实行输入信号(实数分量和虚数分量两者)与权重值的虚数或实数分量相乘。由此,忆阻单元(102)可以是实数权重单元或虚数权重单元。术语“实数权重单元”和“虚数权重单元”是指在该忆阻单元(102)中相乘的复数权重值的分量的类型。例如,实数权重单元中的忆阻元件(114-1),例如第一忆阻单元(102-1)指示复数权重值的实数分量,而第一忆阻元件(114-1)的输出(112-1)是复数权重值的实数分量的电流指示。作为比较,虚数权重单元中的忆阻元件(114-2)(例如,第二忆阻单元(102-2))指示复数权重值的虚数分量,而第二忆阻元件(114-2)的输出(112-2)是复数权重值的虚数分量的电流指示。

由于每个忆阻单元(102-1、102-2)用于表示复数权重值的相乘,因此每个忆阻单元(102)包括存储复数权重值的一个分量的忆阻元件(114-1、114-2)。具体地,第一忆阻元件(114-1)可以存储复数权重的实数分量,以使得第一忆阻元件(114-1)的输出(112-1)是复数权重的实数分量的电流指示,而第二忆阻元件(114-2)存储复数权重的虚数分量,以使得第二忆阻元件(114-2)的输出(112-2)是复数权重的虚数分量的电流指示。

更加具体地,忆阻元件(114)用于存储信息。忆阻元件(114)基于忆阻元件(114)的电阻等级来存储信息,每个等级与忆阻器件(114)的状态相对应。尽管对分立电阻等级进行了具体参考,但在一些示例中,例如在模拟系统中,忆阻元件(114)可以具有最小值和最大值之间的连续值。通过在电阻状态之间切换,忆阻器件(114)因此表示多个逻辑值或模拟值,并且存储多个比特的信息。换句话说,忆阻元件(114)可以用于表示多个比特的数据。例如,在第一电阻状态的忆阻元件(114)可以表示逻辑值“1”。在第二状态的相同的忆阻元件(114)可以表示逻辑值“0”。又进一步地,相同的忆阻元件(114)可以表示与模拟值对应的中间电阻值。由于忆阻元件(114)能够具有多个电阻状态,因此忆阻元件(114)还能够表示超过仅仅两个(即,0和1)逻辑值或模拟值。每个逻辑值或模拟值与忆阻元件(114)的电阻状态关联,以使得可以通过改变忆阻元件(114)的电阻状态来将数据存储在忆阻元件(114)中。这可以通过经由将电压传递至与目标忆阻元件(114)相对应的相交线路而穿过目标忆阻元件(114)施加电压电位来完成。尽管具体提及了表示两个逻辑值的忆阻元件(114)(即,二进制忆阻元件(114)),但是忆阻元件(114)可以具有任何数量的电阻状态,并且因此可以表示任何数量的逻辑值。例如,忆阻元件(114)可以具有三个、四个、或甚至更多个电阻状态。

忆阻元件(114)通过传输交换层内的掺杂物质以增加或降低忆阻元件(114)的电阻率来改变电阻。当足够的电压被传递穿过忆阻元件(114)时,掺杂物质变得活跃以使得它们在忆阻元件(114)的交换层内移动,并且因此改变忆阻元件(114)的电阻。

因为忆阻元件(114)维持其电阻,所以忆阻元件(114)是非易失性的。以该方式,因为它们“记住了”它们具有的最后的电阻,所以忆阻元件(114)是“记忆电阻器”。换句话说,如果电荷以一个方向流过忆阻元件(114),则该电路的组件的电阻将增加。如果电荷以相反的方向在忆阻元件(114)中流动,则电阻将减小。如果通过关闭所施加的电压来停止电荷的流动,则忆阻元件(114)将“记住”其所具有的最后的电阻,并且当电荷再次开始流动时,忆阻元件(114)的电阻将是其之前的电阻。

忆阻元件(114)有很多形式。一个示例是金属-绝缘体-金属结构,其中忆阻元件(114)包括第一导电电极、第二导电电极、和位于两个导电电极之间的开关元件。第一导电电极和第二导电电极可以由诸如alcu、alcusi、taal、tin、hfn、aln、pt、cu、和wsin之类的导电材料形成。在一些示例中,第一电极和第二电极由相同的材料形成,而在其他示例中,第二电极由与第一电极不同的材料形成。在一些示例中,第一导电电极和第二导电电极可以被称为顶部电极和底部电极。在附图中,用点指出了顶部电极。

开关元件可以由诸如金属氧化物之类的开关氧化物形成。开关氧化物材料的具体示例可以包括氧化镁、氧化钛、氧化锆、氧化铪、氧化钒、氧化铌、氧化钽、氧化铬、氧化钼、氧化钨、氧化锰、氧化铁、氧化钴、氧化铜、氧化锌、氧化铝、氧化镓、氧化硅、氧化锗、二氧化锡、三氧化二铋、氧化镍、氧化钇、氧化钆、以及氧化铼等。除了在上文中呈现的二元氧化物之外,开关氧化物可以是诸如氧氮化硅之类的三元和复杂氧化物。可以使用诸如来自氧化物靶材的溅射、来自目标靶材的反应溅射、原子层沉积(ald)、氧化沉积的金属或合金层等之类的多个不同过程中的任何一个来形成所呈现的氧化物。可以通过诸如化学气相沉积、溅射、腐蚀、光刻、或形成忆阻元件(114)的其他方法之类的任何其他合理适当的制造过程来制造忆阻元件(114)。

忆阻元件(114)可以在微米-或-纳米尺度上构建并且在诸如存储器和逻辑电路的基之类的宽泛的多种电子电路中被用作组件。当用作逻辑电路时,如在本文中所描述的,可以采用忆阻元件(114)来表示现场可编程门阵列中的比特,作为有线逻辑可编程逻辑阵列的基部,或者作为点乘引擎。在本文中所公开的忆阻元件(114)还可以在宽泛的多种其他应用中找到用途。尽管具体参考了二进制忆阻元件(114),但是可以将忆阻元件(114)设置成超过两个电阻状态并且由此能够存储超过两个逻辑值。又进一步地,忆阻元件(114)可以用于表示模拟值。

忆阻元件(114)的状态可以响应于各种编程条件而改变,并且忆阻元件(114)能够展示对过去的电条件的记忆。例如,忆阻元件(114)可以被编程为具有多个不同的状态中的一个状态。特别地,开关元件的电导等级可以通过电场的施加(例如,通过电流或电压的施加)来改变,其中,电流或电压可以引起开关元件中的移动掺杂物质移动和/或改变开关元件中的导电通道的状态,这可以改变忆阻元件(114)所产生的电操作。即,例如,开关元件的不同电导等级并且因此忆阻元件(114)的状态可以与施加至开关元件的不同的编程电流等级或电压幅度相对应。

作为示例,开关元件可以通过施加先前的电流或电压等级而被编程为具有较高的电导等级。在移除电流或电压之后,掺杂物质或者导电通道的位置和特性维持稳定直到施加另一编程电场为止。即,开关元件在移除了电流或电压之后保持在所编程的导电等级。尽管具体参考了忆阻元件(114),但是也可以使用其他电阻式存储器元件。电阻式存储器元件的其他示例包括电阻式随机存取存储器(rram)元件、相变随机存取存储器(pcram)、和磁阻随机存取存储器(mram)。

可以在矩阵乘法中使用忆阻元件(114)。例如,将输入向量信号传递给忆阻单元(102)的乘法器(104、106)。输入信号可以是表示诸如音频信号、视频信号、或其他模拟或数字信号之类的信号的形式(即,电压或电流),其将被滤波、转换、卷积、或者以其他方式由值的矩阵处理,其中值的矩阵是由多个忆阻元件(114)的电阻表示的。输入信号与忆阻元件(114)的输出(112)交互,以生成表示忆阻元件(114)的对应的输入分量与输出(112)的乘积的输出(118-1、118-2、120-1、120-2)。可以将忆阻元件(114)设置成任何数量的电阻等级。不同的电阻等级可以用于表示权重值的实数分量和虚数分量的不同系数。

为了实行复数权重分量与输入信号的两个分量的相乘(即,(a+jb)(c+jd)),每个忆阻元件(102)包括两个输入乘法器。具体地,实数输入乘法器(104)将忆阻元件(114)的输出(112)(其中,该输出表示权重的分量)与输入信号的实数分量(其中,输入信号的该实数分量a由电压vr表示)相乘。类似地,虚数输入乘法器(106)将忆阻元件(114)的输出(112)与输入信号的虚数分量b相乘,其中,输入信号的该虚数分量由电压vi表示。

在本文中所描述的忆阻乘法器件(100)允许同时执行复数mac运算的子计算,而无需:1)针对特定的运算多次重新使用忆阻元件(114),或者2)两次重复忆阻元件(114)以表示复数权重的分量。在下文中结合图3给出了复数mac运算的具体示例。

图2是根据在本文中所描述的原理的一个示例的用于执行复数乘法累加(mac)运算的忆阻系统(216)的图。系统(216)包括至少一个忆阻乘法器件(图1,100),每个器件(图1,100)包括多个忆阻单元(102)。

第一忆阻单元(102-1)包括用于存储复数权重值的实数分量的忆阻元件(114-1),并且由此可以被称为实数权重单元。第二忆阻单元(102-2)包括用于存储复数权重值的虚数分量的忆阻元件(114-2),并且由此可以被称为虚数权重单元。如在上文中所描述的,复数权重值的实数分量和虚数分量可以被存储为相应的忆阻元件(114-1、114-2)的电阻。

每个忆阻单元(102)包括实数输入乘法器(104),其:1)接收忆阻元件(114)的输出信号(112),2)接收输入信号的实数分量a,并且3)输出定义输出信号(112)与实数分量的乘积的信号(118)。每个忆阻权重单元(102)还包括虚数输入乘法器(106),其:1)接收忆阻元件(114)的输出信号(112),2)接收输入信号的虚数分量b,并且3)输出定义输出信号(112)与虚数分量的乘积的信号(120)。

具体地,第一忆阻元件(114-1)具有表示一个分量(例如,权重值的实数分量c)的电阻。第一忆阻元件(114-1)的输出(112-1)是被复制到第一实数输入乘法器(104-1)和第一虚数输入乘法器(106-1)两者的电流,并且表示第一忆阻元件(114-1)的电阻。类似地,第二忆阻元件(114-2)具有表示另一分量(例如,权重值的虚数成分d)的电阻。第二忆阻元件(114-2)的输出(112-2)是被复制到第二实数输入乘法器(104-2)和第二虚数输入乘法器(106-2)的电流,并且表示第二忆阻元件(114-2)的电阻。为了复制忆阻元件(114)的输出(112),每个忆阻单元(102)包括多输出电流镜(226-1、226-2),或类似的组件,以用于将忆阻元件(114)的输出复制到实数输入乘法器(104)和虚数输入乘法器(106)两者。

实数输入乘法器(104-1、104-2)两者接收表示输入信号的实数分量a的电压vr,并且实行激励相应的输出信号(112-1、112-2)与实数分量相乘的运算。由此,每个实数输入乘法器(104-1、104-2)分别生成定义相应的输出信号(112-1、112-2)与输入的实数分量a相乘的输出(118-1、118-2)。应当注意的是,特定的实数输入乘法器(104)的输出(118)可以是实数或虚数。例如,在第一实数输入乘法器(104-1)中,输入的实数分量a乘以权重的实数分量c得出实数输出(118-1)ac。作为比较,在第二实数输入乘法器(104-2)中,输入信号的实数分量a乘以权重的虚数分量d得出虚数输出(118-2)ad。

类似地,虚数输入乘法器(106-1、106-2)两者接收表示输入信号的虚数分量b的电压vi,并且实行激励相应的输出信号(112-1、112-2)与虚数分量b相乘的运算。接着,每个虚数输入乘法器(106-1、106-2)分别生成定义相应的输出信号(112-1、112-2)与输入的虚数分量b的乘积的输出(120-1、120-2)。应当注意的是,特定的虚数输入乘法器(106)的输出(120)可以是实数或虚数。例如,在第二虚数乘法器(106-2)中,输入的虚数分量b乘以权重的虚数分量d得出实数输出(120-2)bd。作为比较,在第一虚数输入乘法器(106-1)中,输入的虚数分量b乘以权重的实数分量c得出虚数输出(120-1)bc。

系统(216)还包括实数求和器件(224)和虚数求和器件(222)。接着,实数求和器件(224)对仅仅包括实数分量的乘法器(104、106)的输出(118-1、120-2)求和,而虚数求和器件(222)对仅仅包括虚数分量的输出(120-1、118-2)求和。仅仅包括实数分量的输出可以来自不同忆阻单元(102)中的不同类型的乘法器(104、106)。如果乘法器(104、106)如在下文和在图4b中所描述那样被执行,则这些输出(118-1、120-2)是电流的形式。由于电流可以在单个节点上求和,因此实数求和器件(224)可以是电线。

例如,实数权重单元的第一实数输入乘法器(104-1)的输出(118-1)(其是表示输入信号的实数分量a与实数权重分量c结合的乘积的输出)表示实数输出分量ac。类似地,虚数权重单元的第二虚数输入乘法器(106-2)的输出(120-2)(其是表示输入信号的虚数分量b与虚数权重分量d结合的乘积的输出)表示实数输出分量-bd。由此,实数求和器件(224)输出可以被定义为ac-bd,其可以为了方便起见而被重新称为e。

类似地,虚数求和器件(222)接着对仅仅包括虚数分量的乘法器(104、106)的输出(118-2、120-1)求和。仅仅包括虚数分量的输出可以来自不同忆阻单元(102)中的不同类型的乘法器(104、106)。如果乘法器(104、106)如在下文和图4中所描述的那样被实现,则这些输出(118-2、120-1)是电流的形式。由于电流可以在单个节点上求和,因此虚数求和器件(222)可以仅是电线。

例如,实数权重单元的第一虚数输入乘法器(104-2)的输出(118-2)(其是表示输入信号的虚数分量b与实数权重分量c结合的乘积的输出)表示虚数输出分量bc。类似地,虚数权重单元的第二实数输入乘法器(104-2)的输出(120-1)(其是表示输入信号的实数分量a与虚数权重分量d结合的乘积的输出)表示实数输出分量ad。由此,虚数求和器件(222)输出可以被定义为ad+bc,其可以为了方便起见而被重新称为f。结合的和,e+jf表示对复数输入和复数权重值执行的复数mac运算。

图3是根据在本文中所描述的原理的一个示例的用于执行复数乘法累加运算的方法(300)的流程图。根据方法(300),表示输入信号的实数分量a的第一电压vr以及表示输入信号的虚数分量b的第二电压vi分别被施加(框301)到第一忆阻单元(图1,102-1)的第一实数输入乘法器(图1,104-1)和第一虚数输入乘法器(图1,106-1)。第一忆阻单元(图1,102-1)可以是实数权重单元,意味着其执行表示输入信号与权重的实数分量c相乘的运算。

第一电压vr和第二电压vi也分别被施加(框302)至第二忆阻单元(图1,102-2)的第二实数输入乘法器(图1,104-2)和第二虚数输入乘法器(图1,106-2)。第二忆阻单元(图1,102-2)可以是虚数权重单元,意味着其执行表示输入信号与权重的虚数分量d相乘的运算。如在上文中所描述的,输入向量代表诸如要被滤波、转换、卷积、或者以其他方式经由矩阵乘法运算处理的信号。输入电压与乘法器(图1,104、106)交互,并且所产生的电流被收集并求和。由此,第一电压和第二电压可以代表复数输入向量中的单个复数值,其中复数向量的不同复数值被施加至不同的乘法器件(图1,100)。

表示复数权重的实数分量c的电流被施加(框303)到第一忆阻单元(图1,102-1)的实数输入乘法器(图1,104-1)和虚数输入乘法器(图1,106-1)。通过将读取电压vread传递通过第一忆阻元件(图1,114-1),该电流被施加至输入乘法器(图1,104-1、106-1),所述第一忆阻元件(图1,114-1)具有定义实数分量c的电阻。应当注意的是,方法(300)还可以包括将电压施加至忆阻元件(图1,114)以对忆阻元件(图1,114)的状态进行编程从而表示复数权重值的分量。这可以通过将具有某一值的电压传递通过忆阻元件(图1,114)以便发起掺杂动作来如在上文中所描述的那样完成。

vread可以是将不打扰忆阻元件(图1,114)的最大电压。例如,忆阻元件(图1,114)具有发起忆阻元件(图1,114)的状态改变的开关电压。在该示例中,vread可以低于该开关电压。这样做允许针对所产生的电流而增强信噪比。

将该电流施加(框303)到第一忆阻单元(图1,102-1)的实数输入乘法器(图1,104-1)和虚数输入乘法器(图1,106-1)包括复制该电流以使得该电流的实例被传递至第一忆阻单元(图1,102-1)的实数输入乘法器(图1,104-1)和虚数输入乘法器(图1,106-1)。所述复制可以由电流镜(图2,226-1)来实行。

接着,第一忆阻单元(图1,102-1)中的每个乘法器(图1,104-1、106-1)执行定义权重的实数分量c分别与输入信号的实数分量a和虚数分量b相乘的运算。更加具体地,第一实数输入乘法器(图1,104-1)的输出(图1,118-1)是可以被定义为ac的信号。第一虚数输入乘法器(图1,106-1)的输出(图1,120-1)是可以被定义为bc的信号。应当注意的是,由于a和c是实数分量而b是虚数分量,因此ac是第一忆阻单元(图1,102-1)的输出的实数分量,而bc是第一忆阻单元(图1,102-1)的输出的虚数分量。

表示复数权重的虚数分量d的电流被施加(框304)至第二忆阻单元(图1,102-2)的实数输入乘法器(图1,104-2)和虚数输入乘法器(图1,106-2)。通过将读取电压vread传递通过第二忆阻元件(图1,114-2)而将该电流施加至输入乘法器(图1,104-2、106-2),其中第二忆阻元件(图1,114-2)具有定义虚数分量d的电阻。

将该电流施加(框304)至实数输入乘法器(图1,104-2)和虚数输入乘法器(图1,106-2)包括复制该电流以使得该电流的实例被传递至第二忆阻单元(图1,102-2)的实数输入乘法器(图1,104-2)和虚数输入乘法器(图1,106-2)。所述复制可以由电流镜(图2,226-2)来实行。

第二忆阻单元(图1,102-2)的每个乘法器(图1,104-2、106-2)执行定义权重的虚数分量d与输入信号的实数分量a和虚数分量b相乘的运算。更加具体地,第二实数输入乘法器(图1,104-2)的输出(图1,118-2)是可以被定义为ad的信号。第二虚数输入乘法器(图1,106-2)的输出可以被定义为-bd。应当注意的是,由于a是实数分量而b和d是虚数分量,因此ad是第二忆阻单元(图1,102-2)的输出的虚数分量而-bd是第二忆阻单元(图1,102-2)的输出的实数分量。

在一些示例中,乘法器(图1,104、106)可以同时执行运算。由此,并行地执行复数乘法的子计算,因此降低了用于计算复数mac运算的时间量。

接着,可以对仅仅包含实数分量的乘法器(图1,104、106)的输出求和,并且接着对仅仅包含虚数分量的乘法器(图1,104、106)的输出求和(框306)。返回该示例,由于第一实数输入乘法器(图1,104-1)的输出(图1,118-1)ac仅仅包括实数分量,而第二虚数输入乘法器(图1,106-2)的输出(图1,120-2)-bd仅仅包括实数分量,因此实数求和器件(图2,224)对这些分量求和(框305),所述和可以被定义为ac-bd。类似地,第一虚数输入乘法器(图1,106-1)的输出(图1,120-1)bc和第二实数输入乘法器(图1,104-2)的输出(图1,118-2)ad包含虚数分量,因此虚数求和器件(图2,222)对这些分量求和(框306),所述和可以被定义为ad+bc。

因此,如可以看到的,方法(300)允许同时计算输出的实数分量ac-bd和输出的虚数分量ad+bc,而无需使用多个忆阻器件来表示权重的单个分量,并且也无需在单个mac运算中多次使用忆阻器件。

图4a是根据在本文中所描述的原理的另一示例的用于执行复数乘法累加(mac)运算的忆阻系统(216)的图。如在上文中所描述的,在一些示例中,在特定的忆阻乘法器件(图1,100)处接收的每个输入值可以是复数输入向量的个体值,其中不同器件从复数向量接收不同的复数值。由此,系统(216)可以包括乘法器件(图1,100)的阵列(408),每个器件(图1,100)具有第一忆阻单元(102-1)和第二忆阻单元(102-2)。再次为了简单起见,指示单个乘法器件(图1,100)的虚线框为了简单而被省略,但是单个乘法器件(图1,100)是由两个忆阻单元(102-1、102-2)形成的。类似地为了简单起见,在阵列(408)内仅仅利用附图标记标识了一个实例的第一忆阻单元(102-1)和第二忆阻单元(102-2)中的每个,然而该阵列(408)包括多个器件(图1,100),其中每个器件都具有第一忆阻单元(102-1)和第二忆阻单元(102-2)的实例。

在系统(216)中,实数求和器件(224)对来自多个忆阻乘法器件(图1,100)的实数输出(118-1、120-2)进行求和。例如,对多个第一忆阻单元(102-1)的实数输入乘法器(104-1)的输出(118-1)与多个第二忆阻单元(102-2)的虚数输入乘法器(106-2)的输出(120-2)进行求和。为了简单起见,用附图标记指示这些输出(118-1、120-2)的单个实例。实数求和器件(224)的输出(430)可以是单个输出。该单个输出(430)定义多个忆阻乘法器件(图1,100)的实数输出的和。如果乘法器(104、106)被实现为如在下文和图4b中所描述的那样,则这些输出(118-2、120-1)是电流的形式。由于电流可以在单个节点上求和,因此虚数求和器件(222)可以是电线。

类似地,虚数求和器件(222)对来自多个忆阻乘法器件(图1,100)的虚拟输出(118-2、120-1)进行求和。例如,对多个第二忆阻单元(102-2)的实数输入乘法器(104-2)的输出(118-2)与多个第一忆阻单元(102-1)的虚数输入乘法器(106-1)的输出(120-1)进行求和。为了简单起见,利用附图标记指示这些输出(118-2、120-1)的单个实例。虚数求和器件(222)的输出(428)可以是单个输出。该单个输出(428)定义了多个忆阻乘法器件(图1,100)的虚数输出的和。如果如下文和图4b中所描述的那样来实现乘法器(104、106),则这些输出(118-2、120-1)是电流的形式。由于电流可以在单个节点上求和,因此虚数求和器件(222)可以是电线。

系统(216)可以包括用于将实数求和器件(224)的输出(430)转换成数字信号的第一模数转换器(410-1)。系统(216)还可以包括用于将虚数求和器件(222)的输出(428)转换成数字信号的第二模数转换器(410-2)。接着,可以将这些输出馈送至随后的忆阻阵列,例如在神经网络中。

系统(216)的乘法器(104、106)可以采用许多形式。例如,如在图4b中所描绘的,每个输入乘法器(104、106)可以是进行乘法的数模转换器(mdac)(432)。mdac(432)是接收电流(433)(即,表示矩阵的权重组件的电流)并且执行重复权重分量与输入字相乘的运算的多输出电流镜。在图4b中,输入字由指示输入字是实数分量的比特值a0、a1、a2、a3、a4、a5、a6、和a7构成。

当分支(435)由分支的串联开关启用时,电流镜的每个输出分支(435-1、435-2、435-3、435-4、435-5、435-6、435-7、436-8)输出输入电流(433)的加权副本,其中所述串联开关是由n型场效应晶体管(nfet)(437-1、437-2、437-3、437-4、437-5、437-6、437-7、437-8)表示的。例如,一个分支(435-8)可以输出1x输入电流(433),另一分支(435-7)可以输出2x输入电流(433),再一分支(135-6)可以输出4x输入电流(433),以此类推,以使得利用8个分支(435)可以获得1x、2x、4x、8x、16x、32x、64x、以及128x输入电流(433)的输出。所有分支(435)关联于单个输出节点,以使得当多个分支(435)打开时,它们的电流在输出节点处求和。分支启用开关(即,nfet(437)),接着选择输出电流的结合以结合到输出节点上。例如,如果针对2x、16x、和128x的分支(435-1、435-4、435-7)开关(即,nfet(437))是打开的(并且所有其他开关是关闭的),则在mdac(432)的输出节点处将出现总共146x的输入电流(433)。应当注意的是,打开和关闭的开关的各种组合支持范围从0到255x的输入电流(433)的输出电流,其中1x增加。以该方式,mdac(432)将数字输入字(其控制输出分支开关)与输入电流(433)相乘。

应当注意的是,图4b的mdac(432)输出有源电流。即,电流从输出节点流出。当期望负电流输出时,例如当计算-bd时,可以将有源输出电流馈送到输出反向(sink)电流的电流镜中。即,电流流入到该电流镜的输出节点中。该电流镜的反向输出连接至减去输入的下游实数求和器件(224)。可替代地,可以将该电流镜或等同的电路并入到实数求和器件(224)中,并且可以在没有额外的电流镜的情况下使用在图4b中所示出的mdac(432)。

图5是根据在本文中所描述的原理的一个示例的使用用于执行复数乘法累加运算的系统的计算设备(534)的图。计算设备(534)可以在电子设备中实现。电子设备的示例包括服务器、台式计算机、膝上型计算机、个人数字助理(pda)、移动设备、智能电话、游戏系统、和平板计算机等。

可以在任何数据处理场景中利用计算设备(534),所述数据处理场景包括独立的硬件、移动应用、通过计算网络、或其组合。此外,计算设备(534)可以在计算网络、公共云网络、私有云网络、混合云网络、其他形式的网络、或其组合中使用。在一个示例中,由计算设备(534)提供的方法通过例如第三方网络被提供为服务。

为了实现其期望的功能,计算设备(534)包括各种硬件组件。在这些硬件组件中可以是多个处理器(536)、多个数据存储设备(544)、多个外围设备适配器(538)、以及多个网络适配器(540)。这些硬件组件可以通过使用多个总线和/或网络连接来相互连接。在一个示例中,处理器(536)、数据存储设备(544)、外围设备适配器(538)、以及网络适配器(540)可以经由总线(542)通信地耦合。

处理器(536)可以包括用于从数据存储设备(544)取回可执行代码并且执行可执行代码的硬件架构。当由处理器(536)执行时,可执行代码可以使得处理器(536)至少实现执行复数mac运算的功能。计算设备(534)的功能是根据在本文中所描述的本说明书的方法的。在执行代码的过程中,处理器(536)可以从多个剩余的硬件单元接收输入并向多个剩余的硬件单元提供输出。

数据存储设备(544)可以存储诸如由处理器(536)或其他处理设备执行的可执行程序代码之类的数据。如将讨论的,数据存储设备(544)可以具体地存储表示处理器(536)执行以至少实现在本文中所描述的功能的多个应用的计算机代码。

数据存储设备(544)可以包括各种类型的存储器模块,包括易失性和非易失性存储器。例如,本示例的数据存储设备(544)包括随机存取存储器(ram)(548)、只读存储器(rom)(550)、以及硬盘驱动(hdd)存储器(552)。还可以利用许多其他类型的存储器,并且本说明书将在数据存储设备(544)中使用许多不同类型的存储器预期为适合在本文中所描述的原理的特定应用。在某些示例中,数据存储设备(544)中的不同类型的存储器可以用于不同的数据存储需求。例如,在某些示例中,处理器(536)可以从只读存储器(rom)(550)启动,在硬盘驱动(hdd)存储器(552)中维持非易失性存储,并且执行在随机存取存储器(ram)(548)中存储的程序代码。

数据存储设备(544)可以包括计算机可读介质、计算机可读存储介质、或者非瞬时性计算机可读介质。例如,数据存储设备(544)可以是电子的、磁的、光学的、电磁的、红外的、或半导体系统、装置、或设备、或者前述的任何合适的组合。计算机可读存储介质的更加具体的示例可以包括以下内容,例如:具有多条电线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪速存储器)、便携式压缩盘只读存储器(cd-rom)、光学存储设备、磁存储设备、或前述的任何合适的组合。在该文档的上下文中,计算机可读存储介质可以是可以包含或存储用于由指令或结合指令执行的系统、装置、或设备使用的计算机可用的程序代码的任何有形介质。在另一示例中,计算机可读存储介质可以是可以包含、或存储用于由指令或结合指令执行的系统、装置、或设备使用的程序的任何非瞬时性介质。

计算设备(534)中的硬件适配器(538、540)使得处理器(536)能够与在计算设备(534)外部和内部的各种其他硬件元件接合。例如,外围设备适配器(538)可以提供至输入/输出设备(例如,显示设备(554)、鼠标、或键盘)的接口。外围设备适配器(538)还可以提供对其他外部设备的访问,例如外部存储设备,诸如服务器、交换器、和路由器之类的多个网络设备,客户端设备、其他类型的计算设备、及其组合。

可以提供显示设备(544)以允许计算设备(534)的用户与计算设备(534)的功能交互并且实现计算设备(534)的功能。外围设备适配器(538)还可以在处理器(536)与显示设备(554)、打印机、或其他媒体输出设备之间创建接口。网络适配器(540)可以提供至例如网络中的其他计算设备的接口,由此使能在计算设备(534)与位于网络内的其他设备之间实现数据的传输。

当由处理器(536)执行时,计算设备(534)可以在与表示在数据存储设备(544)上存储的多个应用的可执行程序代码相关联的显示设备(554)上显示多个图形用户界面(gui)。例如,如下文将更详细描述的,gui可以显示允许用户与计算设备(534)交互以输入与忆阻mas系统(216)关联的交互性屏幕截图。额外地,经由在显示设备(554)的gui上做出多个交互性姿势,用户可以获得基于输入数据的点积值。显示设备(554)的示例包括计算机屏幕、膝上型计算机屏幕、移动设备屏幕、个人数字助理(pda)屏幕、以及平板计算机屏幕。

计算设备(534)可以还包括忆阻mac系统(216),其有具有多个输入乘法器(图1,104、106)的忆阻单元(图1,102)。

计算设备(534)还包括在本文中所描述的系统和方法的实现中使用的多个模块。计算设备(534)中的各种模块包括可以分别执行的可执行程序代码。在该示例中,各种模块可以作为单独的计算机程序产品来存储。在另一示例中,计算设备(534)内的各种模块可以在多个计算机程序产品内结合;每个计算机程序产品包括多个模块。

计算设备(534)可以包括mac运算模块(546),其用于当由处理器(536)执行时,协助复数忆阻mas系统(216)的功能。例如,mac运算模块(546)用于确定施加至阵列的行线路的输入电压。

在本文中参考根据在本文中所描述的原理的示例的方法、装置(系统)、和计算机程序产品的流程图说明和/或框图描述了本系统和方法的方面。流程图和框图中的每个框、以及流程图和框图中的框的组合可以由计算机可使用的程序代码来实现。可以向用于产生机器的通用计算机、专用计算机、或其他可编程数据处理装置提供计算机可使用的程序代码,以使得计算机可使用程序代码当经由例如计算系统或其他可编程数据处理装置的处理器(536)执行时,实现在流程图和/或框图的框或多个框中指定的功能或动作。在一个示例中,计算机可使用的程序代码可以在计算机可读存储介质内被实施;计算机可读存储介质是计算机程序产品的一部分。在一个示例中,计算机可读存储介质是非瞬时性计算机可读介质。

使用单个忆阻器件来表示复数权重的实数和虚数分量以及使用实数输入乘法器和虚数输入乘法器:1)允许单个忆阻器件存储复数权重的每个元件的值以及2)同时执行复数乘法的子计算,因此增加了复数mac运算的效率。然而可以预期的是,在本文中所公开的器件在多个技术领域中在解决其他事务和缺陷方面时可以提供用处。因此,在本文中所公开的系统和方法不应该被解释为解决特定事务中的任何一个。

已经呈现了前述的描述来示出和描述所描述原理的示例。该描述不旨在是穷尽性的或者将这些原理限制于所公开的任何精确形式。根据上文的教导的许多的修改和变化是可能的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1