用于数据刷新的部分块擦除的制作方法

文档序号:11935400阅读:305来源:国知局
用于数据刷新的部分块擦除的制作方法与工艺

半导体存储器广泛应用于各种电子设备中,如,蜂窝电话、数码相机、个人数字助理、医学电子器件、移动计算设备以及非移动计算设备。半导体存储器可以包括非易失性存储器或易失性存储器。即使在非易失性存储器未与电源(例如,电池)连接时,所述非易失性存储器仍允许存储并保留信息。非易失性存储器的示例包括闪存(例如,NAND型和NOR型闪存)和电可擦除可编程只读存储器(EEPROM)。

闪存和EEPROM两者利用浮栅晶体管。对于每个浮栅晶体管而言,浮栅被定位在所述浮栅晶体管的沟道区域上方并与其绝缘。沟道区域被定位在浮栅晶体管的源极区与漏极区之间。控制栅被定位在浮栅上方并与其绝缘。可以通过设定存储在浮栅上的电荷量来控制浮栅晶体管的阈值电压。通常使用福勒-诺得海姆隧道效应或热电子注射来控制浮栅上的电荷量。调整阈值电压的能力允许浮栅晶体管充当非易失性存储元件或存储器单元。在一些情况下,每个存储器单元(即,多级或多状态存储器单元)多于一个数据位可以通过编程并读取多个阈值电压或阈值电压范围来提供。

NAND闪存结构通常安排有与两个选择栅极串联并位于两者之间的多个浮栅晶体管。串联的浮栅晶体管以及选择栅极可以被称为NAND串。近年来,NAND闪存已经被缩小尺寸以便减少每位的成本。然而,由于工艺几何尺寸缩小,出现了许多设计和工艺挑战。这些挑战包括晶体管特性在工艺、电压以及温度变化上的增加的可变性以及对于在相邻浮栅晶体管之间的耦合的浮栅的增加的浮栅。

附图说明

图1描绘了NAND串的一个实施例。

图2用相应的电路图描绘了图1的NAND串的一个实施例。

图3A描绘了包括多个NAND串的存储器块的一个实施例。

图3B描绘了每单元三位的存储器单元的可能的阈值电压分布的一个实施例。

图3C描绘了编程操作期间的NAND串的一个实施例。

图3D描绘了擦除操作期间的NAND串的一个实施例。

图4A描绘了垂直NAND结构的一个实施例。

图4B描绘了沿图4A的线X-X截取的横截面视图的一个实施例。

图5描绘了非易失性存储系统的一个实施例。

图6描绘了读出块的一个实施例。

图7A描绘了四态存储器设备的一组阈值电压分布的一个实施例,其中,每个存储元件存储两位数据。

图7B描绘了两轮次编程技术的第一轮次的一个实施例。

图7C描绘了两轮次编程技术的第二轮次的一个实施例。

图7D描绘了另一个两轮次编程技术的第一轮次的一个实施例。

图7E描绘了两轮次编程技术的第二轮次的一个实施例。

图7F描绘了在编程操作期间被施加到所选字线的一系列编程及验证脉冲的一个实施例。

图8是流程图,描述了用于执行数据刷新操作的过程的一个实施例。

图9A是流程图,描述了用于执行编程操作的过程的一个实施例。

图9B是流程图,描述了用于执行编程操作的过程的替代性实施例。

具体实施方式

描述了用于在执行数据刷新或编程之前对存储器阵列中的字线子集执行部分块擦除操作的技术(例如,字线子集可以包括少于存储器阵列中的所有字线的字线)。存储器阵列可以包括各种存储器结构,所述存储器结构包括平面NAND结构、垂直NAND结构、位成本可扩展(BiCS)NAND结构、3D NAND结构、或者3D ReRAM结构。在一些情况下,存储在连接至具有高于错误阈值(例如,每页多于两个位错误或者每个字线多于三个位错误)的失败位计数的字线的存储器单元中的数据可以通过以下方式进行刷新:对存储器单元执行读取操作,生成存储器单元的经校正的数据(例如,通过使用与存储在存储器单元中的数据相关联的ECC信息来生成经校正的数据),对包括字线的一个或多个字线执行部分块擦除操作,并且然后,将经校正的数据写入存储器单元中。在一个示例中,一个或多个字线可以包括具有高于错误阈值的失败位计数的字线以及与所述字线相邻的相邻字线(例如,被安排紧挨着所述字线的漏极侧字线或源极侧字线)。在此情况下,即使所述字线与高于错误阈值的失败位计数相对应并且相邻字线不与高于错误阈值的失败位计数相对应,也可以刷新存储在连接至所述字线以及相邻字线的存储器单元中的数据。

在一些实施例中,可以刷新存储在与具有高于错误阈值的误比特率(BER)或失败位计数(FBC)的字线相对应的存储器单元中的数据,以便补偿读取干扰和/或编程干扰对存储在存储器单元中的数据的数据完整性的影响。在一个示例中,在读取操作期间,由于从存储器阵列中的存储器单元处读取了数据页,因此可以缓冲所述数据页并且可以基于与所述数据页相关联的ECC信息来确定所述数据页的位错误的数量或失败位计数(例如,1KB或2KB页大小中有两个位错误)。在执行数据刷新之前可以容忍的位错误的数量可以取决于可以使用ECC信息进行校正的位的数量。如果位错误的数量或失败位计数大于阈值数量,则可以触发数据刷新,使经校正的数据使用ECC信息来生成并写入存储器单元。在一些情况下,可以使用部分块擦除操作对连接至存储器单元的字线和/或存储器阵列内的一个或多个其他字线进行擦除并对其重新编程。可以基于触发数据刷新的字线的编程/擦除循环的数量或者基于存储器阵列或存储器块中的一个或多个字线的集合(例如,存储器块中的10个字线的集合)的编程/擦除循环的数量来确定被擦除并被重新编程的字线的数量。

在一些情况下,如果触发数据刷新的字线已经最多被擦除刷新阈值次(例如,最多五次),则只有触发数据刷新的字线可以被重新编程;然而,如果触发数据刷新的字线已经被擦除多于刷新阈值次,则触发数据刷新的字线以及所述字线的相邻字线(例如,漏极侧字线)两者均可以被擦除和重新编程。在一些情况下,如果触发数据刷新的字线已经被擦除多于刷新阈值次,则触发数据刷新的字线以及一个或多个其他字线(例如,三个漏极侧字线)可以被擦除和重新编程。可以基于以下各项随着时间设定或调整刷新阈值:与存储器块相关联的温度、触发数据刷新的字线的编程/擦除循环的数量、存储器块的编程/擦除循环的数量、触发数据刷新的字线已经发生的先前数据刷新的次数、或者存储器块已经发生的数据刷新的次数。在一个示例中,如果存储器块的部分块擦除次数最多为第一循环数(例如,存储器块已经有最多十次部分块擦除),则可以将刷新阈值设定为第一值;并且如果存储器块的部分块擦除次数大于第一循环数,则可以将刷新阈值设定为大于第一值的第二值。部分块擦除操作可以包括在其中少于存储器块中的所有字线的字线被擦除的擦除操作。在一个示例中,部分块擦除操作可以使连接至存储器块内的48个总字线中的四个字线的存储器单元被擦除。部分块擦除操作可以包括在其中少于存储器块中的所有存储器单元的存储器单元被擦除的擦除操作。

