用于设计对存储器元件进行编程的初始化功能的方法
背景技术:
1.本发明总体上涉及半导体存储器件领域。
2.半导体存储器装置可分组为易失性存储器设备(例如动态随机存取存储器(dram)单元)和非易失性存储器设备(例如相变存储器(pcm)和电阻式随机存取存储器(rram)设备)。在存储器设备的领域中的研究尤其涉及高耐久性、数据保持、低写入和读取时延和可靠性。存储器设备领域中的研究还可以考虑关于每存储器单元存储多于一位的信息的存储器设备的多级单元操作的可能性。
3.发明人或共同发明人关于在先公开的声明
4.以下(多个)公开根据35u.s.c.102(b)(1)(a)提交:
5.公开:deep learning incorporating biologically inspired neural dynamics and in-memory computer,stanislaw wozniak,angeliki pantazi,thomas bohnstingl&evangelos eleftheriou,2020年6月15日,第325-336页。
技术实现要素:
6.不同实施例提供了如独立权利要求的主题所描述的存储设备、集成电路、用于设定(setting-up)存储设备的方法和用于设计初始化功能的方法。在从属权利要求中描述了有利的实施例。如果本发明的实施例不相互排斥,则它们可以自由地彼此组合。
7.在一个方面,本发明涉及一种包括存储器元件的存储设备。存储器元件可以包括用于存储信息的可改变的物理量。该物理量可以处于漂移状态。该存储器元件可以被配置成将该物理量设置为初始状态。此外,存储器元件可以包括物理量从初始状态到漂移状态的漂移。该物理量的初始状态可以借助于初始化函数来计算。该初始化函数可以取决于该物理量的目标状态,并且该物理量的该目标状态可以基本等于该物理量的漂移状态。
8.在另一方面,本发明涉及包括存储器元件的第一组件的集成电路。存储器元件的第一组件可以包括用于向相应连接施加对应电压以在相应存储器元件中生成单个电流的连接。此外,第一组件可以包括用于对输出电流进行输出的至少一个输出连接。存储器元件可以彼此连接,使得输出电流是单个电流的总和。集成电路可被配置为基于所施加的电压生成输出电流。此外,每个存储器元件可以包括相应的可改变的电导,其中相应电导可以处于相应的漂移状态。相应存储器元件可以被配置用于将相应的电导设置为相应的初始状态。此外,相应存储器元件可以包括相应电导从相应初始状态到相应漂移状态的相应漂移。可以借助于相应的初始化函数来计算相应电导的相应初始状态。相应的初始化函数可以取决于相应电导的相应目标状态,并且相应电导的相应目标状态可以基本等于相应电导的相应偏移状态。
9.在另一方面中,本发明涉及一种用于设定包括存储器元件的存储设备的方法,该存储器元件包括可改变的物理量。该方法包括:
10.选择该物理量的目标状态;
11.使用初始化函数计算该物理量的初始状态,该初始化函数取决于该物理量的该目
标状态;
12.将该物理量设置为所计算出的该物理量的初始状态。
13.在另一方面,本发明涉及一种用于设计初始化函数的方法。初始化函数可以表示存储器元件的可改变的物理量的相应所选目标状态与存储器元件的物理量的对应初始状态之间的关系。该存储器元件的物理量可以被调整到该物理量的对应初始状态以用于朝向物理量的对应所选目标状态漂移。该方法包括在第一步骤中在初始时间点将存储器元件的物理量设置为初始值;在第二步骤中在经过的给定时间段之后测量存储器元件的物理量的实际值,其中,经过的给定时间段从初始时间点开始;在第三步骤中,将该物理量的初始值和实际值存储在数据库中;重复该第一、第二和第三步骤,并且在该第一步骤的每次重复时将该存储器元件的该物理量设置为不同的初始值,以便将该物理量的初始值和实际值的多个不同对存储在数据库中;基于数据库来设计初始化函数。
14.在另一方面,本发明涉及一种包括计算机可读存储介质的计算机程序产品,该计算机可读存储介质具有随其体现的计算机可读程序代码,该计算机可读程序代码被配置为实现用于设定存储设备或用于设计初始化功能的方法的所有步骤。
附图说明
15.在以下实施例中,仅以示例的方式,参考附图更详细地解释了本发明的实施例,在附图中:
16.图1是根据本主题的用于设计初始化函数的方法的流程图。
17.图2示出了初始化函数的数据流。
18.图3示出了存储器元件。
19.图4示出了包括曲线的图表,这些曲线每个示出了在对图3中所示的存储器元件进行编程之后一个物理量相对于该物理量的初始值随时间的漂移。
20.图5示出了包括曲线的图表,这些曲线每个示出了在图3所示的存储器元件的物理量的所选目标状态的基础上,一个物理量相对于该物理量的所计算初始值的随时间的漂移。
21.图6示出了数据库,该数据库包括物理量的初始值和该物理量的对应实际值的对。
22.图7示出包括初始化函数的图表。
23.图8示出了另一数据库,该数据库包括多组物理量的另外的实际值,每组表示该物理量的值的一个时间序列。
24.图9示出了时间相关的(time-dependent)初始化函数。
25.图10示出包括忆阻器的交叉式阵列和神经形态神经元装置的集成电路。
26.图11示出图10中所示的神经形态神经元装置的输入值的时间序列。
27.图12示出了神经网络。
28.图13更详细地示出了图10中所示的忆阻器的交叉式阵列。
29.图14是用于设定存储设备的方法的流程图。
具体实施方式
30.本发明的不同实施例的描述将出于说明的目的而呈现,但并非意在穷举或限于所
揭示的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变型对本领域的普通技术人员而言将是明显的。选择在此使用的术语以最佳地解释实施例的原理、实践应用或者超过市场中找到的技术的技术改进,或者使得本领域普通技术人员能够理解在此公开的实施例。
31.存储器元件可以是电容器、电阻器、或者电阻式存储器元件,在下文中也被称为忆阻器。忆阻器可以是相变存储器(pcm)元件、金属氧化物电阻式ram元件、导电桥ram元件或磁性ram元件。在存储器元件可以是电容器的情况下,物理量可以是电荷。电荷可通过对电容器充电而改变。在存储器元件可以是忆阻器的情况下,物理量可以是电阻式存储器元件(rme)的电导。通过向rme施加控制电压,rme的电导的是可改变的。
32.物理量的值,即物理量的状态可以与所存储的信息(例如变量的值)对应。例如,物理量的较高值可以与变量的较高值对应,并且反之亦然。在另一示例中,物理量的较低值可以与变量的较高值对应,并且反之亦然。所存储的信息可以是值,例如变量的值。该值可以是矩阵的条目。物理量可以是存储器元件的电导、电荷或电阻。
33.物理量的初始状态可以是直接在对存储器元件编程之后的物理量的状态。因此,存储器元件的编程可以被认为是将物理量设置为初始状态。可以通过将编程电压或编程电流施加到存储器元件来执行物理量的设置。
34.如在此使用的术语“漂移(drift)”描述物理量的值随时间的变化,诸如该物理量随时间的衰减或增长。如在此使用的术语“漂移状态”描述了与初始状态相比物理量的变化的状态。在物理量处于初始状态的时间点与物理量处于漂移状态的另一个时间点之间,时间已经流逝。此外,在存储器元件的物理量的漂移状态中,物理量随时间的变化可以小于物理量在初始状态中物理量随时间的变化。由于这个原因,因此如果物理量处于漂移状态,则可以由存储器元件的物理量的实际值表示的信息可以随着时间以更高的精度被保持。在一个示例中,物理量的漂移状态下该物理量随时间的变化与该物理量的初始状态下该物理量随时间的变化相比可以小于百分之十。在另一个示例中,该物理量的漂移状态下该物理量随时间的变化与该物理量的初始状态下该物理量随时间的变化相比可以小于百分之五,或者根据一个另外的示例小于百分之一。
35.所以,在将物理量设置为初始值之后,随着时间流逝,物理量的随时间的变化减少。观察到,这种效应取决于实验中的物理量的初始值。本存储设备可被配置用于将存储器元件的物理量设置为初始状态,并且在该物理量可能已达到漂移状态之后使用它。因此,本存储设备提供了使用存储器元件的存储设备,与标准使用情况相比,该存储器元件具有更高的精度。标准使用情况可以包括将存储器元件的物理量(例如,忆阻器的电导)编程到初始状态,并且之后直接使用存储器元件(例如,忆阻器)。
36.该物理量的初始状态或值可以借助于使用计算机的初始化函数(例如查找表)来计算。在另一个示例中,该物理量可以借助于初始化函数以手动方式计算。
37.此优点对于应用可以同样有用,其中上述相应的rme可以用于生成上述单个电流。在一个示例中,电压可以以电压脉冲的形式施加,该电压脉冲具有恒定电压但是在用于执行脉宽调制的时间间隔内具有不同长度或数目的脉冲,以便生成单个电流。在另一示例中,可以施加包括电压的至少两个电压的不同电压值的电压,以便生成单个电流。可以借助于电压源或电流源来施加电压。可以以更高的精度生成输出电流,该输出可以被生成为单个
电流的总和。所以,其相应电导处于相应漂移状态的相应rme可以用于在硬件级别上执行更准确的添加。这对于以下应用可以是特别有利的。
38.根据一个实施例,集成电路还可以包括用于模拟神经网络的层的神经形态神经元装置。在该实施例中,神经形态神经元装置可以包括输入连接,其中该输入连接可以被连接至第一组件的输出连接。这里,所生成的输出电流可以被用作神经形态神经元装置的输入信号。在rme以较高精度工作的情况下,神经形态神经元装置的输入信号可以更准确。所以,神经形态神经元装置在被应用于推断任务时可以递送更好的结果。
39.根据一个实施例,对应存储器元件的物理量的相应目标状态可以适配于集成电路的使用。使用可以指可以使用存储器元件的时间点。如果该时间点是已知的,则存储器元件的物理量可以被初始地设置以使得该存储器元件的物理量可以在该时间点达到目标状态。
40.在对存储器元件编程之后利用对物理量的漂移的状态相关行为的知识也可以有益于设定存储设备的上述方法。由于初始化函数可以用于计算物理量的初始状态并且初始化函数取决于物理量的目标状态,因此存储设备可以被设定为在物理量达到漂移状态之后更精确地运行。
41.根据用于设定存储设备的方法的一个实施例,该方法还可以包括测量从将物理量设置为该物理量的所计算的初始状态的初始时间点到实际时间点的经过时间(elapsed time)。该方法还可以包括将所测量的经过时间与给定时间段进行比较,其中该给定时间段可以取决于存储器元件的使用。此外,该方法可以包括:如果所测量的经过时间大于该给定时间段,则释放该存储器元件用于操作。该实施例可以使得能够确保可以仅在对存储设备的存储器元件编程之后的给定时间段已经流逝之后才可以使用该存储设备。换言之,该实施例防止以比较低的精度使用存储设备。
42.根据用于设计初始化函数的方法的一个实施例,可以在第一时间点执行第二步骤中对存储器元件的物理量的实际值的测量,其中,初始时间点与第一时间点之间的时间跨度等于给定时间段。由于第二步骤可以被重复用于将该物理量的初始值和实际值的多个不同对存储在数据库中,因此这个实施例可以使得能够检索该数据库的值,使得在该初始时间点与该物理量的实际值的测量的时间点之间的时间跨度对于每个对是相同的。这减轻了将初始化函数设计为独立于时间(time-independent)的函数。
43.根据用于设计初始化函数的方法的一个实施例,给定的时间段可以适配于存储器元件的未来使用。未来的使用可以包括存储器元件的未来的使用时间点。如果未来使用时间点是已知的,则可以对存储器元件编程,使得物理量可以在已经从所编程的值漂移之后几乎确切地在未来使用时间点达到其目标状态。
44.根据用于设计初始化函数的方法的一个实施例,如果物理量的实际值随时间的变化低于给定阈值,则可以执行在第二步骤中对存储器元件的物理量的实际值的测量。如果初始化函数可以以这样的方式被设计,则可以通过使用初始化函数来计算初始物理量,以使得物理量可以包括随着时间在物理量的漂移状态中的变化,该变化可以与阈值相当或者可以小于阈值。因此,可以通过该实施例来增强存储器元件的耐用性。
45.根据用于设计初始化函数的方法的一个实施例,初始化函数可以是独立于时间的。这个实施例可以将初始化函数提供为非常实际的函数,因为不需要进行时间测量,既不用考虑使用时间点而进行时间测量,也不需要在使用期间进行时间测量。
46.根据用于设计初始化函数的方法的一个实施例,该初始化函数可以是一个幂函数,该幂函数包括作为该幂函数的指数的可改变的物理量的相应所选目标状态以及作为该幂函数的函数值的该物理量的对应初始状态。这个实施例可以非常准确地反映通过执行涉及存储器元件的物理量的漂移的实验而完成的观察。因此,当使用该初始化函数设定该物理量时,将该初始化函数用作幂函数可以递送更准确的结果。
47.根据用于设计该初始化函数的方法的一个实施例,该初始化函数可以等于:f(g)=a*e-b*g
c,其中,g是可改变的物理量的相应所选目标状态,f(g)是该物理量的对应初始状态,并且a、b和c是该初始化函数的系数。这个实施例可以非常准确地表示通过执行涉及存储器元件的物理量的漂移的多个进一步实验而做出的观察。因此,使用根据该实施例的初始化函数可以引起初始化函数的更高准确性。
48.根据用于设计初始化函数的方法的一个实施例,该方法还可以包括测量存储器元件的物理量的另外的实际值和实际时间段,该实际时间段由初始时间点与第二步骤的子步骤中的实际时间点之间的经过时间限定;在该第二步骤的另外的子步骤中,将该物理量的该另外的实际值和该实际时间段存储在该数据库中;在时间从该起始时间点起流逝时,重复该第二步骤的该子步骤和该另外的子步骤,以将该物理量的若干不同的另外的实际值和对应的实际时间段存储在该数据库中;基于该数据库设计初始化函数。
49.该实施例可以设计时间相关的初始化函数。如果初始化函数是时间相关的,则可以关于未来使用(例如,相对于存储器元件的未来使用时间点)更准确地设定物理量。此外,这个实施例在可以执行关于存储器元件的漂移的实验时可以获得的最可能的数据量的意义上是有益的。
50.根据用于设计该初始化函数的方法的一个进一步的实施例,该方法还可以包括针对该物理量的每个初始值设计对应的时间相关的初始化函数。对应的时间相关的初始化函数可以表示存储器元件的物理量从该存储器元件的物理量的对应初始状态开始的时间相关的漂移。根据该实施例,可以基于数据库来设计一组多个初始化函数。该多个初始化函数可以用于通过内插来计算该物理量的初始值。
51.根据用于设计初始化函数的方法的一个进一步的实施例,该方法还可以包括设计初始化函数,使得初始化函数可以表示存储器元件的可改变的物理量的相应所选目标状态与存储器元件的物理量的对应初始状态之间的关系,以及在将存储器元件的物理量设置为对应初始状态之后的所选经过时间段(elapsed period of time)。所选经过时间段可以取决于存储器元件的预定义的未来使用。该实施例可以代替上述内插。
52.图1是用于设计如图2所示的初始化函数200的方法的流程图。初始化函数200可以表示存储器元件300的可改变的物理量的相应所选目标状态g
target_sel
与存储器元件300的物理量的对应初始状态g
init_sel
之间的关系,如图3所示。
53.初始化函数200的视觉表示720的一个示例在图7的图表中示出为实线。图表的x轴可以表示物理量的所选目标状态g
target_sel
的可能值,并且y轴可以表示物理量的对应初始状态g
init_sel
的值,对应初始状态g
init_sel
的值可以各自对应于物理量的所选目标状态g
target_sel
的可能值中的一个可能值。在图2中示出了关于初始化函数200的数据流。为了清楚起见,在图表中以圆的形式仅示出了物理量的所选目标状态g
target_sel
的值和物理量的初始状态g
init_sel
的对应值的一个示例。通常,初始化函数200可以用于选择物理量的目标状态gtarget_sel
的任何技术上可能的值并且检索物理量的初始状态g
init_sel
的对应值。
54.存储器元件300可以包括用于施加电压或电流以调整物理量的两个连接301、302,如图3所示。存储器元件300的物理量可以被调整到物理量的对应初始状态g
init_sel_i
,以朝向物理量的相应所选目标状态g
target_sel_i
漂移。该物理量的漂移可以随着时间而发生,如图5所示。图5示出了物理量随着时间从物理量的初始状态g
init_sel_i
的各种不同值到物理量的对应目标状态g
target_sel_i
的相应漂移。该物理量的值是相对于图5的图表的y轴以对数方式绘制的并且可以反映由以下方法所描述的实验的结果。在图5的示例中,物理量的单位是微西门子[μs],并且物理量可以是存储器元件300的电导。在图表的x轴上示出了时间。可以观察到,物理量随时间的相应漂移取决于物理量的初始状态g
init_sel_i
的的值而变化。
[0055]
该方法可以包括以下步骤。在如图1所示的第一步骤101中,可以在初始时间点t
init
将存储器元件300的物理量设置为初始值g
init_1
。这可以通过在两个连接301、302之间施加电压u或电流i来实现。通过施加电压u或电流i,可以对存储器元件300编程,即,存储器元件300可以改变其内部状态,使得物理量的值改变。例如,存储器元件300的结晶百分比可以在施加电压u或电流i时改变。为了将存储器元件的物理量设置为初始值g
init_1
,可以测量存储器元件300的物理量。响应于将存储器元件的物理量设置为初始值g
init_1
,可以断开电压u或电流i。断开电压u或电流i可以引起存储器元件300的物理量随着时间流逝的漂移。这可能由热效应和/或固有的结构松弛引起。
[0056]
在如图2所示的第二步骤102中,可以在第二步骤中在经过的给定时间段δt之后测量存储器元件的物理量的实际值g
act_1
,其中,经过的给定时间段δt从初始时间点开始,如图4所示。所经过的给定时间段在实际时间点t
act
结束。可以在实际时间点t
act
测量存储器元件300的物理量的实际值g
act_1
。
[0057]
在如图2所示的第三步骤103中,可以在第三步骤中将初始值g
init_1
和物理量的实际值g
act_1
存储在数据库600中。这些值可以作为对应值(例如以数据库600的第一数据集的形式)被存储在数据库600中。物理量的实际值g
act_1
可以被存储在数据库600中,使得初始值g
init_1
被分配给对应的物理量的实际值g
act_1
,反之亦然。
[0058]
第一步骤101、第二步骤102和第三步骤103可以重复多次。在第一步骤的每次重复中,存储器元件300的物理量可以被设置为不同的初始值g
init_i
。此外,在每次重复时,在重复的第三步骤103中,物理量的初始值g
init_i
与物理量的实际值g
act_i
的不同对可以以数据库600的另外的数据集的形式被存储在数据库600中。在图6中以数据库600的行的形式展示了不同对或另外的数据集。
[0059]
图5展示了该方法的示例,其中,可以在第一时间点测量在第二步骤102中的物理量的实际值g
act_i
,其中,初始时间点与第一时间点之间的时间跨度等于给定时间段。所以,在这个示例中,实际时间点t
act
对于第二步骤102的每次重复可以是相同的,并且在这种情况下,可以等于第一时间点。
[0060]
实际上,给定的时间段δt可以适配于存储器元件300的未来使用。例如,在将存储器元件300设置为物理量的对应初始状态g
init_sel
之后的第一时间跨度已经流逝之后,存储器元件300可以被使用。在这个示例中,第一时间跨度可以等于给定时间段δt。当存储器元件300的物理量处于漂移状态时,存储器元件300的使用(即,未来使用)可以是读出以存储器元件300的物理量的相应所选目标状态g
target_sel
的形式被存储的信息的形式。在漂移状
态中,存储器元件300的物理量近似等于存储器元件300的物理量的所选目标状态g
target_sel
。更具体地,可以在使用时间点使用存储器元件300,在该使用时间点,在将存储器元件300设置为物理量的对应初始状态g
init_sel
的时间点与该使用时间点之间的时间跨度等于给定时间段δt。在这种情况下,给定的时间段δt可以适配于使用时间点。
[0061]
在另一示例中,实际时间点t
act
可以在第二步骤102的一次重复与另一次重复之间不同。然而,对于第二时间步骤102的每次重复,实际时间点t
act
与初始时间点之间的时间跨度可以大于给定时间段δt。该方法的这个示例可以包括选择用于步骤102中的测量的实际时间点
tact
,以使得物理量的实际值g
act_i
随时间的变化低于给定阈值。
[0062]
在如图1所示的进一步的步骤104中,可以基于数据库600来设计初始化函数200。可以通过执行图7中所示的第一函数710的近似来实现初始化函数200的设计。第一函数710可以将物理量的实际值g
act_i
中的每个实际值g
act_i
映射到物理量的对应初始值g
init_i
。第一函数710可以是离散的,并且可以从数据库600得出。在一个示例中,第一函数710可以仅包括被存储在数据库600中的值作为可容许自变量和函数值。换言之,可以基于被存储在数据库600中的值来执行近似。所以,第一函数710可以由被存储在数据库600中的值完全描述。为了清楚起见,在图7的图表中将第一函数710示出为虚线。同样,为了清楚起见,初始化函数200的视觉表示720被绘制在第一函数710下方。通常,可以执行近似,以使得初始化函数200可以包括被存储在数据库600中的值。由此,在大多数情况下,初始化函数200的视觉表示720可以匹配图7的图表中示出的第一函数710。
[0063]
初始化函数200可以将物理量的每个实际值g
act_i
映射到物理量的对应近似值g
approx_i
。物理量的每个近似值g
approx_i
可以近似与物理量的相应实际值g
act_i
对应的物理量的相应初始值g
init_i
。初始化函数200可以包括用以近似第一函数710的参数。例如,初始化函数200可以是多项式并且可以描述如下:其中f(g
act_i
)可以是物理量的近似值g
approx_i
并且可以是多项式aj的第j个参数或系数。
[0064]
可以执行第一函数710的近似,以使得可以通过使用物理量的所有近似值g
approx_i
和物理量的相应初始值g
init_i
而被建立的均方根误差可以被减小。初始化函数200可以由经训练的神经网络提供。经训练的神经网络可以近似第一函数710。
[0065]
在一个示例中,初始化函数200可以是独立于时间的。根据另一示例,初始化函数200可以是幂函数,该幂函数包括可改变的物理量的相应所选目标状态g
target_sel
作为幂函数的指数、以及物理量的对应初始状态g
init_sel
作为幂函数的函数值。
[0066]
例如,初始化函数可以等于:f(g)=a*e-b*g
c,其中,g是可改变的物理量的相应所选目标状态g
target_sel
,f(g)是物理量的对应初始状态g
init_sel
,并且a、b和c是该初始化函数的系数。
[0067]
在另一示例中,该方法还可以包括测量存储器元件的物理量的另外的实际值g
act_f_1_1
和实际时间段δt
f_1_1
,该实际时间段δt
f_1_1
是由在该第二步骤102的子步骤102.1中在初始时间点与另外的实际时间点t
act_f_1_1
之间的经过时间限定的。在第二步骤102的另外的子步骤102.2中,物理量的另外的实际值g
act_f_1_1
和实际时间段δt
f_1_1
可以被存储在图8中所示的第二数据库800中。第二数据库800可以包括数据库600的值。在一个示例中,物理量的另外的实际值g
act_f_1_1
和实际时间段δt
f_1_1
可以被存储在数据库600中。
[0068]
第二步骤102的子步骤102.1和另外的子步骤102.2可以在时间从初始时间点起在过去的同时重复。通过重复子步骤102.1和子步骤102.2,物理量的多个不同的另外的实际值g
act_f_i_j
以及对应的实际时间段δt
f_i_j
可以被存储在第二数据库800中。随着子步骤102.1、子步骤102.2的每次重复,j的值可以增加一,如图4所示。
[0069]
随着第二步骤102的每次重复,i的值可以增加一。实际上,如图4所示,在第二步骤102的每次重复中,对应的实际时间段δt
f_i_j
可以是相同的。然而,在另一个示例中,从第二步骤102的一次重复到另一次重复,对应的实际时间段δt
f_i_j
可以不同。
[0070]
物理量的另外的实际值g
act_f_i_j
和对应的实际时间段δt
f_i_j
可以各自作为一对对应值被存储在数据库800中。另外,物理量的另外的实际值g
act_f_i_j
以及对应的实际时间段δt
f_i_j
可以被存储在数据库800中,以使得可以用作起点以检索物理量的另外的实际值g
act_f_i_j
以及对应的实际时间段δt
f_i_j
的对应的初始值g
init_i
可以被分配给物理量的另外的实际值g
act_f_i_j
以及对应的实际时间段δt
f_i_j
,并且反之亦然。
[0071]
例如,数据库800可以包括针对每个不同的初始值g
init_i
的数据条目的两个对应行,如图8所示。这两个对应行的数据条目可以包括物理量的另外的实际值g
act_f_i_j
和对应的实际时间段δt
f_i_j
。
[0072]
给定第二数据库800,可以基于第二数据库800来设计一个或多个另外的初始化函数。
[0073]
在一个示例中,可以针对物理量的每个初始值g
init_i
设计相应的时间相关的初始化函数fi。对应的时间相关的初始化函数可以表示存储器元件300的物理量从存储器元件300的物理量的对应初始状态g
init_i
开始的时间相关的漂移。可以基于与物理量的相应初始值对应g
init_i
的两个行的数据条目来设计每个时间相关的初始化函数。在图5中示出了时间相关的初始化函数f1,..fi,..fn。
[0074]
根据另一示例,该方法还可以包括设计全局初始化函数900。全局初始化函数900可以表示存储器元件300的物理量的相应所选目标状态g
target_sel
与存储器元件300的物理量的对应初始状态g
init_sel
之间的关系、以及在将存储器元件的物理量设置为对应初始状态g
init_sel
之后的所选经过时间段δt
sel
。所选经过时间段可以取决于存储器元件300的预定义的未来使用。全局初始化函数900可以包括物理量的相应所选目标状态g
target_sel
和所选经过时间段δt
sel
作为自变量、并且包括物理量的对应初始状态g
init_sel
作为函数值。全局初始化函数900的设计可以基于时间相关的初始化函数f1,..fi,..fn而被执行。
[0075]
例如,可以使用时间相关的初始化函数f1,..fi,..fn和物理量的对应初始值g
init_i
来训练神经网络。神经网络可以包括第一输入、第二输入和第一输出。在一个示例中,用于训练神经网络的第i批训练数据集可以包括相应的时间相关初始化函数fi的自变量和函数值以及物理量的对应初始值g
init_i
。在网络的训练期间,第i时间相关初始化函数fi的函数值可以各自用作第一输出的相应目标输出值。此外,所选经过时间段的对应值δt
sel
(即,第i时间相关初始化函数fi的对应自变量)可以各自用作针对第一输入的相应值。对于在训练期间的第一输入和第一输出的所有改变值,物理量的对应初始值g
init_i
可以用作第二输入的常数输入值。
[0076]
图10描绘集成电路1000(ic 1000),其包括神经形态神经元装置1001(nna 1001)以及图13所示的忆阻器701的交叉式阵列700。ic 1000可以以cmos电路的形式实现。cmos电
路可以包括数字和/或模拟电路。
[0077]
nna 1001可以被配置成接收输入信号流x(t-n)
…
x(t-3)、x(t-2)、x(t-1)、x(t),如图11所示。这些输入信号可以构成时间序列。nna 1001的当前输入信号可以是信号x(t)。先前所接收的一个或多个输入信号可以是信号x(t-n)
…
x(t-3)、x(t-2)、x(t-1)。输入信号的每个信号可以对应于值,例如浮点数。如果nna 1001被实现为模拟电路,那么输入信号可以是电流。如果nna 1001以数字电路的形式被实现,那么输入信号可以是二进制编码的。
[0078]
图12示出了神经网络30。神经网络30可以包括输入层31,该输入层31包括k个输入,例如,输入in1、in2、
…
ink。此外,神经网络30可以包括第一隐藏层32,该第一隐藏层32包括p个神经元。例如,神经元n11、n12、n13
……
n1p。此外,神经网络30可以包括第二隐藏层33,该第二隐藏层33包括m个神经元,例如,神经元n21、n22、n23
…
n2m。nna 1001可以模拟网络30的实际层的神经元中的一个神经元,其中nna 1001可以接收网络30的先前层的神经元的输出值。先前层可以是第一隐藏层32。实际层可以是第二隐藏层33。
[0079]
神经网络30可以被配置成处理神经网络30的输入信号,如输入信号in1(t)、in2(t)、
…
ink(t)。例如,信号in1(t-n)
…
、in1(t-1)、in1(t)、in2(t-n)
…
、in2(t-1)、in2(t)、ink(t-n)
…
、ink(t-1)、ink(t)中的每个信号可以指示可以在相应时间步t-n、
…
t-1、t处在神经网络30的对应输入in1、in2、
…
、ink处被输入的图像的相应像素。在下文中,神经网络30的输入信号被称为神经网络30的输入信号,并且nna 1001的输入信号被称为输入信号。
[0080]
输入信号x(t-n)
…
x(t-3)、x(t-2)、x(t-1)、x(t)中的每个信号可以由ic 1000生成,以使得这些输入信号可以各自等于第一向量和第二向量的标量积。第一向量的条目可以各自表示神经元中的一个神经元(例如,神经网络30的先前层(例如,第一隐藏层32的)的神经元n11、n12、n13
…
n1p)在对应的时间步长t-n、
…
、t-3、t-2、t-1、t处的输出值。这些输出值可以是浮点数,并且在相应的时间步t-n、
…
、t-3、t-2、t-1、t处,可以作为先前层的第一神经元n11的输出值被称为out11(t-n)
…
out11(t-3)、out11(t-2)、out11(t-1)、out11(t),作为先前层的第二神经元n12的输出值被称为out12(t-n)
…
out12(t-3)、out12(t-2)、out12(t-1)、out12(t),作为先前层的第三神经元n13的输出值被称为out13(t-n)
…
out13(t-3)、out13(t-2)、out13(t-1)、out13(t),以及作为先前层的第p神经元n1p的输出值被称为out1p(t-n)
…
out1p(t-3),out1p(t-2)、out1p(t-1)、out1p(t)。
[0081]
第二向量的条目可以各自表示权重的值,例如。w11、w12、w13、
…
、w1p,指示nna 1001可以模拟的神经元与先前层的对应神经元(例如,神经元n11、n12、n13、
…
、n1p)之间的连接的强度。类似地,如果nna 1001可以模拟实际层的神经元n2i,则第二向量的条目可以各自是权重值wi1、wi2、wi3、
…
、wip。
[0082]
在一个示例中,nna 1001可以模拟实际层的第一神经元(例如,神经元n21),并且此后可以模拟实际层的第二神经元(例如,神经元n22)等等,并且可以模拟实际层的第m个神经元(例如,神经元n2m)。
[0083]
如果nna1001可以模拟第二隐藏层33的第一神经元n21,则当前输入信号可以是x(t)=w11*out11(t) w12*out12(t) w13*out13(t)
…
w1p*out1p(t)。因此,先前接收的输入信号x(t-n)中的一个输入信号可以是x(t-n)=w11*out11(t-n) w12*out12(t-n) w13*out13(t-n)
…
w1p*out1p(t-n)。当然,先前层的神经元的输出值中的一个输出值可以等于零。这在先前层的神经元是尖峰神经元的情况下可能频繁发生。
[0084]
根据另一示例,nna 1001可以模拟第一隐藏层32的神经元中的一个神经元(例如,神经元n11)。在这种情况下,当前输入信号可以是x(t)=w011*in1(t) w012*in2(t) w013*in3(t)
…
w01k*ink(t)。因此,先前接收的输入信号x(t-n)中的一个输入信号可以是x(t-n)=w011*in1(t-n) w012*in2(t-n) w013*in3(t-n)
…
w01k*ink(t-n)。
[0085]
nna 1001可以被配置为基于当前输入信号生成nna 1001的当前输出信号。例如,nna 1001可以包括激活函数,例如s形函数(sigmoid)或修正线性单元,以生成当前输出信号。当前输入信号可以用作激活功能的输入信号。在一个示例中,nna 1001可以被配置成基于当前输入信号和先前接收的输入信号来生成当前输出信号。当前输出信号可以作为模拟网络30的基础,具体生成模拟网络30行为的ic 1000的输出信号。
[0086]
图13详细地说明存储器元件701的交叉式阵列700。存储器元件701可以是电阻式存储器元件(或可以包括多个电阻式存储器元件的电阻式处理单元(rpu)),并且在下文中还可以被称为忆阻器701。忆阻器701可以在ic 1000内为神经网络30的权重w
ij
提供局部数据存储。图13是交叉式阵列700的二维(2d)图,其可例如执行矩阵-向量乘法作为权重w
ij
的函数。交叉式阵列700可以由一组导电行线7021、7022…
702n和可以与导电行线702
1-n
相交的一组导电列线7081、7082...708m的集合。列线708
1-m
可以与行线702
1-n
相交的区域在图13中被示出为交叉点(intersection)、并且在下文中可以被称为交叉点。ic 1000可以被设计以使得在交叉点处列线708
1-m
与行线702
1-n
之间不存在电接触。例如,列线708
1-m
可以在交叉点处被引导在行线702
1-n
上方或下方。
[0087]
在交叉点的区域中,忆阻器701可以相对于列线708
1-m
和行线702
1-n
而被布置,使得如果可以向交叉开关的输入连接7031、7032、703n…
施加并且由此可以向行线702
1-n
施加相应的电压v1…
vn,则通过每个忆阻器701
ij
可以流动单个电流i
ij
。在图13中将忆阻器701示出为电阻式元件,每个电阻式元件具有其自身的可调整/可更新的电阻式电导,分别描绘为g
ij
,其中,i=1..m,并且j=1..n。因此,在该示例中,每个电导g
ij
表示相应忆阻器701
ij
的相应物理量。每个电阻式电导gij可以对应于神经网络30的对应权重w
ij
。
[0088]
每个列线708i可以通过向对应的输入连接7031、7032...703n施加相应的电压v1...vn来将在相应忆阻器701
i1
、701
i2
...701
in
中所生成的单个电流i
il
、i
i2
...i
in
加到一起。例如,如图13中所示,由列线708i的电流ii是根据等式ii=v1·gi1
v2·gi2
v3·gi2
…
vn·gin
·
。由列线7081生成的第一输出电流i1是根据等式i1=v1·g11
v2·g12
v3·g13
…
vn·g1n
。因此,阵列700通过将被存储在忆阻器701中的值乘以由电压v
1-n
定义的行线输入来计算矩阵-向量乘法。因此,可以使用忆阻器701
ij
本身加上阵列700的相关行线或列线在阵列700的每个忆阻器701
ij
处局部地执行单个乘法vi·gij
。这些电流i
2-m
在下文中可以被称为另外的输出电流。
[0089]
图13的交叉式阵列700可以例如能够计算向量x与矩阵w的乘法。矩阵w可以包括条目w
ij
。矩阵w的条目w
ij
可以被映射至交叉式阵列的对应电导率上,如下:其中g
max
由交叉式阵列700的电导率范围给出,并且w
max
取决于矩阵w的规模而被选择。矩阵w的条目可以等于神经网络30的权重w
ij
或wij,如上所述。向量x可以对应于电压v1…
vn。ic 1000可以被配置成将相应电压v1…
vn生成为先前层(例如,第一隐藏层32)的神经元的对应输出值out11(t)、out12(t)、out13(t)
…
out1p(t)的函数。
[0090]
图13示出了ic 1000的电阻式存储器元件701
11
、701
12
…
701
1n
的第一组件704的一个示例。第一组件704可以包括用于向相应的输入连接7031、7032...703n施加对应电压v1…
vn的输入连接7031、7032...703n,以在相应的电阻式存储器元件701
11
、701
12
…
701
1n
中生成单个电流i
11
、i
12
、
…
、i
1n
;以及第一输出连接7051,用于输出第一输出电流i1。忆阻器701
11
、701
12
…
701
1n
可以彼此连接,使得第一输出电流i1是单个电流i
11
、i
12
、
…
、i
1n
的总和。存储元件701
11
、701
12
…
701
1n
之间的这种连接可以由行线702
1-n
和第一列线7081提供。第一输出电流i1的值可以表示第一标量积的值,以借助于值通过网络30的层的传播来计算神经网络30的输出值。该第一标量积可以例如等于x(t)=w11*out11(t) w12*out12(t) w13*out13(t)
…
w1p*out1p(t)或x(t)=w011*in1(t) w012*in2(t) w013*in3(t)
…
w01k*ink(t)、或者是其倍数或分数。在前一种情况下,nna 1001可以模拟神经元n21,在后一种情况下是神经元n11。此外,在前一种情况下,行线数n可等以于p,在后一种情况下,行布线数n可以等于k。
[0091]
第一组件704的第一输出连接7051可以耦合到nna 1001的输入13。ic 1000可以被配置为基于第一输出电流i1生成当前输入信号x(t)。在一个示例中,nna 1001可以被配置成将输入信号x(t)处理为模拟信号。在这种情况下,第一输出电流i1可以是当前输入信号x(t)。
[0092]
在另一个示例中,ic 1000可以被配置成借助于模数转换器706(adc 706)来基于第一输出电流i1生成当前输入信号x(t)。在一个示例中,nna1001可仅从第一输出连接7051接收当前输入信号x(t)。该示例可以涉及其中nna 1001可以模拟神经网络30的输出层34的输出神经元的应用。在此示例中,可能不需要其他列线708
2-m
。
[0093]
在ic1000可以用于模拟网络30的包括多于一个神经元的层(例如。第一隐藏层32或第二隐藏层33)的情况下,需要交叉开关700的多于一个的列线。列线708
1-m
的数目可以等于ic1000可以模拟的该层的神经元的数目m。行线702
1-n
的数目可等于网络30的先前层的神经元的数目。如果前一层是输入层31,则行线的数目n可以等于k。如果前一层是第一隐藏层32,则行布线的数目n可以等于p。
[0094]
图14是用于设定存储设备的方法的流程图,该存储装置包括具有可变物理量的存储器元件,例如交叉式阵列700的一个或多个忆阻器701
ij
。交叉式阵列700可以存储设备。在下文称为设定方法的该方法可以包括设定存储器元件的物理量,例如交叉式阵列700的一或多个忆阻器701
ij
的电导。该设定方法可以包括以下步骤。
[0095]
在该设定方法的第一步骤141中,可以选择该物理量的目标状态。参考上述用例,交叉式阵列700的每个rme 701
ij
的电导的相应目标状态可以等于g
ij
,以便借助于rme 701
ij
的电导值提供神经网络30的权重w
ij
的表示。
[0096]
在该设定方法的第二步骤142中,可以使用初始化函数计算物理量(rme 701
ij
的电导)的初始状态。该初始化函数可以取决于该物理量的目标状态。例如,初始化函数200可以是如图7中所示的初始化函数200的视觉表示720。参考上述用例,每个rme 701
ij
的电导g
ij
的相应目标状态可一个接一个地被设置为等于图7的图表中示出的所选目标状态g
target_sel
。对于每个rme 701
ij
,可以使用初始化函数200基于所选目标状态g
target_sel
来计算相应rme 701
ij
的电导的对应初始状态g
init_sel
。在下文中,每个rme 701
ij
的电导g
init_sel
的对应初始状态可以被称为g
ij_init
。
[0097]
在该设定方法的第三步骤143中,该物理量可以被设置为该物理量的所计算的初始状态。参考上述用例,每个rme 701
ij
的电导可以被设置为电导的对应初始状态g
ij_init
。这可以通过向每个rme 701
ij
施加编程电压或电流来实现。可以执行将每个rme 701
ij
的电导设置为电导的对应初始状态g
init_sel
的时间点在下文中可以被称为设置时间点。
[0098]
在该设定方法的第三步骤143之后,该物理量(例如,每个rme701
ij
的电导)的值可以关于时间从物理量的对应初始状态(例如,电导g
ij_init
)朝向物理量的相应目标状态(例如,每个rme 701
ij
的电导g
ij
)漂移(例如,衰减),类似于图5的图表的相应曲线。在一个示例中,每个rme 701
ij
的电导在设置时间点之后已经流逝给定时间段δt之后可以处于漂移(尤其是衰减)状态。每个rme 701
ij
的电导的漂移状态可以基本等于每个rme 701
ij
的电导g
ij
的相应目标状态。例如,衰减状态中的每个rme 701
ij
的电导的值可以偏离每个rme 701
ij
的电导g
ij
的相应目标状态小于百分之十。根据另一示例,衰减状态中的每个rme 701
ij
的电导的值可以偏离每个rme 701
ij
的电导g
ij
的相应目标状态小于百分之一。
[0099]
所以,相应rme 701
ij
可以被配置为用于将rme 701
ij
的相应电导设置为相应初始状态g
ij_init
并且包括rme 701
ij
的相应电导从相应初始状态g
ij_init
到相应漂移状态的相应漂移。可以通过处理器借助于相应的初始化函数来计算相应电导的相应初始状态g
ij_init
。在一个示例中,针对每个rme 701
ij
的相应初始化函数可以是不同的。在另一示例中,针对每个rme 701
ij
的相应初始化函数可以相同(例如,初始化函数200)。处理器可以是外部处理器或者可以在ic 1000上被实现。处理器可存储初始化函数的参数或系数,以便基于每个rme701
ij
的电导g
ij
的相应目标状态来计算每个rme 701
ij
的相应初始状态g
ij_init
。
[0100]
该设定方法还可以包括测量从将该电导设置为电导所计算的初始状态的初始时间点到实际时间点的经过时间。此外,该设定方法可以包括将所测量的经过时间与另外的给定时间段进行比较。另外的给定时间段可取决于存储器元件的使用,例如取决于交叉式阵列700的使用。该设定方法可以包括:如果所测量的经过时间大于该另外的给定时间段,则释放存储器元件用于操作。
[0101]
例如,可以不向输入连接7031、7032...703n施加电压v
1-n
。703n直到经过时间大于该另外的给定时间段为止。或者,换言之,如果经过时间大于该另外的给定时间段,则电压v
1-n
可以被施加到输入连接7031、7032...703n。在一个示例中,电压v
1-n
仅在经过时间大于该另外的给定时间段时可以被施加到输入连接7031、7032...703n。
[0102]
该另外的给定时间段可以对应于上述给定时间段δt。由此,可以使用用于检索初始化函数200的实验的知识。在大多数情况下,给定的时间段δt可以被选择,以使得:与直接在将物理量编程为初始状态之后该物理量随时间的漂移(例如电导的衰减)相比,在给定时间段δt已经流逝之后该物理量随时间的进一步漂移(例如电导的进一步衰减)可以是低的。
[0103]
在一个示例中,可以基于每个rme 701
ij
的电导g
ij
的相应目标状态、以及基于全局初始化函数900的每个rme 701
ij
的操作的相应所选时间点,来计算每个rme 701
ij
的电导的相应初始状态g
ij_init
。在一个示例中,每个rme 701
ij
的操作的相应所选时间点可以是相等的。在另一示例中,每个rme 701
ij
的操作的相应所选时间点可彼此不同。如果可以预先知道每个rme 701
ij
的操作的每个相应时间点,则这可能是实用的。
[0104]
例如,多核心架构可包括多个核心,其中每个核可以被设计成ic1000的形式。核心
中的第二核心可以被配置为模拟第二隐藏层33,并且核心中的第一核心可以被配置为模拟先前层(例如第一隐藏层32)。由于网络30的模拟可以开始于第一隐藏层32的模拟并且可以随着第二隐藏层33的模拟而进展,所以第一核的第一使用时间点可以早于第二核的第二使用时间点。因此,在一个示例中,第一核的rme 701
ij
的相应电导可以被设置为电导的相应初始状态g
ij_init
,以使得第一核的rme 701
ij
的每个相应电导达到其电导g
ij
的相应目标状态可以比第二核的rme 701
ij
的每个相应电导达到其电导g
ij
的相应状态早。
[0105]
本文中参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。应当理解,流程图和/或框图的每个框、以及流程图和/或框图中的框的组合,都可以由计算机可读程序指令来实现。
[0106]
本发明可以是系统、方法和/或计算机程序产品。该计算机程序产品可包含其上具有计算机可读程序指令的计算机可读存储介质(或多个计算机可读存储介质),该计算机可读程序指令用于使处理器执行本发明的方面。
[0107]
计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体例子的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存),静态随机存取存储器(sram)、便携式致密盘只读存储器(cd-rom),数字通用盘(dvd)、记忆棒、软盘、机械编码设备(诸如穿孔卡片或具有记录在其上的指令的凹槽中的凸起结构),以及上述的任意合适的组合。如文本中使用的,计算机可读存储介质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)、或者通过导线传输的电信号。
[0108]
本文所述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
[0109]
用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或者以一种或多种编程语言的任何组合编写的源代码或目标代码,包括面向对象的编程语言(诸如smalltalk、c 等),以及常规的过程式编程语言(诸如“c”编程语言或类似的编程语言。计算机可读程序指令可完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上并且部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户的计算机,或者可以连接到外部计算机(例如,使用互联网服务提供方通过互联网)。在一些实施例中,电子电路装置(包括例如可编程逻辑电路装置、现场可编程门阵列(fpga)或可编程逻辑阵列(pla))可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路装置个性化,以便执行本发明的方
面。
[0110]
本文中参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个框、以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
[0111]
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器来产生机器,以使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以被存储在可以引导计算机、可编程数据处理装置、和/或其他设备以特定方式运作的计算机可读存储介质中,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个框中指定的功能/动作的各方面的指令。
[0112]
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置、或使一系列操作步骤在计算机上被执行的其他设备上,以产生计算机实现的过程,使得在计算机上、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的一个或多个框中指定的功能/动作。
[0113]
附图中的流程图和框图图示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。对此,流程图或框图中的每个框可以表示模块、段或指令的部分,其包括用于实现(多个)指定逻辑功能的一个或多个可执行指令。在一些备选实现中,框中所标注的功能可以不以图中所标注的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,该基于专用硬件的系统执行指定的功能或动作、或者执行专用硬件与计算机指令的组合。