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

文档序号:9872514阅读:来源:国知局
描绘了在第一 CAD循环和第二 CAD循环期间使用图19的示例的盘位O、盘位1、盘位2和盘位3。
[0118]如图20A所示,每个盘位设置有单独的CAD选择线,以用于在CAD循环期间接收单独的列地址。盘位O与CAD选择线602进行通信。盘位I与CAD选择线604进行通信。盘位2与CAD选择线606进行通信。盘位3与CAD选择线608进行通信。可以向每个CAD选择线提供单独的列地址信号。
[0119]图20A示出了在图19的第一列地址循环期间对用于编程的列地址进行的第一次编组。系统在第一CAD循环期间(针对CAD0)对盘位O处的CAD0、盘位I处的CADl和盘位2处的CAD3进行编组和编程。状态机向选择线602提供列地址CAD0、向选择线604提供列地址CADl并且向选择线606提供列地址CAD3。以该方式,选择对应的列以在第一 CAD循环期间进行编程。
[0120]图20B示出了在图19的第二列地址循环期间对用于编程的列地址进行的第二次编组。系统在第二 CAD循环期间(针对CAD1)对盘位O处的CAD3进行编组和编程。状态机向选择线602提供列地址CAD3。以该方式,选择列3(CAD3)以在第二 CAD循环期间进行编程。
[0121]图21是根据一个实施方式使用跳过信息来对存储器阵列的存储器单元进行编程的流程图。在步骤702处,接收将数据写入存储器系统的请求。在一个示例中,该请求包括或被提供有要写入的数据。在一个实施方式中在步骤702处接收一页数据,尽管可以接收编程或写入的其他单位。在一个实施方式中,在状态机131处接收请求和数据。在另一示例中,在控制器132处接收请求和数据。
[0122]在步骤704处,存储器系统在开始写入操作之前启动写入操作前的读取。系统确定用于满足写入请求的存储器阵列中的存储器分配并且从所分配的存储器中读取现有的存储器数据。因为在步骤704中读取数据,所以系统在步骤706至714中动态地执行针对写入请求的跳过评估。
[0123]在步骤706处,系统对针对写入请求的灵敏放大器地址(SAD)循环跳过进行评估。在具体示出的示例中,步骤706处的跳过评估包括针对SAD循环跳过生成位图数据。在步骤706处,状态机可以将从存储器阵列读取的每个存储器数据位与在步骤702处所接收的对应用户数据位进行比较。如果两个位匹配,则状态机生成并且存储指示可以跳过SAD循环的SAD跳过信息。如果两个位不匹配,则状态机生成并且存储指示不应该跳过SAD循环的SAD跳过信息。在一个示例中,跳过信息是针对每个SAD(与SAD循环对应)的位图。位图可以包括存储在针对对应SAD的数据锁存器中的逻辑‘I’。如果两个位不匹配,则位图可以包括存储在该数据锁存器中的逻辑‘O’。可以使用对是否可以跳过SAD循环的其他指示。
[0124]在步骤708处,系统对针对写入请求的列地址(CAD)循环跳过进行评估。在该示例中的步骤708处,不针对CAD循环跳过来直接创建和存储位图。替代地,针对CAD循环内的每个SAD循环的数据锁存器可以被编组并且经受逻辑NAND运算以确定CAD跳过信息。如果针对列的每个SAD数据锁存器指示可以跳过SAD循环,则CAD跳过评估指示可以跳过CAD循环。如果每个SAD数据锁存器不指示可以跳过SAD循环,则CAD跳过评估指示不可以跳过CAD循环。在其他示例中,步骤708可以包括针对CAD循环跳过生成位图信息。
[0125]在步骤710处,系统对针对不可以跳过的CAD循环的列地址进行编组。针对不可以跳过的每个CAD循环,系统确定与可以跳过的列地址对应的盘位的数量。例如,系统可以确定是否可以跳过针对列的每个盘位处的每个位或每个存储器单元。如果可以跳过每个位,则系统确定可以跳过该盘位处的列的一部分。针对在CAD循环期间可以跳过的每个盘位,系统确定针对该盘位处的具有需要被编程的存储器单元的子集的另一列的CAD地址。这些另外的CAD被编组在一起,使得系统在共同CAD循环期间在适当的盘位处选择每个CAD来进行编程。
[0126]在步骤712处,状态机针对BAD循环跳过生成位图数据。在一个实施方式中,状态机访问CAD跳过评估(例如,针对SAD循环的逻辑NAND的结果)。如果针对每个CAD循环的用户数据匹配用户数据,则针对BAD的数据锁存器可以存储下述指示:可以跳过针对对应盘位组的BAD循环。如果用户数据不匹配,则针对BAD循环的数据锁存器可以存储下述指示:不应该跳过BAD循环。
[0127]在步骤714处,状态机将不可以跳过的单独的盘位重组成新的盘位组,从而,如果可能的话减少BAD循环的总数量。例如,系统可以针对不可以跳过的每个盘位组确定是否可以跳过该组中的任何单独的盘位。如果盘位组包括可以跳过的盘位,则系统可以使用来自另一盘位组的不可跳过的盘位替换来自该盘位组的可跳过的盘位。系统可以通过使用来自其他盘位组的不可跳过的盘位替换可跳过的盘位来重复该处理,直至针对该盘位组达到可以并行编程的盘位的最大数量为止。然后,系统可以对具有不可跳过的盘位的其余盘位组重复该整个处理。以该方式,系统针对每个盘位组使并行编程的盘位的数量最大化,以尽可能减少所需要的BAD循环的总数量。
[0128]虽然连续地并且按特定的顺序示出了步骤706至714,但是可以按各种顺序并且非连续地来执行步骤706至714。例如,可以同时执行步骤706至714来评估跳过信息并且生成SAD位图数据、BAD位图数据和CAD位图数据,以作为在步骤704中读取的数据。
[0129]在评估跳过信息和生成位图数据之后,状态机执行写入操作。在步骤716处将用户数据编程至存储器阵列。步骤716可以包括如先前所描述的设置操作和重置操作。在步骤716处,存储器系统使用跳过信息循环通过盘位地址、列地址和灵敏放大器地址。步骤716包括使用在步骤716至714处生成的位图数据将用户数据写入存储器阵列。跳过由位图数据指示可以跳过的每个BAD循环。如果不可以跳过BAD循环,则跳过BAD循环内的由位图数据指示可以跳过的任何CAD循环。如果不可以跳过CAD循环,则跳过CAD循环内的由位图数据指示可以跳过的任何SAD。
[0130]在步骤718处,通过验证在步骤716处所编程的数据是否匹配在步骤702处所接收的用户数据来开始写入操作后的验证。在图21中,仅验证在步骤716处写入的数据。状态机可以使用位图数据来确定要验证哪些数据。在认识到不需要验证被确定可以跳过的数据的情况下,加速了验证操作以仅对在步骤716处实际编程的这些存储器单元进行检查。因此,状态机跳过对由位图数据指示可以跳过的任何BAD循环、CAD循环或SAD循环的验证操作。
[0131]在步骤720处,状态机基于步骤718处的验证来确定写入操作是否成功。步骤720可以包括确定所有目标位或预定数量的目标位是否成功地被编程。如果在步骤720处验证了写入操作,则在步骤722处执行写入操作后的读取,以针对用户数据的存储器分配读回所有数据。在步骤724处,完成对写入信息的请求。
[0132]如果在步骤720处未验证写入操作,则在步骤726处状态机重新评估SAD循环跳过、CAD循环跳过及BAD循环跳过,并且针对SAD跳过评估和BAD跳过评估生成更新的位图数据。在一个实施方式中,在步骤718处从存储器阵列读取并验证数据时动态地执行步骤726。步骤726使得状态机能够生成使得能够跳过另外的循环的位图数据,原因在于:使用用户数据成功地对另外的存储器单元编程。步骤726包括:如在步骤710处所执行的,将用于对跨盘位组的不同列进行编程的列地址进行编组。步骤726还包括将盘位重组成盘位组。在步骤716处执行另外的设置或重置写入操作以写入未成功验证的位,并且处理继续进行。
[0133]图22是描述根据一个实施方式的、用于对包括对盘位的重组的盘位跳过进行评估的处理的流程图。在一个实施方式中,图22中的处理可以用于图21的步骤712和步骤714处。然而,要注意的是,可以使用其他的处理来评估盘位跳过信息并且对针对盘位地址循环的盘位进行重组。在步骤730处,状态机确定用于写入操作的、包括匹配用户数据的存储器数据的盘位。在一个示例中,状态机分析SAD跳过信息的结果来确定盘位是否具有其存储器单元中的包括匹配要被编程的用户数据的存储器数据的所有存储器单元。在一个实施方式中,步骤730可以包括生成对匹配用户数据的盘位进行标识的位图数据。在步骤732处,状态机识别可以跳过的盘位组。在一个示例中,状态机可以针对每个盘位组确定是否可以跳过该组中的所有盘位。如果可以跳过,则状态机确定可以跳过该盘位地址组。在一个示例中,步骤732包括生成用于对可以跳过的盘位地址组进行标识的位图数据。
[0134]在步骤732处识别可以跳过的盘位地址组之后,在步骤734处,状态机识别不可以跳过的(不可跳过的)盘位地址组。要注意的是,可以以任何顺序来执行步骤730至734。而且,可以将所识别的在单独的步骤内执行的操作合并成一个或更多个操作。
[0135]在步骤734处,状态机选择如在步骤732中所确定的第一不可跳过的盘位地址组。针对第一不可跳过的盘位地址组,在步骤736处,状态机确定该组是否包括任何可跳过的盘位。
[0136]如果在步骤736处状态机确定在不可跳过的盘位地址组内存在至少一个可跳过的盘位,则在步骤738处状态机确定在其他盘位组中是否存在可用的不可跳过的盘位。也就是说,状态机确定其他不可跳过的盘位组是否包括不可跳过的盘位。在一个实施方式中,步骤738仅对具有至少一个可跳过的盘位的其他盘位组进行检查。以该方式,状态机将不对具有需要被编程的所有盘位的盘位组进行重组。然而,在另一示例中,状态机可以对包括所有不可跳过的盘位的盘位地址组进行重新组织或重组,例如以将这些不可跳过的盘位移动到先前盘位地址循环中。
[0137]如果如在步骤738处所确定的在任何其他盘位地址组中不存在不可跳过的盘位,则在步骤742处对盘位组进行评估和重组的处理结束。如果在步骤738处状态机确定在其他地址组中存在不可跳过的盘位,则状态机进行处理至步骤740。在步骤740处,状态机使用来自另一不可跳过的盘位地址组的不可跳过的盘位替换来自该不可跳过的盘位地址组的可跳过的盘位。在使用不可跳过的盘位替换可跳过的盘位之后,状态机返回到步骤736来确定在该盘位地址组内是否存在另外的可跳过的盘位。如果存在,则在步骤738处重复处理。如果在该不可跳过的盘位地址组中不存在另外的可跳过的盘位,则状态机进行至步骤744以确定是否存在其他不可跳过的盘位地址组要分析。如果不存在其余的不可跳过的组,则在步骤742处评估和重组处理结束。
[0138]图22说明了重组默认的盘位地址组以使针对每个盘位地址组被编程的盘位的数量最大化。以该方式,状态机在分析跳过信息之后将多个盘位合并成单个盘位组以使编程效率最大化。相应地,可以减少所需要的盘位地址循环的数量,这是因为被编程的盘位地址组的数量减少了。
[0139]图23是描述在单个列地址循环期间将用于对不同盘位处的不同列的部分进行编程的列或列地址进行编组的处理的流程图。在一个示例中,图23的处理可以用于执行图21的步骤708和步骤710,以对列地址跳过进行评估和将用于在共同的列地址循环中进行编程的列地址进行编组。
[0140]在步骤750处,状态机针对每个列确定该列处的存储器数据是否匹配针对该列要被编程的用户数据。状态机可以利用SAD跳过信息来确定针对跨所有盘位的特定列的所有位或所有存储器单元是否包括匹配用户数据的存储器数据。基于在步骤750处匹配用户数据的列,在步骤752处,状态机识别可以跳过的列地址和不可以跳过的列地址。在一个示例中,状态机生成用于标识可以跳过的列和不可以跳过的列的位图信息。然而,在另一示例中,状态机可以针对灵敏放大器地址循环基于位图信息来应用逻辑。
[0141]在步骤754处,状态机选择第一不可跳过的列地址。在步骤756处,状态机确定是否可以跳过对组的不同盘位处的列的单独部分的编程。在一个实施方式中,状态机确定每个盘位处与列地址对应的列的单独部分是否是可跳过的。如先前所描述的,每个列跨多个盘位,例如跨盘位组中的所有盘位。在步骤756处,状态机可以确定每个盘位处的列的存储器单元的子集是否是可跳过的。
[0142]如果状态机确定盘位处的列的一部分是可跳过的,则状态机进行至步骤758。在步骤758处,状态机确定在要被编程的存储器中是否存在其余的另一列的不可跳过的部分。与盘位编组的情况相同,在步骤758的一个实施方式中,状态机可以针对另一盘位从包括至少一个可跳过部分的另一列中仅选择不可跳过的部分。以该方式,状态机将不分割对下述特定列的编程,对于该特定列而言,所有盘位处的所有部分需要被编程。在另一示例中,状态机可以在不考虑是否可以跳过整个列的情况下对列地址进行编组。
[0143]如果状态机确定存在具有不可跳过的部分的另一列,则状态机进行至步骤760。在步骤760处,状态机将针对具有不可跳过的部分的其他列的CAD与来自步骤754的所选择的列地址循环进行编组。状态机还识别与该可跳过的部分对应的盘位。以该方式,在步骤756处,状态机可以在对对应列地址循环进行编程时向与该可跳过的部分对应的盘位提供来自其他列的列地址。
[0144]要注意的是,一个实施方式中,对于步骤758而言,状态机不将两个列地址合并到用于对同一盘位进行编程的一个列地址循环中。例如,系统可以在列地址循环期间向每个盘位提供一个列地址。相应地,系统将使用针对第一盘位处的不可跳过的部分的列地址替换针对第一盘位处的可跳过的部分的列地址。
[0145]如果来自步骤754的不可跳过的CAD不包括可跳过部分,则状态机确定是否存在其余的另一不可跳过的列地址。如果存在,则状态机进行至步骤754来选择下一不可跳过的CAD。如果不存在其余的不可跳过的列地址,则在步骤762处处理完成。如果系统在步骤758处确定不存在具有不可跳过的部分的另外的列,则在步骤762处处理同样完成。
[0146]图24是描述了根据一个实施方式的使用跳过信息来对用户数据进行编程的方法的流程图。在一个示例中可以在图21的步骤716处执行图24 ο在步骤800处,状态机将BAD循环设置成BADO。在步骤802处,状态机针对BAD循环BADO的位图数据访问来自寄存器135的数据锁存器。状态机基于位图数据来确定是否对BAD循环进行编程。如果位图数据指示应该跳过循环BAD0,则状态机不对针对BAD循环的数据进行编程。在一个实施方式中,状态机可以通过不将针对BAD循环的任何数据从页寄存器传送至针对存储器阵列的灵敏放大器来跳过对BAD循环的编程。该示例中的BAD循环可以与用于对包括多于一个盘位的盘位地址组进行寻址的BAD对应。
[0147]在跳过对
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1