可以通过以下方式执行部分块擦除操作:偏置存储器块中待用0V或负电压擦除的一个或多个字线、偏置存储器块中用高电压(例如,15V或大于施加到待擦除的一个或多个字线上的电压的另一电压)未被擦除的一个或多个其他字线或者浮置所述一个或多个其他字线、以及将存储器块的阱(例如,p阱)偏置至擦除电压(例如,15V或者20V)。在一个示例中,在部分块擦除操作期间,可以使用一个或多个擦除脉冲对存储器块中待擦除的一个或多个字线施以脉冲(例如,从15V到0V的脉冲)。在一个示例中,部分块擦除操作可以使仅连接至存储器块中的一个字线的存储器单元被擦除。在另一个示例中,部分块擦除操作可以使连接至少于存储器块中的所有字线的字线的集合的存储器单元被擦除。

在一些实施例中,在执行编程操作(如,对连接至开放块(即,包括由于对未编程字线执行的最后的擦除操作而仍然为被编程的未编程字线的存储器块)中的未编程字线的存储器单元执行的开放块编程操作)之前,可以对连接至未编程字线的存储器单元执行部分块擦除操作。部分块擦除操作可以是用于紧缩连接至未编程字线的存储器单元的擦除分布的过程的一部分。通过对连接至未编程字线的存储器单元执行部分块擦除操作,可以减少编程操作期间未编程字线从擦除状态到A状态的失败次数。此外,在已经执行部分块擦除操作之后以及在关闭开放块之前(即,存储器块中的每个字线已被编程之后),可以减少或重置对未编程字线的读取循环限制。在已经擦除连接至未编程字线的存储器单元之后,在编程操作期间可以使用新数据对存储器单元进行编程,而不需要将新数据复制到另一个存储器块。

在一些情况下,在对连接至存储器块中的未编程字线的存储器单元执行编程操作之前,可以读取未编程字线,以便确定存储器单元的失败位的数量或者与阈值电压相对应的存储器单元的数量,所述阈值电压在擦除的存储器单元的目标阈值电压分布外。如果具有位于擦除的存储器单元的目标阈值电压分布外的阈值电压的失败位的数量或者存储器单元的数量高于阈值(例如,多于三个存储器单元),则在对存储器单元执行编程操作之前,可以对连接至未编程字线的存储器单元执行部分块擦除操作。可以通过源极侧字线发生的编程操作和/或读取操作使连接至未编程字线的存储器单元的阈值电压发生改变。在执行编程操作之前擦除连接至未编程字线的存储器单元可以允许减少或重置未编程字线的最大读取循环计数。在一个示例中,如果包括未编程字线的存储器块已经被读取了特定次数、如果存储器块的一部分已经被读取了特定次数(例如,存储器块内的特定字线已经被读取了特定次数)、或者在对存储器块中的未编程字线进行编程之前,如果未编程字线的失败位的数量超过失败位阈值,则可以对未编程字线执行部分块擦除操作。可以基于与存储器块相关联的温度、存储器块的编程/擦除循环的数量、或者存储器块已经发生的数据刷新的次数随时间设定或调整失败位阈值。

影响NAND闪存的一个问题是由于缩放(尤其是在已经发生多个编程/擦除循环之后)的原因,编程干扰和读取干扰已经变得更加糟糕。在执行数据刷新(例如,在数据已经被存储在存储器单元中之后)之前或者在编程(例如,在数据已经被存储在存储器单元之前)之前对存储器阵列中的字线子集执行部分块擦除操作的一个好处是可以提高存储在存储器阵列的存储器单元中的数据的数据完整性。

在一个实施例中,非易失性存储系统可以包括非易失性存储器单元的一个或多个二维阵列。二维存储器阵列中的存储器单元可以形成单个存储器单元层并且可以经由X和Y方向上的控制线(例如,字线和位线)进行选择。在另一个实施例中,非易失性存储系统可以包括一个或多个单片式三维存储器阵列,其中,在没有任何插入衬底的情况下,可以在单个衬底上方可以形成两层或更多层存储器单元。在一些情况下,三维存储器阵列可以包括位于衬底上方并与衬底正交或与衬底基本上正交(例如,在与衬底正交的法向量的2度至5度内)的一个或多个垂直列存储器单元。在一个示例中,非易失性存储系统可以包括具有垂直位线或被安排与半导体衬底正交的位线的存储器阵列。所述衬底可以包括硅衬底。存储阵列可以包括可重写非易失性存储器单元,其中,在没有与可逆电阻开关元件串联的隔离元件(例如,没有与可逆电阻开关元件串联的二极管)的情况下,每个存储器单元包括可逆电阻开关元件。

在一些实施例中,非易失性存储系统可以包括单片地形成在具有被布置在硅衬底上方的有效区域的一个或多个物理存储器单元阵列层中的非易失性存储器。非易失性存储系统还可以包括与存储器单元(例如,解码器、状态机、页面寄存器、或者用于控制存储器单元的读取或编程的控制电路)的操作相关联的电路。与存储器单元的操作相关联的电路可以位于衬底的上方或者位于衬底内。

在一些实施例中,非易失性存储系统可以包括单片式三维存储器阵列。单片式三维存储器阵列可以包括一级或多级存储器单元。一级或多级存储器单元的第一级内的每个存储器单元可以包括位于衬底上方(例如,单晶体衬底或者晶体硅衬底上方)的有效区域。在一个示例中,有效区域可以包括半导体结(例如,P-N结)。有效区域可以包括晶体管的源极区或漏极区的一部分。在另一个示例中,有效区域可以包括晶体管的沟道区域。

图1描绘了NAND串90的一个实施例。图2使用相应的电路图描绘了图1的NAND串的一个实施例。如所描绘的,NAND串90包括串联在第一选择栅极120(即,漏极侧选择栅极)与第二选择栅极122(即,源极侧选择栅极)之间的四个晶体管100、102、104和106。选择栅极120将NAND串90连接到位线126。选择栅极122将NAND串90连接到源极线128。选择栅极120通过将适当的电压施加到控制栅极120CG(即,经由图2的选择线SGD)进行控制。选择栅极122通过将适当的电压施加到控制栅极122CG(即,经由图2的选择线SGS)进行控制。晶体管100、102、104和106中的每个晶体管包括控制栅极和浮栅。例如,晶体管100包括控制栅极100CG和浮栅100FG,晶体管102包括控制栅极102CG和浮栅102FG,晶体管104包括控制栅极104CG和浮栅104FG,并且晶体管106包括控制栅极106CG和浮栅106FG。控制栅极100CG、102CG、104CG和106CG分别连接至字线WL3、WL2、WL1和WL0。

注意,尽管图1和图2示出了NAND串中的四个浮栅晶体管,但是仅提供四个浮栅晶体管的使用作为示例。NAND串可以包括少于或多于四个浮栅晶体管(或者存储器单元)。例如,一些NAND串可以包括16个存储器单元、32个存储器单元、64个存储器单元、128个存储器单元等。本文中的讨论不限于NAND串中任何特定数量的存储器单元。一个实施例使用具有66个存储器单元的NAND串,其中,64个存储器单元用于存储数据并且两个存储器单元因为它们不存储数据而被称为假存储器单元。

使用NAND闪存结构的闪存系统的典型架构包括存储器块中的多个NAND串。存储器块可以包括擦除单元。在一些情况下,存储器块中的NAND串可以共享公共阱(例如,P阱)。每个NAND串可以通过其源极侧选择栅极(例如,由选择线SGS控制)连接至公共源极线并通过其漏极侧选择栅极(例如,由选择线SGD控制)连接至其相关联的位线。通常,每个位线在垂直于字线的方向上在其相关联的NAND串的顶部(或上方)运行并连接至读出放大器。

