非易失性存储器中的重组循环和跳过循环的制作方法_4

文档序号:9872514阅读:来源:国知局
D0、CAD1、CAD2或CAD3来选择列O至列3中的一列。针对盘位组的选择线将列地址路由给盘位O至盘位3中的每个盘位。以该方式,控制电路能够使用单个列地址信号和单个列地址来选择跨多个盘位的整列的存储器单元。
[0093]存储在存储器阵列中的存储器数据能够匹配作为写入请求的一部分的、要被编程至存储器阵列的用户数据。例如,要被编程的用户数据的一系列按顺序的位可以匹配存储器单元中的存储器数据。这可以发生在重新写入期间,以对在写入处理的先前编程迭代期间未成功编程的存储器单元进行编程。存储器系统可以在进行编程之后读回成单位的数据例如一页,并且可以验证该页匹配要被编程的数据。如果不是所有数据匹配(或者少于预定数量的位匹配),则将对该页进行重新编程。存储器数据可以由于其他原因而匹配用户数据。例如,在图像文件中,该图像的部分可以是白色的,并且针对白色的适当的数据可以已经作为存储器数据被存储在对应的存储器单元中。当对该页进行重新编程时,因为存储器数据匹配要被编程的用户数据,所以可以跳过部分数据。
[0094]当用户数据匹配针对盘位组的存储器数据时,一些系统允许跳过对盘位组的编程。图14和图15是示出了盘位组架构和传统跳过处理的示例的表。图14示出了将十六个盘位划分成四个盘位组。第一盘位组O包括盘位O、盘位1、盘位2和盘位3。盘位组I包括盘位4、盘位5、盘位6和盘位7 ο盘位组2包括盘位8、盘位9、盘位10和盘位11。盘位组3包括盘位12、盘位13、盘位14和盘位15。当存储在盘位组的存储器单元中的存储器数据匹配针对写入操作的用户数据时,可以跳过对该盘位组的编程。通常,系统可以分析盘位组中的每个盘位来确定是否所有盘位中的存储器数据匹配用户数据。如果组中的所有盘位匹配用户数据,则在盘位组编程循环期间,系统可以跳过对该盘位组的编程。
[0095]图15描绘了图14的表连同对四个盘位组执行的跳过分析的示例。系统从盘位组中的每个盘位读取存储器数据并且将存储器数据与针对写入操作的用户数据进行比较。在该特定示例中将用户数据与存储器数据进行比较之后,从盘位O读取的数据被确定为不匹配针对盘位O的用户数据。因此,存储器系统确定在下一编程循环期间不应该跳过(不跳过)盘位O。对盘位I和盘位2进行类似的评估,并且在盘位组I内,各自确定在下一循环期间可以跳过这些盘位。类似地,盘位组I被评估成确定在下一编程循环期间可以跳过盘位4、盘位6和盘位7,而应该对盘位6进行编程(不跳过)。对盘位组3进行分析并且确定可以跳过所有盘位。对盘位组4进行分析并且确定应该对盘位12和盘位14进行编程而可以跳过盘位13和盘位15 ο
[0096]在许多系统中,盘位地址用于选择盘位组,从而选择组内的每个盘位。相应地,为了跳过对该盘位组的编程,该组内的每个盘位必须匹配针对该盘位的要被编程的用户数据。如果该组内的所有盘位匹配用户数据,则可以跳过对该盘位组的编程。然而,如果不可以跳过对盘位中的任何盘位的编程,则执行对整个盘位组的编程。在这些系统中,对图15的示例进行的跳过分析将确定可以跳过对盘位组2的编程,而应该对盘位组0、盘位组I和盘位组3执行编程。相应地,即使十六个盘位中的四个盘位被编程并且在该示例中并行编程的盘位的最大数量为四个,但仍将执行三个盘位地址循环。
[0097]—些系统还允许跳过对一列存储器单元(例如,CAD)的编程。这些系统可以确定是否因为来自该列的存储器数据匹配要被编程的数据所以可以跳过对跨多个盘位的整个列地址的编程。在一个示例中,在写入操作期间将数据编程到第一列存储器单元中的同时,系统评估是否可以跳过对第二列存储器单元的编程。如果系统确定不可以跳过第二列存储器单元,则当完成第一列时对第二列存储器单元进行编程。如果系统确定可以跳过第二列存储器单元,则系统等待直至第一列存储器单元被编程为止,并且然后系统评估是否可以跳过第三列存储器单元。其他系统在对先前列的存储器单元进行编程的同时评估并且决定跳过多列存储器单元。这些系统还可以在对更早一列进行编程的同时评估是否跳过针对随后的列的一个或更多个灵敏放大器地址。其他技术也能够在写入操作前的读取期间评估是否可以跳过多个列。在这些系统中,位图数据可以被生成并且用于确定是否可以在编程期间跳过列。以该方式,系统在评估其他列之前不等待特定的列被编程。
[0098]如图13中所描绘的,许多系统利用可以施加至盘位组内的每个盘位的共同的列地址信号。以该方式,系统可以向盘位组内的每个盘位提供单个列地址,以从跨多个盘位的盘位组中选择一个列进行编程。图16是描述一个示例中的列和盘位架构连同对每个盘位执行的跳过分析的结果的表。盘位O至盘位3中的每个盘位包括使用列地址CADO来寻址的列O的一部分、使用列地址CADl来寻址的列I的一部分、使用列地址CAD2来寻址的列2的一部分和使用列地址CAD3来寻址的列3的一部分。描绘了系统通过将存储器数据与用户数据进行比较来执行跳过评估的特定示例。比较和评估的结果用于确定对于盘位O而言不可以跳过来自列O (CADO)的存储器单元的子集。系统确定可以跳过盘位O处的与列I (CADI)对应的存储器单元的子集,并且确定可以跳过盘位O处的与列2(CAD2)对应的存储器单元的子集。系统确定与列3(CAD3)对应的存储器单元的子集需要被编程并且不应该被跳过。类似地,系统针对盘位I确定可以跳过列O、不可以跳过列1、可以跳过列2以及可以跳过列3 ο针对盘位2,系统确定可以跳过列0、可以跳过列1、可以跳过列2以及不可以跳过列3。最终,系统确定对于盘位4而言可以跳过所有列。
[0099]在使用单个列地址信号向盘位组内的每个盘位提供一个列地址的情况下,仅允许对整个列或列地址的跳过。当跨盘位组的每个盘位中的列的存储器单元的每个子集匹配用户数据时,可以跳过对列的编程。向盘位组提供单个列地址,以使得可以在列地址循环期间选择该盘位组内的单个列进行编程。相应地,来自跨列的所有盘位的存储器单元的每个子集的存储器数据需要匹配用户数据,以允许列地址循环被跳过。
[0100]参照图16和列地址CAD0,盘位O处的存储器单元的子集是唯一需要针对下一个列地址循环被编程的存储器单元的子集。然而,传统的方法仍执行整个列地址循环,以便对列的一个盘位处的存储器单元的单个子集进行编程。类似地,对列I的编程包括完整列地址循环,以对列的一个盘位处的存储器单元的单个子集进行编程,并且对列3的编程包括完整列地址循环,以对一个盘位处的存储器单元的两个子集进行编程。列2是其中每个盘位处的子集匹配用户数据的唯一列。因此,仅跳过针对CAD2的CAD循环。
[0101]根据所公开的技术的实施方式,提供了一种非易失性存储器系统,其评估是否跳过对盘位组内的单独盘位的编程。系统跳过对可以跳过所有盘位的任何盘位组的编程。参照图15,例如,系统可以通过将存储器数据与用户数据进行比较来分析盘位组O至盘位组3并且执行跳过评估。例如,状态机131可以确定应该对组0、组I和组3进行编程并且应该跳过组2 ο作为响应,状态机在三个BAD循环中对组O、组I和组3进行编程,同时跳过针对组2的BAD循环。
[0102]此外,系统对在其余盘位组内的可以跳过和不可以跳过的盘位进行评估。系统将初始的盘位组重组以便使在每个组内被编程的盘位的数量最大化,从而潜在地减少编程所需要的BAD循环的数量。系统重组盘位以使得对每个盘位组的编程在可能的情况下包括最大数量的并行编程的盘位。
[0103]在图14中,例如,每个默认的盘位组包括可以针对每个盘位组同时被编程的四个盘位。因此,并行编程的盘位的最大数量为四个。因此,在没有超出并行编程的盘位的最大数量的情况下,系统设法在每个盘位组内放置需要被编程的四个盘位。
[0104]图17描绘了继续使用图15的示例的重组。在图17中,系统确定不可以跳过盘位组O。在盘位组O内,系统确定需要对一个盘位进行编程并且可以跳过三个盘位。相应地,系统确定第一盘位地址循环可以被重组成包括来自替代盘位组1、盘位组2和盘位组3的其他盘位组的三个盘位。以该方式,系统通过重组原有的盘位组来生成新的组。
[0105]在图17中,系统将盘位5(组I)、盘位12(组3)、和盘位14(组3)放置在盘位组O中。因此,组O被重组成包括需要被编程的四个盘位。以该方式,可以使用单个BAD循环来对包括要被编程的所有盘位的一个组进行编程。系统可以重组其他盘位组以使用来自组O的盘位I替换组I中的盘位5、使用来自组O的盘位2替换组3中的盘位12、以及使用来自组O的盘位3替换组3中的盘位14。在另一示例中,对跳过的盘位不执行替换并且系统等待针对下一编程循环重组盘位。
[0106]图18是描绘根据图17的示例的跳过和重组盘位组的处理和结果的表。图18包括与四个盘位组循环O至3对应的四个列,四个盘位组循环O至3可以用于对四个盘位组O至3进行编程。此外,描绘了三个行,其示出了根据不利用跳过的方法、利用跳过但不进行重组的方法以及利用根据本公开内容的实施方式的跳过并且重组的方法的针对每个循环的编程。图18继续使用图15中所示的跳过信息。
[0107]沿表的顶部描绘了 BAD循环O至BAD循环3。每个循环与盘位地址组对应。如果如第一行中所示没有利用跳过,则系统执行所有BAD循环并且对每个盘位组进行编程。在BAD循环O期间,对盘位组O进行编程。类似地,BAD循环I用于对来自盘位组I的盘位5进行编程。在没有跳过的情况下,系统执行BAD循环2,即使在该循环期间没有盘位要被编程也是如此。最终,执行BAD循环3以对来自组3的盘位12和盘位14进行编程。
[0108]第二行示出了在进行跳过而不进行重组的情况下的编程处理。在BAD循环O期间,
对盘位组O进行编程。执行BAD循环O以对单个盘位--盘位O--进行编程。然而,因为根据盘位组对所有四个盘位并行地进行编程,所以利用BAD循环来对一个盘位进行编程。在BAD循环I期间,对盘位组I进行编程。跳过BAD循环2,这是因为盘位组2中的所有盘位均可以跳过。在BAD循环3期间,对盘位组3进行编程。因此,进行跳过而不进行重组使得系统能够使用三个BAD循环而不是四个BAD循环来执行对四个盘位组的编程。
[0109]图18的第三行描绘了根据本公开内容的一个实施方式的跳过并且重组盘位的处理和结果。如图17所示,盘位组I被重组成包括不可以跳过的盘位,从而使循环期间的并行编程的盘位的数量最大化。盘位组I包括来自原有盘位组的盘位0、来自组2的盘位5和来自组3的盘位12和盘位14。在BAD循环O期间,系统对包括盘位O、盘位5、盘位12和盘位14的盘位组O进行编程。这包括针对所有盘位组的需要被编程的所有盘位。相应地,系统利用一个BAD循环以针对所有需要的编程。系统跳过BAD循环1、2和3。
[0110]在一个实施方式中,系统在列地址循环期间利用单独的列寻址来向盘位组内的不同盘位提供不同的列地址。首先,系统可以确定是否可以跳过整列存储器单元或单个列地址。如果不可以跳过列地址,则系统确定是否可以跳过与单独的盘位对应的列地址的任何子集。系统可以确定在下一 CAD循环期间是否可以跳过列的每个盘位处的每个位或每个存储器单元。系统在单个列地址循环期间对不同盘位处的用于编程的多个列地址进行编组。以该方式,系统在CAD循环期间对不同盘位处的来自不同列地址的存储器单元的子集进行编程。通过将用于编程的列地址编组到共同循环中,系统可以减少对盘位组进行编程所需要的CAD循环的总数量。
[0111]图19是描绘根据一个实施方式的针对盘位组中的单独的盘位使用单独的列寻址的处理和结果的表。图19包括与四个CAD循环O至3对应的四个列。类似于图18,描绘了三个行,以示出了根据各种方法的针对每个循环的编程,从而证明了根据实施方式的节省循环的可能性。这些行描绘了不利用跳过的方法、所有盘位使用共同CAD的情况下利用跳过的方法以及利用根据本公开内容的实施方式的针对盘位利用跳过和单独的列寻址的方法。图19继续使用图16中所示的跳过信息。
[0112]如果如第一行所示不利用跳过,则四个循环用于使用四个列地址对四个列进行编程。系统将利用针对CADO的一个CAD循环、针对CADI的一个CAD循环、针对CAD2的一个CAD循环和针对CAD3的一个CAD循环。因为系统不利用跳过,所以执行针对CAD2的循环,即使针对CAD2的列不需要被编程也是如此。
[0113]如果如第二行所示利用跳过,则系统跳过针对第四编程循环的编程。系统确定在盘位组中的所有盘位处列地址CAD2是可以跳过的。相应地,系统在第一 CAD循环中对CADO进行编程、在第二 CAD循环中对CADI进行编程以及在第二 CAD循环中对CAD3进行编程。系统跳过第四CAD循环。
[0114]如图16所示,然而,在每个盘位处仅列的部分需要被编程。根据一个实施方式,系统确定是否可以在单独的盘位处跳过每个不可跳过的列的部分。在图16的示例中,系统确定不可以跳过盘位O处的列O(CAD0)。然而,在盘位1、2和3处,系统确定可以跳过列O。系统确定在盘位0、2和3处可以跳过列I (CADl),但是在盘位I处不可以跳过列I (CADl)。系统确定在所有盘位处都可以跳过列2(CAD2)。系统确定在盘位I和盘位3处可以跳过列3(CAD3),但是在盘位O和盘位2处不可以跳过列3 (CAD3)。
[0115]基于每个盘位处的需要被编程的列的部分,系统执行编组以使如图20的第三行中所示的每个CAD循环期间的编程最大化。从第一 CAD循环开始,系统确定在对应的CAD循环期间可以跳过对其的编程的盘位的数量。系统确定可以跳过对盘位I至盘位3处的列O的编程。然后,系统确定对于盘位I至盘位3而言是否存在需要被编程的其他列地址。系统确定对于盘位I而言需要对CADl进行编程以及对于盘位O而言需要对CAD3进行编程。相应地,系统将CAD1与第一CAD循环编组,使得在第一CAD循环期间将列地址CAD1应用于盘位i。系统还将CAD3与第一 CAD循环编组,使得在第一CAD循环期间将列地址CAD3应用于盘位2。因为在第一CAD循环期间针对盘位O选择了 CAD0,所以系统确定在第一 CAD循环期间在盘位O处不可以对CAD3进彳丁编程。
[0116]系统确定在另一CAD循环期间需要对盘位O处的CAD3进行编程。相应地,系统将CAD3编组到第二编程循环中。因为对于其他盘位而言没有其他列地址需要被编程,所以系统确定不需要另外的CAD循环。如图19所示,可以使用总共两个CAD循环来对跨四个列地址和四个标准CAD循环的列进行编程。
[0117]图20A和图20B描绘了根据本公开内容的实施方式的列与盘位架构,其中,对盘位组中的各盘位提供单独的列寻址。如图20A和图20B所示,状态机可以选择每个盘位处的单独的列以在一个列地址循环中进行编程。图20A和20B
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1