可再编程存储器中的一次编程的制作方法_3

文档序号:9201485阅读:来源:国知局
本文描述了确认过程中写入和读取数据值的其他细节。
[0047]在一个实施例中,擦除引擎128促使从存储设备108内的存储位置擦除数据。在一些实施例中,擦除数据包括:向所选的存储位置施加复位或擦除电压,以便将这些存储位置处的电压电平复位到具体状态。按照约定,在每个存储位置被配置为表示单一比特值的约定下,擦除状态可以与比特值“O”或“I”相关。在其他实施例中,可以使用其他约定。
[0048]在一些实施例中,擦除操作与每个写入操作配对。例如,擦出操作可以在每个写入操作之前。按照这种方式,每个写入周期可以包括至少一个擦除操作。备选地,一个或更多个擦除操作可以与协作操作分开执行。
[0049]在一个实施例中,数据值产生器130测试产生可以在写入操作中使用的测试数据值。尽管存储设备108中存储的数据可以典型地由处理器102或其他组件来定向,然而在一些实施例中,控制器110可以尝试将测试数据值写入存储设备108内的特定存储元件或位置。这些测试数据值可以是任意值或预定值。尝试将测试数据值写入存储位置的一个目的是确定各个存储位置中已存储的数据是否能够被测试数据值盖写。因此,测试数据值应当与已经存储在存储位置处的数据值不同,控制器可以进行比较以确保测试数据值是唯一的和/或有区别的。
[0050]在一个实施例中,比较器132将尝试写入存储位置的测试数据值130与从相同存储位置读取的实际数据值相比较。如果存储的数据值与测试数据值相同,则确定测试数据值被成功写入存储位置。因此,可以推断在写入测试数据值之前存储在存储位置的先前数据值没有被永久存储在存储位置。反之,如果存储的数据值与尝试写入的测试数据值不同,则可以推断先前数据值被永久写入存储位置。在一些实施例中,甚至在中间尝试将测试数据值写入存储位置之后,可以执行附加的比较以确定存储的数据值是否与先前数据值相同。
[0051]在其他实施例中,比较器132产生所选存储元件的存储数据值与测试数据值的比较的比较结果。如上所述,比较结果表示测试数据值是否被存储在所选的存储元件中,这可以进一步表示先前数据值是否被永久存储在存储位置中。
[0052]在一些实施例中,控制器110可以保持映射图134或其他数据结构以指定哪些存储元件、存储元件的块或存储元件的其他分段被指定为OPT存储元件114。按照这种方式,映射图134或其他数据结构指示可以将OPT存储元件114驱动到写入故障状态以存储不能被后续写入操作改变的熔断数据值。
[0053]在一个实施例中,越权(override)引擎136防止在映射图134中指定用于存储恪断数据值的存储元件或存储元件块的耗损均衡(wear leveling)过程。如果没有针对OPT存储元件114防止耗损均衡过程,则耗损均衡过程会将连续写入操作分布到不同的存储位置,目的在于避免写入故障状态。通过防止针对OPT存储元件114的耗损均衡过程,重复的写入操作可以更快地将OPT存储元件114驱动到写入故障状态。在其他实施例中,控制器110可以使用其他技术将耗损均衡技术限制到没有被指定为OPT存储元件114的存储元件112。
[0054]可以在不同等级实现计算设备100的耗损均衡功能。在一些实施例中,耗损均衡功能由控制器110实现。在其他实施例中,耗损均衡功能由处理器102结合操作系统(OS)闪速驱动器(未示出)来实现。在其他实施例中,耗损均衡功能由处理器102结合文件系统(例如,JFFS, YAFFS, UBIFS等)来实现。
[0055]在一个实施例中,控制器可以使用一个或更多个寄存器138来存储状态信息、数据值(例如,写入的数据值和测试数据值)或在将数据值永久写入OPT存储元件114的过程中可以有用的其他信息。
[0056]图3示出了针对永久写入操作使用可再编程存储设备的一部分的方法140的实施例的流程图。为了方便起见,可以利用上述计算机设备100和控制器110的实施例来实现所示方法140。备选地,可以利用其他可再编程存储设备和/或可再编程存储设备的控制器来实现方法140。
[0057]描述的方法140开始于控制器110接收142将数据值熔断或永久写入存储位置的指令。如上所述,本上下文中术语“熔断”和“永久写入”指的是能够写入不被后续写入操作改变的数据。
[0058]然后,控制器110指示写入引擎124执行144初始的写入操作集合,以将数据值写入存储位置。初始的写入操作集合可以包括指定的写入操作数目,可以基于针对该类型存储设备108估计或发布的可靠写入周期次数来建立所述写入操作数目。图4示出了将数据值多次写入存储位置的方法的更详细示例。
[0059]在初始的写入操作集合之后,控制器110执行146测试以确定(来自初始的写入操作集合的)先前写入的数据值是否被永久写入相应的存储位置。图5示出了测试存储位置的方法的更详细示例。
[0060]如果先前写入的数据值没有被永久写入存储位置,则控制器110执行150另一测试操作集合以将相同的数据值写入存储位置。该后续的写入操作集合可以与初始的写入操作集合具有相同或不同的写入操作数目。在一个实施例中,该后续的写入操作集合比初始的写入操作集合小大约I个数量级。在另一实施例中,后续的写入操作集合在大约50-300个写入操作之间。在另一实施例中,后续的集合在大约100-200个写入操作之间。其他实施例可以实现其他数量的写入操作。在其他实施例中,写入操作的数目可以至少部分地依赖于为了测试写入位置而执行的写入操作的精度一一测试写入操作的精度越高,附加写入操作的数目越低,反之亦然。
[0061]在一些实施例中,控制器110控制写入引擎124、读取引擎126和比较器132 (以及所需的其他组件)重复写入测试数据值的写入操作、比较和附加的写入操作集合,直到比较结果表明存储的数据值不等于测试数据值,因此迭代写入的数据值被永久存储在存储位置。
[0062]一旦确定148迭代写入的数据值被永久存储在存储位置,控制器110就可以指示写入引擎124执行最终的写入操作集合,以将数据值写入存储位置。该最终的写入操作集合可以包括其他数目的写入操作。在其他实施例中,该最终的写入操作集合可以被省略。
[0063]在一些实施例中,控制器110执行第一写入操作序列,以将数据值重复写入所选的存储元件或块。第一写入操作序列包括的写入操作的数目等于或大于第一写入周期阈值数目。然后控制器110响应于确定所选的存储元件能够存储新写入的数据值,来重复第二写入操作序列以将数据值写入所选的存储位置。
[0064]在其他实施例中,读取引擎126在每一个写入操作序列之后从所选的存储元件读取所存储的数据值。写入引擎124还配置为响应于随后确定所选的存储元件能够存储另一新写入的数据值来重复第二写入操作序列。然后所述方法140结束。
[0065]图4示出了将数据值重复写入可再编程存储设备内的存储位置的方法160的一个实施例的流程图。为了方便起见,可以利用上述计算机设备100和控制器110的实施例来实现所示的方法160。备选地,可以利用其他可再编程存储设备和/或可再编程存储设备的控制器来实现方法160。
[0066]所示的方法160可以用于实现上述写入操作集合中的任意或全部。所示方法160开始于控制器110重置写入计数。在一些实施例中,将写入计数保持在寄存器138之一中。备选地,可以将写入计数存储在另一位置。
[0067]然后控制器110检查164以查看写入计数是否超过计数阈值。还可以将计数阈值存储在寄存器138中或其他位置。可以使用比较器132将写入计数和阈值相比较。
[0068]如果写入计数没有超过阈值,则控制器110递增166写入计数并执行168写入操作以将数据值写入存储位置。这说明了存储位置的一个写入周期。在一些实施例中,每个写入周期伴随有前面的擦除操作。
[0069]控制器110继续将写入计数与阈值相比较并执行附加的写入操作,直到满足或超过阈值(依赖于使用的数学运算符)为止。一旦满足或超过阈值,则比较器132能够向控制器110返回对完成了当前写入操作集合的指示。然后,所示方法160结束。
[0070]图5示出了确认数据值被永久写入可再编程存储设备内的存储位置的状态的方法180的一个实施例的流程图。为了方便起见,可以利用上述计算机设备100和控制器110的实施例来实现所示的方法180。备选地,可以利用其他可再编程存储设备和/或可再编程存储设备的控制器来实现方法180。
[0071]所示的方法180可以用于实现上述测试功能。所示的方法180开始于控制器110指示数据值产生器130产生182测试数据值。可以将测试数据值提供给写入引擎124并且还将测试数据值存储在寄存器138之一中。然后,控制器110使用写入引擎124来尝试184将测试数据值写入正在被测试的存储位置。
[0072]在尝试将测试数据值写入存储位置之后,控制器110使用读取引擎126来读取指定的存储位置中当前存储的数据值。控制器110依靠比较器132将所选的存储元件的存储数据值与数据值产生器130产生的测试数据值相比较188。
[0073]如果从存储位置读取的存储数据值与测试数据值相同,则可以确定先前写入的数据(在测试数据之前)没有被永久存储在存储位置。这意味着存储位置尚未进入写入故障模式,而是仍然处于正常写入模式。比较器132可以返回190存储位置的正常写入模式的指示。
[0074]反之,如果从存储位置读取的存储数据值与测试数
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1