在一些实施例中,在编程操作期间,将不被编程的存储元件(例如,先前已经完成到目标数据状态的编程的存储元件)可以被抑制或锁定以防止通过增大相关联的沟道区域(例如,经由字线耦合自增加沟道区域)进行编程。未选的存储元件(或未选的NAND串)可以被称为抑制的或锁定的存储元件(或抑制的NAND串),因为其被抑制或锁定以防止在编程操作的给定编程迭代期间进行编程。

尽管本文中描述了使用NAND型闪存的技术,但是本文中所描述的技术也可以应用到其他类型的非易失性存储设备和架构(例如,NOR型闪存)。此外,尽管本文中描述了使用浮栅晶体管的技术,但是本文中所描述的技术也可以应用到包括采用电荷俘获、相变(例如,硫化物材料)或状态转换材料的那些技术的其他存储器技术或者可以与其一起使用。

图3A描绘了包括多个NAND串的存储器块的一个实施例。如所描述的,每个NAND串包括(Y+1)个存储器单元。每个NAND串经由漏极侧选择信号SGD控制的漏极侧选择栅极连接至漏极侧上的(X+1)个位线之外的一个位线(即,位线BL0至BLX的一个位线)。每个NAND串经由源极侧选择信号SGS控制的源极侧选择栅极连接至源极线(源极)。在一个实施例中,源极侧选择信号SGS控制的源极侧选择栅极和漏极侧选择信号SGD控制的漏极侧选择栅极可以包括没有浮栅的晶体管或者可以包括包含有浮栅结构的晶体管。在一些实施例中,NAND串中的晶体管可以包括具有电荷俘获层的晶体管。

在一些实施例中,为了节省半导体裸片上的空间,两个相邻的NAND串(或者存储器单元中的其他分组)可以共享公共位线(即,共享位线存储器架构)。在一些情况下,多于两个NAND串可以共享公共位线。在一个示例中,信号SGD可以被两个漏极侧选择信号SGD1和SGD2代替。然后,一对中的每个NAND串将有两个漏极侧选择栅极,每个漏极侧选择栅极连接至两个漏极侧选择信号SGD1和SGD2的不同的漏极侧选择信号。每个NAND串的两个漏极侧选择栅极中的一个漏极侧选择栅极可以是耗尽型晶体管,其阈值电压低于0伏特。使用每个NAND串的漏极侧上的两个选择栅极的一个潜在的问题是两个漏极侧选择栅极(如与一个漏极侧选择晶体管比较)可能需要更多裸片区域、增加制造层的数量、或者增加存储器设备的高度。因此,从集成电路区域观点来看,每个NAND串仅使用一个漏极侧选择栅极并且然后将一对中的每个NAND串仅连接至两个漏极侧选择信号中的一个漏极侧选择信号可能是有益的。

在一个实施例中,在编程操作期间,当对存储器单元(如,NAND闪存单元)进行编程时,可以将编程电压施加到存储器单元的控制栅极并且可以将相应位线接地。这些编程偏置条件可以使电子经由电场辅助电子隧道效应注入到浮栅中(或注入到电荷存储层(如,氮化硅电荷俘获层)中),从而提高存储器单元的阈值电压。在编程操作期间施加到控制栅极的编程电压可以被应用为一系列脉冲。在一些情况下,可以增加编程脉冲的幅度,每个连续脉冲以预定步长增加。在编程脉冲之间,可以执行一个或多个验证操作。在编程操作期间,已达到其预期编程状态的存储器单元可以被锁定并抑制以防止通过增大编程抑制的存储器单元的沟道区域进行编程。

在一个实施例中,可以通过在浮置源极和位线的同时,将p阱提高到擦除电压(例如,20伏特)足够的时间段并将所选存储器单元块的字线接地来擦除存储器单元。在垂直存储器设备(例如,BiCS或其他类型的3D NAND)的情况下,存储器串的垂直沟道可以电连接至存储器孔底部(例如,位于SGS晶体管下面)的衬底(例如,经由衬底中的p阱)。这些擦除偏置条件可以使电子通过隧道氧化物从浮栅中进行传送,从而降低所选块中的存储器单元的阈值电压。在一些情况下,可以对整个存储器平面、存储器平面中的单独块、或者存储器单元的另一个单位执行擦除操作。

在一些实施例中,在验证操作和/或读取操作期间,所选字线可以连接(或偏置)到其电平对于每个读取和验证操作而言特定的电压,以便判定特定存储器单元的阈值电压是否已达到这一电平。在向字线施加电压后,可以测量(或读出)存储器单元的传导电流以便判定存储器单元是否响应于施加到字线的电压而传导了足够的电流量。如果测量到传导电流大于某个值,则假定接通了存储器单元并且施加到字线的电压大于存储器单元的阈值电压。如果测量到传导电流大于某个值,则假定没有接通存储器单元并且施加到字线的电压不大于存储器单元的阈值电压。

有许多方法测量读取或验证操作期间存储器单元的传导电流。在一个示例中,存储器单元的传导电流可以通过其在读出放大器中给专用电容器放电或充电的速度进行测量。在另一个示例中,所选存储器单元的传导电流允许(或不允许)包括存储器单元的NAND串在相应位线上释放电压。位线的电压(或者跨读出放大器中的专用电容器两端的电压)可以在一段时间之后进行测量,以便判定对位线是否已经释放了特定量的电荷。

图3B描绘了每单元三位的存储器单元(即,存储器单元可以存储三位数据)的可能的阈值电压分布(或数据状态)的一个实施例。然而,其他实施例可以使用每存储器单元多于或少于三位数据(例如,如每存储器单元四位或更多位数据)。在成功编程过程(有验证)结束时,存储器页或存储器块中的存储器单元的阈值电压应当适当地在编程的存储器单元的一个或多个阈值电压分布中或者在擦除的存储器单元的阈值电压分布中。

如所描绘的,每个存储器单元可以存储三位数据;因此,存在八个有效数据状态S0至S7。在一个实施例中,数据状态S0低于0伏特并且数据状态S1至S7高于0伏特。在其他实施例中,八个数据状态均高于0伏特,或者可以实施其他安排。在一个实施例中,阈值电压分布S0比分布S1至S7宽。

每个数据状态S0至S7对应于存储在存储器单元中的三位的唯一值。在一个实施例中,S0=111,S1=110,S2=101,S3=100,S4=011,S5=010,S6=001并且S7=000。也可以使用数据到状态S0至S7的其他映射。在一个实施例中,将存储在存储器单元中的所有位数据存储在相同的逻辑页中。在其他实施例中,存储在存储器单元中的每位数据对应于不同页。因此,存储三位数据的存储器单元将包括第一页、第二页和第三页中的数据。在一些实施例中,连接至相同字线的存储器单元中的所有存储器单元将把数据存储在相同的三页数据中。在一些实施例中,连接至字线的存储器单元可以被分组成不同的页集(例如,按照奇数和偶数位线)。

在一些情况下,可以将存储器单元擦除到状态S0。从状态S0中,存储器单元可以被编程到状态S1至S7中的任意状态。可以通过将具有上涨的幅度的脉冲集应用到存储器单元的控制栅极来执行编程。在脉冲之间,可以执行验证操作集,以便判定被编程的存储器单元是否已达到其目标阈值电压(例如,使用验证电平Vv1、Vv2、Vv3、Vv4、Vv5、Vv6以及Vv7)。将对被编程到状态S1的存储器单元进行测试,以便查看其阈值电压是否已达到Vv1。将对被编程到状态S2的存储器单元进行测试,以便查看其阈值电压是否已达到Vv2。将对被编程到状态S3的存储器单元进行测试,以便查看其阈值电压是否已达到Vv3。将对被编程到状态S4的存储器单元进行测试,以便查看其阈值电压是否已达到Vv4。将对被编程到状态S5的存储器单元进行测试,以便查看其阈值电压是否已达到Vv5。将对被编程到状态S6的存储器单元进行测试,以便查看其阈值电压是否已达到Vv6。将对被编程到状态S7的存储器单元进行测试,以便查看其阈值电压是否已达到Vv7。

在读取存储有三位数据的存储器单元时,将在读数比较点Vr1、Vr2、Vr3、Vr4、Vr5、Vr6以及Vr7处执行多次读取,以便判定存储器单元处于哪个状态。如果存储器单元响应于Vr1而接通,则其处于状态S0。如果存储器单元响应于Vr2而接通但不响应于Vr1而接通,则其处于状态S1。如果存储器单元响应于Vr3而接通但不响应于Vr2而接通,则其处于状态S2。如果存储器单元响应于Vr4而接通但不响应于Vr3而接通,则其处于状态S3。如果存储器单元响应于Vr5而接通但不响应于Vr4而接通,则其处于状态S4。如果存储器单元响应于Vr6而接通但不响应于Vr5而接通,则其处于状态S5。如果存储器单元响应于Vr7而接通但不响应于Vr6而接通,则其处于状态S6。如果存储器单元不响应于Vr7而接通,则其处于状态S7。

图3C描绘了在编程操作期间的NAND串300的一个实施例。在对NAND串300的存储元件(例如,与WL5相关联的存储元件316)进行编程时,可以将编程电压施加到与存储元件相关联的所选字线并且将低电压(例如,接地)施加到与存储元件相关联的位线。如所描绘的,NAND串300包括源极侧选择栅极306、漏极侧选择栅极308以及在p阱310上方形成的八个字线WL0至WL7。可以将VSGS施加到源极侧选择栅极306并且可以将VSGD施加到漏极侧选择栅极308。可以将位线302偏置到VBL并且可以将源极线304偏置到V源极。在编程操作期间,可以将编程电压VPGM施加到与所选存储元件316相关联的所选字线WL5。

在增加模式的一个示例中,当存储元件316是所选存储元件时,可以将相对低的电压V低(例如,2V至6V)施加到源极侧字线(WL3),而可以将隔离电压VISO(例如,0V至4V)施加到被称为隔离字线的另一个源极侧字线(WL2),并且可以将通过电压V通过施加到与NAND串300相关联的剩余字线(在此情况下为字线WL0、WL1、WL4、WL6以及WL7)。而VISO和V低的绝对值可以在相对大的且部分重叠的范围内变化,VISO可以小于V低。在一些情况下,VISO可以小于V低,V低小于V通过,V通过小于VPGM。

图3D描绘了在擦除操作期间的NAND串的一个实施例。在擦除操作期间,p阱310可以被偏置到擦除电压(例如,20V),而与存储器单元对应的所选字线被偏置到0V。由于只有连接到字线WL5和WL6的存储元件被擦除,而连接至字线WL0至WL4和WL7的所有其它存储元件未被擦除,因此擦除操作可以包括部分块擦除操作。在擦除操作期间,与VBL、V源极、VSGS以及VSGD相对应的节点也可以被浮置。

图4A描绘了垂直NAND结构的一个实施例。垂直NAND结构包括垂直NAND串,所述垂直NAND串形成在衬底424上方并被定向从而使得垂直NAND串与衬底424正交。垂直NAND串可以被安排在垂直存储器孔内,所述垂直存储器孔通过控制栅极材料(例如,钨或者多晶硅)和栅间绝缘材料(例如,氧化物或者氧化硅)的交替层而被蚀刻。如所描绘的,控制栅极材料层包括层417和层414至416并且栅间绝缘材料包括层418至420。栅间绝缘材料层420可以被安排在源极线层422(例如,经掺杂的多晶硅)上方,所述源极线层可以被安排在衬底424(例如,硅衬底)上方。在一些情况下,第一字线(WL1)可以对应于控制栅极层414,第二字线(WL0)可以对应于控制栅极层415,并且源极侧选择栅极线(SGS)可以对应于控制栅极层416。

在一个实施例中,在存储器孔内,介电材料408(例如,氧化物或介电层堆叠,如Al2O3层和SiO2层)、浮栅材料410(例如,多晶硅)、隧道层材料412(例如,薄氧化物)以及沟道层材料406(例如,未经掺杂的多晶硅)可以被沉积在存储器孔内并被安排以便形成垂直NAND串。隧道层材料412可以包括多层介电堆叠(如,ONO介电堆叠)的一部分,其包括二氧化硅(“O”)和氮化硅(“N”)的交替层。在一些情况下,核心材料层404(例如,氧化物)可以形成在存储器孔内。在其他情况下,可以省略核心材料层404。位线接触层402可以在存储器孔的顶部形成并且可以连接至沟道层材料406。沟道层材料406可以连接至存储器孔底部的源极线层422。因此,在此情况下,位线接触层402在存储器孔顶部连接至垂直NAND串并且源极线接触层422在存储器孔底部连接至垂直NAND串。在一些实施例中,可以用电荷存储材料或电荷俘获层(例如,氮化硅)来代替浮栅材料410。

图4B描绘了沿图4A的线X-X截取的横截面视图的一个实施例。如所描绘的,垂直NAND串包括被沟道层材料406包围的内芯材料层404,所述沟道层材料被隧道层材料412包围,所述隧道层材料被浮栅材料410包围,所述浮栅材料被介电材料408包围,所述介电材料被控制栅极材料层417包围。在一个实施例中,图4A可以描绘沿图4B的线Y-Y截取的横截面视图。在一个实施例中,可以使用垂直圆柱形结构或者垂直锥形圆柱形结构来形成垂直NAND串。在此情况下,垂直NAND串的介电材料408、浮栅材料410、隧道层材料412和沟道层材料406可以包括包围核心材料层404的垂直环形结构。在另一个实施例中,可以使用垂直柱形结构或者垂直矩形棱柱结构来形成垂直NAND串。

图5描绘了包括用于并行读取和编程存储器单元(例如,NAND多级单元)页(或其他单位)的读取/写入电路的非易失性存储系统596的一个实施例。如所描绘的,非易失性存储系统596包括存储器裸片598和控制器550。存储器裸片598包括存储器阵列501(例如,NAND闪存阵列)、控制电路510、行解码器530、列解码器560和读取/写入电路565。在一个实施例中,在阵列的相对侧上以对称的形式通过各种外围电路(例如,行解码器或者列解码器)接入存储器阵列501,从而使得每一侧上的接入线和电路的密度减小一半。存储器阵列501经由行解码器530通过字线且经由列解码器560通过位线可寻址。字线和位线是存储器阵列控制线的示例。读取/写入电路565包括允许并行读取或编程存储元件页的多个读出块500。在一些情况下,控制器550可以被集成到存储器裸片598上。经由线520在主机与控制器550之间并经由线518在控制器550与存储器裸片598之间传送命令和数据。

在一些情况下,控制器550可以结合控制电路510进行工作,以便从存储器阵列501中读取和/或向其写入数据。在一个示例中,待写入存储器阵列501的数据可以由控制器550进行缓冲并且错误校正码(ECC)数据可以对应于待写入的数据而生成。允许检测和/或校正在传输或存储期间发生的数据错误的ECC数据可以被写入到存储器阵列501或者被存储到控制器550的非易失性存储器中。在一个实施例中,可以生成ECC数据并且可以由控制器550中的电路来校正数据错误。控制器550可以将控制电路510配置成用于对存储器阵列501执行各种存储器操作。在一个示例中,主机可以下发编程命令并且,作为回应,控制器550可以将控制电路配置成用于执行编程操作之前的读取操作(例如,读取位于页面结尾的边带或开销区域,以便确认所述页面还未被标记为有缺陷并且可以被写入)。

控制电路510可以将读取/写入电路565配置成用于对存储器阵列501执行存储器操作。控制电路510包括状态机512、片上地址解码器514、缓冲器511和功率控制模块516。缓冲器511可以包括用于存储一页或更多页数据的SRAM或页面寄存器。状态机512提供对存储器操作的芯片级控制。在一个示例中,状态机512可以使各种电压施加到对应于特定存储器操作(例如,读取或写入操作)的存储器阵列501内的控制线(例如,所选字线和未选字线)上。状态机512可以实施用于控制读取、写入或擦除操作的控制逻辑。片上地址解码器514提供主机或存储器控制器所使用的地址与解码器530和560所使用的硬件地址之间的地址接口。功率控制模块516控制在存储器操作期间向字线和位线施加的功率和电压。在一个实施例中,功率控制模块516包括可以产生高于电源电压的电压的一个或多个电荷泵以及用于产生各种电压(如,在编程、擦除以及读取操作期间使用的电压)的一个或多个电压调节器。

在一些实施例中,除了存储器阵列501,部件中的一个或多个(单独或组合)可以被称为管理或控制电路。例如,一个或多个管理或控制电路可以包括以下各项中的任何一项或其组合:控制电路510、状态机512、解码器530/560、功率控制516、读出块500、缓冲器511、读取/写入电路565、控制器550等。一个或多个管理电路可以执行或促进一个或多个存储器阵列操作(包括擦除、编程或读取操作)。

存储器裸片598可以包括读取电路、写入电路和擦除电路。读取电路、写入电路和擦除电路可以共享部件或电路,以便实施用于对存储器阵列501执行读取、写入或擦除操作的控制逻辑。读取电路、写入电路和擦除电路可以是用于促进一个或多个存储器阵列操作(包括擦除、编程或读取操作)的一个或多个管理电路的一部分。

在一个实施例中,存储器阵列501可以被分成大量的存储器单元块(例如,块0至1023或另一数量)。如对于闪存系统是普通的,块可以是擦除的单位。即,每个块可以包含同时被擦除的最小数量的存储器单元。也可以使用其他擦除单位。块包含经由位线和字线接入的NAND串集。通常,块中的所有NAND串共享公共字线集。

每个块可以被分为特定数量的页。在一个实施例中,页可以是编程的单位。也可以使用其他编程单位。一页或多页数据通常存储在存储器单元的一行中。例如,可以将一页或多页数据存储在连接至公共字线的存储器单元中。在一个实施例中,可以同时编程连接至公共字线的存储器单元集合。页可以存储一个或多个扇区。扇区可以包括用户数据和开销数据(也被成为系统数据)。开销数据通常包括头部信息以及已经从所述扇区的用户数据中计算的错误校正码(ECC)。控制器(或其他部件)在数据被编程到所述阵列时计算ECC,并且在从所述阵列读取数据时还检查所述ECC。可替代地,ECC和/或其他开销数据可以存储在与其所属的用户数据不同的页或者甚至不同的块。用户数据的扇区通常为512字节,对应于磁盘驱动器中的扇区的大小。大量的页形成了来自8页的任何地方的块(例如,高达32页、64页、128页或更多页)。也可以使用不同大小的块、页以及扇区。

图6描绘了读出块500(如图5中的读出块500)的一个实施例。单独的读出块500可以被分成核心部分(被称为读出模块580)和公共部分590。在一个实施例中,对于每个位线存在分离的读出模块580,并且对于多个读出模块580的集合存在一个公共部分590。在一个示例中,读出块将包括一个公共部分590和八个读出模块580。成组的读出模块中的每个读出模块将经由数据总线572与相关联的公共部分进行通信。

读出模块580包括读出电路570,所述读出电路判定所连接的位线中的传导电流在预定阈值电平以上还是以下。读出模块580还包括位线锁存器582,所述位线锁存器用于设定所连接的位线上的电压条件。例如,位线锁存器582中锁存的预定状态可能导致连接的位线被拉到指定编程禁止电压的状态(例如1.5V至3V)。

公共部分590包括处理器592、数据锁存器集合594以及在数据锁存器集合594与数据总线520之间耦合的I/O接口596。处理器592执行计算。例如,处理器592可以确定读出到的存储元件中存储的数据并且将所确定的数据存储在数据锁存器集合中。数据锁存器集合594可以用于存储在读取操作期间由处理器592确定的数据位或存储在编程操作期间从数据总线520导入的数据位。导入的数据位表示意为将被编程到存储器阵列(如图5中的存储器阵列501)中的写入数据。I/O接口596提供数据锁存器594与数据总线520之间的接口。

在读取操作或其他存储元件读出操作期间,状态机(如图5中的状态机512)控制将不同的控制栅极电压施加到所寻址的存储元件。在逐步通过与存储器支持的各个存储器状态相对应的各个预定控制栅极电压时,读出模块580可能在这些电压中的一个电压处切断并且将从读出模块580经由总线572向处理器592提供输出。此时,处理器592通过考虑读出模块的(多个)切断事件以及关于从状态机经由输入线路593所施加的控制栅极电压的信息,确定得到的存储器状态。然后,计算关于存储器状态的二进制编码并且将得到的数据位存储到数据锁存器594中。在核心部分的另一实施例中,位线锁存器582充当用于锁存读出模块580的输出的锁存器和如上文所描述的位线锁存器两者。

在编程操作期间,待编程数据被存储在数据锁存器集合594中。在状态机512的控制下,编程操作包括施加到所寻址的存储元件的控制栅极的一系列编程电压脉冲。每个编程脉冲跟随有读回(或验证处理),以便判定存储元件是否已被编程到期望的存储器状态。处理器592监视与期望的存储器状态相关的读回存储器状态。当两者一致时,处理器592设定位线锁存器582以便将位线拉到指定编程禁止电压的状态。这禁止耦合到位线的存储元件被进一步编程,即使编程脉冲出现在其控制栅极上。在其他实施例中,处理器初始地加载位线锁存器582并且读出电路在验证处理期间将其设定到禁用值。

数据锁存器堆栈594包含与读出模块相对应的数据锁存器的堆栈。在一个实施例中,每个读出模块580存在三个数据锁存器。数据锁存器可以被实现为移位寄存器,从而使得其中存储的并行数据被转换成用于数据总线520的串行数据,并且反之亦然。与读取/写入块相对应的所有数据锁存器可以链接在一起以形成块移位寄存器,从而使得能够通过串行传送来输入或输出数据块。特别地,可以配置读取/写入模块的组,从而使得数据锁存器集合中的每个数据锁存器将数据按照如同它们是用于整个读取/写入块的移位寄存器的一部分的序列来移入或移出数据总线。

图7A描绘了针对四状态存储器设备的阈值电压分布的一个实施例,其中每个存储元件存储两位数据。为擦除的(E状态)存储元件提供第一阈值电压(Vth)分布700。三个Vth分布702、704和706分别表示编程状态A、B和C。在一个实施例中,E状态中的阈值电压以及A、B和C状态中的阈值电压是正的。在另一个实施例中,针对E状态的阈值电压分布是负的,而针对A状态、B状态和C状态分布的阈值电压分布是正的。

还提供用于从存储元件中读取数据的读取参考电压Vra、Vrb和Vrc。通过测试给定的存储元件的阈值电压在Vra、Vrb和Vrc以上还是以下,系统可以判定存储元件所处的状态,例如编程条件。

此外,提供三个验证参考电压Vva、Vvb和Vvc。当将存储元件编程到A状态、B状态或C状态时,系统将分别测试这些存储元件是否具有大于或等于Vva、Vvb和Vvc的阈值电压。

在被称为全序列编程的一个实施例中,存储元件可以从E状态被直接编程到编程状态A、B或C中的任何状态。例如,待编程的存储元件群组可以首先被擦除,从而使得所述群组中的所有存储元件处于E状态。然后,如图7F中所描绘的一系列编程脉冲用于将存储元件直接编程到状态A、B和C。在一些存储元件正在从E状态编程到A状态时,其他存储元件正在从E状态编程到B状态和/或从E状态编程到C状态。

另一选项是针对一个或更多个数据状态使用低和高验证电平。例如,VvaL和Vva分别是针对A状态的较低和较高验证电平,VvbL和Vvb分别是针对B状态的较低和较高验证电平,并且VvcL和Vvc分别是针对C状态的较低和较高验证电平。在一些情况下,因为减少的编程精度对于最高状态来说可接受的,所以未使用VvcL。在编程期间,当正在被编程到作为目标状态的A状态的存储元件的Vth超过VvaL时,在慢编程模式中,如通过将相关联的位线电压升高到额定编程或非禁用电平(例如,0V)与全禁用电平(例如,4V至6V)之间的电平(例如,0.6V至0.8V)来将存储元件的编程速度减慢。这通过避免阈值电压的大幅增加来提供较大的精度。当Vth达到Vva时,存储元件被锁定以阻止进一步编程。类似地,当正在被编程到作为目标状态的B状态的存储元件的Vth超过VvbL时,将存储元件的编程速度减慢,并且当Vth达到Vvb时,存储元件被锁定以阻止进一步编程。可选地,当正在被编程到作为目标状态的C状态的存储元件的Vth超过VvcL时,将存储元件的编程速度减慢,并且当Vth达到Vvc时,存储元件被锁定以阻止进一步编程。这种编程技术被已被称为快速通过写入或双验证技术。注意,在一种方法中,因为对于最高状态来说某种过冲典型地是可接受的,所以双验证电平未被用于所述状态。相反,双验证电平可用于擦除状态以上且最高状态以下的编程状态。

图7B描绘了两轮次编程技术的第一轮次的一个实施例。在此示例中,多状态存储元件存储两个不同页(下页和上页)的数据。通过重复来自图7A的阈值电压分布700、702、704和706描绘了四种状态。这些状态以及它们表示的位是:E状态(11)、A状态(01)、B状态(00)和C状态(10)。对于E状态,两个页都存储“1”。对于A状态,下页存储“1”并且上页存储“0”。对于B状态,两个页都存储“0”。对于C状态,下页存储“0”并且上页存储“1”。注意:尽管特定位模式已被分配给这些状态中的每个状态,但是也可以分配不同的位模式。

在第一编程轮次中,针对所选择的字线WLn来编程下页。如果下页要保持数据1,则存储元件状态保持在状态E(分布700)。如果数据要编程为0,则WLn上的存储元件的阈值电压被增加,从而使得存储元件被编程到中间(LM或中等偏低)状态(分布705)。

在一个实施例中,在存储元件从E状态编程到LM状态之后,然后,其在NAND串中的邻近字线WLn+1上的邻居存储元件将关于邻近字线的对应的第一编程轮次中的其下页而被编程。

图7C描绘了图7B中提到的两轮次编程技术的第二轮次的一个实施例。A状态存储元件从E状态分布700被编程到A状态分布702,B状态存储元件从LM状态分布705被编程到B状态分布704,并且C状态存储元件从LM状态分布705被编程到C状态分布706。

图7D描绘了另一个两轮次编程技术的第一轮次的一个实施例。在被称为模糊到清晰(或粗糙到精细)编程的此示例中,分别使用较低验证电平VvaL、VvbL和VvcL来分别将A状态、B状态和C状态存储元件从E状态编程到分布712、714和716。这是模糊(或粗糙)编程轮次。例如,可以使用相对大的编程电压步长来将存储元件迅速编程到对应的较低验证电平。

图7E描绘了图7D中提到的两轮次编程技术的第二轮次的一个实施例。分别使用额定的、较高验证电平Vva、Vvb和Vvc来分别将A状态、B状态和C状态存储元件从对应的较低分布编程到对应的最终分布702、704和706。这是清晰编程轮次。例如,可以使用相对小的编程电压步长来将存储元件缓慢编程到对应的最终验证电平,同时避免大过冲。

尽管编程示例描绘出四个数据状态和两个数据页,但是本文中所描述的概念可应用于具有多于或少于四个状态以及多于或少于两个页的其它实施方式。例如,存储器设备可以使用每存储元件八个或十六个状态。而且,本文中所讨论的示例编程技术中,存储元件的Vth随着其被编程到目标数据状态而逐渐升高。然而,编程技术也可以使用在以下情况中:存储元件的Vth随着其被编程到目标数据状态而逐渐降低。也可以使用测量存储元件电流的编程技术。本文中所描述的概念可适用于不同的编程技术。

图7F描绘了在编程操作期间被应用到所选字线的一系列编程和验证脉冲的一个实施例。编程操作可以包括多个编程验证迭代,其中每个迭代向所选字线施加一个或多个验证电压之前的一个或多个编程电压。在一个实施例中,应用于先前迭代的编程电压可以在连续的迭代中步进。此外,在编程迭代期间施加的一个或多个编程电压可以包括具有例如6V至8V的通过电压(Vpass)电平的第一部分,从所述第一部分后面跟随着在例如12V至25V的编程电平处的第二最高振幅部分。例如,第一、第二、第三和第四编程脉冲790、792、794和796分别具有Vpgm1、Vpgm2、Vpgm3和Vpgm4的编程电平。可在每个编程脉冲之后提供一个或多个验证电压798(如Vva、Vvb和Vvc)。在一些情况下,由于不期望任何存储元件已经到达了最低编程状态(例如,A状态),因此一个或多个初始编程脉冲后面并不跟随验证脉冲。随后,在一些情况下,编程迭代可以使用针对A状态的验证脉冲,后面跟随着使用针对A状态和B状态的验证脉冲的编程迭代,后面跟随着使用针对B状态和C状态的验证脉冲的编程迭代。

图8是流程图,描述了用于执行数据刷新操作的过程的一个实施例。在一个实施例中,图8的过程可以由非易失性存储系统(如图5中的非易失性存储系统596)执行。

在步骤802中,确定来自连接至存储器块中的字线的存储单元集中的数据(例如,可以从存储器单元集合中读取数据)。存储器块可以包括NAND闪存结构(如垂直NAND结构或位成本可扩展(BiCS)NAND结构)。所述数据可以与数据页(例如,1KB或2KB的数据)相对应。在步骤804种,确定数据的失败位计数。失败位计数可以与已经在数据内检测到的位错误的数量相对应。在一个示例中,与数据相关联的ECC码或ECC信息可以用于确定失败位计数或已经在数据内发生的位错误的数量。

在步骤806中,确定错误阈值。错误阈值可以用于判定何时应当触发数据刷新操作。在一个实施例中,可以基于与存储器块相关联的温度、触发数据刷新的字线的编程/擦除循环的数量、存储器块的编程/擦除循环的数量、触发数据刷新的字线已经发生的先前数据刷新的数量和/或存储器块已经发生的数据刷新的数量来确定错误阈值。可以经由片上温度传感器获取与存储器块相关联的温度。存储器块的编程/擦除循环的数量可以包括已经对存储器块执行的所有部分块擦除操作的和。存储器块已经发生的数据刷新的数量可以包括已经对存储器块中的字线执行的所有数据刷新的和。

在一些情况下,错误阈值可以设置为小于或等于可校正的位错误的数量。在一个示例中,ECC信息可以用于校正数据页中的三个位错误并且错误阈值可以设置为两个位错误。在一个示例中,ECC信息可以用于校正数据页中的三个位错误并且错误阈值可以设置为三个位错误。

在一个实施例中,如果与存储器块相关联的温度在温度阈值以上(例如,55摄氏度以上),则错误阈值可以从第一值(例如,每页三个错误)降低至小于第一值的第二值(例如,每页两个错误)。在另一个实施例中,如果字线的编程/擦除循环的数量在编程/擦除阈值以上(例如,已经对字线执行的多于5个编程/擦除循环),则错误阈值可以从第一值(例如,每页三个错误)降低至小于第一值的第二值(例如,每页一个错误)。在另一个实施例中,如果字线的先前数据刷新的数量在刷新阈值以上(例如,已经对字线执行的多于10次数据刷新),则错误阈值可以从第一值(例如,每个字线三个错误)降低至小于第一值的第二值(例如,每个字线两个错误)。

在步骤808中,检测到失败位计数大于错误阈值。在步骤810中,响应于检测到失败位计数大于错误阈值而标识存储器块中的一个或多个字线。一个或多个字线可以包括触发数据刷新的字线。可以基于触发数据刷新的字线的编程/擦除循环的数量或一个或多个字线的编程/擦除循环的数量来确定一个或多个字线。在一个示例中,如果触发数据刷新的字线已经被编程和擦除了多于阈值次数(例如,多于五次),则一个或多个字线可以包括触发数据刷新的字线以及被安排紧挨着字线的一个或多个邻近字线(例如,邻近漏极侧字线)。

在步骤812中,生成待编程到连接至一个或多个字线的存储器单元中的经校正的数据。可以使用与从存储器单元集合中读取的数据相关联的ECC信息来生成经校正的数据。ECC信息可以用于标识和校正从存储器单元集合中读取的数据中的一个或多个位错误。在步骤814中,对连接至一个或多个字线的存储器单元执行部分块擦除操作。一个或多个字线可以包括少于存储器块中的所有所述字线。在一个示例中,一个或多个字线可以包括所述字线和与所述字线相邻的邻近字线(例如,源极侧字线或漏极侧字线)。在步骤816中,将经校正的数据编程到连接至一个或多个字线的存储器单元中。

图9A是流程图,描述了用于执行编程操作的过程的一个实施例。在一个实施例中,图9A的过程可以由非易失性存储系统(如图5中的非易失性存储系统596)执行。

在步骤902中,对将对连接至存储器块中的字线的存储器单元集合执行的编程操作进行标识。可以经由非易失性存储系统的控制器发出的存储器操作命令(例如,编程命令或读取命令)来标识编程操作。在一些情况下,将对存储器单元集合执行的编程操作可以是与存储器操作命令相关联的一个或多个存储器操作的一部分。

在步骤904中,在执行编程操作之前读出来自存储器单元集合的数据。来自存储器单元集合的数据可以用于确定存储器单元集合的数量,所述存储器单元具有用于擦除的存储器单元的目标阈值电压分布以外的或用于擦除的存储器单元的阈值电压范围以外的阈值电压。可以在从擦除状态编程存储器单元集合之前读出来自存储器单元集合的数据(例如,由于先前擦除操作,所以存储器单元集合并未被编程)。在步骤906中,确定数据的失败位计数。失败位计数可以与存储器单元的数量相对应,所述存储器单元具有擦除的存储器单元的阈值电压范围之外的阈值电压。在一个示例中,失败位计数可以与整个存储器单元集合之外的存储器单元的总数相对应,所述存储器单元具有大于特定电压(如0V或200mV)的阈值电压。

在步骤908中,确定错误阈值。错误阈值可以用于判定何时应当触发部分块擦除操作和/或何时应当执行擦除分布的重新紧缩。在一个实施例中,总体上,可以基于与存储器块相关联的温度、字线的编程/擦除循环的数量和/或存储器块的编程/擦除循环的数量来确定错误阈值。可以经由片上温度传感器获取与存储器块相关联的温度。存储器块的编程/擦除循环的数量可以包括已经对存储器块执行的所有部分块擦除操作的和。

在一个实施例中,如果与存储器块相关联的温度在温度阈值之上(例如,85摄氏度之上),则错误阈值可以从第一值(例如,每个字线三个错误)降低至小于第一值的第二值(例如,每个字线两个错误)。在另一个实施例中,如果字线的编程/擦除循环的数量在编程/擦除阈值之上(例如,已经对字线执行了多于10个编程/擦除循环),则错误阈值可以从第一值(例如,每个字线四个错误)降低至小于第一值的第二值(例如,每个字线一个错误)。

在步骤910中,检测到失败位计数大于错误阈值。在步骤912中,响应于检测到失败位计数大于错误阈值而标识存储器块中的一个或多个字线。一个或多个字线可以包括触发部分块擦除操作的字线。可以基于字线的编程/擦除循环的数量或基于一个或多个字线的编程/擦除循环的数量来确定一个或多个字线。在一个示例中,如果触发部分块擦除操作的字线已经被编程和擦除了多于阈值次数(例如,多于五次),则一个或多个字线可以包括所述字线和被安排紧挨着所述字线的一个或多个邻近字线。在另一个示例中,如果触发部分块擦除操作的字线已经被编程和擦除了多于阈值次数(例如,多于十次),则一个或多个字线可以包括所述字线和被安排在所述字线与漏极侧选择栅极(例如,SGD)的控制信号之间的所有漏极侧字线。在步骤914中,对连接至一个或多个字线的存储器单元执行部分块擦除操作。一个或多个字线可以包括少于存储器块内的所有所述字线。在此情况下,可以擦除连接至一个或多个字线的存储器单元,而不擦除存储在连接至存储器块中的字线的其他存储器单元中的其他数据。在步骤916中,在执行步骤914中的部分块擦除操作之后,执行连接至字线的存储器单元集合的编程操作。编程操作可以包括将数据写入存储器单元集合中。

图9B是流程图,描述了用于执行编程操作的过程的替代性实施例。在一个实施例中,图9B的过程可以由非易失性存储系统(如图5中的非易失性存储系统596)执行。

在步骤922中,检测到将对连接至存储器块中的字线的存储器单元集合执行的编程操作。在被控制器执行之前,可以检测或标识编程操作,所述控制器控制对存储器阵列执行的存储器操作。在一些情况下,将对存储器单元集合执行的编程操作可以是对存储器阵列执行的一个或多个存储器操作的一部分。

在步骤924中,确定与存储器单元集合相关联的编程/擦除循环的数量。编程/擦除循环的数量可以与存储器单元集合由于被制造而已经经历的编程/擦除循环的总数相对应。在一个示例中,如果存储器单元集合由于被制造已经经历了十次擦除操作,则编程/擦除循环的数量可以是十。在步骤926中,基于与存储器单元集合相关联的编程/擦除循环的数量来确定读取循环的阈值数量。在一个示例中,如果与存储器单元集合相关联的编程/擦除循环的数量在多于五个(或预定义数量),则读取循环的阈值数量可以包括读取循环的第一数量(例如,十五个读取循环);否则,如果与存储器单元集合相关联的编程/擦除循环的数量不多于五个,则读取循环的阈值数量可以包括大于读取循环的第一数量的读取循环的第二数量(例如,三十个读取循环)。

在步骤928中,确定存储器单元集合的读取循环的数量。在一个示例中,因为存储器单元集合被最后擦除(例如,因为对存储器单元集合执行最后的部分块擦除操作),所以存储器集单元的读取循环的数量可以包括已经对存储器单元集合执行的读取循环的总数。在步骤930中,检测到存储器单元集合的读取循环的数量大于读取循环的阈值数量。

在步骤932中,响应于检测到存储器单元集合的读取循环的数量大于读取循环的阈值数量而标识存储器块中的一个或多个字线。一个或多个字线可以包括触发部分块擦除操作的字线。可以基于字线的编程/擦除循环的数量或一个或多个字线的编程/擦除循环的数量来确定一个或多个字线。在一个示例中,如果触发部分块擦除操作的字线已经被编程和擦除了多于阈值次数(例如,多于五次),则一个或多个字线可以包括所述字线和被安排紧挨着所述字线的一个或多个邻近字线。在另一个示例中,如果触发部分块擦除操作字线已经被编程和擦除了多于阈值次数(例如,多于十次),则一个或多个字线可以包括字线和被安排在所述字线与漏极侧选择栅极(例如,SGD)的控制信号之间的所有漏极侧字线。

在步骤934中,对连接至一个或多个字线的存储器单元执行部分块擦除操作。一个或多个字线可以包括少于存储器块中的所有所述字线。在此情况下,可以擦除连接至一个或多个字线的存储器单元,而不擦除存储在连接至存储器块中的字线的其他存储器单元中的其他数据。在步骤936中,在执行步骤934中的部分块擦除操作之后,执行连接至字线的存储器单元集合的编程操作。编程操作可以包括将数据写入存储器单元集合中。

公开的技术的一个实施例包括存储器阵列、控制电路、擦除电路和写入电路。存储器阵列包括存储器单元集合。控制电路被配置成用于响应于检测到与存储在储器单元集中的第一数据集相关联的失败位计数满足错误阈值而标识存储器阵列内的一个或多个字线。控制电路被配置成用于获取待编程到连接至一个或多个字线的存储器单元中的第二数据集。擦除电路被配置成用于擦除连接至一个或多个字线的存储器单元,从而使得连接至存储器阵列内的一个或多个字线的其他存储器单元不被擦除。写入电路被配置成用于将第二数据集写入连接至一个或多个字线的存储器单元中。存储器阵列可以包括存储器块。

公开的技术的一个实施例包括存储器阵列、控制电路、擦除电路和写入电路。存储器阵列包括连接至字线的存储器单元集合。控制电路被配置成用于标识对存储器单元集合执行的编程操作和检测与存储器单元集合相关联的失败位计数大于错误阈值。控制电路被配置成用于响应于检测到失败位计数大于错误阈值而标识存储器阵列内的一个或多个字线。一个或多个字线包括连接至存储器单元集合的字线。擦除电路被配置成用于擦除连接至一个或多个字线的存储器单元,从而使得少于存储器阵列内的存储器单元中的所有存储器单元不被擦除。写入电路被配置成用于将与编程操作相关联的数据写入连接至一个或多个字线的存储器单元中。

公开的技术的一个实施例包括存储器阵列和与存储器阵列通信的一个或多个管理电路。存储器阵列包括连接至字线的存储器单元集合。一个或多个管理电路被配置成用从存储器单元集合中读取数据并且确定与数据相关联的失败位计数。一个或多个管理电路被配置成用于检测失败位计数大于错误阈值。一个或多个管理电路被配置成用于响应于检测到失败位计数大于错误阈值而标识存储器阵列内的一个或多个字线。一个或多个字线包括连接至存储器单元集合的字线。一个或多个管理电路被配置成用于生成待编程到连接至一个或多个字线的存储器单元中的经校正的数据。一个或多个管理电路被配置成用于使对连接至一个或多个字线的存储器单元执行部分块擦除操作并且被配置成用于使经校正的数据被编程到连接至一个或多个字线的存储器单元中。

公开的技术的一个实施例包括从连接至存储器块内的字线的存储器单元集合处获取或读取数据、确定与所述数据相关联的位错误的数量、检测位错误的数量大于错误阈值、以及响应于检测到位错误的数量大于错误阈值而标识存储器块中的一个或多个字线。一个或多个字线包括连接至存储器单元集合的字线。所述方法进一步包括生成待编程到连接至一个或多个字线的存储器单元中的经校正的数据、对连接至一个或多个字线的存储器单元执行部分块擦除操作以及将经校正的数据编程到连接至一个或多个字线的存储器单元中。

公开的技术的一个实施例包括非易失性存储器系统,所述非易失性存储器系统包括存储器阵列和与存储器阵列通信的一个或多个管理电路。存储器阵列包括连接至字线的存储器单元集合。一个或多个管理电路被配置成用于标识对存储器单元集合执行的编程操作并且从存储器单元集合读出数据。一个或多个管理电路被配置成用于确定数据的失败位计数。一个或多个管理电路被配置成用于检测失败位计数大于错误阈值并且响应于检测到失败位计数大于错误阈值而标识存储器阵列内的一个或多个字线。一个或多个字线包括连接至存储器单元集合的字线。一个或多个管理电路被配置成用于使对连接至一个或多个字线的存储器单元执行部分块擦除操作并且被配置成用于使对连接至字线的存储器单元集合执行编程操作。

公开的技术的一个实施例包括检测将对连接至存储器块内字线的存储器单元集合执行编程操作、确定与存储器单元相集相关联的编程/擦除循环的数量、基于与存储器单元集合相关联的编程/擦除循环的数量来确定读取循环的阈值数量、确定存储器单元集合的读取循环的数量、检测存储器单元集合的读取循环的数量大于读取循环的阈值数量以及响应于检测到存储器单元集合的读取循环的数量大于读取循环的阈值数量而标识存储器块中的一个或多个字线。一个或多个字线可以包括连接至存储器单元集合的字线。所述方法包括对连接至一个或多个字线的存储器单元执行部分块擦除操作以及在执行部分块擦除操作之后对连接至字线的存储器单元集合执行编程操作。在一些情况下,与存储器单元集合相关联的编程/擦除循环的数量可以包括存储器单元集合由于被制造而已经被编程并且擦除的总次数。

出于本文档的目的,应当注意的是,图中描绘的各种特征的尺寸可能不一定是按比例绘制的。

出于本文档的目的,说明书中引述的“实施例”、“一个实施例”、“一些实施例”或“另一个实施例”可以用于描述不同的实施例并且不必然指的是同一实施例。

出于本文档的目的,连接可以是直接连接或间接连接(例如,经由另一方)。在一些情况下,当元件被称为“连接”或“耦接”到另一元件时,所述元件可以直接连接至其他元件或经由中间元件间接连接至其他元件。当元件被称为直接连接至另一元件时,则所述元件与其他元件之间不存在中间元件。

出于本文档的目的,术语“基于”可以理解为“至少部分地基于”。

出于本文档的目的,在无附加上下文时,对如“第一”对象、“第二”对象以及“第三”对象等数字术语的使用并不暗示对象的顺序,而是可以用于标识目的以便标识不同的对象。

出于本文档的目的,术语对象的“集合”可以指一个或多个对象的“集合”。

虽然已经使用特定于结构特征和/或方法行为的语言描述了主题,但是应当理解的是,所附权利要求书中所定义的主题不一定限于上文所述的特定特征或行为。相反,上文所描述的特定特征和行为被作为实现权利要求书的示例形式而公开。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1