用于柔性电导交叉开关的系统的制作方法

文档序号:29068097发布日期:2022-03-01 20:09阅读:83来源:国知局
用于柔性电导交叉开关的系统的制作方法
用于柔性电导交叉开关的系统


背景技术:

1.忆阻器是能够通过施加诸如电压的编程能量而被编程为不同电阻状态的设备。具有忆阻器的存储设备的大型交叉开关阵列可以用于各种应用,包括存储器、可编程逻辑、信号处理控制系统、模式识别和其它应用。
2.人工神经网络是基于生物神经系统的技术模型家族,用于估计或近似依赖于大量输入的函数。神经网络可以表示为互相连接的互相之间交换消息的“神经元”系统。连接可以具有基于经验可以调整的数字权重,使神经网络适应输入并能够进行机器学习。人工神经网络可以具有各种应用,包括函数近似、分类、数据处理、机器人学和计算机数字控制。
附图说明
3.根据一个或多个不同的实施例参考以下附图对本公开进行详细描述。附图仅出于说明的目的而提供并且只是描述了典型的或示例的实施例。
4.图1描述了根据一些实施例的用于计算神经网络的节点值的硬件加速器系统的示例,该硬件加速器包括在每个节点仅使用基于忆阻器的单元的交叉开关阵列。
5.图2a示出了根据一些实施例的用于实施神经网络的权重矩阵的、实施混合忆阻器-电阻器解决方案的电路结构的示例。
6.图2b示出了根据一些实施例的使用用于计算图2a的电阻的离散余弦变换(dct)的近似法的概念图。
7.图3示出了根据一些实施例的用于实施可编程矩阵-向量乘法器(如,在矩阵与向量之间)的混合忆阻器-电阻器交叉开关阵列的概念图。
8.图4是示出了示例神经网络的概念模型。
9.图5示出了根据一些实施例的可以包括对图1所示的神经网络进行仿真的硬件加速器的示例计算机系统。
10.附图并非穷举性的,并且并非将本公开限定为所公开的精确形式。
具体实施方式
11.本文描述的各个实施例针对的是配置成仿真逻辑神经网络的硬件。此外,硬件已经调整为包括专用电路,即为了优化性能考虑在电阻器与忆阻器之间权衡而设计的混合电阻器-忆阻器交叉开关阵列。作为一般的描述,混合设计可以包括例如:电阻器的交叉开关阵列,其中电阻器充当固定电导元件;以及忆阻器阵列,其中忆阻器充当可变电导元件。电阻器交叉开关可以是对变换中的静态系数进行硬件仿真的电阻器网络。本文公开的示例变换并不限于逆离散余弦变换(dtc),示例变换可以通过使用固定模式的加权序列来近似可变结构。相应地,矩阵-向量乘法的一些可变方面可以在逆dct中使用固定结构来近似。逆dct中的这些固定结构对应于混合电阻器-忆阻器交叉开关阵列的电阻器(如,固定值元件),同时忆阻器阵列对应于应用于固定结构的权重。
12.通过利用静态结构,混合电阻器-忆阻器交叉开关阵列能够类推地执行向量与矩
阵加权序列之间的乘法。因此,公开的混合电阻器-忆阻器交叉开关阵列可以应用于计算具有灵活的精确度和效率的等级的一般的矩阵-向量乘法,同时支持电导的固定源,即电阻器,作为其交叉开关的主要组件。
13.忆阻器是可以广泛用于诸如存储器、开关、射频电路、逻辑电路及系统的电子电路中组件的设备。在存储器结构中,可以使用具有忆阻器的存储器设备的交叉开关阵列。在用作存储器设备的基础时,忆阻器可以用于存储可以表示至少两个离散状态——on或off或者1或0——的信息位。可以通过施加流过忆阻器的诸如电压或电流的电刺激来改变忆阻器的电阻。一般地,可以形成至少一条能够在两个状态之间进行切换的通路——两个状态的一者中通道形成了导电路径(“通”)以及两个状态的另一者中通道形成了不导电路径(“断”)。在一些其它情况中,导电路径表示“断”且不导电路径表示“通”。此外,忆阻器还可以表现为具有可变电导的模拟组件,并且其就是在本文公开的混合忆阻器-电阻器交叉开关阵列中应用的特性(如,类推使用的忆阻器)。
14.在一些应用中,存储器交叉开关阵列可以用于执行向量-矩阵计算。例如,通过每一列线中的电阻式设备的电导对来自交叉开关的每一行线的输入电压信号进行加权并累积作为来自每一列线的电流输出。理想地,如果可以忽略导线电阻,从交叉开关阵列流出的电流(i)将用以下公式近似表示:
15.i
t
=v
tgꢀꢀꢀꢀꢀ
(1)
16.其中,v是输入电压,并且g是电导矩阵。
17.交叉开关阵列被配置成包括来自交叉开关阵列中的每个忆阻器的贡献。在交叉开关阵列的连接点或交叉点使用忆阻器使得能够对每个这样的连接点的电阻(或电导)进行编程。为了避免对一组给定的忆阻器的编程电导进行无意的重大更改,(作为累积和重复的形成、读取或写入操作的副作用,这可能损坏电池或改变其保持的状态)可以实现选择器电路(图1所示)并且可以约束交叉开关的哪个部分(作为矩阵或向量,一整行或排,或其部分)的机制在给定时间激活以用于任意操作。该部分的必要性和大小及其部署依赖于特定应用、交叉开关实现、使用、性质和记忆电池的组成。
18.本文公开的示例包括用于计算神经网络的节点值的硬件加速器。然而,应当理解的是,神经网络仅用作硬件加速器和混合忆阻器-电阻器交叉开关阵列电路的实际运用的示例。例如,所公开的混合忆阻器-电阻器交叉开关阵列电路可以大体上执行比神经网络的操作更一般的操作,即矩阵-向量乘法。
19.示例硬件加速器可以包括编程为计算节点值的交叉开关阵列。可以根据权重矩阵来编程交叉开关阵列的存储器单元。通过交叉开关阵列从输入向量映射的驱动输入电压可以产生输出电流值,该输出电流值可以与阈值电流进行比较以生成新节点值的新输入向量。以这种方式,这里的示例加速器提供了神经网络的节点值的硬件计算。
20.现在参考附图,图1示出了根据实施例的示例硬件加速器100。硬件加速器100可以是执行计算神经网络的节点值的操作的硬件单元。硬件加速器100可以通过转换与权重矩阵有关的输入向量来计算神经网络的新节点值。硬件加速器100可以通过计算输入向量与权重矩阵的向量-矩阵乘法来进行这个操作。
21.在图1所示的示例中,hopfield神经网络(hnn)通过本文描述的硬件加速器100来实现。图1示出了具有各种组件的示例硬件加速器100的实施方式,各种组件包括:忆阻器交
叉开关阵列101;复用器(mux)115;比较器120;mux解码器125;延迟触发器(dff)(i/o缓存器)130;以及驱动器135。此外,在硬件加速器100中,交叉开关阵列101包括忆阻器交叉开关阵列105。忆阻器交叉开关阵列105可以被配置为实现上面描述的hnn的权重矩阵方面。
22.如以上描述的,hnn是可以用作各种应用的计算机制的一种类型的人工神经网络。图4概念性地示出了hnn模型。形象地说,作为数学结构的hnn可以表示为具有节点(si)410a-410f和边(w
ij
)420a-420o的双向(无向)网络图形400。边420a-420o可以在节点410a-410f的每一者之间形成。计算的“问题”可以进行边权重和阈值函数的编码(或训练)。输入节点值415a-415f可以递送至节点410a-410f,直至计算的对问题的“解”通过节点值的最终状态确定。以这种方式,hnn可以是动态系统,并且节点值可以基于边加权演变为所有其它节点值(即,作为点积运算)。动力学遵循能量极小化规则,使得系统“能量”不增加,并因而可以找到最小值。节点的最终配置对解进行编码。因此“能量”指示了在更新发生的时候网络是否被修改,以及系统是否在变得稳定的时候达到其最小能量。hnn可以被“训练”为一组不同输入。如以上所提到的,hnn可以采用最小化网络能量函数的更新规则(如,仅在每次连续更新时降低能量)。
23.返回参考图1,可以将硬件加速器100实现为忆阻器交叉开关阵列105。忆阻器交叉开关阵列105可以是平行和垂直的线的结构,并且在交叉点处在线之间耦接了存储器单元。忆阻器交叉开关阵列105可以包括多个行线104、多个列线107和多个存储器单元106a-106i。存储器单元106a-106i中的每一者可以耦接在一个行线104和一个列线106的每个唯一组合之间。换句话说,存储器单元106a-106i不共享行线也不共享列线。
24.行线104可以是携带流过忆阻器交叉开关阵列105的电流的电极。在一些示例中,行线104可以相互平行,一般来说具有相等的间距。行线104有时可以是例如上电极或字线。类似地,列线107可以是不平行于行线104延伸的电极。列线107有时可以是例如下电极或位线。行线104和列线107可以用作将电压和电流递送至存储器单元106a-106i的电极。用于行线104和列线107的示例材料可以包括导电材料,诸如pt、ta、hf、zr、al、co、ni、fe、nb、mo、w、cu、ti、tin、tan、ta2n、wn2、nbn、mon、tisi2、tisi、tisi3、tasi2、wsi2、nbsi2、v3si2、电掺杂多晶硅si、电掺杂多晶硅ge及其组合。在图1的示例中,交叉开关阵列105可以具有n个行线和m个列线。
25.存储器单元106a-106i可以在行线104与列线107的交叉点处耦接在行线104与列线107之间。例如,可以把存储器单元106a-106i放在适当位置以计算与权重矩阵有关的节点值的输入向量的新节点值。存储器单元106a-106i中的每一者可以具有存储器设备,诸如电阻式存储器元件、电容式存储器元件或一些其它形式的存储器。
26.在一些示例中,存储器单元106a-106i中的每一者可以包括电阻式存储器元件。电阻式存储器元件可以具有随施加的电压或电流改变的电阻。此外,在一些示例中,电阻式存储器元件可以“记忆”其最后的电阻。以这种方式,每个电阻式存储器元件可以设置为至少两种状态。在许多示例中,电阻式存储器元件可以设置为多个电阻状态,这可以促进各种模拟运算。电阻式存储器元件可以通过具有忆阻器达到这些性能,忆阻器可以是提供本文所描述的忆阻性能的双端电气组件。
27.在一些示例中,忆阻器可以是基于氮化物的,意指忆阻器的至少一部分是由包含氮化物的组合物形成的。忆阻器还可以是基于氧化物的,意指忆阻器的至少一部分是由包
含氧化物的材料形成的。此外,忆阻器可以是基于氮氧化物的,意指忆阻器的至少一部分是由包含氧化物的材料形成的且忆阻器的至少一部分是由包含氮化物的材料形成的。忆阻器的示例材料可以包括氧化钽、二氧化铪、氧化钛、氧化钇、氧化铌、氧化锆、或其它类似氧化物、或非过渡金属氧化物,诸如氧化铝、氧化钙、氧化镁、氧化镝、氧化镧、二氧化硅或其他类似氧化物。进一步的示例包括氮化物,诸如氮化铝、氮化镓、氮化钽、氮化硅以及氮氧化物,诸如氧氮化硅。此外,可以在实践本文的教导时采用其他起作用的忆阻器。
28.忆阻器可以表现出非线性或线性电流-电压特性。非线性可以描述增长趋势不同于线性函数的函数。在一些实施方式中,忆阻器可能在感兴趣的电压范围内是线性的或是非线性的。感兴趣的电压范围例如可以是在硬件加速器100的操作中使用的电压范围。在一些示例中,存储器单元106a-106i可以包括其他组件,诸如存取晶体管或选择器。例如,存储器单元106a-106i中的每一者可以耦接在行线104与列线106的交叉点之间的存取晶体管。存取晶体管可以出于读取或写入存储器单元的目的来促进存储器单元106a-106i中的单独的存储器单元或存储器单元组合的目标实现(targeting)。
29.可替换地,选择器可以是可在忆阻器设备中使用以提供期望的电气性能的电气设备。例如,选择器可以是容许依赖于施加在端子两侧的电压的电流进入的双端子设备或电路元件。选择器(未示出)可以耦接至存储器单元106a-106i中的每一者来促进存储器单元106a-106i中的单独的存储器单元或存储器单元组合的目标实现。例如,选择器可以通过表现得像通断开关来进行这样的操作,并且其可以减轻寄生电流干扰。
30.交叉开关阵列105的存储器单元106a-106i可以根据神经网络的权重矩阵来编程。权重矩阵可以表示神经网络的操作的汇编。例如,权重矩阵可以表示图4中所示的hnn的加权边。存储在存储器单元106a-106i中的值可以表示权重矩阵的值。在电阻式存储器的实施方式中,存储器单元106a-106i中的每一者的电阻等级可以表示权重矩阵的值。以此类方式,权重矩阵可以映射到交叉开关阵列105上。
31.可以例如通过驱动编程信号穿过存储器单元106a-106i以驱动存储器单元106a-106i的状态改变来对其进行编程。编程信号可以定义多个值来应用于存储器单元106a-106i。如本文所描述的,交叉开关阵列105的存储器单元106a-106i的值可以表示诸如hnn的神经网络的权重矩阵。
32.继续参考图1,硬件加速器100可以接收多个行线104处节点值的输入向量。输入向量可以包括待演变成神经网络下一个输入值的节点值。可以通过驱动电路135将输入向量节点值转换为输入电压(vi)103。驱动电路135可以将表示输入向量的一组输入电压递送至忆阻器交叉开关阵列105。在一些示例中,电压103可以是其它形式的电刺激,诸如被驱动到存储器单元106a-106i的电流。此外,在一些示例中,输入向量可以包括数字值,该数字值可以通过数-模转换器转换为输入电信号的模拟值。在其它示例中,输入向量可能已经包括模拟值。
33.在通过忆阻器交叉开关阵列105时,多个列线107可以递送输出电流(io)109,其中输出电流109可以根据更新规则与阈值电流进行比较,以生成新节点值的新输入向量。这些操作的细节将在下面进行描述。
34.硬件加速器100还可以包括与交叉开关阵列105相关联的其他外围电路。例如,地址解码器如mux解码器125可以用于选择行线104中的行线,并且激活对应于所选择的行线
104的驱动电路135。对于所选择的行线104,驱动电路135可以用对应于神经网络或者设置交叉开关阵列105的存储器单元106a-106i内的电阻值的过程的不同电压来驱动对应的行线104。针对列线107可以包括类似的驱动和解码电路。控制电路还可以用于控制在硬件加速器100的输入处的电压施加以及在硬件加速器100的输出处的电压读取。数字到模拟电路及模拟到数字电路可以用于输入电压103和输出电流109。在一些示例中,可以将半导体加工技术应用于与交叉开关阵列相同的集成结构或半导体裸片来制造以上所描述的外围电路。
35.本文描述了硬件加速器100的示例操作。第一操作可以编程忆阻器交叉开关阵列105中的存储器单元106a-106i,以将n
×
m(其中m对应于行的数量,n对应于列的数量)权重矩阵中的数学值映射到阵列。在一些示例中,n和m可以是相同的数字,并且权重矩阵是对称的。在一些示例中,在编程操作期间一次对存储器单元106a-106i中的每一者进行编程。第二操作可以通过列线107的存储器单元的输入电压与电阻值的点积来计算输出电流。在本操作中,施加输入电压,可以获取输出电流,输出电流对应于n
×
m矩阵与n
×
1向量相乘的结果。在一些示例中,输入电压可以低于编程电压。因此,诸如电阻式存储器的存储器单元106a-106i的电阻值理想地在线性变换计算期间不改变。第三操作是比较输出电流与阈值电流。例如,比较器120可以比较输出电流与阈值电流以确定新节点值的新输入向量。
36.在示例中,硬件加速器100可以通过沿着n
×
m交叉开关阵列105的行线104同时施加一组电压(vi)103、采集流过列线107的电流并生成新节点值来计算节点值。在每个列线107上,由相应的忆阻(1/g
ij
)对每个输入电压103进行加权,且在输出电流处反映加权和。使用欧姆定律,输入电压103与输出电流之间的关系可以通过向量-矩阵乘法的形式来表示:{vo}t=-{vi}
t
[g]rs,其中g
ij
是通过忆阻器交叉开关阵列105的电导(电阻的倒数)确定的n
×
m矩阵,rs是感应放大器(未示出)的电阻值以及t表示列向量vo和vi的转置。负号是由感应放大器中的负反馈运算放大器的使用产生,其中感应放大器用于输出与流过列线107的电流成比例的电压。由上可知,由此可见硬件加速器100可以用于将第一向量值{bi}
t
与矩阵值[a
ij
]相乘以获得第二向量值{cj}
t
,其中i=1,
……
,n,并且j=1,
……
,m。向量运算可以更具体地阐述如下:
[0037]a11
b1+a
21
b2+
……
+a
n1bn
=c1ꢀꢀꢀꢀꢀꢀ
(3)
[0038]a1m
b1+a2b2+
……
+a
nmbn
=cm[0039]
使用本文描述的原理进行向量处理或乘法一般情况下开始于将矩阵值[a
ij
]映射至交叉开关阵列105上,或换句话说,将电导值g
ij
编程(即,写入)至交叉开关阵列105的交叉开关连接点。
[0040]
仍然参考图1,在一些示例中,可以通过顺序地将电压降施加在存储器单元106a-106i的每一者上来设置电导值g
ij
中的每一者。例如,可以通过在忆阻器交叉开关阵列105的第二行线104施加等于v
row2
的电压和在阵列105的第三列线107施加等于v
col3
的电压来设置电导值g
2,3
。可以在邻近j=1列线的第二行线处向第二行线施加电压输入v
row2
。将向邻近i=1或i=n位置的第三列线施加电压输入v
col3
。应当注意的是当在列线107处施加电压时,用于该列线的感应电路可能断开且电压驱动器接通。电压差v
row2-v
col3
一般地将基于位于交叉点的存储器单元106f的特性来确定所产生的电导值g
2,3
。当遵循本方法的情况下,未选择的列线107和行线104可以根据多个方案中的一者进行选址,多个方案包括例如使所有未选
择的列线107和行线104浮空或者使所有未选择的列线和行线接地。其它方案可能涉及使列线107接地或使部分列线107接地。使未选择的列线和行线接地可以有助于隔离未选择的列线和行线以最小化流向所选择的列线107的潜通路电流。
[0041]
根据本文的示例,存储器单元106a-106i中使用的忆阻器可能具有线性电流-电压关系。线性电流-电压关系使得在矩阵相乘过程中可以具有较高的精确度。然而,具有线性忆阻器的忆阻器交叉开关阵列105在阵列105的编程期间可能倾向于大的潜通路电流,尤其是当忆阻器交叉开关阵列105的大小大于一定大小诸如32
×
32时。在这种情况下,流过所选择的忆阻器的电流对于编程忆阻器来说可能是不够的,因为大部分电流流经潜通路。或者,由于潜通路,可能以不精确的值对忆阻器进行编程。
[0042]
为了减小这样的实例中的潜通路电流,尤其在需要较大阵列的时候,诸如存取晶体管或非线性选择器的存取设备可以并入忆阻器或者与忆阻器一起使用,以最小化阵列中的潜通路电流。更特别地,存储器单元应当广泛地理解为包括忆阻设备,该忆阻设备例如包括电阻式存储器元件、忆阻器、忆阻器和晶体管,或者忆阻器和其他组件。
[0043]
编程之后,通过施加输入电压110并比较输出电流与阈值电流,硬件加速器100的操作继续进行。可以通过电流比较器120对从列线107所递送的输出电流与阈值电流进行比较。电流比较器120可以是比较两个电流(即,输出电流和阈值电流)并输出指示哪个更大的数字信号的电路或设备。电流比较器120可以具有两个模拟输入端和一个二进制数字输出。比较器120可以为仿真的hnn确定新节点值。可以聚合新节点值以生成新输入向量。例如,每个输出电流可以通过更新规则进行比较。如果特定输出电流大于或等于阈值电流θi,则对应于特定输出电流的新节点值可以被设置为第一值。如果特定输出电流小于阈值电流,则新节点值可以被设置为第二值。每个输出电流可以表示为输入向量与权重矩阵乘积之和。
[0044]
还可以编程节点值以获得值+1或0,而不是以上方程中的+1和-1。还可以使用任意其它值对。在一些示例中,阈值电流可以经由独立于交叉开关阵列102的电路递送至电流比较器120。此外,在一些示例中,列线107可以具有与其相关联的不同的阈值电流。这将在下文中进行进一步的描述。可替换地,每个列线106可以与相同的阈值电流相关联。
[0045]
一旦递送了新节点值的新输入向量,控制器就可以确定哪些新节点值是hnn的最终节点值。神经网络例如可以被模仿来确定系统的最小能量。在此类示例中,控制器可以确定这里表示系统能量的新节点值是否是系统的局部最小值。响应于控制器确定新节点值不是最终节点值,新输入向量可以被转换成待递送至交叉开关阵列105的多个行线的输入电压。以这种方式,硬件加速器100可以周期性地计算迭代问题,诸如确定将hnn实现为硬件的系统的最小化能量。
[0046]
在一些实例中,硬件加速器100可以实现为计算设备中的引擎。包括示例加速器的示例计算设备例如可以是执行本文所描述的功能的个人计算机、云服务器、局域网服务器、网络服务器、主机、移动计算设备、笔记本或台式机、智能tv、付款设备、可穿戴设备、任意其它适当的电子设备或诸如通过云或因特网连接的设备的组合。
[0047]
图2a示出了说明混合电阻器-忆阻器交叉开关阵列200的概念图,其允许柔性电导在实现神经网络的权重矩阵时使用。诸如图1所示的电路的忆阻器交叉开关能够非常有效地执行模拟矩阵-向量乘法。如以上所描述的,忆阻器交叉开关的功能涉及在可编程忆阻器上加载适当的电导。忆阻器交叉开关特性上通用,意指设计允许具有通用性(或在应用之前
没有矩阵知识)的不同矩阵的乘法。因为忆阻器交叉开关的通用性通常来自于电导的可编程源,硬件设计可以依赖于将可编程电导,即忆阻器,用于矩阵(允许在使用过程中函数可变)的每个位置。在每个位置具有忆阻器可以导致在硬件实现中具有相当数量的忆阻器,因为矩阵(和交叉开关)的大小和复杂性按比例增加。因此,包括大量忆阻器的设计会增加与硬件相关联的总成本。此外,将所需电导值载入忆阻器会比预期的更慢。为了使延迟最小化,整个交叉开关电路可以专用于在应用中使用的每个矩阵。为了解决与全部忆阻器实现相关联的这些缺陷,混合电阻器-忆阻器交叉开关阵列200使用固定结构利用可变近似。通过近似可变结构,混合设计可以使用固定电导元件,即电阻器,并仍然以与全部忆阻器交叉开关实现相同的方式完成向量-矩阵乘法。换句话说,将混合电阻器-忆阻器交叉开关阵列200中的电阻器(即,固定电导元件)近似为将另外用于全部忆阻器交叉开关设计的忆阻器(即,可变电导元件),这最终减少在交叉开关阵列200中需要的忆阻器的数量。
[0048]
并且,混合电阻器-忆阻器交叉开关阵列200可能是更专用的,而不具有与全部忆阻器交叉开关硬件相关联的通用性。也就是,取代了经由各自可编程忆阻器在矩阵的每个位置进行编程,基于具有硬件的特定应用的一些知识,混合设计中的电阻器交叉开关的每个位置可以是固定的(与可变是相反的)。例如,混合电阻器-忆阻器交叉开关阵列200可以配置为特定执行两个向量之间的点(内)积。一般地,混合电阻器-忆阻器交叉开关阵列200中的电阻器的固定电导值依赖于应用。然后,这些固定元件(电阻器)对硬件输出的影响在可变的方面,其被编程入混合电阻器-忆阻器交叉开关阵列200的很少的忆阻器。因此,混合电阻器-忆阻器交叉开关阵列200实现了与在其硬件中的最小的或减少的数量的忆阻器相关联的优势。为了预期的应用,可以简化(即,元件数量减少)和/或优化混合电阻器-忆阻器交叉开关阵列。如果设计证明变换的基础和/或因数是近似忽略不计(即,接近零),那么对应于该因数的电阻器交叉开关可以在部署硬件之前从设计中移除。应当理解的是,如果电阻器交叉开关可以在不信息的实质性损失(如,合理量化)的情况下移除,那么可以通过消除该交叉开关并使用更少组件来简化实现混合电阻器-忆阻器交叉开关阵列202的硬件。
[0049]
作为背景知识,傅里叶理论通过使用固定模式的加权序列涉及可变结构的近似。例如,任意通用的向量可以通过一系列固定模式来近似。该近似法在图2b中说明,因为傅里叶理论,随机阵列250和260可以分别近似为固定阵列251-258和261-268的加权和。固定阵列251-258和261-268可以称为傅里叶变换的基础。在所示出的示例中,阵列的尺寸是8
×
1,但是其它尺寸(未示出)也是可以的。如所示出的,固定阵列251-258和261-268中的每一者可以分别与因数251a-258a和261a-268a相关联。固定阵列251-258和261-268中的每一者与对应的因数251a-258a和261a-268a进行相乘。因此,因数251a-258a和261a-268a用作为了获得必要的值(这里是求和)而使用的权重,以适当地近似随机阵列250和260。在图2b中,固定阵列251具有设定为“+1.63”的因数251a。变换的基础是固定的,仅因数改变。这个概念使得向量-矩阵乘法的可变的方面能够使用固定的元件通过仅改变权重(即,基础保持固定)来近似。如前文所描述的,实施例描述了关于特定傅里叶变换,即dct。然而,该实施例并非旨在限定,并且在视为适当的情况下,各种分解(不同于dct)可以用于实现所公开的混合电阻器-忆阻器交叉开关阵列200。
[0050]
现在返回参考图2a,概念上来说混合电阻器-忆阻器交叉开关阵列200包括与忆阻器220a、220b和220c的阵列串联耦接的电阻器交叉开关210a、210b和210c的阵列。电阻器
211a-213a、211b-213b和211c-213c分别包括电阻器交叉开关210a、210b和210c中的每一者。电阻器211a-213a、211b-213b和211c-213c充当固定电导元件。这些固定电导元件对由忆阻器220a、220b和220c加权的总电流是有贡献的。如以上所描述的,忆阻器220a、220b和220c以可变电导元件运行。图2a描述了电阻器211a-213a、211b-213b和211c-213c(在各自的交叉开关210a、210b和210c中)中的每一者具有对应的固定电导。例如,在电阻器交叉开关210a中:电阻器211a具有固定电导值g
11
;电阻器212a具有固定电导值g
12
;以及电阻器213a具有固定电导值g
1n
。在电阻器交叉开关210b中:电阻器211b具有固定电导值g
21
;电阻器212b具有固定电导值g
22
;以及电阻器213b具有固定电导值g
2n
。在电阻器交叉开关210c中:电阻器211c具有固定电导值g
31
;电阻器212c具有固定电导值g
32
;以及电阻器213c具有固定电导值g
3n
。此外,图2a示出了每个电阻器交叉开关210a、210b和210c可以表示对应的固定阵列,该固定阵列包括关于给定尺寸(n
×
1)(在图2b中示出的)的dct的基础。将来自电阻器交叉开关210a的输出信号输入忆阻器220a。类似地,将来自电阻器交叉开关210b的输出信号输入忆阻器220b,并且将来自电阻器交叉开关210c的输出信号输入忆阻器220c。在示例实施方式中,忆阻器220a、220b和220c可以具有以下数学表示的编程的值:
[0051][0052]
其中α为可变电导,
[0053]
g为固定电导,
[0054]
第m个电阻器交叉开关阵列,
[0055]
eq为第m个电阻器交叉开关阵列中的电阻器之和。
[0056]
可以使用逆dct近似法对来自忆阻器220a、220b和220c中的每一者的输出一起求和以生成表示加权矩阵计算的电流值。产生的电流(i)具有以下数学表示的值:
[0057]
i=v
·
(α1g1+α2g2+


mgm
)
ꢀꢀꢀꢀ
(5)
[0058]
其中α为可变电导,
[0059]
g为固定电导,
[0060]
第m个电阻器交叉开关阵列,
[0061]
v为电压,
[0062]
i为电流。
[0063]
通过利用dct来近似具有电阻器(固定电导元件)的可变结构,混合电阻器-忆阻器交叉开关阵列200的硬件实现可能导致具有类似处理性能的忆阻器数量的大幅度减少(如,95%-97%)。
[0064]
现在参考图3,示出了用于实现混合电阻器-忆阻器交叉开关阵列的电路300的配置示例。图3中的电路300可以描述为比图2a示出的所描述的电路更通用的实施方式,其在孔矩阵与向量(如任意向量可以视为n乘1矩阵)之间执行乘法。换句话说,可以将图2a中的电路考虑为图3中电路300实现的更通用的功能(如,矩阵-向量乘法)的特定应用(如,点积向量乘法)。此外,可以将电路300包括以上所描述的硬件加速器的实现中。一般地,电路300包括:多个电阻器交叉开关阵列310a、310b和310c;各自对应于每个忆阻器交叉开关阵列310a、310b和310c的复用器315a、315b和315c;以及各自对应于每个复用器315a、315b和315c的忆阻器320a、320b和320c。对于给定i,电阻器交叉开关阵列310a、310b和310c中的每
一者充当传统的交叉开关,将v1、v2和vn作为表示向量的电压输入。在电阻器交叉开关阵列310a、310b和310n内的电阻器的每一者拥有值为gi的电导。相应地,通过欧姆定律,电导为gi的电阻器贡献电流。这些来自电阻器交叉开关阵列310a、310b和310c的电流加起来产生总电流。以这种方式,每个复用器315a、315b和315c的每个输入线调节转置矩阵g1的操作输出。
[0065]
迭代地设置复用器315a、315b和315c的信号输入,选择输入的每一者作为输出。假设电流信号选择第j个输入作为输出。以这种方式,第i个复用器的输出是上述的电流。通过各自的电阻器317a、317b和317c和跨阻放大器316a、316b和316c将电流转换为电压。
[0066]
图3中所见的复用器315a-315c作为单独的信道选择器,n:1,并且可以由具有低插入损耗(理想为零)dc使能的模拟开关组成,以允许在给定时间的一个输入到输出的选择(通过s寻址)。复用器315a-315c同步并行运行,使得所有复用器都将在给定时间选择相同的相关输入信道(位置1、2等等)。在本示例中,复用器315a-315c可以允许忆阻器320a、320b和320c影响来自其所连接的矩阵的列的电流,每次一列,以使得每个忆阻器随着时间影响整个矩阵的电流,从而逐列如下:
[0067]
i)由忆阻器320a加权的g1的第一列、由忆阻器320b加权的g2的第一列等被求和以形成向量y的第一因数。
[0068]
ii)由忆阻器320a加权的g1的第二列、由忆阻器320b加权的g2的第二列等被求和以形成向量y的第二因数。这个过程一直持续到最后的第m步骤。
[0069]
例如,处理一遍(单个列)计算的时间主要由在使用(如,读取操作循环)的特定忆阻单元的操作特性来确定。相应地,混合电阻器-忆阻器交叉开关阵列可以按纳秒到微秒的次序随着时间执行整个矩阵的计算。在这种较慢的忆阻器(或较慢的多路复用)的情况下,这个时间可以在毫秒的范围内。在连续处理的应用中,处理矩阵的时间量可能跨越用于混合电阻器-忆阻器交叉开关阵列的数个小时。忆阻器320a、320b和320c可以具有各自的电导值。忆阻器320a、320b和320c中的每一者引起的电流可以结合产生各自的线中上升的电流/安培。这个电流转换为电阻器337和跨阻放大器336的电压。这个电压显示为输出yj。因为电路300被设计用于特定环境(不一定是神经网络)中的计算,所以可以在矩阵的代表集上使用统计来推断dct的预期系数。每个系数的预期范围可以由通过dct近似的矢量来给定。这转化为电路300的硬件设计,因为电阻器交叉开关阵列310a、310b和310c的静态电阻被设置为等于dct的已知系数的值。电阻器交叉开关阵列310a、310b和310c的这些静态电阻还产生与电阻器相关联的静态电导(如电导是电阻的倒数)。如本文所提到的,电阻器交叉开关阵列310a、310b和310c的静态电导值与其最初设置的值保持一致(或静态的),在操作期间不会不定地改变也不会动态地重新编程。进一步地,因为能够编程对应于忆阻器320a、320b和320c的电导。如本文所提到的,忆阻器320a、320b和320c的可变电导值可以由其最初设置的值改变(或可变的),在操作中是动态重新编程的。电路300使用电阻器和忆阻器的混合来执行向量与矩阵的加权序列的乘法的计算。在一些实施方式中,固定的和可变的电阻器(或其当量)可以分别用作静态电导和忆阻组件。此外,在一些实施方式中,具有主要静态电导值的忆阻器可以替代电阻器元件使用,该忆阻器还可以被编程用于特定应用(从而为精确度和重复性的最优化提供更大的灵活性)。
[0070]
因此,通过采用电阻器交叉开关310a、310b和310c实现混合电阻器-忆阻器交叉开
关阵列的电路300可以获得与图1示出的“所有忆阻器”实施方式类似的功能。图3中示出的这个混合设计考虑了使用静态电阻器之间的权衡以及忆阻器的可编程性和灵活性,静态电阻器一般是更稳定、更精确和更小的元件(与忆阻器比较)。因此,可以优化在电路300中实现的混合电阻器-忆阻器交叉开关阵列,提供整体更小、更快和更便宜的硬件电路。
[0071]
图5描绘了示例计算机系统500的框图,在示例计算机系统500中可以实现本文所描述的实施例的混合电阻器-忆阻器交叉开关阵列。计算机系统500包括总线502或用于传达信息的其它通信机构、与总线502耦接以处理信息的一个或多个硬件处理器504。(多个)硬件处理器504可以是例如一个或多个通用微处理器。
[0072]
计算机系统500还包括耦接至总线502以存储信息和待由处理器504执行的指令的主存储器508,诸如随机存取存储器(ram)、缓存和/或其它动态存储设备。主存储器508在执行待由处理器504执行的指令期间还可以用于存储临时变量或其它中间信息。这样的指令当存储在可访问处理器504的存储介质中时,将计算机系统500呈现在定制执行指令中规定的操作的专用机中。
[0073]
计算机系统500进一步包括耦接至总线502以存储静态信息和用于处理器504的指令的存储设备510,诸如只读存储器(rom)或其它静态存储设备。提供诸如磁盘、光盘或usb拇指驱动器(闪存驱动器)等的存储设备510并耦接至总线502以存储信息和指令。
[0074]
可以经由总线502将计算机系统500耦接至用于向计算机用户显示信息的诸如液晶显示屏(lcd)(或触摸屏)的显示屏512。包括字母数字或其它键的输入设备514耦接至总线502以将信息和命令选择传达至处理器504。另一类型的用户输入设备是光标控制516,诸如鼠标、追踪球或光标方向键,用于传达方向信息和命令选择至处理器504及用于在显示屏512上控制光标移动。在一些实施例中,与光标控制相同的方向信息和命令选择可以在没有光标的情况下经由接收触摸屏上的触摸来实现。
[0075]
计算系统500可以包括用于实现gui的用户接口模块,gui如同由一个或多个计算设备执行的可执行软件代码一样存储在大容量存储设备中。以示例的方式,这个和其它模块可以包括组件,诸如软件组件、面向对象的软件组件、类组件和任务组件、进程、功能、属性、程序、子程序、程序代码的片段、驱动器、固件、微代码、电路、数据、数据库、数据结构、表格、阵列和变量。
[0076]
一般地,本文所使用的词“组件”、“引擎”、“系统”、“数据库”、“数据存储”等可能指的是在硬件或固件中体现的逻辑,或者指的是可能具有入口点和出口点的以例如java、c或c++的编程语言写入的软件指令的集合。软件组件可以被编译并链接至安装在动态链接库中的可执行程序,或者可以以例如basic、perl或python的解译的编程语言写入。应当理解的是软件组件可以是能够从其他组件或从其自身调用的,和/或可以响应于所检测到的事件或中断调用。配置用于在计算设备上执行的软件组件可以在诸如光盘、数字视频盘、闪盘驱动器、磁盘或任意其它有形介质计算机可读介质上提供,或者可以作为数字下载程序提供(并且可以最初以压缩的或可安装的格式存储,这在执行之前需要安装、解压缩或解密)。这种软件代码可以部分或全部存储在执行的计算设备的存储器设备上,用于由计算设备执行。可以在诸如eprom的固件中嵌入软件指令。即将进一步理解的是硬件组件可以由相连接的诸如门和触发器的逻辑单元组成,和/或可以由诸如可编程门阵列或处理器的可编程单元组成。
[0077]
计算机系统500可以使用与计算机系统结合致使或编程计算机系统500成为专用机的定制的硬接线逻辑、一个或多个asic或fpga、固件和/或程序逻辑来实现本文所描述的技术。根据一个实施例,响应于一个或多个处理器504执行包含在主存储器508中的一个或多个指令的一个或多个序列,由计算机系统500执行本文中的技术。可以从诸如存储设备510的另一存储介质读取此类指令至主存储器508。执行包含在主存储器508中的指令的序列使一个或多个处理器504执行本文所描述的处理步骤。在可替换的实施例中,硬接线电路可以替代软件指令或与软件指令结合来使用。
[0078]
本文所使用的术语“非暂时性介质”及类似术语指的是存储使机器以特定方式运行的数据和/或指令的任意介质。此类非暂时性介质可以包括非易失性介质和/或易失性介质。非易失性介质例如包括光盘或磁盘,诸如存储设备510。易失性介质包括动态存储器,诸如存储器508。常见形式的非暂时性介质例如包括软盘、软磁盘、硬盘、固态硬盘、磁带或任意其它磁性数据存储介质、cd-rom、任意其它光学数据存储介质、孔模式的任意物理介质、ram、prom、及eprom、flash-eprom、nvram、任意其它存储器芯片或磁带盒、及其网络化版本。
[0079]
非暂时性介质与传输介质不同但可以与传输介质结合使用。传输介质参与在非暂时性介质之间传送信息。例如,传输介质包括同轴电缆、铜线和光纤,这些包括包含总线502在内的线。传输介质还可以以声波或光波的形式,诸如在无线电波和红外线数据通信期间生成的声波或光波。
[0080]
计算机系统500还包括耦接至总线502的通信接口518。网络接口518提供了耦接至一个或多个网络链路的双向数据通信,该一个或多个网络链路连接至一个或多个局部网络。例如,通信接口518可以是综合业务数字网(isdn)卡、电缆调制解调器、卫星调制解调器、或向对应类型的电话线提供数据通信连接的调制解调器。作为另一示例,网络接口518可以是局域网(lan)卡,以向兼容的lan(或与wan进行通信的wan组件)提供数据通信连接。还可以实现无线链路。在任意这种实施方式中,网络接口518发送和接收携带表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。
[0081]
网络链路通常通过一个或多个网络向其它数据设备提供数据通信。例如,网络链路可以通过局部网络向主计算机或向由网络服务提供商(isp)操作的数据设备提供连接。isp转而通过现在通常被称为“因特网”的全球分组数据通信网络提供数据通信服务。局部网络和因特网二者使用携带数字数据流的电信号、电磁信号或光信号。携带数字数据进出计算机系统500的通过各种网络的信号和网络链路上通过通信接口518的信号是示例形式的传输介质。
[0082]
计算机系统500可以通过(多个)网络、网络链路和通信接口518发送消息并接收包括程序代码的数据。在因特网示例中,服务器可以通过因特网、isp、局部网络和通信接口518传送为应用程序请求的代码。
[0083]
所接收的代码可以在其被接收时由处理器504执行,和/或存储在存储设备510中或其它非易失性存储器中用于稍后执行。
[0084]
前面的部分中描述的过程、方法和算法中的每一者可以在由一个或多个包括计算机硬件的计算机系统或计算机处理器执行的的代码组件中体现并且由代码组件实现全部或部分自动化。一个或多个计算机系统或计算机处理器还可以运行以支持“云计算”环境中的相关操作的性能或作为“软件即服务”(saas)运行。过程和算法可以部分地或全部地在应
用特定的电路中实现。以上所描述的各个特征和过程可以相互独立使用或者可以以各种方式组合。不同的组合和子组合旨在落入本公开的范围,并且特定的方法或过程块可以在一些实施方式中省略。本文所描述的方法和过程也不限于任何特定的顺序,并且上述有关的块或状态可以以合适的其它顺序执行,或者可以并行或以一些其它方式执行。块或状态可以添加至所公开的示例实施例或从所公开的示例实施例中移除。某些操作或过程的性能可以在计算机系统或计算机处理器中进行分配,不仅存在于单个机器中,而且可在多个机器上部署。
[0085]
如本文所使用的,可以利用任意形式的硬件、软件或其组合来实施电路。例如,可以实现一个或多个处理器、控制器、asic、pla、pal、cpld、fpga、逻辑组件、软件例程或其它机构以组成电路。在实施方式中,本文所描述的各个电路可以实现为分立电路,或者所描述的功能和特征可以在一个或多个电路之间部分或全部共享。即使各个特征和功能的元素可能是单独描述的或声称为分开的电路,但是这些特征和功能可以在一个或多个常见电路中共享,并且这样的描述应当不需要或不是意在分开的电路需要实现这样的特征或功能。在使用软件全部地或部分地实现电路的地方,此类软件可以实现为使用能够执行相关的所描述的功能的诸如计算机系统500的计算或处理系统进行运行。
[0086]
如本文所使用的,术语“或”可以解释为包含或不包含的意思。此外,单数形式的资源、操作或结构的描述不应当解读为不包括复数。除非另外特定描述的,或在所使用的上下文中另外理解的,条件性语言尤其诸如“可以”、“可能”、“也许”或“可能”通常旨在传达某些实施例包括而其它实施例不包括某些特征、元件和/或步骤。
[0087]
在本文中使用的术语和短语及其变型,除非另外明文规定的,应当解释为与限制相反的开放式。诸如“传统的”、“惯例的”、“正常的”、“标准的”、“已知的”的形容词和类似意思的术语不应当解释为限制了对于给定时间周期或对于给定时间内可用项所描述的项,而相反应当解读为包含现在或在将来任意时间可用的或已知的传统的、惯例的、正常的或标准的技术。在一些实例中诸如“一个或多个”、“至少”、“但不限于”或其它类似表达的扩展词和短语的出现不应当解读为意指有限的情况在没有这种扩展短语的实例中是想要的或需要的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1