CN1666172A - 使用数字多状态相变材料的计算方法 - Google Patents

使用数字多状态相变材料的计算方法 Download PDF

Info

Publication number
CN1666172A
CN1666172A CN03816261XA CN03816261A CN1666172A CN 1666172 A CN1666172 A CN 1666172A CN 03816261X A CN03816261X A CN 03816261XA CN 03816261 A CN03816261 A CN 03816261A CN 1666172 A CN1666172 A CN 1666172A
Authority
CN
China
Prior art keywords
energy
register
change material
phase
reset mode
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN03816261XA
Other languages
English (en)
Inventor
S·R·奥夫辛斯基
A·K·利夫西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Energy Conversion Devices Inc
Original Assignee
Energy Conversion Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Energy Conversion Devices Inc filed Critical Energy Conversion Devices Inc
Publication of CN1666172A publication Critical patent/CN1666172A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/49Computations with a radix, other than binary, 8, 16 or decimal, e.g. ternary, negative or imaginary radices, mixed radix non-linear PCM
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5678Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using amorphous/crystalline phase transition storage elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Chemical & Material Sciences (AREA)
  • Crystallography & Structural Chemistry (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Semiconductor Memories (AREA)

Abstract

非二进制计算方法使用数字多状态相变材料。借助于给相变材料受控制地施加能量来完成加减乘除。提供其数量足以设置相变材料的复位状态的能量以便存储一个或多个数字,并且提供表征该数字运算的性能的另外的能量以便实现计算。

Description

使用数字多状态相变材料的计算方法
发明领域
本发明一般地涉及非二进制计算方法,更具体地涉及利用相变材料的数字多状态属性的加、减、乘和除的方法。
发明背景
计算机的发展通常被认为是二十世纪后半叶最显著的进步之一。计算机已经简化了日常生活的许多方面并导致在经济中显著的生产力效益。微处理器的速度和存储器存储密度的显著进步满足不了最近在图象处理和复杂计算中的需求。计算机的进一步的进步和将来的应用将依赖人类以日益更有效的方式处理更大量信息的能力。
硅是今日计算机的心脏。计算能力和速度的进步大部分是因为更好地了解了硅的基本属性以及利用这些属性以取得实际效果的结果。初始的发展是以从硅中制造出诸如晶体管和二极管之类的基础电子部件为基础,后面的发展则带来集成电路的发展。最近的进步表示这些趋势在继续并且当前强调小型化以及在单个芯片上集成更大数量的微电子器件。较小的器件导致更高的存储器存储密度、更加高度集成的电路以及同一芯片上器件之间的减少的交互时间。
用于提高处理速度和存储密度的当前策略取决于继续小型化基于硅的微电子器件的能力。目前,小型化基本遵循莫尔定律。根据莫尔定律,预期在一个给定尺寸的芯片上可以集成的晶体管的数量每18个月翻一番。莫尔定律已被证明是对最近25年发展的非常可靠的预言者,并且我们当前正处于芯片包含几千万的晶体管的时期,每个晶体管大概有0.2微米大小。
将来的问题是小型化的努力是否能无限地持续或者实际或基本物理极限将给小型化带来不可逾越的障碍。显著的实际限制包括芯片上器件之间的串扰和进一步减小器件尺寸的困难。串扰对应于电流或电荷从一个器件泄漏到相邻器件。理想地,芯片上的所有器件沿着预定的由逻辑或芯片最终所预期的目的定义的互连来交互。然而随着小型化的发展,器件之间空间必然要减少,并且当来自一个器件的电场、电荷或电流由于紧密的空间邻近而不是通过布图互连影响其他器件时,器件之间不想要的交互变得越加成问题。串扰干扰芯片所预期的功能。
能够组装到芯片上的微电子器件的尺寸主要是布图器件时所使用的光刻工艺的函数。光刻是光阻材料的曝光工艺。光阻材料曝光的尺寸直接与在芯片上最终形成的器件的尺寸有关。在光刻中使用的光的波长控制光阻材料的曝光尺寸。光的波长越短,光刻工艺的分辨度越高并且最终形成的器件尺寸越小。
原理上,可以克服由串扰和光刻分辨度所代表的实际限制。例如,可通过合并在当前晶体管结构中使用的具有较低的电介质常量的绝缘层来克服串扰。可通过开发较短波长光源(比如受激准分子激光器)来提高光刻分辨度。虽然已提出的这些和其它解决方案是潜在可行的,但是这伴随这巨大的生产成本的提高。建造一个芯片制造设施的成本在过去25年从小于500万美元增加到超过15亿美元。预测成本在将来会继续快速攀升,并且当前正变得十分有害,使得对芯片作进一步改善在经济上是不合理的。计算机工业处于十字路口。
为了计算机工业的扩展和使计算机变得不止是一个日用物品,计算机工作的方式和处理和在存储及件中使用的材料需要革命的变化。如果传统计算机要向着更为交互式和更适于学习的机器的方向发展,则计算速度和效率的提高以及更高的并行性也是所需的进步。
发明概要
本发明提供以非二进制方式计算的方法,所述方法利用了相变材料的数字多状态属性。数字多状态相变材料可合并到计算机的存储器元件或寄存器以及能够实现本发明的计算方法的其他数据处理单元。本发明的计算方法使用的数字多状态相变存储器材料具有至少一个高电阻状态和一个可检测的不同的低电阻状态。在这里公开了利用数字多状态相变材料来复位包括数字多状态相变材料的存储器元件、定义数字存储的编程状态、将一个存储器元件的内容移动到另一个存储器元件、计算一个数的补码和执行加减乘除的数学运算的方法和算法。
包括数字多状态相变材料的存储器元件可以被组织在存储器组中,其中一个组中的每个存储器元件可被用来存储多数位数字的一个数位。存储器元件在这里也被称之为寄存器。于是,存储器组对应于存储器元件或寄存器的集合。被包括在一个存储器组中的存储器元件或寄存器的数目是变化的,并且通常由被希望与用于存储的数字相关联的最大数位数量确定。与一个数字相关联的最大数位数量表示操作精度和效率之间的折衷。
通过将寄存器分组以形成存储器组,可以将存储器元件编程以存储多数位数字。不限制于基于二进制或基数为2的算术系统的运算,相变材料的数字多状态特征允许在寄存器中存储和处理与任何算术基相关的数位以达到非二进制计算能力。例如,使用本发明来直接存储和处理基数为10、基数为8或基数为16的数字是可能的。几百、几千或甚至更高的基数也都与本发明兼容。结果,本发明提供了达到大规模并行计算的机会。通过本发明的计算方法利用多状态存储器元件的可能的并行计算能力、更高的存储密度和非二进制运算提供了相对于传统计算机器大幅提高计算速度和效率的机会。
在这里公开的算法描述利用包括相变材料的多状态存储器元件来存储和处理信息的方法。包括在本发明中的是针对在单个寄存器操作以及多状态寄存器组的寄存器到寄存器的操作的方法。在这些方法中,把能量施加于单个寄存器或者存储器组中的各个寄存器,以存储一个数位或者改变先前存储的数位的值。这些方法包括用于寻址各个寄存器的措施并提供用于操纵与一个或多个存储器组关联的一组寄存器或其相关子集的多种方法,以达到期望的数学运算或处理目标。
附图简述
图1是作为所提供的能量数量的函数的典型相变材料的电阻的曲线。该曲线包括左边的高电阻平稳段区域和置位后区域。两个区域内的典型状态为示例说明的目的示出。
图2显示被表示为RESET(a)的复位方法中的步骤。
图3显示RESET(a)复位方法中的步骤的替换描述。
图4显示在方法HALFCOPY_1中的步骤,该方法可用来计算一个数字的补码。在这个实施例中,在位置a中一个数字的补码被提供给位置b。
图5显示在方法HALFCOPY_2中的步骤,该方法可用来计算一个数字的补码。在这个实施例中,在位置a中一个数字的补码被提供给位置b。
图6显示被表示为COPY_1的拷贝方法中的步骤。在这个实施例中,存储在位置a中的数字被拷贝给位置b和c。
图7显示被表示为BASIC ADD的加法方法中的步骤。在这个实施例中,提供在位置a和b中的数字的和。
图8显示被表示为ADD的加法方法中的步骤。在这个实施例中,提供在位置a和b中的数字的和。
图9显示被表示为BASIC SUBTRACT的减法方法中的步骤。在这个实施例中,提供在位置a和b中的数字的差。
图10显示被表示为SUBTRACT的减法方法中的步骤。在这个实施例中,提供在位置a和b中的数字的差。
图11显示被表示为BASIC MULTIPLY的乘法方法中的步骤。在这个实施例中,提供在位置a和b中的数字的积。
图12显示被表示为BASIC DIVIDE的除法方法中的步骤。在这个实施例中,提供在位置b和a中的数字的商。该商包括除数a的倍数和一个余数。
发明的详细描述
本发明提供用于计算和处理应用相变材料的数字多状态属性的数据的方法。相变材料可合并到计算机的存储器组、存储器元件或寄存器或者其他数据处理单元中。如这里所使用的,存储器组包括一定容量的可被分割或再划分成存储器元件的相变材料,其中每个存储器元件可用于存储多数位数字的一个数位。存储器元件在这里还可以称为寄存器。因此存储器组对应于存储器元件或寄存器的集合。包括在存储器组中的存储器元件或寄存器的数量是变化的,并且通常由被希望与用于存储的数字相关联的最大数位数量确定。本发明的计算方法还针对利用相变材料的数字多状态属性完成数学运算和数据处理。
传统计算机和数据处理器依赖于二进制存储器元件,所述二进制存储器元件利用二进制“0”和“1”的形式的两个状态存储和处理数据,而本发明提供用于能够采纳多个状态的存储器元件的计算方法和算法。这样的存储器元件可在给定容量的存储器材料中存储比在二进制计算机中所可能存储的更多的信息。结果,用本发明的计算方法操作的计算机可提供比传统计算机高得多的数据存储能力。本发明的方法还提供以非二进制方式计算的能力。结果,可通过非二进制方法达到数据的写、处理和读,由此让我们免于传统二进制计算机器的限制。
二十世纪后期的一个引起人们兴趣的发展是量子计算的概念。量子计算的一个关键的潜在优点是通过大量叠加状态的纠缠(entanglement)而获得大规模并行计算能力的。该能力被吹嘘为解决与下一代计算关联的复杂性的解决方案,并且若干小组已经展示了开发用于解决长期存在的问题(比如大数字的因数分解)的量子计算算法的初始进展,比如Shor算法。然而现在已经设计出的量子计算机的工作模型是不稳定的,并且当面对不相干的外部干扰时易于失败。结果,量子计算机提供的并行性变成现实似乎还很遥远。
利用数字多状态属性的本发明的计算方法可提供获得与从量子计算机潜在可达到的大规模并行计算能力类似的大规模并行计算能力的机会。由本发明的计算方法对之起作用的相变材料的数字多状态特性可以被比作多个状态的叠加,该叠加是量子计算机的纠缠效应的中心。然而与量子计算机不同,多状态相变材料和本发明的计算方法是最鲁棒的,并且对于各种外部影响是稳定的。由本发明提供的高存储密度和多状态计算特性的组合提供了能达到远远超过传统计算机的计算速度和效率的巨大机会。
用于传统二进制存储器材料的比特操作和算法可能无法直接移植到基于数字多状态相变材料的存储器元件。这些多状态存储器元件要求用于处理数据和完成数学运算的新算法。在这里公开了若干为多状态存储器元件设计的算法。根据合并到存储器元件中的相变材料的物理和化学属性,这些方法是基于与存储器元件的能量交互而预知的。在以下回顾相变材料的基本属性,所述属性在美国专利号5,912,839和6,141,241中描述;在此引入其公开内容作为参考。
本发明的方法对之起作用的存储器元件和寄存器包括具有至少一个高电阻状态和一个可检测的不同的低电阻状态的相变存储器材料。如这里使用的,高和低电阻状态分别是指以高和低的电阻为特征的物理状态,其中高和低电阻状态的电阻是相对于彼此而言并且可检测地互相不同。由本发明的方法使用的相变存储器材料的例子在共同转让的美国专利号5,166,758;5,296,716;5,524,711;5,536,947;5,596,522;5,825,046和5,687,122中描述,在此引入其公开内容作为参考。本方法针对的存储器元件的例子在共同转让的美国专利号5,912,839和6,141,241中描述,在此引入其公开内容作为参考。
本发明的计算方法所针对使用的相变材料在施加了有效数量的能量之后能从高电阻状态转换为低电阻状态。在这里公开的图1是作为能量的函数的相变材料的电阻的曲线图。图1的实施例中的能量是以电流脉冲形式施加的电能。如果相变材料初始为其高电阻状态,施加少量的能量使得材料处于其高电阻状态。该行为由图1左边所示的高电阻平稳段区域描述。但是,如果施加了足够数量的能量,相变材料从其高电阻状态转换到其低电阻状态。该转换由紧接图1的高电阻平稳段区域右边的电阻骤减来描述。相变材料从其高电阻状态到其低电阻状态的转换在这里被称之为“置位”相变材料。
置位后产生的低电阻状态在这里被称之为相变材料的“置位状态”。足以置位相变材料的能量数量在这里被称之为“置位能量”。注意置位能量对于沿着高电阻平稳段的每个状态是不同的。
图1的右边对应于相变材料被置位后的行为。一旦置位,相变材料处于其低电阻状态并根据图1右边所示的置位后区域被所施加的能量影响。电阻响应曲线的这个部分在上面几个作为参考而在这里引用的美国专利中已经被称为曲线的模拟或灰度多比特部分。对相变材料的置位后状态施加能量可产生其电阻的变化。该电阻的变化由所施加的能量数量确定。根据所施加的能量数量和图1的置位后区域中的相变材料的状态,电阻的增加或减少可能会发生,因为置位后区域的行为是可逆的。该可逆性由图1的置位后区域中所示的两个箭头描述。能量和电阻与置位后区域中的每个点关联。如果所施加的能量超过与描述置位后区域中的相变材料的点相关联的能量,相变材料的电阻增加。相反,如果所施加的能量小于与描述置位后区域中的相变材料的点相关联的能量,相变材料的电阻减少。该可逆性被限制于图1的置位后区域。通过施加对应于置位转换之前的(即在置位转换左边的)图1的高电阻平稳段区域中的一点的能量来反转置位转换是不可能的。
但是,通过将足够高的能量数量施加到由图1的置位后区域中的一点描述的材料来恢复相变材料的高电阻状态是可能的。施加这样的能量对应于按在图1中增加能量的方向移动,而不是按反转置位转换的方向。如图1中置位后区域所示,施加数量持续增加的能量导致电电阻的持续增加。当施加足够数量的能量以将相变材料驱动到图1的极右边时,相变材料返回到其高电阻状态并重新开始其高电阻平稳段。将相变材料从其低电阻置位状态转换到其高电阻状态所需的能量在这里被称之为“复位能量”。施加复位能量后的相变材料的状态在下面被称为“复位状态”。施加复位能量“复位”相变材料以产生高电阻复位状态。根据在复位之后进一步施加能量而观察到的行为类似于关于图1的高电阻平稳段区域所描述的。图1所示的曲线对应于置位和复位的一个循环。相变材料可在大量循环中可再现地置位和复位。
与图1的置位后区域关联的可逆行为形成可被编程为特定电阻值的模拟、多比特灰度器件的基础。例如在Ovshinsky等人的美国专利号5,687,112以及Ovshinsky的美国专利号3,271,591和3,530,441中描述了这样的器件的例子,其公开内容在这里引用作为参考。
本计算机和本发明的算法的存储器元件基于由在图1左边描述的平稳段区域所表示的高电阻状态中的相变存储器材料。沿着高电阻平稳段的状态和响应曲线的置位后部分中的状态的不同在于它们全部具有基本相同的电阻值。相反地,置位后区域中的状态具有连续变化的电阻值范围。高电阻平稳段提供数字多状态存储和处理能力,这可以导致更快和更通用的计算机。本发明的计算方法是针对利用相变材料的电响应的数字多状态高电阻平稳段部分的优点。
相变材料的多状态性能是高电阻状态的属性的结果。向处于高电阻状态的相变材料施加少于置位所需数量的能量(在这里被称之为“亚置位能量数量”),导致在材料中的不显著改变其电阻的物理变化。图1的平稳段区域表征高电阻状态的该属性。向由图1的平稳段区域中的第一个点描述的相变材料施加亚置位能量数量将相变材料转换到由平稳段区域中的第二个点描述的物理状态,第二个点在第一个点的右边。不可能通过施加亚置位能量数量在高电阻平稳段区域中的向左的方向上转换相变材料。在前面描述的用于图1的置位后、模拟、多比特部分的可逆性的概念不适用于置位前、数字多状态的高电阻平稳段。高电阻平稳段区域中的初始点的左边的点可通过置位相变材料、复位该材料并接着施加适当的亚置位能量数量而达到。
作为高电阻平稳段区域中的单向响应的结果,由本发明的计算方法对之起作用的相变材料能累积和存储达到材料的置位能量的数量的能量。即使相变材料的电阻在高电阻平稳段区域中不变化,每次施加亚置位能量使得相变材料可预测地前进到低电阻置位状态。相变材料的该行为可在多状态存储器元件中使用,并且是这里公开的方法和算法的基础。
在一个优选实施例中,复位状态被选择为图1的高电阻平稳段区域中的起始点。将相变材料从其复位状态转换到其置位状态所要求的能量区间在下面称为“复位状态的置位能量”。因为复位状态的置位能量是可再现的属性并是多个置位和复位循环中的常数,其可以被分成两个或多个子区间,并且相变存储器材料的不同的编程状态或编程值可由施加子区间能量的不同数量或组合定义或与其相关地被定义。图1中的高电阻平稳段区域中的相变材料的可再现单方向行为提供根据以子区间数量被施加到材料的能量累积量建立不同的编程状态的能力。通过施加子区间能量的亚置位序列,一组不同的编程状态可以由施加到复位状态的累积能量数量来唯一地或可再现地定义。例如,第一编程状态可与向复位状态施加第一子区间能量数量关联。向处于第一编程状态的相变材料第二次施加第一子区间能量数量可用于定义第二编程状态。第二编程状态可替换地与向复位状态单次施加大小不同于第一子区间能量数量的第二子区间能量数量关联。子区间能量数量的顺序施加和组合可用于定义贯穿于图1的高电阻平稳段区域的一系列编程状态。
施加子区间能量的多个序列和组合构成用于建立可以由本发明的计算方法使用的编程状态的实施例。在某些实施例中,只有在高电阻平稳段区域内的状态被包括为编程状态。在其他实施例中,在将相变材料转换到其低电阻状态后得到的置位状态被包括为附加的编程状态。当施加到复位状态的能量的累积量达到复位状态的置位能量时,相变材料置位。在置位之后,在进一步施加能量后相变材料的行为由图1的置位后区域控制。
在本发明中使用的相变材料拥有从复位状态扩展到置位状态的状态连续集。所述状态包括复位状态、一系列沿着高电阻平稳段的中间状态和置位状态。中间状态和置位状态可通过将能量施加到复位状态而得到。与相变材料关联的状态可被看作是形成相对于复位状态在能量上可区别的状态连续集。在上文描述的编程状态从该状态连续集选择。编程状态通常与离散的数据值(比如整数)关联,并具有对应于需要添加到相变材料的复位状态以将相变材料转换到所述编程状态的能量的编程能量。例如一个特定编程状态具有对应于必须添加到相变材料的复位状态以将其转换到该编程状态的能量数量的编程能量。于是,编程状态的编程能量是相对于复位状态的能量的量度,并且每个编程状态与一个唯一的编程能量关联。
在一个优选实施例中,每个编程状态具有一个被分配给其或与其相关的唯一的数据值。在另一个优选实施例中,连续的整数按编程能量增加的顺序被分配给编程能量或与编程能量关联。在这些实施例中,通过将相变材料转换到与一个数字关联的编程状态可以存储该数字。数值与编程状态的唯一对应提供在相变材料的一个独特状态中存储一个数字范围中的任何数字的能力。多个数字可存储在相变材料的多个部分。根据计算目标,计算可通常通过提供能量来实现一个或多个编程状态间的转换来执行。
如上所指出的,每次施加子区间能量数量都使得高电阻平稳段中的相变材料趋向置位状态。即使复位和沿着高电阻平稳段的中间状态基本上具有相同的电阻并因而不能根据电阻被区别,然而沿高电阻平稳段的每个状态仍保持与所有其它状态的可检测到的区别,因为要求不同的能量数量来置位由沿着高电阻平稳段的不同点描述的相变材料。例如,如果施加一个能量数量以用于将由沿着高电阻平稳段的第一个点描述的相变材料变换到沿着高电阻平稳段的第二个点,则将由第二个点描述的相变材料转换到置位状态所需施加的能量精确地比将由第一个点描述的相变材料转换到置位状态所需施加的能量低。因为置位状态相对于沿着高电阻平稳段的状态是可检测地不同的低电阻状态,并且因为置位由沿着高电阻平稳段的任何点描述的相变材料所需的能量数量可被确定,因此沿着高电阻平稳段的不同的点是可区分的,并且沿着高电阻平稳段的每个点可以与不同的编程状态和/或数值相关联。结果,通过将从复位状态到置位状态的能量区间分成合适数量的子区间,实际上可在图1的高电阻平稳段区域内定义任何数量的编程状态。结果,高电阻平稳段区域可被细分成为一系列离散编程状态,所述状态可用于存储和处理数据。包括相变材料的存储器元件不限于如当前的二进制计算机那样的两个编程状态,而是可以提供非二进制多状态编程和计算能力,并进而提供在每个存储器元件中存储多于两个数字的能力。
离散编程状态的数量依赖于与相变材料从其复位状态(或其他起始状态)到其置位状态关联的能量区间的大小(复位状态或起始状态的置位能量的大小),以及依赖于可能将该能量区间分成子区间所使用的分辨度并依赖于诸如与具有特定数量的编程状态关联的相对计算或处理优点之类的实际因素。如这里使用的,起始状态或初始状态是指沿着高电阻平稳段的第一或最低的能量编程状态。优选地让复位状态作为起始状态,并且如果没有特别指出的话该复位状态将被假设为在下面讨论中的起始状态。但是,需要明白沿着高电阻平稳段的不同状态可被选择为起始状态。
复位状态和置位状态之间的能量区间的大小能受相变材料的化学组成影响,如下所述的那样。可以藉其定义子区间的分辨度依赖于从用于编程或读取由本发明的计算方法对之起作用的多状态存储器元件的能源可得的能量分辨度。在下面更全面地描述适于根据本发明的计算方法将相变材料在其各状态间转换的能源。从计算的观点出发,编程状态的数量可影响计算方法或算法的性质、速度、并行性或方便性。例如将编程状态数量选择为二的倍数,可允许将当前可得的二进制算法适用于本发明的非二进制计算方法。例如包括4、8、16、32、64(等)个编程状态的实施例被包括到本发明中。使用10个编程状态允许方便地实现基于在日常事务中使用的传统的基数为10(十进制)的系统的算法,并且也被包括到本发明的实施例中。
通过把将相变材料从其复位状态转换到其置位状态所需的能量区间分成逐渐更小的子区间,可能达到大量编程状态并实现编程状态的连续分布。用与量子计算机有些类似的方式,创建准连续编程状态的可能性提供到达大规模并行计算能力的机会。数量为几百、几千或甚至更高的编程状态可在包括相变材料的存储器元件中得到并由本发明的计算方法和算法处理。
适于与本发明的计算方法和算法一起使用的相变材料的例子在美国专利号5,166,758、5,296,716、5,524,711、5,536,947、5,596,522、5,825,046、5,687,112、5,912,839、3,271,591和3,530,441中提供。存储器材料的容量可包含电介质材料和相变材料的混合物。这样的混合物的例子在共同转让的美国专利号6,087,674中描述,其公开内容在这里引用作为参考。适用于本发明的计算方法和算法的材料包括复位状态和在能量上与复位状态不同并具有与复位状态基本上相同的电阻的多个中间状态,以及具有可检测的比复位状态低的电阻的置位状态。满足这一要求的材料通常包括一个或多个以下元素In、Ag、Te、Se、Ge、Sb、Bi、Pb、Sn、As、S、Si、P、O或其混合物和其合金。在一个优选实施例中,相变材料包括硫族元素。在另一个优选实施例中,相变材料包括硫族元素和Ge。在一个更优选的实施例中,相变材料包括Ge、硫族元素和Sb。在一个最优选的实施例中,相变材料包括Ge、Te和Bb。
许多本发明的计算方法和算法包括涉及提供或施加能量给一个相变材料或由相变材料组成的存储器元件的步骤。提供或施加能量可由任何能够传递受控制的能量数量给相变材料的源来完成。受控制的能量数量在之后被称之为“能量脉冲”。“置位脉冲”是足够置位相变材料的能量脉冲,并对应于提供置位能量数量。“复位脉冲”是足够复位相变材料的能量脉冲,并对应于提供复位能量数量。在本发明中,能量用于从一个编程状态前进到下一个状态并置位和复位相变材料。所传递的能量可以是使用一个单一能源或多个能源的电磁辐射(包括光、激光和微波脉冲)、电能、光能、热能、化学能、磁能、机械能、粒子束能、声能或其组合的形式。编程、置位和复位的概念扩展到所有能量传递形式。例如电能的传递可以是电流或电压的形式,以及置位可由“置位电流脉冲”、“置位电压脉冲”或通过其他提供足够置位相变材料的数量的电能来完成。类似地,复位可由“复位电流脉冲”、“复位电压脉冲”或其他提供足够复位相变材料的数量的电能来完成。可根据传递、施加或提供足够置位或复位相变材料的能量数量的其他形式定义类似合适的术语。
要求能量能执行至少本发明中的三个基本功能:编程、读取和复位。在其最简单的方式中,编程涉及在相变材料中写或存储数据或信息。如果还不是以数字形式,则在写之前输入数据优选地被转换成数字形式。数据转换到数字形式可通过将一个不同的数值分配个每个单个数据来完成。例如,词可由字母组成。每个字母表示可被分配一个不同的数值的单个数据,并且可存储对应于词的各字母的数值序列以表示该字。可以类似地处理符号和其它类型的数据。在现有技术中还存在不同的技术来将字母和符号转换成二进制数字。类似技术可容易地被适配或新开发,以用于将字母和符号转换成非二进制数字。结果,数字的可靠的和可再现的存储表示写和操纵数据的处理中的一个基本步骤。在下面的讨论中,对数据的存储、处理和其他操作是对于数字形式的数据描述的。但是,可以理解,所有方式的数据都可被转换成或表示为数字形式。
在本发明的计算方法中,写或编程是通过将表征要被存储的数字的数量的能量提供给相变材料而完成的。该特征能量可依赖于相变材料的复位状态的置位能量、编程状态的数量和将相变材料从一个编程状态转换成下一个所需的能量的子区间。在一个实施例中,表征或对应于一个数字的能量是与该数字成正比的能量总量。从一个编程状态前进到下一个所需的能量的子区间在之后被称为“编程区间”、“编程区间能量”、“编程脉冲”、“递增能量”、“递增区间”或其等效物。
在本发明的一个实施例中,复位状态表示数字0并且一个统一的递增能量用于从一个编程状态前进到另一个。结果,编程状态可按能量相同地分离并且每次施加递增能量对应于将所存储的数字值增加1。这样,数字“1”可通过一次施加递增能量到复位状态而存储;数字2可通过两次施加递增能量到复位状态而存储,依此类推直到可存储在存储器材料容量中的最大数字被用作存储该数。施加统一递增能量在之后被称为“统一递增脉冲”或其他等效术语。
在一个实施例中,可存储的最大数字等于所定义的编程状态的数量或沿前述的高电阻平稳段存在的编程状态数量。如果使用统一递增能量并且复位状态被选择为沿着高电阻平稳段的起始状态,在这个实施例中的编程状态的数量等于用分离编程状态的递增区间除复位状态的置位能量。因此例如如果复位状态的置位能量将被分成十个相等的子区间并且复位状态被包括作为一个编程状态,则本实施例将导致十个编程状态。在这个例子中施加九个或更少的能量的递增数量(包括复位状态,没有施加递增能量的情况)使相变材料处于对应于十个不同的数字之一的编程状态。在本例中可存储的最大数字对应于第十个编程状态并且通过将九个统一递增脉冲施加到复位状态而达到。如果复位状态被选择成“0”,该可存储的最大数字的值是“9”。在本例中施加第十个递增能量数量(即施加到处于第十个编程状态的相变材料的一个递增脉冲)通过将相变材料从第十个编程状态转换到置位状态来置位相变材料。
在本发明的另一个实施例中,置位状态被用作一个编程状态。如果在本实施例中使用统一递增区间并且复位状态被包括为一个编程状态,则所给出的编程状态的数量比由递增区间除复位状态的置位能量多一个。因此例如如果复位状态的置位能量被分成十个相等的子区间,则本实施例将导致十一个编程状态。第十一个编程状态将是相变材料的置位状态并且通过施加十个递增能量数量而达到。如果复位状态被选择成“0”,该可存储的最大数字的值是“10”。
虽然将“0”选择为复位状态的值是本发明的一个优选实施例,在其中另一个编程状态被分配值“0”的实施例也有可能。原理上,任何编程状态可被分配值“0”。在应用一个统一编程区间的实施例中(其中不同于复位状态的另一个编程状态被选为“0”),最大可存储数字将对应于需要一个编程脉冲以达到被选为“0”的编程状态的那个编程状态。例如,如果第四个编程状态被选为“0”,那么第三个编程状态将表示最大可存储数字。在其中置位状态可用作为编程状态的实施例中,置位状态也可被选为“0”。因为,置位状态根据其较低的电阻可很容易地从所有其他编程状态中区分,将“0”值分配给置位状态可提供计算速度或处理算法效率的优点。如果不特别指出,以下讨论的大部分情况是基于将值“0”分配给复位状态。但是可以理解,该选择是为了讨论的方便并不表示对本发明的实践的限制。
前面在其中使用了非统一编程区间或不相等递增区间的实施例的变型构成本发明附加的实施例。如这里使用的,非统一编程区间是指编程区间的任何序列,其中编程状态在能量上间隔不等。当使用非统一编程区间时,编程状态的数量依赖于计算机的编程策略。如这里使用的,编程策略包括施加子区间能量的规定序列,其中专门定义了从一个编程状态到另一个的编程区间以及从复位状态到每个编程状态的所施加的累积能量。编程策略可基于任何从复位状态扩展到置位状态的统一或非统一编程区间的任何组合,并可以包括或可以不包括复位状态或置位状态作为编程状态。如果没有特别指明,下面的讨论是基于使用统一编程区间的编程策略。然而可以理解,该选择是为了讨论的方便并不表示对本发明的实践的限制。
优选地包括在编程策略中的是将数据值分配给编程状态或与其关联,使得每个编程状态对应不同的数据值。优选地,与编程状态关联的数据值是整数。更优选地,整数是连续的。设想在其中整数值是按编程能量的递增或递减顺序关联的实施例。例如,如果复位状态与数据值0关联,施加一个编程区间的能量使材料处于与数据值1关联的编程状态,施加另一个编程区间的能量使材料处于与数据值2关联的编程状态等等。替换地,按编程能量递减顺序将数据值与编程状态关联是可能的。例如,如果置位状态与数据值0关联,被提供一个编程区间的能量以获得置位状态的编程状态将与数据值1关联等等。数据值与编程状态关联可通过不同的方式完成,以方便特定的计算或用户偏好。
虽然按数字形式存储数据是一个优选的实施例,但是本发明不限于数字数据。本发明的编程状态可被分配给非数字数据。例如可以通过将高电阻平稳段细划分成26个编程状态并将每个编程状态分配给字母表中的一个字母来存储字母。词和其他字母组合可一个字母一个字母地被存储在存储器组的寄存器中。
寄存器和位置值
当计算时,需要具有写和存储大数字的能力。存储大数字的一种方式是将大量的编程状态分配给在本发明的存储器元件中使用的相变材料的高电阻平稳段。该方式通过选择在编程状态之间的小的递增能量区间来完成。随后大量编程状态中的每一个可被选择对应于不同的数字。
在本发明中,大数字优选地是利用前面描述的存储器组来存储。存储器组是成组的可用于存储多数位数字的寄存器。每个寄存器用来存储多数位数字的一个数位,并且每个寄存器优选地对应于能够被编程到被分配给本发明存储器元件的任何编程状态的相变存储器材料的最小容量。在其中定义了编程状态并将其与数值关联的实施例中,存储数字可能需要提供足够将寄存器、存储器组或相变材料容量转换到与所存储的数字关联的编程状态的能量数量。当复位状态被选为具有值“0”时,在单个寄存器中可存储的最大数字比编程状态的数量少1。超出在单个寄存器中可存储的最大数字的数字需要两个或更多的寄存器。
被包括在存储器中的存储器元件或寄存器的数量是可变的,并通常由为存储目的而被希望与数字关联的数位的最大数量来确定。多数位数字可具有任意高的数位数。但是在实践中,优选地对一个与特定多数位数字关联的数位数设置一个上限,并且对于其值超过了用出于存储数字的目的而分派或分配给一个存储器组的特定最大数位数可得的最大数字的数字使用取幂。与一个数字关联的最大数位数表示计算机的精确性和操作的效率之间的权衡。更大的数位数导致更高的精确度,但是是以处理速度为代价的,因为更多的数位在计算中要求更多的寄存器和更多数量的寄存器操作。作为一个例子,期望分配十个存储器元件或寄存器给每个寄存器组。在这个实施例中这样做,将是选择把与特定数字关联的数位数限制为十,以便只有十个数位或更少数位的数可存储到寄存器组中。具有更多数位的数需要取幂方案或使用多于一个的存储器组。
一系列寄存器可用于定义位置值算术系统以用于存储和处理数字。在一个优选实施例中,复位状态被选择为0,算术系统的基数是由编程状态的数量给定,并且在单个寄存器中可存储的最大数字比该基数小1。在传统二进制计算机中,例如两个存储状态可用,并且数字0和1根据基数为2的算术系统被存储和处理。在本发明的一个实施例中使用10个编程状态,根据基数为10的算术系统存储和处理数字。因此,在本计算机的存储器元件的单个寄存器中可得的十个编程状态对应于数字0、1、2、3、4、5、6、7、8和9。用于其他算术基数的寄存器可类似地描述为置位状态被选择为0的实施例中的寄存器。
在本发明中,大数字优选地使用倍数寄存器存储,每个倍数寄存器对应于所使用的算术系统的基数的不同的幂。每个寄存器存储对应于基数的不同幂的倍数的多数位数字的一个数位,所述数位在表示存储在寄存器集合中的多数位数字时被用作加法因子。第一寄存器用于存储自乘至0次幂的基数的倍数,第二寄存器用于存储自乘至1次幂的基数的倍数,第二寄存器用于存储自乘至二次幂的基数的倍数等等,直到对于存储器组中的数字所允许的寄存器的最大数量。例如通过对第一寄存器施加两个统一编程脉冲,对第二寄存器施加七个统一编程脉冲,和对第三寄存器施加三个统一编程脉冲,基数为8的数字372可被存储在一个三寄存器的系列中,每个寄存器具有8个编程状态,其中复位状态对应于0。
对应于算术基数的不同幂的倍数的数字是多数位数字的数位。例如,基数为8的数字372可包含三个数位:“3”表示8的二次幂的倍数,“7”表示8的一次幂的倍数,“2”表示8的零次幂的倍数。每个数位被存储在分离的寄存器中。在其它基数的系统中类似地定义各个数位并且用于在其中将置位状态选择为0的实施例。存储在一个存储器组中的数字的十进制(基数为10)等价数字可通过将存储在每个寄存器中的数位乘上由寄存器表示的基数的幂并对存储器组中的所有寄存器求和而得到。
如上所述,为了存储数字可以分派任何数量的寄存器。例如在一个使用基数10的实施例中,可以将十个寄存器分派给每个寄存器组,并且在存储器组中可存储的最大多数位数字将对应于10个寄存器中的每一个的值“9”,即1010-1。比在分派给一个存储器组的所有寄存器上可存储的最大数字更大的数字要求使用两个或更多存储器组的取幂或组合。
还可存储要求比分配给存储器组的所有寄存器更少的数字。这样的数字可通过在寄存器中包括0而被存储,所述寄存器对应于在一个给定数的表示中不需要的位置值。作为一个例子,考虑在存储器组中存储数字372,其中在基数为10的算术系统中为该存储器组分配了十个寄存器。这个数字只要求三个用于存储的寄存器,并且可通过将0包括到对应于1000或更高的位置值的寄存器中而被存储,“3”包括在对应于100的位置值中,“7”包括在对应于10的位置值中,和“2”包括在对应于1的位置值中。包括在对应于超出表示一个数所需的最大位置值的位置值的寄存器中的0在下面被称之为先行零。在本例中,数字372正规地被存储为0000000372并将包含7个先行零。在对应于比表示一个数所需的最大位置值更低的位置值的寄存器中出现的0不是先行零。这样的0在下面被称为非先行零或内部零。例如数字104包含一个非先行零或内部零。
读取
读取所存储的数据要求合适的探查或操作寄存器。如果置位状态可用作为编程状态,通过其较低的电阻可很容易从所有其他编程状态区别。但是其他编程状态位于沿着电阻曲线的高电阻平稳段部分,并具有基本相同的电阻。结果,直接测量寄存器的电电阻不提供区别编程状态和读取本发明的寄存器的手段。于是要求替换的方法。
一个用于读取存储在寄存器中的值的方法是识别与穿越电阻曲线的高电阻平稳段的相变材料的前进关联的物理变化。如下所示,向由沿着高电阻平稳段的一个点描述的相变材料施加能量必然产生朝着置位状态的单方向前进。结果,施加能量(通常或以编程脉冲的形式)在某一方面改变相变材料。对于材料变化不产生电阻的显著变化的观察不排除其他某种物理属性可用于区分沿着高电阻平稳段的编程状态的可能。在关于所施加的能量对相变材料的物理状态的影响的知识或推测的帮助下识别适合的物理属性。
尽管不愿意被理论约束,本发明相信向电阻曲线的高电阻平稳段的相变材料施加能量导致相变材料中存在的水晶部分的增加。由高电阻平稳段描述的相变材料据信是包含在后面称之为“微晶”的晶体材料区域的不定形材料。据信微晶的容量部分在复位状态中是最小的,并且随着材料朝着置位状态沿着高电阻平稳段前进基于能量的施加而连续递增。施加能量可增加存在于复位状态的微晶的大小,产生新的微晶或同时得到这两个效果。因为晶体状态具有比不定形状态更高的电导通性(较低的电阻),置位转换被认为与相变材料容量内的微晶的邻接网络的形成一致。复位转换被认为是涉及该邻接网络的破坏以及微晶的至少一个部分到不定形状态的转换。不定形材料的形成可通过微晶融化以及紧接着冷却(qutnching)或通过微晶中原子或原子组的活动性加强而发生。加强的活动性可导致晶体材料的分裂和分解。
复位状态和置位状态之间的能量区间可受存在于复位状态的微晶的大小影响。如果较小的微晶存在于复位状态,它们可能要求附加的能量来增加大小以足够达到一个微晶的邻接网络。结果,可能控制沿着高电阻平稳段的能量区间以用于编程状态。适用于本发明的许多相变材料被认为在其复位状态具有较少的微晶。
可能有可用的物理技术用来测量晶体容积部分的任何变化,这些变化随着相变材料沿高电阻平稳段朝置位状态的前进而出现。例如,微晶的大小可通过诸如TEM的显微镜技术或通过高分辨度X射线衍射技术测量。这样的技术可用来测量微晶并估计从复位状态到置位状态的前进。如果编程区间已知,可确定与每个编程状态关联的微晶的容量部分,并且为读取寄存器产生相关性。
相变材料的编程状态的离散性质还允许读取寄存器而不需要监视物理属性的变化和与其相关。沿着高电阻平稳段的位置是区别不同编程状态的原理特征。可用两种方式之一考虑沿着高电阻平稳段的位置。首先,可根据编程脉冲或递增区间的数量或需要添加到复位状态以达到与沿着高电阻平稳段的特定编程状态关联的位置所需的能量数量来唯一的描述或标记位置。在这个实施例中,必要的编程脉冲的数量(或递增区间或能量数量)从写或存储过程得知并可用作在读过程期间识别编程状态及其存储的值的方式。例如可以使用一个脉冲计数器来记录施加到给定寄存器的脉冲数。
其次,并且更优选地,沿着高电阻平稳段的位置可根据达到置位状态所需的能量数量或者编程脉冲或递增区间的数量来唯一的描述或标记。在本实施例中,例如,存储在寄存器中的值可通过从已经将复位状态的置位能量划分成的子区间的数量中减去到达置位状态所需的编程脉冲的数量而确定。因为根据其较低的电阻可以容易地检测唯一且明确的置位状态,所以该读过程是有利的。可通过首先将编程脉冲施加到寄存器并接着测量其电阻来完成读取。如果所测量的电阻对应于与高电阻平稳段关联的值,那么相变材料没有处于其低电阻置位状态。通过重复施加编程脉冲和测量寄存器的电阻的过程,可以确定达到置位状态所需的编程脉冲的数量。与编程状态总数的比较可用于提供对应于存储在寄存器中的值的差。
根据置位状态是否被包括作为一个编程状态,用于确定存储在寄存器中的值的前述方法可用替换的方式等效地表达。在其中置位状态没有被包括作为一个编程状态的实施例中,复位状态的置位能量已经被子划分成的子区间的数量可以等于用于存储和处理数字的算术系统的基数。如果是这样,存储在寄存器中的值可以通过从算术系统的基数减去将寄存器转换到其置位状态所需的编程脉冲的数量确定。如这里使用的,存储在寄存器中的值是指与存储器所处于的或被转换成的编程状态关联的数值。
作为一个例子,考虑在基数为4的算术系统中读取存储了数位“1”的寄存器,并考虑在其中置位状态不用作为一个编程状态的统一编程区间策略。当置位状态不用作为一个编程状态时,基数为4的算术系统要求四个子区间。四个子区间提供四个编程状态(包括复位状态)和置位状态。在本例中,四个编程状态对应于按递增的编程能量的顺序的数字0、1、2和3。本例中的寄存器中存储的“1”表示一个编程脉冲已经被施加到复位状态并且相变材料处于其第二编程状态。为了读取寄存器,我们施加一个编程脉冲并通过测量电阻检查寄存器是否到达其置位状态。如果还没达到,重复直到达到置位状态。在本例中,当施加第三个编程脉冲时到达置位状态。结果,所存储的数字由4(算术系统的基数或子区间的数量)减去3(将寄存器转换到其置位状态所需的编程脉冲的数量)而得到。所以可以看到所存储的数位为“1”。
一个不同的读取过程被应用于其中置位状态用作编程状态的情况。当置位状态用作编程状态时,子区间的数量等于在所使用的算术系统的基数下可得的最大数位值的值,并且置位状态通常对应于在寄存器中可存储的最大数位。结果,在寄存器中存储的数位可通过从在所使用的算术系统的基数下可存储的最大数位值减去将寄存器转换到其置位状态所需的编程脉冲的数量而得到。可存储的最大数位比基数小1。
作为例子,考虑读取在基数为4的算术系统中存储了“1”的寄存器,并考虑在其中置位状态被包括为一个编程状态的统一编程区间策略。当置位状态用作一个编程状态时,基数为4的算术系统要求三个子区间。三个子区间提供四个编程状态,包括复位状态和置位状态。四个编程状态对应于数字0、1、2和3。本例中的寄存器中存储的“1”表示一个编程脉冲已经被施加到复位状态并且相变材料处于其第二编程状态。为了读取寄存器,我们施加一个编程脉冲并通过测量电阻或某一其他合适的属性检查寄存器是否到达其置位状态。如果还没达到,重复直到达到置位状态。在本例中,当施加第二个编程脉冲时到达置位状态。结果,所存储的数位由3(在所使用的算术系统的基数下可存储在单一寄存器中的最大数位值或子区间的数量)减去2(将寄存器转换到其置位状态所需的编程脉冲的数量)而得到。所以看到所存储的数位为“1”。
在涉及对将存储一个数字的寄存器转换到其置位状态所需的编程脉冲的数量进行计数的读取过程中,寄存器在读取结束时保持在置位状态。如果期望的话,寄存器可恢复其原始值。因为读取过程已经揭示了原始存储的数字值,寄存器可通过首先复位寄存器并接着施加数量等于原始数位值的编程脉冲而恢复。
复位的过程涉及对置位状态施加足够的能量数量以新产生高电阻状态的过程。如前所示,复位过程发生在电阻曲线的置位后区域,如这里在图1中所示,该曲线决定相变材料的行为。从高电阻平稳段到置位状态的过渡是单向的并且不能通过移动到电阻曲线的左边而反转。因此相变材料不能被“撤消置位(unset)”到其原始的高电阻平稳段状态。相反,可通过施加足够的能量以通过将相变材料驱动到电阻曲线的极右边来新产生一个高电阻平稳段,从而复位相变材料。置位后区域的最右边的端点对应于相变材料的新的高电阻平稳段的形成。用于本发明的适当的能源必须能提供复位相变材料的足够能量。
如前所示,存储在寄存器组中的许多数字将包括一个或多个先行零。先行零的频繁出现以及许多计算操作不考虑先行零的事实表明具有容易检测先行零的存在的能力是有益的。考虑在基数为10的算术系统中数字372与数字128的加法,其中给每个寄存器组分配10个寄存器。数字372可被存储为0000000372以及数字128可被存储为0000000128。在每个数字中,存在7个先行零并且许多数学运算不对这些先行零起作用。例如,两个数字的加法和减法不要先行零的操作。结果,可以预期容易地检测先行零从存在更加有效,这使得可以在许多数学运算中跳过或忽略它们。
当复位状态被选择为对应于0的编程状态时,根据前述的过程读取先行零可能要求若干编程脉冲相加以将先行零转换到置位状态。该编程状态的相加必须在包含前导0的每个数字的每个寄存器中完成。结果,当复位状态被选择为对应于0的编程状态时,数学运算可要求大量的功能上不重要的操作。因此损害了计算效率。
为了提高计算效率,优选地给复位状态分配为对应于0的编程状态。通过这样作,通过电阻测量,先行零可很容易辨别,并且不要求编程脉冲的相加来检测先行零。结果可提高计算效率。如上所示,本发明包括作为一个实施例的在其中置位状态对应于0的编程策略。
计算方法
除了存储数字和数位,编程涉及开发和实现为按期望的方式处理所存储的数据的目的而设计的算法。例如,一个计算机需要能够执行四个基础算术操作:加、减、乘、除。有效利用相变材料的多状态存储能力要求创造性地开发新算法。传统二进制算法为简单的两个状态存储器元件而设计。多状态或非二进制计算固有的优点的实现需要重新考虑处理算法。必须包括对数据存储和多状态相变存储器材料的编程特性的具体考虑。现在给出多为状态存储器元件而设计的算法的更完整的讨论。
用于本发明的特定计算方法或算法的详细发展是基于对相变存储器材料及其操作作出的基本假设和选择而预知的。可能需要确定的基本性质是对0的选择、分派给每个存储器组的寄存器数量、编程状态的数量、算术基数、与编程状态关联的数据值以及置位状态是否被包括为一个编程状态。处理和存储的基本原理是相似的,与作出如何的选择无关,但是特定的细节可能不同。本发明的用户在建立相关操作参数、条件和偏好中有很大的自由。
在计算方法的下列讨论中,我们作为一个例子考虑将复位状态选为“0”、编程状态的数量等于算术系统的基数并且置位状态不被包括为一个编程状态的情况。我们还假设给每个存储器组分派固定数量的寄存器,用以存储多数位数字,并假设这样分派的数量对于每个存储器组是相同的。这样寄存器的分派等价于选择可被用于单独的多数位数字的存储器材料的最大容量,并且将存储器材料的总容量对应地划分成一致的存储器组。任何数量的存储器可被分派给存储器组。所分派的寄存器的数量影响通过建立可为一个数字存储的最大数位数而在一个存储器组中可存储的最大数字的大小。该最大数位数可影响计算效率,因为当取幂成为必要时其确定十进制可得的精度和在计算期间必须考虑的先行零的数量。在本发明的一个实施例中,所分派的寄存器的数量等于算术系统的基数。
分派给寄存器组的寄存器的数量对应于可为一个数字存储的最大数位数。存储该数字可能要求比所分派的寄存器更小的数量。如前所示的,当出现这种情况时,根据与所使用的算术系统的基数关联的位置值系统一个寄存器一个寄存器(一位一位)地在所分派数量的寄存器内存储该数字。如果该数字不要求所有分派的寄存器的数量,未使用的寄存器仍保持被分派给该数字,但包含“0”,这使得它们对所存储的数字值设有影响。这些未使用的寄存器包含保持可用的先行零,用于对所存储的数进行处理或操作。
许多本发明的计算方法涉及通过重复应用处理步骤,对存储器组的一个寄存器一个寄存器的操作。为了步进地历遍(step through)各个寄存器,用“寄存器指针”或“计数寄存器”标记或标识它们是方便的。如在这里使用的,“寄存器指针”或“计数寄存器”是指规定标识或区别存储器组中的各个寄存器。在存储器组中的位置由计数寄存器来标记。存储器组的每个寄存器与计数寄存器的一个唯一置位、值或状态关联。计数寄存器的每个置位、值或状态可等效地被看作为对应于计算系统的算术基数内的不同位置值。在实现一个计算方法、算法或其中的处理步骤时,计数寄存器的置位、值或状态是固定的并且根据计算方法或处理步骤的目的来操作、处理或操纵相关的寄存器。一旦已经对寄存器起过作用,计数寄存器可被递增并且可以根据计算方法或处理步骤的目的对下一个寄存器进行操作、处理或操纵。计算方法中的方法或处理步骤在计数寄存器被递增到或者达到了预定的终结状态时结束。通常,终结状态对应于对存储器组内所有寄存器或其中的一个合适子集的处理。用等效的话说,递增计数寄存器的动作可被看作为将寄存器指针从一个寄存器移动到下一个或从算术系统的一个位置值移动到下一个;其中计算方法或处理步骤发生在所指向的寄存器处。在多数位数字中,每个寄存器对应于一个不同的数位并且寄存器指针的递增等效于从一个数位到另一个数位的处理。计数寄存器可以具有也可以不具有与和该计数寄存器关联的存储器组的寄存器相同的数目的状态。优选地,计数寄存器的状态数目至少等于存储在与该计数寄存器关联的存储器组内的非先行零数位的数目。在一个实施例中,计数寄存器状态的数目等于分派给存储器组的寄存器的数量。
计数寄存器可以是存储器组外部的电路或相变材料的由算法操作的与寄存器或存储器元件分离的一部分。在一个优选实施例中,计数寄存器是相变材料的一部分并具有对应于存储器组的寄存器的编程状态的编程状态。在另一个优选实施例中,计数寄存器是多状态相变材料的一部分,并且计数寄存器的终结状态是相变材料的置位状态。在该实施例中,计算方法、算法或处理步骤在计数寄存器到达其置位状态时终止。将置位状态选择为用于计数寄存器的终结状态是有利的,因为该状态可以被很容易地检测到并为计算方法或处理步骤提供方便的结束点。计数寄存器的初始状态可被置位,使得在随着计算方法作用于一个数字的最后一个数位而递增时,计数寄存器到达其置位状态。例如,将一个编程脉冲施加到计数寄存器可用于表示从多数位数字的一个数位前进到下一个。一旦多数位数字的所有数位都被计算方法作用过了,进一步施加编程脉冲使得计数寄存器转换到其置位状态,由此表示根据本方法的处理的结束。
在下面的对所提出的计算方法或算法的描述中,字母表的字母(例如“a”、“b”、“c”)用于表明不同的存储器组。在存储器组内的寄存器通过下标区别。因此,例如b0和b1是指存储器组b内的两个不同的寄存器,并对应于在存储器组b中存储的数字的不同两个不同数位。字母“r”是用于表示计数寄存器的索引。不同的r值指明存储器组内的不同寄存器被指向并被计算方法作用。r的初始和最终值在之后分别被称之为rinitial和rfinal,其中rfinal对应于前述的终结状态并且优选地与计数寄存器的置位状态关联。索引r还可用作下标来表示与特定的或当前的r值关联的存储器组的寄存器。因此,例如,br表示与当前的r值关联的存储器组b的寄存器以及表示在其中存储的数位。包括rinitial和rfinal的r值通常根据计算方法、算法或处理步骤的目的置位和变化。
在一些计算方法中,将给定的计数寄存器与在两个或更多的存储器组同时或顺序发生的处理步骤关联是有用的。在这些情况下,单个计数寄存器索引r可用于所有被作用的存储器组,并且除非另行陈述,假设给定的r值是指每个不同存储器单元中的相应寄存器。换句话说,r的给定值表示代表在不同存储器组中相同的位置值位置的数位。例如,如果ar表示一个特定r值的十个数位,那么br表示相同的r值的十个数位,其中存储器组a和b被一个算法或处理步骤共同作用。
在一些计算方法中,为对存储在特定存储器组中的一个多数位数字的不同数位进行作用或操作的目的而定义两个计数寄存器是有用的。在下面的算法中,第二及更高的计数寄存器将用从s开始的字母连续地被标记。这样r表示第一计数寄存器、s表示第二计数寄存器、t表示第三计数寄存器等。
在一个优选的实施例中,分配给计数寄存器的存储器材料的容量等于与用于存储数位的存储器组内的寄存器关联的存储器材料的容量,并包括相同数量的程序状态。该实施例是方便的,因为所使用的能源能以同样的方式被施加到计数寄存器和存储器组内的寄存器。此实施例表示与所存储的数字相关的数位数等于算术系统的基数。其中与所存储的数字相关的数位数比算术系统的基数大或者小的实施例也是可能的。这样的实施例要求分离的能源以用于计数寄存器和存储器组,或当把用于存储器组的能源施加到计数寄存器时需要对该能源作适当变化。例如,能源的峰值强度或持续时间可为计数寄存器和存储器组不同地定义。替换地,与计数寄存器关联的编程区间可以与由用于存储数位的寄存器所使用的编程区间不同。
在下列示例算法中,我们用这样的实施例来说明本发明,其中:复位状态被选择为“0”,存储器组和计数寄存器的编程状态是统一的,在存储器组的寄存器中的编程状态的数量等于算术系统的基数,置位状态没有被包括为编程状态,用于计数寄存器的编程状态的数量与用于存储器组内的寄存器的相同,并且计数寄存器的终止状态是置位状态。这些条件是为了说明的目的而选择的,并且不是用来限制本发明的实践。在适合的地方,将包括与其他实施例相关的解释。并且,在这里描述的许多计算方法包括递增一个寄存器的步骤。该递增一个寄存器的过程表示施加编程脉冲。例如,递增1由施加一个编程脉冲完成并且对应于将寄存器从一个编程状态转换到下一个或从最终编程状态转换到置位状态。
现在描述计算方法的特定实施例。所述方法中的任何一个或其组合或者所有的方法可用特定容量的相变材料完成。可能但并不要求用不同容量的相变材料完成不同的计算方法。为了提高计算效率,优选地具有在一个特定容量的相变材料内完成尽量多的计算方法的能力。通过适当的存储、处理、擦除和重写数据,该能力可在本发明中达到。通常,可在第二个计算方法在特定容量的相变材料内实现之前开始和结束一个计算方法。在特定容量的相变材料内使用许多不同计算方法的通用性是本发明的一个特征。在一个优选实施例中,利用这里所公开的计算方法,加减乘除的数学运算可以在特定容量的相变材料内完成。在另一个优选实施例中,利用这里所公开的计算方法,减乘除的数学运算可以在特定容量相变材料内完成。在特定容量相变材料内执行包括所有公开的计算方法的计算方法的其他组合构成本发明的其他
实施例。
复位
在计算方法的实现中,经常要求或期望复位一个或多个寄存器或存储器组。结果,开发用于复位寄存器或存储器组的算法是有用的。复位本发明的多状态相变材料存储器组的基本步骤是复位组中的所有寄存器。如上文所述的,复位过程涉及施加足够的能量数量以复位相变材料。在一个实施例中,以复位能量脉冲的形式提供能量,并且复位算法的核心涉及将复位脉冲施加到存储器组的每个寄存器。可将复位脉冲分开地和连续地施加到存储器组的各个寄存器。通过步进地历遍所有寄存器,可复位存储器组。在其中复位状态是被分配成0的编程状态的实施例中,通过排除包含先行零的寄存器和施加复位脉冲或复位能量数量给各个寄存器(施加的顺序是从不包括0的具有最高位置值的寄存器开始,并且一个寄存器一个寄存器地步进和应用复位脉冲以遍历存储器组的剩余寄存器)来完成复位。
在这里,复位算法的示例性描述在图2中描述。算法被标注为RESET(a)(复位(a)),以表明算法被设计用于复位存储器组a。算法从步骤T10开始。在步骤T11,发生计数寄存器的初始化。初始化表示通过使计数寄存器处于初始编程状态来置位rinitial值。初始化对应于指向要被操作的存储器组的第一寄存器。步骤T12、T13和T14构成表示该算法基础处理步骤的迭代循环。在步骤T12,复位对应于寄存器计数器的当前值r的寄存器ar。在第一次通过循环时,r的值是rinitial并复位存储器组a的第一寄存器。在后续通过循环时,递增r的值并复位存储器组剩余的寄存器。步骤T12可通过施加复位能量脉冲而发生。在步骤T13,计数寄存器递增一,以表示指向存储器组的下一寄存器。递增计数寄存器是通过施加编程能量脉冲来完成的。编程能量脉冲将计数寄存器的存储器材料从其当前编程状态转换到下一个编程状态。步骤T14是有条件测试步骤,其测试计数寄存器是否到达其终结状态。在一个实施例中,终结状态是计数寄存器的置位状态并且有条件测试能如上所述地通过测量电阻或低电阻置位状态的某一其他可区别属性来实现。如果计数寄存器不处于其终结状态,方法循环回到步骤T12并且复位存储器组的下一个寄存器。在步骤T13,计数寄存器再次递增1并且有条件测试在步骤T14完成。由步骤T12、T13和T14表示的循环重复直到计数寄存器到达其终结状态。计数寄存器得到终结状态与值r=rfinal一致,并且表明存储器单元中的所有寄存器已被复位。一旦计数寄存器到达其终结状态,计算方法前进到步骤T15。步骤T15是对应于复位计数寄存器的可选步骤。该步骤可为另一个计算方法或存储器组准备寄存器时是有用的。步骤T16是计算方法结束步骤。
前面的计算方法已经对于复位单个存储器组被说明。该计算方法可容易地扩展到复位多个存储器组。例如为了复位存储器组a和b,我们可以在步骤T12和T13之间包括步骤T12’,其中复位寄存器br。步骤T12’可表示为“复位寄存器br”并且该方法可被命名为RESET(a,b),以表明存储器组a和b将被复位。该方法可类似地扩展到任何数量的存储器组。
这里在图3中公开的是描述在图2中出现的计算方法的替换方式。图3的复位方法的步骤直接对应于图2的那些步骤,但是标号有10的偏移量。因此步骤T20对应于步骤T10,步骤T21对应于步骤T11等。在图3中出现的描述用于示例说明将在以下描述的其他计算方法中使用的符号。步骤T21中,“r=rinitial”表明r的值将被置位成rinitial。该步骤对应于计数寄存器的初始化。在复位步骤T22中,“ar=0”表明与当前r值关联的存储器组a的寄存器将被复位。在步骤T23,“r=r+1”表明r的值增加了1。该步骤对应于将计数寄存器递增1,即可以通过将编程脉冲施加到计数寄存器来完成的动作。在步骤T24,用“r=rfinal?”表示有条件测试。步骤T24询问计数寄存器是否到达其终结状态。如果没有,计算方法通过步骤T22、T23和T24循环直到到达终结状态。一旦计数寄存器处于终结状态,方法进行到可选的计数寄存器复位步骤T25,并且从步骤T26开始。
在图2和3中所示的方法包括用于置位计数寄存器中的一个初始值的初始化步骤和确定计数寄存器何时到达其终结状态的有条件测试步骤。不同的方法可用于选择rinitial和rfinal。如上所指示的,优选地将rfinal与计数寄存器的置位状态关联,因为置位状态可很容易地由一个简单测试识别。因此,计算方法或循环的结束在计数寄存器的终结状态对应于与计数寄存器关联的存储器材料的置位状态时可被方便地识别。当计数寄存器的置位状态是终结状态时,用于选择rinitial的值的至少两个选择是可能的。首先,rinitial可被选择成对应于计数寄存器复位状态。在该实施例中,该方法寻址(即步进地历遍)存储器组中的所有寄存器。该实施例具有能简单执行的优点,但是不尽然是最有效的,因为任何在初始时处于其复位状态的寄存器不需要由该方法作用。
在第二种方法中,rinitial被设置成使得将计数寄存器的初始状态转换到计数寄存器的终结状态所要求的编程脉冲或递增区间的数量等于存储在存储器组中的数字的非先行零数位数。该方法在其中复位状态被选择成对应于零的编程状态是优选的,因为通过该方法排除了对先行零的处理。在该实施例中,计数寄存器初始化步骤涉及对于存储在存储器组中的数字所具有的每个先行零给计数寄存器的复位状态施加一个编程脉冲。(如果计数寄存器在初始化步骤的开始时不处于其复位状态,则在施加编程脉冲之前施加复位脉冲。)该初始化程序表示将计数寄存器从其初始状态转换到其终结状态所要求的编程脉冲的数量等于存储在存储器组中的数字的非先行零数位数。
例如在此实施例中的以10为基数的情况下,可能遇到数字“0000000472”。该数字包括7个先行零和3个非先行零数位。根据本实施例的初始化程序,计数寄存器将被复位(如果需要)并且在初始化步骤中将向其施加7个编程脉冲。7个编程脉冲使计数寄存器处于其第八个编程状态。该第八个编程状态对应于指向该数字的第八数位。在“0000000472”的例子中,第八数位是“4”并表示第一非先行零数位。在该算法中为经过的每一次循环将一个编程脉冲施加到计数寄存器。在三个循环之后(每一个循环对应于数字的每个非先行零数位),计数寄存器处于其终结状态。在此刻,初始地包含“0000000472”的存储器组被复位(即被转换到“0000000000”)并且方法前进到结束步骤。需要注意,在本例中施加的三个编程脉冲可对应于以任何顺序操作三个非先行零数位。优选地,以位置值的升序(“2”,接着“7”,然后“4”)或降序(“4”,接着“7”,然后“2”)操作。
初始化的第二种方法是有利的,因为没有计算时间或资源被用于复位先行零。第二种方法将计数寄存器设置成由存储在存储器组中的数字的非先行零的数量确定的值和通过只操作非先行零数位简化计算。在图2和图3中所写的方法允许rinitial和rfinal的任何选择。具体的选择构成不同的实施例。类似的理解适用于在下面给出的计算方法。
在图2和3中给出的复位方法还可用于其中复位状态是对应于非零数字的编程状态。在许多这样的实施例中,复位状态是第一编程状态并且与数字1关联。在这些实施例中,在图2和3中给出的复位方法的执行相当于把由该方法作用的存储器组的寄存器设置成1。这表示在这些实施例中存储器组的复位和将存储器组清零对应于不同动作。清零可通过根据图2和3的算法的第一复位、并接着施加适当数量的编程脉冲以达到已经与零关联的任何编程状态而完成。通常,置位状态被选择为对应于零的编程状态,并且清零动作通过将存储器组的所有寄存器置位来完成。
半拷贝
在计算方法的实现中,通常要求或期望将一个存储器组的内容拷贝到一个或多个其它存储器组。结果,开发用于拷贝存储器组的方法是有用的。如下所述的,下面的HALFCOPY(半拷贝)方法可用作在一个拷贝方法中的中间步骤。两个不同的HALFCOPY方法(HALFCOPY_1和HALFCOPY_2)在下面讨论。
HALFCOPY方法返回在下面被称为数字的补码的内容。如这里使用的,数字的补码表示通过从算术系统的基数中分开地和个别地减去所存储的数字的数位而得到的结果。考虑以10为基数的系统中的数“587”作为例子。通过从算术基数中一个数位一个数位地减去该数字的各数位来获得补码。“587”的补码的第一位是10-5=5,第二位是10-8=2,第三位是10-7=3。这样,“587”的补码是“523”。如果将基数为10的算术系统中的数字“587”输入到HALFCOPY中,该方法将返回“523”。可类似地为其他基数的系统定义补码,并且所述补码适用于被分配给所存储的数字的任何数量的寄存器。
对非先行零的处理要求对HALFCOPY方法的特别注意。以10为基数的算术系统中的数字“907”提供说明对于包含非先行零的数字所遇到的复杂性。向“907”应用计算补码的前面的方法返回“1”(10-9)作为第一数位,“10”(10-0)作为第二数位,和“3”(10-7)作为第三数位。“907”的补码因此被确定为“1(10)3”。通常对于任何算术基数,非先行零的存在导致补码中的等于算术系统的基数的一个“数位”。这样的“数位”在算术基数中形式为“10’s”,并且如果使用的话将需要两个寄存器用于存储。因为期望以一个寄存器一个寄存器的方式执行计算方法,优选地采用对于在数字的补码的计算中的对非先行零的处理的惯例或定义。在下面示出的方法HALFCOPY_1和HALFCOPY_2表示处理非先行零的两个不同策略。
在HALFCOPY_1中,可以得知寄存器的置位状态不是编程状态,并且“0”的补码被选择为置位状态。该选择逻辑上遵循这样的事实:置位状态在能量上比寄存器的最后一个编程状态高一个编程脉冲,因此在方面可被看作等于算术系统的基数。例如在基数为10的系统中,最后一个(第十个)编程状态对应于“9”并且其通过将9个编程脉冲施加到寄存器的复位状态而达到。第十个编程脉冲的施加将寄存器转换到其置位状态。如果基数为10的系统中的寄存器具有存储在其中的“0”并且施加了10个编程脉冲,则寄存器被转换到其置位状态。因此,即使置位状态在形式上不是编程状态,为计算一个数字的补码可以将其看作为对应于“10”。前面的陈述对所有基数的系统都成立。在下面的讨论中,之后我们将置位状态表示为“0”而不是“10”,以加强“0”的补码可记录在单个寄存器而不是两个寄存器中的概念。在这样的惯例下,基数为10的“907”的补码是“10*”。使用这个惯例,一个数字及其补码可存储在相同数量的寄存器中是明显的。
这里在图4中示出方法HALFCOPY_1。HALFCOPY_1被设计用于其中复位状态被选择为被分配了值0的编程状态的实施例。符号HALFCOPY_1(b;a)表示HALFCOPY_1被应用于存储在存储器组a中的条目以产生存储器组b中的输出。换句话说,存储在存储器组a中的数字的补码被写到存储器组b中。存储器组b可被称为目的存储器单元。该方法开始于步骤T300。如果输入数据值没有存储在存储器组a,则可在开始步骤期间存储之。编程状态、编程区间和数值的分配也可在步骤T300中完成。存储可包括提供足够的能量以将相变材料转换到与所存储的数字关联的编程状态。步骤T301初始化计数寄存器。在前面给出的复位算法中已经描述了该初始化过程,并且关于rinitial和rfinal值的相同考虑适用。产生与上面描述的复位算法相同的效果的算法或过程也可在步骤T301中使用。在步骤T302,存储器组b被复位。存储器组b可通过这里的图2和3中描述的复位方法或等效的方法而复位。在完成步骤T302时,存储器组b的所有寄存器处于其复位状态并存储零。
步骤T303、T304和T305形成对应于该方法的基本处理步骤的迭代循环。如上所述,对数字的补码的计算要求一个寄存器一个寄存器地从算术系统基数中减去每个寄存器中存储的数位。用于每个寄存器的减法处理的结果对应于将寄存器转换到其置位状态所需的编程脉冲的数量。例如在基数为10的系统中,需要四个编程脉冲将包含“6”的寄存器转换到其置位状态,并且4是“6”的补码。计算一个数字的补码的关键是跟踪将每个寄存器转换到其置位状态所需的编程脉冲的数量。如在上面的复位方法的讨论中所指出的,优选地将该方法只应用于包含非先行零的寄存器中。该目的是通过如上所述地适当地设置rinitial来完成的。
步骤T303、T304和T305提供记录将与r的当前值关联的寄存器转换到其置位状态所需的编程脉冲的数量。在步骤T303中,与r的当前值关联的存储器组a的寄存器被递增1。在步骤T304中,存储器组b的对应寄存器被递增1。存储器组b因此跟踪施加到存储器组a的编程脉冲的数量。步骤T305询问寄存器ar是否到达其终结状态。如果没有,方法循环回到步骤T303和T304并再次将ar和br递增1。循环继续直到ar到达其终结状态。此刻,寄存器ar处于其置位状态并且br处于对应于施加到寄存器ar以将其转换到其置位状态的编程脉冲数量的编程状态。寄存器br因此存储原先存储在寄存器ar中的数位的补码。
步骤T306是可选步骤并且如果愿意可用于复位寄存器ar。在该方法中的这一时刻,与r的当前值关联的寄存器ar的补码已经存储到寄存器br中。完成对补码的确定要求对存储器组a中的所有寄存器重复该处理循环。在步骤T307,r的值递增1以表明计数寄存器移位到下一个寄存器。步骤T308询问计数寄存器索引r是否到达其最终值。如果还没有,方法返回到步骤T303并且为新寄存器完成由步骤T303、T304和T305定义的循环。在该循环结束时,存储器组a的另一个寄存器处于其置位状态并且在该寄存器中原先存储的数字的补码被记录到存储器组b的对应的寄存器中。步骤T306和T307如在上文描述的那样完成,并且方法继续到步骤T308以再次测试计数寄存器是否处于其终结状态。如果没有,方法返回到步骤T303并且处理下一个寄存器。一旦所有的寄存器都被处理过,存储器组b包含原先存储在存储器组a中的数字的补码,并且存储器组a被复位,如果期望,存储器组a变得为其他处理可用。此刻,方法前进到可选步骤T309来复位计数寄存器。通常优选地复位计数寄存器以使其为其他处理可用。该方法在步骤T310结束。在步骤T310完成对输出的读取。
HALFCOPY_2类似于HALFCOPY_1,并且在对待非先行零的补码的惯例上有所不同。如同HALFCOPY_1,HALFCOPY_2假设复位状态是与0关联的编程状态。在HALFCOPY_2中,非先行零的补码被选作为0。换句话说,非先行零是其自己的补码。如果基数为10的数字“907”被输入,HALFCOPY_2返回“103”作为补码。这里在图5中示出HALFCOPY_2。HALFCOPY_2的大多数步骤与上面描述的HALFCOPY_1的步骤相同。对应步骤在步骤的标记中使用的标号值偏移30。例如,步骤T330对应于步骤T300,步骤T331对应于步骤T301等。步骤T336’和T336”不对应于HALFCOPY_1中的步骤。它们表示用于当方法到达步骤T336’时,复位处于其置位状态0*的目的存储器组b的寄存器的步骤。步骤T336’询问与r的当前值关联的寄存器br是否处于其置位状态。与ar的情况类似,可通过测量电阻或置位状态的某一其他属性特性来执行该测试。如果寄存器br没有处于其置位状态,方法继续到步骤T337,否则类似于HALFCOPY_1。
如果寄存器ar初始地存储“0”,则寄存器br将在由步骤T333、T334和T335定义的循环的相同迭代中被转换到置位状态0*,在该相同的迭代中寄存器ar将被转换到置位状态0*。当该情况发生并且方法从步骤T335进行到T336时,ar和br都处于置位状态0*。在步骤T336,复位寄存器ar。在HALFCOPY_1的对应步骤中,步骤T336是可选的,但是是优选的。如果br处于置位状态0*,方法继续到步骤T336”并且将br按照在HALFCOPY_2中采用的用于处理非先行零的补码的惯例复位到零。方法进行到步骤T337,否则类似于HALFCOPY_1。
也可开发等效于HALFCOPY_2的方法,并且所述方法被包括在本发明的范围内。不包括步骤T336’和T336”,例如附加的步骤可放在步骤T332和T333之间以提供对将非先行零作为其自己的补码那样处理的惯例的兼容。可添加步骤T332’,询问ar是否等于零。如果不等于零,方法继续到步骤T333,否则类似于HALFCOPY_1。如果步骤T332’显示ar等于零,那么就不需要作用于对应的寄存器br,因为它已经存储了值“0”并且已经表示了期望的补码。在此情况下,该方法可直接循环到步骤T337并绕过中间步骤。
虽然为一个目的寄存器写了HALFCOPY_1和HALFCOPY_2,简单的适配允许多个目的寄存器。方法HALFCOPY_1(c;b;a)例如可将存储器组a中存在的数字的补码存储到目的存储器组b和c。这样的方法可通过包括步骤T304’实现,该步骤紧随步骤T304执行cr=cr+1。
如上所指明的,其中rinitial被置位以排除对先行零的处理的实施例是优选的。其中先行零被处理的实施例也落入本发明的范围。在这样的实施例中,先行零可根据前面所述的用于处理非先行零的补码的任何惯例来处理。
拷贝
拷贝算法的功能是将一个存储器组的内容拷贝至另一个存储器组。通常,可以直接读取一个存储器组并将其内容复制到另一个存储器组。这样的直接拷贝的方法的可行性依赖于容易读取一个存储器组。对于相变材料,通过本发明的计算方法,直接拷贝是可能的。直接拷贝要求读取一个存储器组的存储器元件或寄存器并且将结果写到另一个存储器组的存储器元件或寄存器。本发明的计算方法使用的多状态相变材料的读和写在以上已经讨论过。
拷贝的另一方法可使用上述的HALFCOPY来设计。HALFCOPY方法返回一个数字的补码作为输出。向一个数字的补码应用HALFCOPY返回数字本身。换句话说,两次HALFCOPY的连续应用将原始数字作为输出返回。作为一个例子,考虑以10为基数的算术系统中的数字“543”。对以10为基数的算术系统中的数字“543”应用HALFCOPY_1或HALFCOPY_2返回“567”。如果HALFCOPY_1或HALFCOPY_2在之后被应用于输出结果“567”,返回数字“543”。HALFCOPY_1或HALFCOPY_2的两个连续应用,按任何顺序的HALFCOPY_1或HALFCOPY_2的连续应用,或产生和HALFCOPY_1或HALFCOPY_2的相同效果的算法的类似应用可用于构造拷贝方法。
这里,拷贝方法的一个例子出现在图6中。COPY(b;c;a)(拷贝(b;c;a))将存储器组a的内容拷贝到目的存储器组b和c。该方法起始于步骤T400。如果还没有存储,输入数据值可在起始步骤被存储到存储器组a中。编程状态、编程间隔和数值分配也可在步骤T400中完成。存储可包括提供足够的能量以将相变材料转换到与所存储的一个数字关联的编程状态。在步骤T401和T402的每一个中,HALFCOPY方法被调用和执行。被调用的方法可以是HALFCOPY_1或HALFCOPY_2及其等效方法。步骤T401将存储器组a的数据当作输入并将其的补码提供给存储器组d。步骤T402获得存储器组d的数据并将其的补码提供给存储器组b和c。方法在步骤T403结束。还可在步骤T403完成输出的读取。
COPY(b;c;a)的效果是将存储器组a的内容拷贝到存储器组b和c。如果需要可写类似的方法以拷贝到多于两个的目的存储器单元。如果只包括一个目的寄存器,该方法具有将一个存储器组的内容移动到另一个存储器组的效果。例如,COPY(b;a)将存储器a的内容拷贝到存储器b。因为被转换了,在该方法完成时存储器组a不包含其原始内容。因此,COPY(b;a)具有将存储器a的内容移动到存储器b的效果。如果期望保留存储器组a中存在的原始数据,存储器组a可被包括到目的寄存器中。例如COPY(a;b;a)将存储器组a的内容提供给目的存储器组b并恢复存储器组a到其原始条件。
当非先行零存在于将被拷贝的数字中时,优选地在步骤T401和T402中调用HALFCOPY_2。如果通过HALFCOPY_2处理非先行零,则返回零。向存在于要被拷贝的原始数字中的非先行零两次应用HALFCOPY_2,由此返回非先行零。考虑基数为10的数字“907”的例子。一次HALFCOPY_2的应用返回“103”。第二次应用返回数字“907”,就如通常在拷贝算法中期望的真的拷贝一样。
根据HALFCOPY_1和HALFCOPY_2的组合的COPY方法返回不同于一个真的拷贝的结果,并且如果期望一个真实拷贝,则要求附加的步骤。考虑在步骤T401中使用HALFCOPY_1在步骤T402中使用HALFCOPY_1。当基数为10的数字“907”被输入时,步骤T401返回“90*3”。当该结果用作到步骤T402的输入时,返回“917”。为获得真实拷贝,需要在步骤T401之后在执行T402之前复位0*,并且需要在执行步骤T402之后作类似的事情。当输入“907”时,在步骤T401中使用HALFCOPY_1在步骤T402中使用HALFCOPY_2也返回“917”。当输入“907”时,在步骤T401中使用HALFCOPY_2在步骤T402中使用HALFCOPY_1返回“90*7”。可以向COPY添加附加的步骤以将这些输出转换成真实拷贝。
加法算法的功能是将两个数作为输入并将它们的和作为输出。以其最基本的形式,本发明上下文中的加法可被看作添加到相变材料上的能量。因为相变材料的状态是相对于复位状态按能量来排序或可区别的,被添加到相变材料的复位状态的总能量或相变材料相对于复位状态具有的总能量可用作定义加法机制的基础。
相加法的一种方式使用相对于复位状态的相变材料的状态的能量的加法性质。在该方法中,相变材料首先被转换到其复位状态并且施加将被加的数字的能量特征。施加正比于第一个数字的第一能量数量,将相变材料转换到表征第一个数字的状态。之后施加正比于第二个数字的第二能量数量,将相变材料转换到表征第一和第二个数字的和的状态。在该方法中的能量可直接施加于相变材料或施加到相变材料中被细划分的存储器组或施加到包含在存储器组中的寄存器。表征数字的能量可正比于数字或对应于足以将相变材料转换到与数字的数值关联的编程状态的能量。
不要求相变材料初始地处于其复位状态,因为复位状态和置位状态之间的能量区间内的相对位置可用于表示一个数。例如,位于复位状态和置位状态之间一半处的能量可对应于相变材料中可存储的最大数字的一半。这样的状态可由置位相变材料所要求的能量数量来区别。因为复位状态和置位状态之间的能量区间对于特定的化学组成是固定的,相对于置位状态的能量可被用作表征存储在相变材料中的数字的量。类似地,当定义编程状态时,存储在相变材料中数字的值可通过确定置位相变材料所要求的编程区间的数量以及将该数量从可存储在编程状态的集合中的最大数值中减去而获得。
方便的确定数字的补码提供了用于相加存储在多状态存储器组中的数字的方法的另一个基础。加法操作可更自然地按照数字的补码而不是按照数字本身。可能这样做的原因是数字的补码要求施加等于数字本身的数量的编程脉冲以达到置位状态。考虑单数位数字,比如基数为10的算术系统中的“4”作为例子。基数为10的算术系统中的“4”的补码是“6”,并且“6”要求4个编程脉冲来达到可容易地检测的置位状态0*。因此,如果我们将“4”转换到其补码“6”并且进而将“6”转换到其置位状态,我们实现了一个将寄存器的内容递增4的可靠的方式。用于相加两个数字的基本策略因此被理解为首先将第一个加数转换到其补码并接着每次一个地施加等于该补码和第二个加数的数量的编程脉冲,直到该补码转换到其低电阻置位状态。当该转换发生时,第二加数已经被加上了等于第一加数的数量的编程脉冲。这是用于相加的理想的策略,因为第一加数的补码的置位状态是容易检测的状态。
加法的基本策略如下说明。考虑在基数为10的算术系统中将第一加数“4”与第二加数“5”相加的例子。将4转换到其补码产生“6”。将“6”转换到其置位状态要求4个编程脉冲。在将补码“6”转换到其置位状态的同时以一对一的方式递增第二加数“5”,这表示4个编程脉冲被施加到第二加数“5”。第二加数“5”因此被转换成对应于“9”的编程状态,并且加数“4”和“5”就如此相加。
图7在这里提供用于加法的基础计算方法。图7的算法被称之为BASIC ADD(基本加法)以将其与下面在图8中示出的更健壮的方法相区别。在图7中的BASIC ADD(a;b;a+b)将数字a和b作为输入并且将a+b的和作为输出。数字a和b存储在存储器组a和b中,并可以是单数位数字或包含在一系列与存储器组a和b关联的寄存器中的多数位数字。如所写的,该方法提供输出a+b给原先存储加数b的存储器组。因此,存储器组b是用于图7所示的方法的目的存储器组。可写出其中输出被存储在存储器组a或不同于存储器组a和b的存储器组中的等效方法。
该算法起始于步骤T500。如果还没有存储,输入数据的值a和b可在起始步骤存储。编程状态、编程区间和数值的分配也可在步骤T500中完成。存储可包括提供足够的能量以将相变材料转换到与所存储的数字关联的编程状态。在步骤T501,HALFCOPY方法被调用。步骤T501的目的是计算存储在寄存器组a中的数字的补码。该补码被产生并存储在存储器组c中。在下面描述的与非先行零相关的考虑下,HALFCOPY_1、HALFCOPY_2及其等效方法可在步骤501中使用。
在步骤T502中,初始化计数寄存器。优选地,以这种方式初始化计数寄存器以使得计数寄存器的最终状态是计数寄存器的置位状态。优选地,计数寄存器的每一个状态对应于存储在正被算法处理的存储器组中的数字的不同数位或寄存器。在一个存储器组内从一个数位前进到下一数位是通过将编程脉冲加到计数寄存器而将计数寄存器递增1来标记的。一旦已经处理了所有数位,优选地加上另一个编程脉冲以将计数寄存器转换到其置位状态。优选地,初始化计数寄存器使得达到此结果。例如当相加两个四数位的加数时,计数寄存器被优选地初始化使得施加四个编程脉冲可将计数寄存器转换到其置位状态。如果加数包括不同数量的非先行零数位,具有较多先行零数位的加数为计数寄存器建立初始化条件。例如当将三数位加数加到一个两数位加数时,三数位加数可用于确定计数寄存器的初始化,并由此设置rinitial。
步骤T503和T504定义基本的处理循环。在步骤T503,与计数寄存器的当前值关联的存储器组b和c的寄存器递增1。如上所讨论的,在此循环后面的策略是递增存储在存储器组c中的补码直到其达到其置位状态并与递增存储器组c的寄存器步调一致地递增存储器单元b中的寄存器。当存储器组c的寄存器被递增到其置位状态,存储器组b的对应寄存器包含a和b的和要求的值。步骤T504测试存储器组c的当前寄存器是否到达其置位状态。在步骤T504置位状态被表示为“0*”。如果还没有达到置位状态,循环返回到步骤T503,并且继续直到到达置位状态。一旦达到置位状态,方法进行到步骤T505,实现对存储器组c的已被转换至其置位状态的寄存器的复位。步骤T505是可选步骤。步骤T506将计数寄存器递增1以表明前进到下一数位。步骤T507测试计数寄存器是否已经到达其最终状态。如上所示,优选地使rfinal对应于计数寄存器的置位状态。如果计数寄存器没有到达其最终状态,方法返回到步骤T503并处理另一数位或寄存器。处理继续通过所有的数位,此刻计数寄存器递增到其最终状态。方法继续到T508以将计数寄存器复位并在步骤T509结束。步骤T508是可选的,但是是优选的,并且读取输出可在步骤T509中完成。
这里在图7中示出的BASIC ADD(基本加法)有效地执行一个简单的加法。在加法中经常出现的两种情况没有在Basic Add中特别地解决。首先,没有考虑包含非先行零的加数,其次没有包括从一个位置值进位到下一个更高位置值的需要。现在将考虑这些情况。
在加数中存在非先行零要求对上面开发的加法策略作特别的考虑,因为该策略涉及对其中一个加数的补码的处理。如上所述,诸如HALFCOPY_1和HALFCOPY_2之类的方法可用于产生数字的补码。这些方法及其等效方法采用关于处理非先行零的各种惯例。已经讨论了两个惯例。在HALFCOPY_1中,非先行零被转换成低电阻置位状态0*,并且在HALFCOPY_2中非先行零被转换成其本身。基于这两个惯例的加法方法可在本发明的范围内开发。因为低电阻置位状态0*能比高电阻0状态被更容易地检测,优选地开发其中0的补码是0*的加法方法。这样的方法的例子出现在图8,其中引入了HALFCOPY_1。
当两个数位的和超过或等于算术系统的基数时出现对进位的需要。例如,基数为10的4和7的相加产生11并要求进位以提供第二个数位。结果,能够执行进位的加法方法必然需要识别什么时候要求进位并且包括一个用于将存储器组中的一个更高位置值的寄存器递增1的措施。这样的方法算法的例子出现在图8以及图8A中。
在图8以及图8A中示出的ADD(a;b;a+b)是适于与多状态相变存储器组一起使用的全加法方法。步骤T600、T601和T602类似于上述的步骤T500、T501和T502。在步骤T601,HALFCOPY_1被包括并且被用于将加数a的补码写到存储器组c中。同样可以处理加数b的补码或将该补码写到其他或若干存储器组。
包括步骤T603、T603’和T603”的循环不出现在图7的BASIC ADD方法中,并且已被插入以说明在加数中可能存在的非先行零数位。在图8以及图8A中所示的例子中,由于a的补码是由该方法确定和处理时,所以加数a中的非先行零是相关的。当HALFCOPY_1被调用时,加数a中的非先行零被转换到可容易检测的状态0*。步骤T603被包括以测试与计数寄存器索引r的当前值关联的寄存器cr中的0*的存在。如果寄存器cr不处于状态0*,方法绕过步骤T603’和T603”并进行到步骤T604。但是,如果寄存器cr处于状态0*,可知道加数a包括非先行零并且方法进行到步骤T603’和T603”。预期步骤T603’和T603”所根据的事实是:如果非先行零存在于加数a中,那么它对加数b中的对应数位没有影响。将0加到加数b的一个数位对于该数位没有影响。步骤T603’和T603”的效果由此是简单地复位寄存器cr的0*状态并且将寄存器计数递增1,使得指向下一数位。重复包括步骤T603、T603’和T603”的循环,直到遇到了不处于状态0*的存储器组c中的寄存器。因此该方法可适当的处理处理诸如900之类的包含在相邻寄存器中的多于一个非先行零的加数。
步骤T603、T603’和T603”提供在计算上有效的方式来处理非先行零。诸如将非先行零转换成0而不是0*的补码产生方法的使用不是那么有效,因为0状态不如0*状态那么容易检测。需要有另外的处理步骤来发现加数a中非先行零的存在。例如,可以使用诸如T604之类的递增步骤,其中一个非先行零的标志是在相同的处理步骤中寄存器br和cr转换到状态0*。该标志可被检测并且可开发适当的计算方法。当确定补码时,这样的方法不如其中将非先行零转换到状态0*的方法那么优选。
ADD的步骤T604是与BASIC ADD的步骤T503类似的递增步骤。类似于BASIC ADD,直到寄存器cr到达其置位状态的对应于存储器组b和c的递增策略也在ADD中使用。然而与BASIC ADD相反,ADD认识到并容许进位。对于是否需要进位过程的测试在步骤T605中作出。进位必然表示在目的存储器组b中的寄存器br在寄存器cr被递增到状态0*之前或与之同时被递增到状态0*。因此,步骤T605测试寄存器br是否到达状态0*。如果br不处于状态0*,方法进行到类似于上面的图7中示出的BASIC ADD方法中的步骤T504的步骤T611。步骤T611测试寄存器cr是否已被递增到状态0*。如果没有,方法返回到步骤T604以使用当前寄存器开始另一次迭代。如果寄存器cr处于状态0*,方法进行到步骤T612,其中复位cr。步骤T612是可选的,但是是优选的。在步骤T613中,寄存器计数器被递增1并且在步骤T614中,进行一个测试以确定计数寄存器是否已到达其最终状态。如果已经达到,方法进行到可选的但是是优选的复位步骤T615并在步骤T616结束。输出的读取可在步骤T616中完成。如果寄存器计数器在步骤T614不处于其最终状态,方法返回到步骤T603,以处理下一个寄存器。
ADD认识到在步骤T605中需要进位并在图8A中所示的步骤T606、T607、T608、T609和T610中实现进位。在将目的寄存器br递增到置位状态0*时执行步骤T606。步骤T606引入第二个计数寄存器s并将其初始值设置为第一计数存储器r的当前值。第二计数寄存器允许该方法指向并处理存储器单元内的不同的寄存器。在步骤T607,处于置位状态0*的存储器单元b的寄存器被复位到0。由于在本方法的这个时刻计数寄存器r和s指向存储器组b的同一个寄存器,步骤T607还可被写成br-0。还可能在在引入计数寄存器s之前复位br。在步骤T608,计数寄存器s被递增1使得其指向比由计数寄存器r所指向的寄存器的位置值高一个位置的寄存器。本步骤预示进位出现在步骤T609,。在步骤T609,由s所指向的寄存器如加法进位所要求的那样递增1。如果需要,步骤T610复位计数寄存器s,使得它可用在后面的用于其他寄存器的迭代中。当完成步骤T610时,方法进行到步骤T611并如前所述那样继续。
当需要进位时,寄存器计数器优选地在加数及其补码的存储器组内的增加位置值的方向上前进。由此,计数寄存器的初始值优选地对应于具有最小位置值的存储器组或补码的寄存器。通常,该最小位置值寄存器对应于多数位数字的“个位”。在执行该方法期间,计数寄存器的递增因此对应于按增加位置值的方向前进,使得“个位”之后是“十位”等。适当的有效进位要求正确计算位置值。
减法
减法方法的功能是计算两个数字间的差。出现在这里的减法方法认识到与计算两个数字间的差关联的方便性。特别的,当一个共同的数字被加到两个数字的每一个时,两个数字的差保持恒定。考虑一个例子:基数为10的算术系统中的354和123之差。该差对应于减法354-123。如果将一个共同的数字加到354和123,则改变了这两个数字,但是不改变两个数字之差。因此,354-123与355-124以及455-244相等,等等。在本发明中,将一个共同的数字加到两个相减的数字的每一个的动作可通过将共同的能量加到存储数字的存储器组、寄存器或相变材料的容量中。例如在减法b-a中,将置位能量加到存储数字a的存储器组中以及随后将该置位能量加到存储数字b的存储器组可用于将存储器组b转换到表征或对应于差b-a的状态。
这里在图9和10中示出的方法BASIC SUBTRACT(基本减法)和SUBTRACT(减法)是基于其中将所减去的数字(在一般减法b-a中的第二个数字a)一个寄存器一个寄存器地递增直到每个寄存器被转换到其低电阻0*状态的策略。通过递增数的对应寄存器,通过类似地递增发生减法的数字的相应的寄存器(在一般减法b-a中的第一个数字b),第一个数字可被转换成等于两个原始数字之差的数字。减法354-123可用作一个示例。如果起始于最低位置值的数位并遵循将第二个数字的寄存器转换到低电阻0*状态的策略,需要将两个数位的每一个递增7(例如,通常加上7个编程脉冲)以将原始减法转换为一个保持原始差的新的减法。严格地讲,7加3得10而7加4得11。因为我们能从两个结果中减去10而不用影响差,所以将两个数字的最低位置值的数位递增7具有将原始减法354-123转换到减法351-120的效果。继续到次高位置值数位并重复该策略进一步将减法从351-120转换到331-100。对最后数位的重复给出231-000。所示的一个寄存器一个寄存器的操作的最后效果是将原始减法354-123转换成更方便的减法231-000,其很容易地表明想要的差。
这里图9中所述的BASIC SUBTRACT实现用于减法的所述一个寄存器一个寄存器的策略。对于输入数据值a和b,算法计算差b-a。该算法起始于步骤T700。如果还不存在,可以是多数位数字的输入数据值a和b可分别在步骤T700存储在存储器组a和b中。编程状态、编程区间和数值分配也可在步骤T700中完成。存储可包括提供足够的能量以将相变材料转换到与所存储的数字关联的编程状态。在步骤T701中,如上面在其他算法中所述的那样初始化计数寄存器r。如上所述,计数寄存器的值表示指定正被处理的存储器组的对应寄存器,其中对应寄存器里对应于相同位置值的寄存器。在步骤T702中,由计数寄存器所指向的存储器组a和b的寄存器被递增。该步骤包括以上述的步进的方式同时递增对应于相同位置值的数位的概念。步骤T703测试寄存器br是否已被递增到其置位状态。如果br处于其置位状态,方法继续到步骤T704并且复位br到零,使得能发生进一步的递增。本方法的一个目的是递增直到寄存器ar处于其置位状态。步骤T705测试这个条件。如果ar处于不是其置位状态的其他状态,方法返回到步骤T702并且执行另一个递增迭代。当ar已经递增到其置位状态,存储在对应的寄存器br中的值表示所期望的差b-a中的一个数位。方法继续到可选复位步骤T706并接着到步骤T707,其中计数寄存器被递增以表示对存储器组a和b的另一组对应数位的处理的开始,或如果计数寄存器已经递增到其最终状态,就表示该方法的终止。步骤T708测试计数寄存器是否已到达其最终状态。如果没有,方法返回到步骤T702以根据本方法的目的处理存储器组a和b的另一组对应的寄存器。如果计数寄存器处于其最终状态,方法进行到可选计数器复位步骤T709并且在步骤T710结束。输出的读取可在步骤T710完成。
另一个减法方法,SUBTRACT(b-a;a,b)在这里的图10中示出。该方法操作分别存储在存储器组a和b的输入数据值a和b,并返回差b-a,并且比上述的BASIC SUBTRACT更通用。SUBTRACT(b-a;a,b)的主线(步骤T800-T812)类似于上述的步骤T700-T710。为了在必要时实现一个借位过程,SUBTRACT(b-a;a,b)包括两个支路循环,一个由步骤T820-T821定义,另一个由步骤T830-T835、T840和T841定义。借位表示当减去一个特定位置值的数位时利用来自次高位置值的数位的帮助。例如在基数为10的减法95-39中,借位对于最低位置值是需要的,因为“9”在值上超过“5”。借位通过将第一减数的次高位置值数位减少1、将这个1转换到其在较低位置值中的等效值并且把所转换的位置值加到较低位置值数位而发生。在前面的例子中,95的“9”被减少1以得到一个“8”,在位置值10中的“1”被转换成位置值1中的10并且被加到“5”以得到第一减数的最低位置值槽中的“15”。减法通过从“15”减去“9”(具有位置值1的减数“39”的数位)得到“6”而继续。过程继续到下一个位置值数位,并且如果需要的话实现进一步的借位。在前面的例子中,进一步的借位是不需要的,并且减法通过减去具有位置值10的对应数位(即8-3)得到最终结果“56”而完成。
借位的需求可通过对于存储在存储器组a和b中的数字的对应数位的相对值考虑三个可能的情况而确定。当存储器组b的一个数位br大于存储器组a的对应数位ar时,差br-ar是正的,并且不需要借位。当差br-ar是负的时需要借位,并且当br=ar时,可以需要也可不需要借位。当br=ar时对于借位的需要可能依赖于对于具有较低位置值的数位是否需要借位,因为这样的借位可起到减少br并且产生条件br<ar的作用,即使该条件不存在于原先列出的减法中。例如在减法2047-1032中,对于具有100的位置值的零不需要借位。然而在减法2047-1052中需要借位。
SUBTRACT(b-a;a,b)说明对于对应数位br和ar的相对值的三种可能情况。主线(步骤T800-T812)说明br>ar的情况。包括步骤T820和T821的支路循环说明br=ar的情况,包括步骤T830-T835、T840和T841的支路循环说明br<ar的情况。步骤T800-T803类似于前述的步骤T700-T703。步骤T803控制通过主线和支路循环的计算的流。当br>ar时,寄存器br在对应的寄存器ar之前递增到其置位状态,并且方法仅通过步骤T803的“N0”支路前进。在这种情况,重复步骤T802、T803和T804直到br被递增至其复位状态,并且方法继续到步骤T805,其中br复位到0,使得进一步的递增直到寄存器ar被转换到其置位状态才发生。步骤T806说明在寄存器br已经被复位之后的递增,并且步骤T807测试寄存器ar是否已经递增到其置位状态。
直到ar处于其置位状态才发生递增,并且方法接着进行到可选步骤T808以复位寄存器ar。因为期望的减法结果对应于存储器b的内容,步骤T808是可选的。
当br=ar时(也就是当对应于存储在存储器组a和b中的原始数字的相同的位置值的数位相等时或当借位产生存储器组a和b中的对应数位的相等时)寄存器ar和br在相同的迭代中被递增到其置位状态。当此发生时,方法进行到步骤T820并且继续到步骤T821。当寄存器ar已经在步骤T803中被确定为处于其置位状态时,步骤T820测试寄存器br是否处于其置位状态。当br=ar时,方法从步骤T820进行到步骤T821,其中复位寄存器br和ar。ar和br的复位是可选的。但是复位br可能是优选的,因为在完成该方法时存储器组b的内容对应于期望的减法结果,并且因为在本实施例中复位状态在形式上对应于数位0。但是,替换的,在本方法的上下文中,寄存器br的置位状态也可被解释为0数位,因为最终读取复位状态要求将复位状态转换到置位状态。在步骤T821结束时,方法返回到主线。
当br<ar时,需要借位。在这种情况下,寄存器ar在对应的寄存器br之前递增到其置位状态,并且方法从步骤T803进行到步骤T820到步骤T830,T830是用于实现一个借位协议的支路循环的进入点。步骤T830引入第二计数寄存器s并且将其初始值设置成计数寄存器r的当前值。计数寄存器s是独立于计数寄存器r的并且可以用于指向或指定不同于由计数寄存器r指向的寄存器的存储器组的一个寄存器。
借位要求考虑在位置值中比在步骤T830中指向的寄存器高一级的对应的寄存器。可以设想用于借位的两个可能策略。在第一策略中,存储器组b的更高的位置值数位减少1,并且通过给在步骤T830中指向的存储器组b的寄存器加上10(或无论所使用的算术系统的基数的值是什么)来补偿。在第二策略中,存储器组a的更高的位置值数位递增1,并且通过从在步骤T830中指向的存储器组a的寄存器减去10(或无论所使用的算术系统的基数的值是什么)来补偿。两种策略都构成本发明的实施例。后一种策略在图10中描述的方法中实现并且在下面更全面的描述。
在步骤T830中,计数寄存器r和s两者都指向预期需要借位的存储器组a和b的对应寄存器。当方法到达步骤T830时,寄存器ar处于其置位状态。在步骤831,寄存器ar被复位。因为置位状态超过对应于最大可存储数字的编程状态一个递增,其在借位的上下文中可被看作是对应于算术系统的基数的值。例如如果该计算被应用于基数为10的系统中的数字,在置位状态之前紧接的编程状态与一个“9”关联并且置位状态可被看作是“10”。当在这个上下文中观察时,在步骤T831复位寄存器ar可被看作是将ar的值减少10。对该减少的补偿可通过将具有一个比ar的位置值高1的位置值的寄存器递增1。在步骤T832之前,计数寄存器s处于与计数器存器a相同的状态,并指向与在步骤T831复位的寄存器ar相同的寄存器as。在步骤T832中将计数寄存器s递增1对应于使计数寄存器s指向具有比在步骤T831复位的寄存器ar高1的位置值的寄存器。在步骤T833中,与s的递增值关联的寄存器被递增1,以完成借位过程。
步骤T834说明特殊情况,其中在步骤T833中发生的递增将寄存器转换到其置位状态。例如,在基数为10时,当其位置值比在步骤T831中置位的寄存器的位置值高1的寄存器存储了一个“9”时出现这种情况。当出现这种情况时,需要将借位扩展到其位置值比在步骤T833中置位的寄存器的位置值高一级的寄存器。必要的处理步骤开始于步骤T840,这是一个在该特殊情况下复位在步骤T833中置位的寄存器的步骤。在步骤T841中,在预期了跳过具有在步骤T840中复位的寄存器的位置值的存储器组b的寄存器时,计数存储器r被递增1。由步骤T841表示的跳过是需要的,因为一旦存储器组a的对应寄存器被转换成0,存储器组b的对应寄存器不需要被进一步处理,因为其处于对于最后的减法结果所需要处于其中的状态。在完成步骤T841时,方法前进回到用于另一个迭代的步骤T832。步骤T832将计数寄存器s递增1以表示指向在次高位置值的对应的寄存器。在步骤T833中,由计数寄存器s指向的存储器组a的寄存器被递增1以完成借位过程(现在是从预期的需要借的数位中移去的两个数位)。再次遇到步骤T834时,提供数位的进一步移位,由此如果需要的两个数位则通过分支“是”实现借位。在基数为10的情况下,每当具有值“9”的一系列连续数位存在于减数a中时(例如当b-a中的减数a是诸如29997这样的数字时),重复移位需要用于实现借位的数位。一旦借位完成,该方法进行到步骤T835,其中计数寄存器s是可选择地被复位,以便如果在以后的迭代中需要的话,使其准备好服务于进一步的借位。
在完成步骤T808、T821或T835中的一个时,该方法继续到步骤T809,其中计数寄存器r被递增1以表示或指定将被该方法处理的下一数位。在减法的情况下,优选地以递增的位置值的顺序处理数位,使得r的初始值对应于对具有“1”的位置值的数位的处理。r的下一个值对应于对具有“10”的位置值的数位的处理等等。步骤T810测试计数寄存器r是否已到达其最终状态并且安排方法执行另一个迭代或由此而终止。
乘法
在一个实施例中,乘法可通过重复应用加法算法来完成。该实施例认识到乘法只不过是重复多次的加法过程。例如3乘以5等效于加法3+3+3+3+3;即是五个3的相加。可以等效地将其看作为三个5的相加(5+5+5)。根据该实施例,乘法可通过完成适当次数的加法过程来完成。可很容易地设想该实施例的推广。第一和第二乘法因子被分别提供并且对一个因子的重复相加是根据另一个因子完成的。如果第一因子被重复相加,则第二因子控制第一因子对自己相加的次数以实现乘法。特别地,加法运算的数量比第二因子的数值小1。从上面的例子中,通过将3对应于第一因子和将5对应于第二因子来说明。因此,根据第二因子5重复地加3。如上所示,加法运算的数量比5小1(注意四次加法运算发生在3+3+3+3+3中)。
实现前面的实施例的名为BASIC MULTIPLY(ab;a;b)(基本加(ab;a;b))被包括在这里的图11中。该方法将因子a和b作为输入并产生积ab作为输出。该方法开始于步骤T900,其可包括在多状态相变材料适当的位置、寄存器或存储器组中存储因子a和b。编程状态、编程区间和数值的分配也可在步骤T900中完成。存储可包括提供足够的能量以将相变材料转换到与所存储的数字关联的编程状态。在步骤T901初始化倍数寄存器m。倍数寄存器的目的是跟踪其中一个因子自加的次数。倍数寄存器递增的次数由没有重复自加的因子确定。索引m被用于计数倍数并且确立了初始(minitial)和最终(mfinal)状态,使得在其初始和最终状态之间递增的次数比未被重复相加的因子的数值少1。
在这里的图11中描述的实施例中,在步骤T902重复地加因子b,使得因子a用于建立倍数寄存器的初始和最终状态。例如如果因子a等于3,则分隔倍数寄存器的初始和最终状态的递增次数将是2。在本例中,在对应于m=minitial的迭代中,b+b=2b被计算,并且倍数寄存器m在步骤T903中递增到m=minitial+1。步骤T904询问倍数寄存器m是否已到达其最终状态。在本例中,要求另外的迭代。继续到对应于m=minitial+1的迭代,2b+b=3b在步骤T902中被计算,并且倍数寄存器m在步骤T903中增加到m=minitial+2。由于在本例中a=3,已获得期望的乘积ab=3b并且现在可进行到可选倍数寄存器复位步骤T905,其中倍数寄存器被复位到其初始状态或某一其他期望的起始状态。注意,倍数寄存器已经递增了比本例的因子a的数值少1的次数。如果倍数寄存器由相变材料构成,初始化步骤T901或可选复位步骤T905可包括将倍数寄存器转换到其置位状态,之后进一步施加能量以建立想要的初始或起始状态。在步骤T906,其中因子b被存储并重复相加的存储器组或相变材料的部分被读取以获得输出的乘积。
在一个优选实施例中,倍数寄存器由相变材料构成并且状态mfinal对应于置位状态。在本实施例中,minitial被选择成使得对数目比前例中的乘法因子a小1的编程脉冲或递增区间的提供将倍数寄存器转换到其置位状态。
通过该方法的多次迭代,在步骤T902中的因子b的重复的相加可能产生对进位的需要。当需要进位时,可以如上述的ADD方法中描述的那样完成之。
可利用单数位因子或多数位因子来使用BASIC MULTIPLY。当因子b是多数位数字时,加法步骤T902可以按一个寄存器一个寄存器的方式在b的各数位上完成。上述的诸如ADD或BASIC ADD之类的方法可用于完成一个寄存器一个寄存器地相加。
如果负责建立因子b的重复的加法的数量的因子a是很大的数字,则当倍数寄存器包括相变材料时,其可能超过对于倍数寄存器可用的编程状态的数量。考虑在基数为10的系统中b=35和a=12的乘法,其中存储器组的存储器元件和倍数寄存器包括具有10个对应于数位0-9的编程状态的相变材料。在本例中,因子a=12大于对于单个倍数寄存器可用的编程状态的数量。当出现这种情况时,乘法仍然通过重复的加法完成。但是需要例如利用因子a的每个数位或位置值的分离的倍数寄存器适当地说明加法重复的次数。例如在当前的例子中,其中a=12,第一倍数寄存器为数位“2”定义,并且第二倍数寄存器可为数位“1”定义。但是这样的方法需要跟踪位置值。例如,必须认识道存储在第二倍数寄存器中的“1”对应于在第一倍数寄存器中的“10”。
可以有说明位置值的几种方法。在一个简单的实施例中,次级倍数寄存器或次级倍数寄存器组可被建立以为乘法因子a中的更高的位置值数位跟踪合适的加法数量。例如在乘法因子a=12的前例中,具有位置值10的数位1要求包含9(10-1)个加法步骤,这类似于步骤T902。该9个加法可通过对于每次加法将次级倍数寄存器递增1、并且在次级倍数寄存器已经递增了9次之后终止来解决。这个程序也可用于为乘法因子a中的更高位置值的数位要求的任何次数的重复加法。在本实施例中,次级倍数寄存器或寄存器组可对于每次加法递增1,并且当存储在次级倍数寄存器或寄存器组中的数字比乘法因子a小1时终止加法。终止条件可通过比较乘法因子a的值与比存储在次级倍数寄存器或寄存器组的值大1的值而被测试。实现该比较的一个方式是以一个一个的方式递增存储乘法因子a的存储器组和所述倍数寄存器或寄存器组,其中在开始比较之前已将倍数寄存器或寄存器组递增1。当存储乘法因子a的存储器组的对应寄存器和倍数寄存器或寄存器组(在比较之前已递增1)在相同的迭代期间都转换到置位状态,则已完成正确数量的加法。
说明位置值的另一个方法是移位。移位后面的策略是根据数位的位置值增加由乘法因子a中的更高位置值的数位确定的简单求和的各数位的位置值。例如在前面的b=35和a=12的例子中,在乘法因子a中的数位1可通过取b的一倍并且接着将其的每一数位移位到一个更高的位置值而被包括。b的一倍为35。移位到高一级的位置值将35转换到350。最后的结果350表示在乘法因子a=12中的数位“1”对所期望的乘法结果的贡献。通过将350(a=12中的数位“1”的贡献)加到70(35+35;a=12中的数位“2”的贡献),得到最后的乘法结果。可利用任何位置值的数位来使用该移位方法。例如在本实施例中百位需要通过将位置值向上移位两步。与在这里的图11中描述的BASIC MULTIPLY方法结合的移位方法提供根据乘法因子a的多数位的、一个寄存器一个寄存器的乘法因子b的重复的加法。对于乘法因子a的每个数位,重复的加法可根据BASIC MULTIPLY来完成,并且根据位置值被位移以便说明乘法因子a的每个数位对所期望的乘法结果的贡献。所期望的乘法结果最终可通过对乘法因子a的所有数位的贡献求和来得到。
除法
在一个实施例中,除法被看作是重复从被除数减去除数直到被除数减少到0或0到除数的一倍之内。这一实施例与上述乘法的重复加法的概念类似。与重复加法不同,重复减法频繁遇到其中被除数不是除数的整数倍的情况。只有那些作为一个特定被除数的因子的那些除数可被平均分到该被除数中。重复减去作为被除数的因子的除数可将被除数减少到0。相反,重复减去不是被除数的因子的除数不能将被除数减少到0。用不是被除数的因子去除被除数的除法的结果包括一个整数和一个余数,或等效地一个整数或一个分数(或其十进制等效物)。例如被除数13除以除数3导致4以及余数1或4以及分数1/3。
通过重复减法完成除发的方法BASIC DIVIDE(b/a;a,b)在图12中示出。该方法接受一个被除数b、一个除数a并给出除法结果b/a。该方法开始于步骤T950,其可包括将被除数和除数存储到包括相变材料的存储器组。在方法的开始处,被除数b存在于或被存储到存储器组b并且除数a存在于或被存储到存储器组a。编程状态、编程区间和数值的分配也可在步骤T950中完成。存储可包括提供足够的能量以将相变材料转换到与所存储的数字关联的编程状态。在步骤T951初始化倍数寄存器。倍数寄存器的目的是对从被除数b减去除数a的次数进行计数。步骤T952是比较步骤,确定是否要从被除数b减去除数a。当被除数b大于除数a,从b进一步减去a而不产生负数是可能的。当除数a从被除数b被减去足够的次数后,b变得比a小。此时,不期望进一步的减法并且存储在存储器组b的值对应于除法结果的余数部分。
如果b大于a,方法从步骤T952前进到步骤T953,执行从b减去除数a的减法。当完成步骤T953时,除数a的值没有被改变,然而被除数b的值被减少了。在图12的实施例中,减法结果b-a在存储器组b中完成。在另一个存储器组中完成减法、同时在存储器组b中保留原始的b值同样是可行的。步骤T953的减法可通过利用如上述的BASICSUBTRACT和SUBTRACT之类的方法或等效方法而完成。在完成步骤T953时,方法进行到步骤T954,其中倍数寄存器可被递增1以表示完成从b减去一次a。方法返回到步骤T952并再次测试b是否大于a。如果b大于a,方法重复步骤T953和T954。
通过步骤T953和T954的迭代继续直到b不再大于a。在计算中的此刻,方法从步骤T952前进到步骤T955以测试是否b=a。如果b=a,除数a是原始被除数的因子,并且方法进行到步骤T956,其中b被设置为等于0。步骤T956可通过直接将存储器组b设置成0或通过再次执行b-a来完成。当完成步骤T956时,方法进行到步骤T957,其中倍数寄存器被递增1并接着到步骤T958。如果在步骤T955发现b不等于0,该方法还进行到步骤T958。在步骤T958中,存储在存储器组b中的当前值被确定。当通过重复地从b减去a而产生了b<a的条件时,存储在存储器组b中的值对应于期望的除法结果的余数。如果除数a被发现是原始被除数的因子,b的值在步骤T958确定为0。T959确定倍数寄存器m的最终值。该值提供除数已经从原始被除数b中被减去的次数,以及当与余数组合时,提供除法问题b/a的解。如果倍数寄存器的初始值minitial是0,在步骤T959中确定的最终值直接提供包含在原始被除数b中的除数的倍数。如果m的初始值不是0,则m的初始和最终值之间的差给出包含在原始被除数b中的除数的倍数。在一个优选的实施例中,minitial是0。
比较步骤T952可用几种方式完成。简单的比较测试将比较存在于存储器组b中的先行零的数量和存在于存储器组a中的先行零的数量。如果存储器组a包含比存储器组b更多的先行零,则存储在存储器组b的值大于存储在存储器组a的值并且方法应进行到步骤T953。先行零的数量可通过读取存储器组a和b的各个寄存器和测试0的存在来确定。优选地,读取寄存器按照递减的寄存器位置值来进行。一旦遇到非先行零数位,就容易地确定先行零的数量。如果置位状态被选择为对应于0,读取寄存器可通过简单的电阻测量来完成。如果复位状态被选择为0,寄存器必须递增到置位状态。如果编程脉冲或递增区间的数量对应于寄存器可能的最大数字,可以得出寄存器初始地处于复位状态并存储0的结论。
当出现在存储器组b和a中的先行零的数量相等时,或者如果优选了替换的比较方法,也可能实现存在于存储器组b和a中的值的直接比较。一个直接比较方法包括以一个一个的方式递增存储器组b和a,直到两个存储器组的其中一个被转换到其置位状态。在同时递增的情况下,首先转换到其置位状态的存储器组对应于存储较大数字的存储器组。例如如果存储器组b存储7并且存储器组a存储4,则在同时递增时,存储器组b将首先被转换到其置位状态,自然也对应于较大的数字。可设计类似的测试,其中存储器组b和a在两个或更多的寄存器中包括非零位。
优选地在具有最高位置值的不存储0的寄存器处初始化比较。在此优选的实施例中,如果存储器组b和a包含存储非先行零数位的不同数量的寄存器,则测试单个寄存器允许确定b是否大于a。当存储器组b和a包括相同数量的先行零寄存器时,比较存储器组a和b的具有最高位置值的非先行零寄存器允许确定b是否大于a,只要在存储器组a和b中存储的数字的最高位置值的数位具有不同的数值。如果它们具有相同的值,比较测试继续到存储器组a和b的具有次高位置值的寄存器,并重复直到确定究竟是存储器组a还是b存储了最大的数值。该程序也可用于确定b是否等于a。如果存储在存储器组a和b中的数字的所有对应数位都相等,那么b=a并且步骤T955的条件得到满足。
这里所阐述的公开内容是示例性的而不打算限制本发明的实践。许多等效实施例及其变型(包括在公开的计算方法中的某些步骤的顺序的显然的置换)并被看作是落在本发明的范围内。下面的权利要求书(包括所有的等效条款)结合了前面的公开内容限定了本发明的范围。

Claims (95)

1.一种计算方法,包括步骤:
提供一个存储器组,所述存储器组具有一个或多个寄存器,所述寄存器包括数字多状态相变材料,所述相变材料具有多个状态,所述状态包括:复位状态;通过施加对应于所述复位状态的置位能量的能量数量而从所述复位状态可得到的置位状态,所述置位状态具有比所述复位状态更低的电阻;以及一个或多个具有基本上与所述复位状态相同电阻的中间状态,所述一个或多个中间状态可以通过施加比所述复位状态的所述置位能量少的能量数量而从所述复位状态得到;
通过将能量提供给所述一个或多个寄存器以实现所述寄存器的所述多个状态中的一个或多个之间的转换,从而执行一个从由加、减、乘和除组成的组中选择的数学运算。
2.权利要求1的方法,其中所述数学运算可从由减、乘和除组成的组中选择。
3.权利要求1的方法,其中所述数学运算以非二进制的方式完成。
4.权利要求1的方法,其中所述相变材料包括从由In、Ag、Te、Se、Ge、Sb、Bi、Pb、Sn、As、S、Si、P、O组成的组中选择的一种或多种元素及其混合物或其合金。
5.权利要求1的方法,其中所述相变材料包括Ge和硫族元素。
6.权利要求5的方法,其中所述相变材料进一步包括Sb。
7.权利要求1的方法,其中所述相变材料包括至少一种硫族元素和至少一种过渡金属元素。
8.权利要求7的方法,其中所述至少一种硫族元素是Te和Se两者的混合物。
9.权利要求7的方法,其中所述至少一种过渡金属元素从由Cr、Fe、Ni、Nb、Pd、Pt及其混合物或其合金组成的组中选择。
10.权利要求1的方法,其中所述相变材料具有从所述多个状态选择的一个或多个编程状态,所述编程状态具有被分配给它们的数值,每个所述编程状态可以通过施加不超过所述置位能量的能量数量而从所述复位状态得到,所述编程能量表示与对应于所述编程能量的编程状态关联的数值。
11.权利要求10的方法,其中所述执行步骤包括在所述相变材料中存储一个或多个数字,所述存储包括将所述相变材料的一个或多个部分转换到与所述一个或多个数字关联的编程状态。
12.权利要求10的方法,其中所述编程状态包括所述一个或多个中间状态中的至少一个。
13.权利要求10的方法,其中所述编程状态包括所述复位状态。
14.权利要求13的方法,其中被分配给所述复位状态的数值是0。
15.权利要求10的方法,其中所述编程状态包括所述置位状态。
16.权利要求15的方法,其中被分配给所述置位状态的数值是0。
17.权利要求10的方法,其中所述编程状态的每一个的编程能量正比于被分配给所述编程状态的数值。
18.权利要求10的方法,其中所述编程状态按能量等分。
19.权利要求10的方法,其中所述数值是连续整数。
20.权利要求19的方法,其中所述连续整数以编程能量增加的顺序与所述编程状态关联。
21.权利要求10的方法,其中在所述执行步骤中提供的所述能量包括将所述相变材料从一个所述编程状态转换到另一个所述编程状态所需的能量。
22.权利要求1的方法,其中在所述执行步骤中提供的所述能量以电能的形式提供。
23.权利要求22的方法,其中所述电能是一个或多个电流脉冲的形式。
24.权利要求23的方法,其中所述一个或多个电流脉冲是等能量的。
25.权利要求1的方法,其中所述执行步骤包括在所述相变材料中存储一个数字。
26.权利要求25的方法,其中所述存储器组的所述寄存器中的每一个对应于一个不同的位置值。
27.权利要求26的方法,其中所述数字的每个数位被存储在对应于所述数位的位置值的所述存储器组的寄存器中。
28.权利要求1的方法,其中所述执行步骤包括在所述相变材料中存储多个数字。
29.对具有多个状态的数字多状态相变材料进行编程的方法,所述状态包括:复位状态;通过施加对应于所述复位状态的置位能量的能量数量而从所述复位状态可得到的置位状态,所述置位状态具有比所述复位状态更低的电阻;以及一个或多个具有基本上与所述复位状态相同电阻的中间状态,所述一个或多个中间状态通过施加比所述复位状态的所述置位能量更少的能量数量而从所述复位状态得到,所述方法包括:
建立一个编程策略,所述编程策略包括为各所述相变材料定义编程状态,所述定义编程状态包括将数据值分配给所述编程状态,所述编程状态可通过施加表征所述数据值的编程能量给所述相变材料的所述复位状态而得到,所述编程能量没有超过所述复位状态的所述置位能量,
提供输入数据,所述输入数据具有一个值;和
把足够将所述相变材料转换到与所述输入数据值关联的编程状态的能量数量提供给所述相变材料。
30.权利要求29的方法,其中所述输入数据是一个数字。
31.权利要求30的方法,其中连续整数值被分配给所述编程状态。
32.权利要求31的方法,其中所述连续整数值以所述编程能量增加的顺序被分配给所述编程状态。
33.权利要求31的方法,其中最小的所述连续整数值是0。
34.权利要求30的方法,其中所述编程状态包括所述复位状态。
35.权利要求34的方法,其中所述值0与所述复位状态关联。
36.权利要求30的方法,其中所述编程状态包括所述置位状态。
37、权利要求36的方法,其中所述值0与所述置位状态关联。
38.权利要求30的方法,其中编程状态的数量等于在其中表示所述数字的算术系统的基数。
39.权利要求30的方法,其中编程状态的数量等于10或2的倍数。
40.权利要求29的方法,其中所述编程状态用统一的能量区间分割。
41.权利要求29的方法,其中所述提供能量的步骤通过以能量脉冲的形式提供能量来完成。
42.权利要求29的方法,其中所述提供能量的步骤通过以电能的形式提供能量来完成。
43.权利要求42的方法,其中所述电能以电压的形式提供。
44.权利要求42的方法,其中所述电能以电流的形式提供。
45.权利要求29的方法,其中所述提供能量的步骤通过以光能的形式提供能量来完成。
46.权利要求29的方法,其中所述提供能量的步骤通过以热能的形式提供能量来完成。
47.权利要求29的方法,其中所述相变材料包括从由Te、Se、Ge、Sb、Bi、Pb、Sn、As、S、Si、P、O组成的组中选择的一种或多种元素及其混合物或其合金。
48.权利要求29的方法,其中所述相变材料包括至少一种硫族元素和至少一种过渡金属元素。
49.权利要求48的方法,其中所述至少一种氧族元素是Te和Se两者的混合物。
50.权利要求48的方法,其中所述至少一种过渡金属元素从由Cr、Fe、Ni、Nb、Pd、Pt及其混合物或其合金组成的组中选择。
51.一种复位方法,包括步骤:
提供一个具有一个或多个寄存器的存储器组,所述寄存器包括数字多状态相变材料,所述相变材料具有多个状态,所述状态包括:复位状态;通过施加对应于所述复位状态的置位能量的能量数量而从所述复位状态可得到的置位状态,所述置位状态具有比所述复位状态更低的电阻;以及一个或多个具有基本上与所述复位状态相同电阻的中间状态,所述一个或多个中间状态可以通过施加比所述复位状态的所述置位能量更少的能量数量而从所述复位状态得到;
提供一个包括所述数字多状态相变材料的计数寄存器,所述计数寄存器具有多个编程状态,所述编程状态可以通过施加在数量上没有超过所述计数寄存器的所述复位状态的置位能量的编程能量而从所述计数寄存器的复位状态得到,所述编程状态的数量大于或等于不处于所述复位状态的所述存储器组的寄存器的数量;
把所述计数寄存器分配给所述存储器组,所述分配包括为不处于所述复位状态的所述存储器组的所述寄存器指定一个不同的所述编程状态,由此不处于所述复位状态的所述存储器组的所述寄存器的每一个与一个不同的所述指定的编程状态关联;
定义所述计数寄存器的初始编程状态,所述初始编程状态对应于所指定的具有最低编程能量的编程状态;
定义所述计数寄存器的最终编程状态,所述最终编程状态对应于所指定的具有最高编程能量的编程状态;
初始化所述计数寄存器,所述初始化包括提供足够将所述计数寄存器转换到所述初始编程状态的能量;
当所述计数寄存器处于不同于所述最终编程状态的所指定的编程状态时,迭代地执行下列步骤a-c:
a.提供在数量上足够将所述存储器组的所述关联的寄存器转换到其置位状态的能量给与所述计数寄存器的所指定的编程状态关联的所述存储器组的寄存器;
b.提供复位能量给所述存储器组的所述关联的寄存器,所述复位能量足以将所述关联的寄存器从其置位状态转换到其复位状态;
c.递增所述计数寄存器,所述递增包括施加将所述计数寄存器转换到不同的所指定编程状态所需的最小数量的能量递增;
提供在数量上足够将与所述最终编程状态关联的所述存储器组的所述寄存器转换到其置位状态的能量给与所述计数寄存器的所述最终编程状态关联的所述存储器组的寄存器;
提供复位能量给与所述最终编程状态关联的所述存储器组的所述寄存器,以将与所述最终编程状态关联的所述存储器组的所述寄存器从其置位状态转换到其复位状态;
52.权利要求51的方法,其中所述分配步骤还包括为处于所述复位状态的所述存储器组的所述寄存器指定一个不同的所述编程状态,由此所述存储器组的所述寄存器的每一个与一个不同的所述指定的编程状态关联。
53.权利要求51的方法,其中所述指定的编程状态用统一的能量区间分割。
54.权利要求53的方法,其中所述计数寄存器的置位状态用所述统一的能量区间从所述计数寄存器的所述最终编程状态分割。
55.权利要求51的方法,其中所述最终编程状态是所述计数寄存器的置位状态。
56.权利要求51的方法,其中所述计数寄存器的编程状态的数量等于所述存储器组中的寄存器的数量。
57.一种加法方法,包括步骤:
提供具有多个状态的数字多状态相变材料,所述状态包括:复位状态;通过施加对应于所述复位状态的置位能量的能量数量而从所述复位状态可得到的置位状态,所述置位状态具有比所述复位状态更低的电阻;以及一个或多个具有基本上与所述复位状态相同电阻的中间状态,所述一个或多个中间状态可以通过施加比所述复位状态的所述置位能量更少的能量数量而从所述复位状态得到;
在所述相变材料的第一部分中存储第一个数字,所述存储第一个数字包括提供表征所述第一个数字的能量给所述相变材料的所述第一部分,
提供表征第二个数字的能量给所述相变材料。
58.权利要求57的方法,其中所述存储步骤包括提供对应于所述第一个数字的能量给所述相变材料的所述第一部分的复位状态。
59.权利要求58的方法,其中对应于所述第一个数字的所述能量正比于所述第一个数字的数值。
60.权利要求57的方法,其中提供表征第二个数字的能量的步骤包括提供对应于所述第二个数字的能量给所述相变材料的复位状态。
61.权利要求60的方法,其中对应于所述第二个数字的所述能量正比于所述第二个数字的数值。
62.权利要求57的方法,其中表征所述第二个数字的能量被提供给所述相变材料的所述第一部分。
63.一种加法方法,包括步骤:
提供具有多个状态的数字多状态相变材料,所述状态包括:复位状态;通过施加对应于所述复位状态的置位能量的能量数量而从所述复位状态可得到的置位状态,所述置位状态具有比所述复位状态更低的电阻;以及一个或多个具有基本上与所述复位状态相同电阻的中间状态,所述一个或多个中间状态可以通过施加比所述复位状态的所述置位能量更少的能量数量而从所述复位状态得到;
为所述相变材料定义编程状态,所述编程状态从所述多个状态中选择,所述编程状态具有编程能量,所述编程能量对应于将所述相变材料从其复位状态转换到所述编程状态所要求的能量数量;所述编程能量不超过所述复位状态的置位能量;
分配数值给所述编程状态;
在所述相变材料的第一部分中存储第一个数字,所述存储第一个数字包括提供在数量上足够将所述相变材料的所述第一部分转换到与所述第一个数字的数值关联的编程状态的能量,
提供表征第二个数字的能量给所述相变材料。
64.权利要求63的方法,其中所述数值随所述编程状态的编程能量增加而增加。
65.权利要求63的方法,其中所述数值正比于所述编程状态的编程能量。
66.权利要求63的方法,其中所述数值是从0开始的连续整数。
67.权利要求63的方法,其中所述数值0被分配给所述相变材料的所述置位状态。
68.权利要求63的方法,其中表征所述第二个数字的能量是将所述相变材料转换到与所述第二个数字的数值关联的编程状态所需的能量。
69.权利要求63的方法,其中所述提供表征所述第二个数字的能量步骤包括在所述相变材料的第二个部分中存储所述第二个数字,所述存储包括将所述相变材料的所述第二部分转换到与所述第二个数字的数值关联的编程状态。
70.权利要求69的方法,还包括步骤:
提供第一置位能量给所述相变材料的所述第一个部分,所述第一置位能量实现将所述相变材料的所述第一个部分从与所述第一个数字的数值关联的编程状态转换到其置位状态;
将所述第一置位能量提供给所述相变材料的第三个部分的复位状态;
提供第二置位能量给所述相变材料的所述第三个部分,所述第二置位能量实现将所述相变材料的所述第三个部分转换到其置位状态;
将所述第二置位能量提供给所述相变材料的所述第二个部分。
71.一种加法方法,包括步骤:
提供具有多个状态的数字多状态相变材料,所述状态包括:复位状态;通过施加对应于所述复位状态的置位能量的能量数量而从所述复位状态可得到的置位状态,所述置位状态具有比所述复位状态更低的电阻;以及一个或多个具有基本上与所述复位状态相同电阻的中间状态,所述一个或多个中间状态可以通过施加比所述复位状态的所述置位能量更少的能量数量而从所述复位状态得到;
将所述相变材料的至少一个部分分割成存储器组,所述存储器组的每一个对应于为存储多数位数字的目的而分派的所述相变材料的容量;
将所述存储器组划分成多个寄存器,所述寄存器对应于为存储所述多数位数字的一个数位的目的而分派的所述存储器组的部分,所述寄存器具有编程状态,所述编程状态从所述相变材料的所述多个状态中选择,所述编程状态具有编程能量,所述编程能量对应于将所述相变材料从其复位状态转换到所述编程状态所要求的能量数量;所述编程能量不超过所述复位状态的所述置位能量;
分配数值给所述编程状态;
将位置值与所述存储器组的寄存器关联,所述存储器组的每一个包括相同的位置值;
将第一多数位数字写到第一存储器组,所述写包括根据位置值将所述多数位数字的各数位存储到所述第一存储器组的寄存器,所述存储包括将所述寄存器转换到与所述数位的数值关联的编程状态;
将表征第二个数字的能量提供给所述相变材料。
72.权利要求71的方法,其中所述提供能量步骤包括将表征所述第二个数字的每个数位的能量提供给所述第一存储器组的适当的寄存器,所述适当的寄存器是对应于所述第二个数字的所述数位的位置值的寄存器。
73.权利要求71的方法,其中所述提供能量步骤包括将所述第二个数字写到第二存储器组,所述写包括将所述第二个数字的所述数位存储到所述第二存储器组的分离的寄存器中,所述分离的寄存器的每一个对应于具有不同位置值的数位,所述存储包括将所述寄存器转换到与所述数位的数值关联的编程状态。
74.权利要求73的方法,还包括步骤:
建立用于指向一个或多个存储器组的寄存器的计数器,所述计数器具有计数值,所述计数值对应于计数器编程状态;
将其中存储有一个数位的所述第一存储器组的每一个寄存器与所述计数器编程状态的一个连续集中的一个关联;
将所述第二存储器组的每一个寄存器与计数器编程状态关联,所述计数器编程状态与具有相同位置值的所述第一存储器组的寄存器关联;
将第三存储器组的每一个寄存器与计数器编程状态关联,所述计数器编程状态与具有相同位置值的所述第一存储器组的寄存器关联;
初始化所述计数器到一个初始计数器值,所述初始计数器值对应于一个初始计数器编程状态,所述初始计数器编程状态对应于具有最低计数器值的所述连续编程状态集内的计数器编程状态;
当所述计数器具有所述连续计数器值集内的一个计数器值时,迭代地执行下列步骤a-e:
a.将第一置位能量提供给由所述计数器指向的所述第一存储器组的寄存器,被指向的所述第一存储器组的所述寄存器对应于与所述计数器的值关联的所述第一存储器组的寄存器,所述第一置位能量将被指向的所述第一存储器组的所述寄存器转换到其置位状态;
b.将所述第一置位能量提供给由所述计数器指向的所述第三存储器组的寄存器的复位状态,被指向的所述第三存储器组的所述寄存器对应于与所述计数器的值关联的所述第三存储器组的寄存器;
c.将第二置位能量提供给被指向的所述第三存储器组的所述寄存器,所述第二置位能量将被指向的所述第三存储器组的所述寄存器转换到其置位状态;
d.将所述第二置位能量提供给由所述计数器指向的所述第二存储器组的寄存器,被指向的所述第二存储器组的所述寄存器对应于与所述计数器的值关联的所述第二存储器组的寄存器;
e.递增所述计数器的值。
75.权利要求74的方法,其中所述计数器包括所述相变材料。
76.权利要求75的方法,其中所述计数器编程状态从所述相变材料的所述多个状态中选择。
77.权利要求76的方法,其中在所述迭代步骤a-e结束后的计数器编程状态是所述相变材料的置位状态。
78.权利要求74的方法,其中计数器编程状态的数量与所述寄存器的编程状态的数量相同。
79.一种减法方法,包括步骤:
提供具有多个状态的数字多状态相变材料,所述状态包括:复位状态;通过施加对应于所述复位状态的置位能量的能量数量而从所述复位状态可得到的置位状态,所述置位状态具有比所述复位状态更低的电阻;以及一个或多个具有基本上与所述复位状态相同电阻的中间状态,所述一个或多个中间状态可以通过施加比所述复位状态的所述置位能量更少的能量数量而从所述复位状态得到;
将第一个数字存储到所述相变材料的第一容量中,所述存储第一个数字包括将表征所述第一个数字的能量提供给所述相变材料的所述第一容量的复位状态,表征所述第一个数字的所述能量不超过所述复位状态的所述置位能量;
将第二个数字存储到所述相变材料的第二容量中,所述存储第二个数字包括将表征所述第二个数字的能量所述提供给所述相变材料的所述第二容量的复位状态,表征所述第二个数字的所述能量不超过所述复位状态的所述置位能量;
将第一置位能量提供给所述相变材料的所述第一容量,所述第一置位能量将所述相变材料的所述第一容量转换到其置位状态;
将所述第一置位能量提供给所述相变材料的所述第二容量。
80.权利要求79的方法,其中表征所述第一个数字的所述能量正比于所述第一个数字并且表征所述第二个数字的所述能量正比于所述第二个数字。
81.权利要求79的方法,其中所述将所述第一置位能量提供给所述第二容量步骤包括步骤:
将所述第一置位能量的第一部分提供给所述相变材料的所述第二容量,所述第一部分足以将所述第二容量转换到其置位状态;
复位所述第二容量;
将所述第一置位能量的余值提供给所述第二容量。
82.权利要求79的方法,还包括步骤:
为所述相变材料定义编程状态,所述编程状态从所述多个状态中选择,所述编程状态具有编程能量,所述编程能量对应于将所述相变材料从其复位状态转换到所述编程状态所要求的能量数量,所述编程能量不超过所述复位状态的所述置位能量;
分配数值给所述编程状态。
83.权利要求82的方法,其中所述存储第一个数字的步骤包括提供在数量上足以将所述相变材料的所述第一容量转换到与所述第一个数字的数值关联的编程状态的能量。
84.权利要求82的方法,其中所述存储第二个数字的步骤包括提供在数量上足以将所述相变材料的所述第二容量转换到与所述第二个数字的数值关联的编程状态的能量。
85.将第一个数字与第二个数字相乘的方法,包括步骤:
提供具有多个状态的数字多状态相变材料,所述状态包括:复位状态;通过施加对应于所述复位状态的置位能量的能量数量而从所述复位状态可得到的置位状态,所述置位状态具有比所述复位状态更低的电阻;以及一个或多个具有基本上与所述复位状态相同电阻的中间状态,所述一个或多个中间状态可以通过施加比所述复位状态的所述置位能量更少的能量数量而从所述复位状态得到;
将所述第一个数字存储在所述相变材料的第一部分中;
将倍数寄存器设置到初始值;
对于小于所述初始值和所述第二个数字的和的倍数寄存器的值,执行以下步骤a-b:
a.将所述第一个数字加到存储在所述相变材料的第一部分中的数字,所述相加包括将表征所述第一个数字的能量提供给所述相变材料的所述第一部分;
b.递增所述倍数寄存器;
读取存储在所述相变材料的所述第一部分中的值。
86.权利要求85的方法,还包括步骤:
为所述相变材料定义编程状态,所述编程状态从所述多个状态中选择,所述编程状态具有编程能量,所述编程能量对应于将所述相变材料从其复位状态转换到所述编程状态所要求的能量数量,所述编程能量不超过所述复位状态的所述置位能量;
分配数值给所述编程状态。
87.权利要求86的方法,其中所述存储步骤包括提供在数量上足以将所述相变材料的所述第一部分转换到与所述第一个数字关联的编程状态的能量。
88.权利要求86的方法,其中表征所述第一个数字的能量是将所述相变材料从其复位状态转换到与所述第一个数字关联的编程状态所要求的能量。
89.权利要求85的方法,其中所述倍数寄存器包括所述相变材料的第二部分。
90.将第一个数字除以第二个数字的方法,包括步骤:
提供具有多个状态的数字多状态相变材料,所述状态包括:复位状态;通过施加对应于所述复位状态的置位能量的能量数量而从所述复位状态可得到的置位状态,所述置位状态具有比所述复位状态更低的电阻;以及一个或多个具有基本上与所述复位状态相同电阻的中间状态,所述一个或多个中间状态可以通过施加比所述复位状态的所述置位能量更少的能量数量而从所述复位状态得到;
将所述第一个数字存储在所述相变材料中;
将倍数寄存器设置到初始值;
当存储在所述相变材料中的数字大于或等于所述第二个数字时,迭代地执行下列步骤a-b:
a.从存储在所述相变材料中的数字减去所述第二个数字,所述减法包括提供将所述相变材料转换到对应于所述存储的数字和所述第二个数字之间的差的状态的能量;
b.递增所述倍数寄存器;
读取存储在所述相变材料中的数字;
读取所述倍数寄存器的值。
91.权利要求90的方法,还包括步骤:
为所述相变材料定义编程状态,所述编程状态从所述多个状态中选择,所述编程状态具有编程能量,所述编程能量对应于将所述相变材料从其复位状态转换到所述编程状态所要求的能量数量,所述编程能量不超过所述复位状态的置位能量;
分配数值给所述编程状态。
92.权利要求91的方法,其中所述存储步骤包括提供在数量上足以将所述相变材料的所述第一部分转换到与所述第一个数字关联的编程状态的能量。
93.权利要求91的方法,其中表征所述第一个数字的所述能量是将所述相变材料从其复位状态转换到与所述第一个数字关联的编程状态所要求的能量。
94.权利要求89的方法,其中所述倍数寄存器包括所述相变材料的第二部分。
95.计算一个数字的补码的方法,包括:
提供具有多个状态的数字多状态相变材料,所述状态包括:复位状态;通过施加对应于所述复位状态的置位能量的能量数量而从所述复位状态可得到的置位状态,所述置位状态具有比所述复位状态更低的电阻;以及一个或多个具有基本上与所述复位状态相同电阻的中间状态,所述一个或多个中间状态可以通过施加比所述复位状态的所述置位能量更少的能量数量而从所述复位状态得到;
将一个数字存储在所述相变材料的第一部分中,所述存储包括提供对应于所述数字的能量给所述相变材料的复位状态;所述对应的能量不超过所述复位状态的所述置位能量;
将置位能量提供给所述相变材料的所述第一部分,所述置位能量将所述相变材料的所述第一部分转换到其置位状态;
将所述置位能量提供给所述相变材料的第二部分。
CN03816261XA 2002-05-10 2003-05-01 使用数字多状态相变材料的计算方法 Pending CN1666172A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/144,319 US6671710B2 (en) 2002-05-10 2002-05-10 Methods of computing with digital multistate phase change materials
US10/144,319 2002-05-10

Publications (1)

Publication Number Publication Date
CN1666172A true CN1666172A (zh) 2005-09-07

Family

ID=29400307

Family Applications (1)

Application Number Title Priority Date Filing Date
CN03816261XA Pending CN1666172A (zh) 2002-05-10 2003-05-01 使用数字多状态相变材料的计算方法

Country Status (7)

Country Link
US (6) US6671710B2 (zh)
EP (1) EP1504334A4 (zh)
JP (1) JP2005527026A (zh)
KR (1) KR20050012742A (zh)
CN (1) CN1666172A (zh)
AU (1) AU2003245256A1 (zh)
WO (1) WO2003096177A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156625A (zh) * 2011-03-31 2011-08-17 北京大学 利用阻变器件进行除法计算的方法
CN102299692A (zh) * 2011-06-29 2011-12-28 北京大学 一种基于阻变器件的加法器电路
CN112486454A (zh) * 2019-09-12 2021-03-12 北京华航无线电测量研究所 一种基于fpga的序列多峰值搜索排序装置

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7935951B2 (en) * 1996-10-28 2011-05-03 Ovonyx, Inc. Composite chalcogenide materials and devices
US6638820B2 (en) 2001-02-08 2003-10-28 Micron Technology, Inc. Method of forming chalcogenide comprising devices, method of precluding diffusion of a metal into adjacent chalcogenide material, and chalcogenide comprising devices
JP4742429B2 (ja) * 2001-02-19 2011-08-10 住友電気工業株式会社 ガラス微粒子堆積体の製造方法
US6727192B2 (en) * 2001-03-01 2004-04-27 Micron Technology, Inc. Methods of metal doping a chalcogenide material
US6734455B2 (en) * 2001-03-15 2004-05-11 Micron Technology, Inc. Agglomeration elimination for metal sputter deposition of chalcogenides
US7102150B2 (en) 2001-05-11 2006-09-05 Harshfield Steven T PCRAM memory cell and method of making same
US6951805B2 (en) * 2001-08-01 2005-10-04 Micron Technology, Inc. Method of forming integrated circuitry, method of forming memory circuitry, and method of forming random access memory circuitry
JP2003058364A (ja) * 2001-08-20 2003-02-28 Hiroshi Fukuda 多信号の方法に於ける加乗算の計算方法、加減乗除用回路と方法、とソフトによる表の加減乗除方法
US6881623B2 (en) * 2001-08-29 2005-04-19 Micron Technology, Inc. Method of forming chalcogenide comprising devices, method of forming a programmable memory cell of memory circuitry, and a chalcogenide comprising device
US6955940B2 (en) * 2001-08-29 2005-10-18 Micron Technology, Inc. Method of forming chalcogenide comprising devices
US6784018B2 (en) * 2001-08-29 2004-08-31 Micron Technology, Inc. Method of forming chalcogenide comprising devices and method of forming a programmable memory cell of memory circuitry
US6709958B2 (en) * 2001-08-30 2004-03-23 Micron Technology, Inc. Integrated circuit device and fabrication using metal-doped chalcogenide materials
US20030047765A1 (en) * 2001-08-30 2003-03-13 Campbell Kristy A. Stoichiometry for chalcogenide glasses useful for memory devices and method of formation
US6815818B2 (en) 2001-11-19 2004-11-09 Micron Technology, Inc. Electrode structure for use in an integrated circuit
US6791859B2 (en) * 2001-11-20 2004-09-14 Micron Technology, Inc. Complementary bit PCRAM sense amplifier and method of operation
US6873538B2 (en) * 2001-12-20 2005-03-29 Micron Technology, Inc. Programmable conductor random access memory and a method for writing thereto
US6909656B2 (en) * 2002-01-04 2005-06-21 Micron Technology, Inc. PCRAM rewrite prevention
US20030143782A1 (en) 2002-01-31 2003-07-31 Gilton Terry L. Methods of forming germanium selenide comprising devices and methods of forming silver selenide comprising structures
US6867064B2 (en) * 2002-02-15 2005-03-15 Micron Technology, Inc. Method to alter chalcogenide glass for improved switching characteristics
US6791885B2 (en) * 2002-02-19 2004-09-14 Micron Technology, Inc. Programmable conductor random access memory and method for sensing same
US6809362B2 (en) * 2002-02-20 2004-10-26 Micron Technology, Inc. Multiple data state memory cell
US7087919B2 (en) * 2002-02-20 2006-08-08 Micron Technology, Inc. Layered resistance variable memory device and method of fabrication
US7151273B2 (en) 2002-02-20 2006-12-19 Micron Technology, Inc. Silver-selenide/chalcogenide glass stack for resistance variable memory
US6891749B2 (en) * 2002-02-20 2005-05-10 Micron Technology, Inc. Resistance variable ‘on ’ memory
US6937528B2 (en) * 2002-03-05 2005-08-30 Micron Technology, Inc. Variable resistance memory and method for sensing same
US6849868B2 (en) * 2002-03-14 2005-02-01 Micron Technology, Inc. Methods and apparatus for resistance variable material cells
US6864500B2 (en) * 2002-04-10 2005-03-08 Micron Technology, Inc. Programmable conductor memory cell structure
US6855975B2 (en) * 2002-04-10 2005-02-15 Micron Technology, Inc. Thin film diode integrated with chalcogenide memory cell
US6858482B2 (en) * 2002-04-10 2005-02-22 Micron Technology, Inc. Method of manufacture of programmable switching circuits and memory cells employing a glass layer
DE10219161A1 (de) * 2002-04-29 2003-11-20 Infineon Technologies Ag Vorrichtung und Verfahren zum Umrechnen eines Terms
US6890790B2 (en) 2002-06-06 2005-05-10 Micron Technology, Inc. Co-sputter deposition of metal-doped chalcogenides
US6825135B2 (en) 2002-06-06 2004-11-30 Micron Technology, Inc. Elimination of dendrite formation during metal/chalcogenide glass deposition
US6891170B1 (en) * 2002-06-17 2005-05-10 Zyvex Corporation Modular manipulation system for manipulating a sample under study with a microscope
JP4027282B2 (ja) * 2002-07-10 2007-12-26 キヤノン株式会社 インクジェット記録ヘッド
US7015494B2 (en) * 2002-07-10 2006-03-21 Micron Technology, Inc. Assemblies displaying differential negative resistance
US7209378B2 (en) * 2002-08-08 2007-04-24 Micron Technology, Inc. Columnar 1T-N memory cell structure
US7018863B2 (en) * 2002-08-22 2006-03-28 Micron Technology, Inc. Method of manufacture of a resistance variable memory cell
US6867114B2 (en) * 2002-08-29 2005-03-15 Micron Technology Inc. Methods to form a memory cell with metal-rich metal chalcogenide
US7364644B2 (en) * 2002-08-29 2008-04-29 Micron Technology, Inc. Silver selenide film stoichiometry and morphology control in sputter deposition
US20040040837A1 (en) * 2002-08-29 2004-03-04 Mcteer Allen Method of forming chalcogenide sputter target
US6831019B1 (en) * 2002-08-29 2004-12-14 Micron Technology, Inc. Plasma etching methods and methods of forming memory devices comprising a chalcogenide comprising layer received operably proximate conductive electrodes
US7163837B2 (en) * 2002-08-29 2007-01-16 Micron Technology, Inc. Method of forming a resistance variable memory element
US6856002B2 (en) * 2002-08-29 2005-02-15 Micron Technology, Inc. Graded GexSe100-x concentration in PCRAM
US7010644B2 (en) * 2002-08-29 2006-03-07 Micron Technology, Inc. Software refreshed memory device and method
US6867996B2 (en) * 2002-08-29 2005-03-15 Micron Technology, Inc. Single-polarity programmable resistance-variable memory element
US6864521B2 (en) 2002-08-29 2005-03-08 Micron Technology, Inc. Method to control silver concentration in a resistance variable memory element
US7272608B2 (en) 2002-11-27 2007-09-18 Zyvex Labs, Llc Isosurface extraction into splat hierarchy
US7519603B2 (en) * 2002-11-27 2009-04-14 Zyvex Labs, Llc Efficient data structure
US7272607B2 (en) 2002-11-27 2007-09-18 Zyvex Labs, Llc System and method for processing a hierarchical data tree
US7085155B2 (en) * 2003-03-10 2006-08-01 Energy Conversion Devices, Inc. Secured phase-change devices
US6813178B2 (en) 2003-03-12 2004-11-02 Micron Technology, Inc. Chalcogenide glass constant current device, and its method of fabrication and operation
US7022579B2 (en) * 2003-03-14 2006-04-04 Micron Technology, Inc. Method for filling via with metal
US7050327B2 (en) 2003-04-10 2006-05-23 Micron Technology, Inc. Differential negative resistance memory
US20040257848A1 (en) * 2003-06-18 2004-12-23 Macronix International Co., Ltd. Method for adjusting the threshold voltage of a memory cell
JP3752589B2 (ja) * 2003-06-25 2006-03-08 松下電器産業株式会社 不揮発性メモリを駆動する方法
US6930909B2 (en) * 2003-06-25 2005-08-16 Micron Technology, Inc. Memory device and methods of controlling resistance variation and resistance profile drift
US7061004B2 (en) * 2003-07-21 2006-06-13 Micron Technology, Inc. Resistance variable memory elements and methods of formation
US6903361B2 (en) * 2003-09-17 2005-06-07 Micron Technology, Inc. Non-volatile memory structure
CN1871684B (zh) * 2003-09-23 2011-08-24 塞威仪器公司 采用fib准备的样本的抓取元件的显微镜检查的方法、系统和设备
JP4047795B2 (ja) * 2003-10-31 2008-02-13 株式会社東芝 量子計算方法および量子計算機
US7485891B2 (en) * 2003-11-20 2009-02-03 International Business Machines Corporation Multi-bit phase change memory cell and multi-bit phase change memory including the same, method of forming a multi-bit phase change memory, and method of programming a multi-bit phase change memory
US7153721B2 (en) 2004-01-28 2006-12-26 Micron Technology, Inc. Resistance variable memory elements based on polarized silver-selenide network growth
US7105864B2 (en) * 2004-01-29 2006-09-12 Micron Technology, Inc. Non-volatile zero field splitting resonance memory
TW200531420A (en) 2004-02-20 2005-09-16 Zyvex Corp Positioning device for microscopic motion
JP2005251745A (ja) 2004-02-23 2005-09-15 Zyvex Corp 荷電粒子ビーム装置プローブ操作
US7583551B2 (en) 2004-03-10 2009-09-01 Micron Technology, Inc. Power management control and controlling memory refresh operations
US7098068B2 (en) * 2004-03-10 2006-08-29 Micron Technology, Inc. Method of forming a chalcogenide material containing device
US7326293B2 (en) * 2004-03-26 2008-02-05 Zyvex Labs, Llc Patterned atomic layer epitaxy
US7190048B2 (en) * 2004-07-19 2007-03-13 Micron Technology, Inc. Resistance variable memory device and method of fabrication
US7326950B2 (en) 2004-07-19 2008-02-05 Micron Technology, Inc. Memory device with switching glass layer
US7354793B2 (en) 2004-08-12 2008-04-08 Micron Technology, Inc. Method of forming a PCRAM device incorporating a resistance-variable chalocogenide element
US7365411B2 (en) * 2004-08-12 2008-04-29 Micron Technology, Inc. Resistance variable memory with temperature tolerant materials
US7151688B2 (en) * 2004-09-01 2006-12-19 Micron Technology, Inc. Sensing of resistance variable memory devices
US7272037B2 (en) * 2004-10-29 2007-09-18 Macronix International Co., Ltd. Method for programming a multilevel phase change memory device
US7374174B2 (en) 2004-12-22 2008-05-20 Micron Technology, Inc. Small electrode for resistance variable devices
US20060131555A1 (en) * 2004-12-22 2006-06-22 Micron Technology, Inc. Resistance variable devices with controllable channels
US7391642B2 (en) * 2005-01-25 2008-06-24 Intel Corporation Multilevel programming of phase change memory cells
US7317200B2 (en) 2005-02-23 2008-01-08 Micron Technology, Inc. SnSe-based limited reprogrammable cell
US7269044B2 (en) * 2005-04-22 2007-09-11 Micron Technology, Inc. Method and apparatus for accessing a memory array
US7427770B2 (en) * 2005-04-22 2008-09-23 Micron Technology, Inc. Memory array for increased bit density
US7709289B2 (en) 2005-04-22 2010-05-04 Micron Technology, Inc. Memory elements having patterned electrodes and method of forming the same
US7269079B2 (en) * 2005-05-16 2007-09-11 Micron Technology, Inc. Power circuits for reducing a number of power supply voltage taps required for sensing a resistive memory
US7233520B2 (en) * 2005-07-08 2007-06-19 Micron Technology, Inc. Process for erasing chalcogenide variable resistance memory bits
US7274034B2 (en) 2005-08-01 2007-09-25 Micron Technology, Inc. Resistance variable memory device with sputtered metal-chalcogenide region and method of fabrication
US7332735B2 (en) 2005-08-02 2008-02-19 Micron Technology, Inc. Phase change memory cell and method of formation
US7317567B2 (en) * 2005-08-02 2008-01-08 Micron Technology, Inc. Method and apparatus for providing color changing thin film material
US20070037316A1 (en) * 2005-08-09 2007-02-15 Micron Technology, Inc. Memory cell contact using spacers
US7525117B2 (en) * 2005-08-09 2009-04-28 Ovonyx, Inc. Chalcogenide devices and materials having reduced germanium or telluruim content
US7767992B2 (en) * 2005-08-09 2010-08-03 Ovonyx, Inc. Multi-layer chalcogenide devices
US7579615B2 (en) * 2005-08-09 2009-08-25 Micron Technology, Inc. Access transistor for memory device
US20070034850A1 (en) * 2005-08-09 2007-02-15 Ovonyx, Inc. Chalcogenide devices incorporating chalcogenide materials having reduced germanium or telluruim content
US7304368B2 (en) * 2005-08-11 2007-12-04 Micron Technology, Inc. Chalcogenide-based electrokinetic memory element and method of forming the same
US7251154B2 (en) * 2005-08-15 2007-07-31 Micron Technology, Inc. Method and apparatus providing a cross-point memory array using a variable resistance memory cell and capacitance
US7277313B2 (en) * 2005-08-31 2007-10-02 Micron Technology, Inc. Resistance variable memory element with threshold device and method of forming the same
US7426134B2 (en) * 2006-02-24 2008-09-16 Infineon Technologies North America Sense circuit for resistive memory
US20070233761A1 (en) * 2006-04-03 2007-10-04 Mouttet Blaise L Crossbar arithmetic processor
US9965251B2 (en) * 2006-04-03 2018-05-08 Blaise Laurent Mouttet Crossbar arithmetic and summation processor
US7560723B2 (en) * 2006-08-29 2009-07-14 Micron Technology, Inc. Enhanced memory density resistance variable memory cells, arrays, devices and systems including the same, and methods of fabrication
US7969769B2 (en) * 2007-03-15 2011-06-28 Ovonyx, Inc. Multi-terminal chalcogenide logic circuits
US7821810B2 (en) * 2008-03-14 2010-10-26 Micron Technology, Inc. Phase change memory adaptive programming
US8467236B2 (en) 2008-08-01 2013-06-18 Boise State University Continuously variable resistor
US8148707B2 (en) * 2008-12-30 2012-04-03 Stmicroelectronics S.R.L. Ovonic threshold switch film composition for TSLAGS material
IT1392921B1 (it) * 2009-02-11 2012-04-02 St Microelectronics Srl Regioni allocabili dinamicamente in memorie non volatili
US8447714B2 (en) * 2009-05-21 2013-05-21 International Business Machines Corporation System for electronic learning synapse with spike-timing dependent plasticity using phase change memory
US8250010B2 (en) * 2009-05-21 2012-08-21 International Business Machines Corporation Electronic learning synapse with spike-timing dependent plasticity using unipolar memory-switching elements
US20140207839A1 (en) * 2011-07-26 2014-07-24 Sherwin Han Spatial Arithmetic Method of Integer Factorization
WO2013095564A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride
CN104011646B (zh) 2011-12-22 2018-03-27 英特尔公司 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令
US10223111B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
GB2562185B (en) * 2014-04-14 2019-02-27 Pragmatic Printing Ltd Method of Storing and Reading Data and Data Storage System
GB2532086A (en) * 2014-11-10 2016-05-11 Provost Fellows Found Scholars & Other Members Board College Holy & Und An associative memory learning device
GB2550903B (en) * 2016-05-27 2019-06-12 Arm Ip Ltd Context data control
US20240106420A1 (en) * 2022-09-23 2024-03-28 Psemi Corporation Temperature-controlled driver with built-in self testing of switch status
US11936374B1 (en) 2022-09-23 2024-03-19 Psemi Corporation Driver with built-in self testing of switch status

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3421147A (en) * 1965-05-07 1969-01-07 Bell Telephone Labor Inc Buffer arrangement
SU886049A1 (ru) * 1980-02-05 1981-11-30 Киевский Ордена Ленина Политехнический Институт Им. 50-Летия Великой Октябрьской Социалистической Революции Запоминающее устройство
US5159661A (en) * 1990-10-05 1992-10-27 Energy Conversion Devices, Inc. Vertically interconnected parallel distributed processor
US5825046A (en) * 1996-10-28 1998-10-20 Energy Conversion Devices, Inc. Composite memory material comprising a mixture of phase-change memory material and dielectric material
US5912839A (en) 1998-06-23 1999-06-15 Energy Conversion Devices, Inc. Universal memory element and method of programming same
US6141241A (en) 1998-06-23 2000-10-31 Energy Conversion Devices, Inc. Universal memory element with systems employing same and apparatus and method for reading, writing and programming same
US6448576B1 (en) * 2001-08-30 2002-09-10 Bae Systems Information And Electronic Systems Integration, Inc. Programmable chalcogenide fuse within a semiconductor device

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156625A (zh) * 2011-03-31 2011-08-17 北京大学 利用阻变器件进行除法计算的方法
CN102156625B (zh) * 2011-03-31 2012-11-21 北京大学 利用阻变器件进行除法计算的方法
CN102299692A (zh) * 2011-06-29 2011-12-28 北京大学 一种基于阻变器件的加法器电路
CN102299692B (zh) * 2011-06-29 2013-06-12 北京大学 一种基于阻变器件的加法器电路
CN112486454A (zh) * 2019-09-12 2021-03-12 北京华航无线电测量研究所 一种基于fpga的序列多峰值搜索排序装置
CN112486454B (zh) * 2019-09-12 2023-07-11 北京华航无线电测量研究所 一种基于fpga的序列多峰值搜索排序装置

Also Published As

Publication number Publication date
WO2003096177A1 (en) 2003-11-20
US6963893B2 (en) 2005-11-08
US20040078406A1 (en) 2004-04-22
US7440990B2 (en) 2008-10-21
EP1504334A4 (en) 2006-03-01
AU2003245256A1 (en) 2003-11-11
US20050283515A1 (en) 2005-12-22
JP2005527026A (ja) 2005-09-08
EP1504334A1 (en) 2005-02-09
US20030212724A1 (en) 2003-11-13
US20040078415A1 (en) 2004-04-22
KR20050012742A (ko) 2005-02-02
US6671710B2 (en) 2003-12-30
US20040098434A1 (en) 2004-05-20
US20030212725A1 (en) 2003-11-13
US6714954B2 (en) 2004-03-30

Similar Documents

Publication Publication Date Title
CN1666172A (zh) 使用数字多状态相变材料的计算方法
Wittmann et al. Informed training set design enables efficient machine learning-assisted directed protein evolution
Wu et al. Improved pathogenicity prediction for rare human missense variants
Terzer et al. Large-scale computation of elementary flux modes with bit pattern trees
Xie et al. An adaptive decoding biased random key genetic algorithm for cloud workflow scheduling
Mohamadi et al. ntCard: a streaming algorithm for cardinality estimation in genomics data
Peng et al. Population-based algorithm portfolios for numerical optimization
Sarkar et al. Optimisation of fed-batch bioreactors using genetic algorithms
Ilardo et al. Extraordinarily adaptive properties of the genetically encoded amino acids
JP7063211B2 (ja) 最適化問題演算プログラム、最適化問題演算方法および最適化問題演算装置
Lin et al. Metaheuristics for scheduling a non-permutation flowline manufacturing cell with sequence dependent family setup times
Cervellera et al. Neural network and regression spline value function approximations for stochastic dynamic programming
JP7196489B2 (ja) 最適化問題演算プログラム、最適化問題演算方法および最適化問題演算装置
Wang et al. A biological algorithm to solve the assignment problem based on DNA molecules computation
Wang et al. Multiple surrogates and offspring-assisted differential evolution for high-dimensional expensive problems
Morgan-Lang et al. TreeSAPP: the tree-based sensitive and accurate phylogenetic profiler
Arróyave et al. A perspective on Bayesian methods applied to materials discovery and design
Pasini et al. A scalable algorithm for the optimization of neural network architectures
Ozsoydan et al. A reinforcement learning based computational intelligence approach for binary optimization problems: The case of the set-union knapsack problem
Lin et al. Sequencing single machine multiple-class customer order jobs using heuristics and improved simulated annealing algorithms
Sastry et al. Optimization of semiempirical quantum chemistry methods via multiobjective genetic algorithms: Accurate photodynamics for larger molecules and longer time scales
JP2020046992A (ja) 最適化問題演算プログラム、最適化問題演算方法および最適化問題演算装置
Lupo Pasini et al. Fast and accurate predictions of total energy for solid solution alloys with graph convolutional neural networks
WO2020054061A1 (ja) 最適化装置、最適化装置の制御方法および最適化装置の制御プログラム
Subbaroyan et al. Leveraging developmental landscapes for model selection in Boolean gene regulatory networks

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication