CN108573733B - 具有编程失败恢复的非易失性存储器 - Google Patents
具有编程失败恢复的非易失性存储器 Download PDFInfo
- Publication number
- CN108573733B CN108573733B CN201810149234.0A CN201810149234A CN108573733B CN 108573733 B CN108573733 B CN 108573733B CN 201810149234 A CN201810149234 A CN 201810149234A CN 108573733 B CN108573733 B CN 108573733B
- Authority
- CN
- China
- Prior art keywords
- block
- data
- memory
- programming
- word line
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3468—Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/24—Marginal checking or other specified testing methods not covered by G06F11/26, e.g. race tests
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0409—Online test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
Abstract
提出了一种非易失性储存系统,其具有用于从编程失败中恢复的有效过程。响应于确定发生了程序故障,并且在完成编程之前,系统将与程序故障相关联的数据编程到备份位置。在将与程序故障相关联的数据编程到备份位置之后,系统继续编程,其包含将尚未经过编程过程的数据编程到备份位置。在完成编程过程之后,系统将靠近程序故障的位置的已编程的数据移动到备份位置。
Description
技术领域
本技术涉及一种非易失性存储器,特别涉及一种具有编程失败恢复的非易失性存储器及其操作方法。
背景技术
半导体存储器广泛用于诸如蜂窝电话、数字照相机、个人数字助理、医疗电子、移动计算装置、服务器、固态驱动器、非移动计算装置和其他装置的各种电子装置中。半导体存储器可以包括非易失性存储器或易失性存储器。即使在非易失性存储器未连接到电源(例如,电池)时,非易失性存储器也允许存储和保留信息。非易失性存储器的示例包含闪存(例如,NAND型和NOR型闪存)。
存储器系统可以用来储存由主机装置、客户、用户或其他的实体提供的数据。响应于读取请求,数据然后可以被读回并提供。储存在存储器系统中的数据不会丢失是重要的。存储器系统的性能(如操作速度)对于主机、客户、用户等也是重要的。
与其他的电子产品一样,半导体存储器也经过制造的变化。在制造阶段期间进行的测试可以发现许多缺陷。然而,一些缺陷是潜在的,使得他们不会被在制造阶段期间进行的测试识别,因为这些潜在缺陷最初不会改变装置的行为。随着时间的推移,缺陷可能会显现,导致错误的装置行为。这样的缺陷的示例包含信号线和损坏的组件之间的短路。这些缺陷可能导致编程过程的失败。为了在编程过程期间防止潜在的缺陷,一些存储器装置包含用于确定编程过程是否失败的构件。在发现编程过程失败时,一些存储器系统将暂停编程过程,重新编程数据到其他地方并将附近的数据(例如,在相同块中的数据)移动到新的位置。随后,继续原始的编程过程。尽管这种方法在编程时失败的情况下确实有帮助,但是从主机、客户或用户的角度,编程过程的暂停会减慢存储器系统的操作。
发明内容
一个实施例包含操作非易失性储存系统的方法,包括:在非易失性存储器中进行突发编程;确定在突发编程期间以及在完成突发编程之前发生程序故障;将与该程序故障相关联的数据编程到非易失性存储器中的备份位置;在将与该程序故障相关联的数据编程到备份位置之后,继续突发编程,该突发编程包含将尚未经过编程过程的数据编程到该备份位置;以及在将尚未经过编程过程的数据编程到该备份位置之后,将非易失性存储器中的已编程数据移动到该备份位置。
一个实施例包含非易失性存储器设备,包括布置在块中的多个存储器单元;连接到存储器单元的多个字线;以及与多个存储器单元和多个字线通信的控制电路。控制电路配置为尝试将数据编程到连接到第一块的第一字线的第一存储器单元,并且确定将数据到第一存储器单元的编程失败。控制电路配置为响应于确定数据到第一存储器单元的编程失败,而将数据编程到连接到第二块的特定字线的第二存储器单元。控制电路配置为将附加的数据编程到连接到第二块的附加的字线的第三存储器单元。控制电路配置为在将附加的数据编程到第三存储器单元之后,将旧数据从第一块中的存储器单元移动到第二块中的存储器单元。
一个实施例包含设备,包括:存储器接口,其适于连接到具有多个存储器裸芯的非易失性存储器设备;以及用于经由存储器接口跨越多个存储器裸片上的多个块中的每个块的多个字线来编程数据的构件,使得响应于故障块中的程序故障,使用故障块的备份块来编程由于程序故障而未成功编程的数据以及编程附加数据来继续数据的编程。在将附加的数据编程到故障块之后,将在故障块中已经被编程的数据移动到备份块。
附图说明
相同编号元件在不同的图中指代共同的组件。
图1是3D堆叠非易失性存储器装置的透视图。
图2是诸如图1的3D堆叠非易失性存储器装置100的存储器装置的功能性框图。
图3是描绘存储器系统的一个实施例的框图。
图3A是描绘存储器系统的一个实施例的框图。
图4是单片三维存储器结构的一个实施例的部分的透视图。
图4A是具有两个平面的存储器结构的框图。
图4B描绘存储器单元的块的部分的顶视图。
图4C描绘存储器单元的块的部分的横截面视图。
图4D描绘选择栅极层和字线层的视图。
图4E是存储器单元的垂直列的横截面视图。
图4F是多个NAND串的示意。
图5描绘了阈值电压分布。
图6是描述对数据状态的数据值的布置的一个示例的表格。
图7A是描述编程过程的一个实施例的流程图。
图7B是描述编程过程的一个实施例的流程图。
图8描绘了巨型块。
图8A描绘了响应于突发编程来储存数据的巨型块。
图9是描述用于从编程失败中有效恢复的过程的一个实施例的流程图。
图10A-10D描绘了在图9的过程期间的巨型块。
图11、11A和11B一起是描述用于从编程失败中有效恢复的过程的一个实施例的流程图。
图12是链接表的一个示例的框图。
具体实施方式
提出了一种非易失性存储系统,其具有用于从编程失败中恢复的有效过程。响应于确定在完成编程之前发生了编程失败(也称为程序故障),系统将与程序故障相关联的数据编程到备份位置。在将与编程失败相关联的数据编程到备份位置之后,系统继续编程,其包含将尚未经过编程过程的数据编程到备份位置。在完成编程过程之后,系统将靠近程序故障的位置的已编程的数据移动到备份位置。通过等待移动已编程的数据直到完成编程之后,主机(或客户、用户等)将会体验到更快的编程性能。
图1-4F描述了可以用于实现在本文中提出的技术的存储器系统的一个示例。图1是三维(3D)堆叠非易失性存储器装置的透视图。存储器装置100包含基板101。在基板上和基板上方是存储器单元(非易失性储存元件)的示例性块BLK0和BLK1。另外,在基板10上是具有由块使用的支持电路的外围区域104。基板101还可以承载块下面的电路,连同一个或多个下部的金属层,这些下部的金属层在导电路径中被图案化以承载电路的信号。块形成于存储器装置的中间区域102。在存储器装置的上部区域103,一个或多个上部金属层在导电路径中被图案化以承载电路的信号。每个块包括存储器单元堆叠区,其中堆叠体交替的级表示字线。尽管描绘了两个块作为示例,但是可以使用附加的块,其在x和/或y方向上延伸。
在一个示例性实现方式中,平面在x方向上的长度表示字线的信号路径延伸的方向(字线或SGD线方向),并且平面在y方向上的宽度表示位线的信号路径延伸的方向(位线方向)。z方向表示存储器装置的高度。
图2是诸如图1的3D堆叠非易失性存储器装置100的示例性存储器装置的功能性框图。在图2中描绘的组件是电气电路。存储器装置100包含一个或多个存储器裸芯108。每个存储器裸芯108包含存储器单元的三维存储器结构126(诸如,例如存储器单元的3D阵列)、控制电路110和读取/写入电路128。在其他的实施例中,可以使用存储器单元的二维阵列。存储器结构126可经由行解码器124由字线和经由列解码器132由位线可寻址。读取/写入电路128包含多个感测块150,感测块150包含SB1、SB2……SBp(感测电路),并且允许并行读取或编程存储器单元的页。在一些系统中,在与一个或多个存储器裸芯108相同的存储器装置100(例如,可移动储存卡)中包含控制器122。然而,在其他的系统中,控制器可以与存储器裸芯108分开。在一些实施例中,控制器122将在与存储器裸芯108不同的裸芯上。在一些实施例中,一个控制器122将与多个存储器裸芯108通信。在其他的实施例中,每个存储器裸芯108具有其自己的控制器。命令和数据在主机140和控制器122之间经由数据总线120传送,并且在控制器122和一个或多个存储器裸芯108之间经由线118传送。在一个实施例中,存储器裸芯108包含连接到线118的输入和/或输出(I/O)引脚的集合。
存储器结构126可以包括包含3D阵列的存储器单元的一个或多个阵列。存储器结构可以包括单片三维存储器结构,在单片三维存储器结构中,多个存储器级形成在单一的基板(诸如晶片)上方(并且处于单一的基板上),而没有中间基板。存储器结构包括任何类型的非易失性存储器,其单片地形成在存储器单元阵列的一个或多个物理级,该存储器单元具有设置在硅基板上方的有源区(active area)。存储器结构可以处于具有与存储器单元的操作相关联的电路的非易失性存储器装置之中,不论相关联的电路处于基板上方还是之内。在一个实施例中,存储器结构126实现三维NAND闪存。其他的实施例包含二维NAND闪存、二维NOR闪存、ReRAM交叉点存储器、磁阻存储器(例如MRAM)、相变存储器(例如PCRAM)等。
控制电路110与读取/写入电路128协作以在存储器结构126上进行存储操作(例如,擦除、编程、读取等),并且控制电路110包含状态机112、片上地址解码器114、功率控制模块116和温度检测电路116。状态机112提供存储操作的裸芯级控制。温度检测电路113(其为在存储器裸芯108上的存储器温度传感器的示例)配置为检测存储器裸芯108上的温度,并且其可以是本领域已知的任何适当的温度检测电路。在一个实施例中,状态机112由软件编程。在其他的实施例中,状态机112不使用软件,并且以硬件(电气电路)完全实现。在一个实施例中,控制电路110包括用于储存诸如基本电压和其他参数的默认值的寄存器、ROM熔丝和其他储存装置。
片上地址解码器114提供由主机140或控制器122使用的地址到由解码器124和132使用的硬件地址的地址接口。功率控制模块116控制在存储操作期间供给字线和位线的功率和电压。功率控制模块可以包含3D配置的字线层驱动器(下面讨论)、选择晶体管(例如,下面描述的SGS和SGD晶体管)和源极线。功率控制模块116可以包含用于创建电压的电荷泵。感测块包含位线驱动器。SGS晶体管是在NAND串的源极端的选择栅极晶体管,并且SGD晶体管是在NAND串的漏极端的选择栅极晶体管。
控制电路110、状态机112、解码器114/124/132、温度检测电路113、功率控制模块116、感测块150、读取/写入电路128和控制器122中的任何一个或任何集合合可以被认为是进行本文所描述的功能的控制电路。
(片上或片外)控制器122(其在一个实施例中是电气电路)可以包括一个或多个处理器122c、ROM 122a、RAM 122b、存储器接口122d和系统温度传感器122e,他们全部互连体。一个或多个处理器122c是控制电路的一个示例。其他的实施例可以使用状态机或设计为进行一个或多个功能的其他的定制电路。储存装置(ROM 122a、RAM 122b)包括诸如指令集合的代码,并且可操作处理器122c实行该指令集合以提供本文所描述的功能。替代地或附加地,处理器122c可以从存储器结构中的储存装置存取代码,诸如连接到一个或多个字线的存储器单元的保留区域。存储器接口122d(与ROM 122a、RAM 122b和处理器122c通信)是电气电路(电气接口),其提供控制器122和一个或多个存储器裸芯108之间的电气接口。例如,存储器接口122d可改变信号的格式或时序、提供缓冲器、隔离浪涌、锁存器I/O等。处理器122c可以经由存储器接口122d将命令发布到控制电路110(或存储器裸芯108的任何其它组件)。
存储器结构126中的多个存储器元件可以经配置,以使得他们串联连接或以使得每个元件可单独存取。通过非限制性示例,NAND配置的闪存装置(NAND闪存)典型地含有串联连接的存储器元件。NAND串是串联连接的存储器单元和选择栅极晶体管的集合的示例。
NAND闪存存储器阵列可以经配置,以使得阵列由多个NAND串组成,其中NAND串由共享单一的位线的多个存储器单元组成,并且NAND串作为组存取。替代地,存储器元件可以经配置,以使得每个元件为单独存取(例如,NOR存储器阵列)。NAND和NOR存储器配置是示范性的,并且可以以其他方式配置存储器单元。
存储器单元可以以有序阵列布置成单一的存储器装置级,诸如布置成多个行和/或列。然而,存储器元件可以以非规则或非正交配置排列,或以不被视为阵列的结构排列。
三维存储器阵列经布置,以使得存储器单元占用多个平面或多个存储器装置级,从而在三维(即,在x、y和z方向上,其中z方向基本垂直于基板的主表面并且x和y方向基本平行于基板的主表面)上形成结构。
作为非限制性示例,可以将三维存储器结构垂直布置为多个二维存储器装置级的堆叠。作为另一非限制性示例,可以将三维存储器阵列布置为多个垂直列(例如,基本垂直于基板的主表面即y方向延伸的列),其中每列具有多个存储器单元。垂直列可以布置成二维配置(例如,在x-y平面)垂直列从而得到存储器单元的三维布置,其中存储器单元在多个垂直堆叠的存储器平面上。在三维上存储器元件的其他配置也可以构成三维存储器阵列。
通过非限制性示例,在三维NAND串存储器阵列中,存储器元件可以耦合到一起以形成垂直的NAND串,其穿过多个水平的级。可以设想其他的三维配置,其中一些NAND串含有处于单一的存储器级的存储器元件,而其他串含有跨过多个存储器级的存储器元件。也可以以NOR配置和以ReRAM配置设计三维存储器阵列。
本领域的普通技术人员将认识到,本文描述的技术不限于单一的特有的存储器结构,而是涵盖在本文所描述的技术的精神和范围内并且如本领域普通技术人员所理解的许多相关联的存储器结构。
图3是示例性存储器系统100的框图,其描绘了控制器122的一个实施例的更多细节。如本文所使用的,闪存控制器是管理储存在闪存上的数据并且与主机(诸如,计算机或电子装置)通信的装置。除了本文所描述的特有功能之外,闪存控制器还可以具有各种功能。例如,闪存控制器可以格式化闪存以确保存储器正确操作,映射出不良闪存单元,并且分配备用存储器单元以替换将失败的单元。可以使用部分备用单元来保持固件以操作闪存控制器并实现其他的特征。在操作中,在主机需要从闪存中读取数据或向其写入数据时,它将与闪存控制器通信。如果主机提供将要读取/写入的数据的逻辑地址,则闪存控制器可以将从主机收到的逻辑地址转换到闪存中的物理地址(替代地,主机可以提供物理地址)。闪存控制器还可以进行各种存储器管理功能,诸如(但不限于)磨损均衡(分布写入以避免磨损存储器的特有块,其将以其他方式重复地写入)和垃圾收集(在块满之后,仅将数据的有效页移动到新的块,所以满的块可以被擦除和重用)。
控制器122和非易失性存储器裸芯108之间的接口可以是任何适当的闪存接口,诸如触发模式(Toggle Mode)200、400或800。在一个实施例中,存储器系统100可以是基于卡的系统,诸如安全数字(SD)卡或微型安全数字(micro-SD)卡。在替代实施例中,存储器系统100可以是嵌入式存储器系统的部分。例如,闪存可以嵌入在主机中。在其他的示例中,存储器系统100可以是固态驱动器(SSD)形式的驱动器。
在一些实施例中,非易失性存储器系统100包含在控制器122和非易失性存储器裸芯108之间的单一通道,但是本文所描述的主题不限于具有单一存储器通道。例如,在一些存储器系统架构中,取决于控制器能力,在控制器和存储器裸芯之间可以存在2、4、8或更多的通道。在任何本文所描述的实施例中,即使在图中示出了单一通道,在控制器和存储器裸芯之间也可以存在多于单一的通道。
如在图3所描绘的,控制器112包含与主机接合的前端模块208,与一个或多个非易失性存储器裸芯108接合的后端模块210,以及进行现在将详细描述的功能的各种其他模块。
图3中描绘的控制器122的组件可以采取设计用于其他的组件的封装功能硬件单元(例如,电气电路)的形式,例如,设计用于程序代码(例如,软件或固件)的部分或本身含有的硬件或软件组件,该程序代码由通常进行相关功能的特定功能的(微型)处理器或处理电路执行,该本身含有的硬件或软件组件与更大的系统接合。例如,每个模块可以包含专用集成电路(ASIC)、现场可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、分立电路的组合、门电路或任何其他类型的硬件或其组合。替代地或附加地,每个模块可以包含储存在处理器可读装置(例如存储器)中的软件,以编程控制器122的处理器来进行本文描述的功能。在图3中所描绘的架构是一个示例性实现方式,其可以(或可以不)使用在图2中所描绘的控制器122(即,RAM、ROM、处理器、接口)的组件。
再次参考控制器122的模块,缓冲器管理器/总线控制214管理随机存取存储器(RAM)216中的缓冲器并控制控制器122的内部总线判优。只读存储器(218)储存系统启动代码。虽然如在图3中所说明的RAM 216和ROM218中的一个或两个与控制器122分开设置,但是在其他实施例中,RAM 216和ROM 218中的一个或两个可以位于控制器内。而在其他的实施例中,RAM和ROM的部分可以位于控制器122的内部和控制器的外部的两者。另外,在一些实现方式中,控制器122、RAM 216和ROM 218可以位于分开的半导体裸芯上。
前端模块208包含主机接口220和物理层接口(PHY)222,其提供与主机或下一级储存控制器的电气接口。主机接口220的类型的选择可以取决于正在使用的存储器的类型。主机接口220的示例包含(但不限于)SATA、SATA Express、SAS、光纤通道、USB、PCIe和NVMe。主机接口220典型地方便数据、控制信号和时序信号的传送。
后端模块210包含纠错码(ECC)引擎224,该纠错码引擎对从主机接收到的数据字节进行编码并对从非易失性存储器读取的数据字节进行解码和纠错。命令序列器226产生被传输到非易失性存储器裸芯108的命令序列(诸如编程和擦除命令序列)。RAID(独立裸芯冗余阵列)模块228管理RAID奇偶校验的产生和失败数据的恢复。RAID奇偶校验可以被用作对写入非易失性存储器系统100的数据的完整性保护的附加级。在一些情况下,RAID模块228可以是ECC引擎224的部分。注意到,RAID奇偶校验可以作为额外的裸芯被添加或作为由共同名称隐含的裸芯被添加,但是也可以将其添加到现存的裸芯内,例如作为额外的平面或作为额外的块或作为块内额外的WL。存储器接口230将命令序列提供给非易失性存储器裸芯108,并从非易失性存储器裸芯108接收状态信息。在一个实施例中,存储器接口230可以是双数据速率(DDR)接口,诸如切换模式200、400或800接口。闪存控制器层232控制后端模块210的全体操作。
一个实施例包含管理突发编程的突发编程管理器236。例如,在一个实施例中,突发编程管理器236可以进行和/或管理以下所描述的图8-11B的过程。突发编程的更多的细节也在以下提供。突发编程管理器236可以是电气电路、一个或多个软件模块的集合或电路和软件的组合。
在图3中所说明的系统100的附加的组件包含介质管理层238,其进行非易失性存储器裸芯108的存储器单元的磨损均衡。系统100还包含其他的分立组件240,诸如外部电气接口、外部RAM、电阻器、电容器或可以与控制器122接合的其他的组件。在替代实施例中,物理层接口222、RAID模块228、介质管理层238和缓冲器管理/总线控制器214中的一个或多个是在控制器122中非必需的可选组件。
闪存转换层(FTL)或介质管理层(MML)238可以集成为闪存管理器的部分,闪存管理器可以处理闪存错误并可以与主机接合。特别地,MML可以是闪存管理器中的模块,并且可以为NAND管理的内部构件负责。特别地,MML 238可以包含在存储器装置固件中的算法,该算法将来自主机的写入转换成对裸芯108的闪存126的写入。可能需要MML 238,因为:1)闪存可能已经限制了耐用性;2)闪存126仅可以被写入多页;和/或3)闪存126不可以被写入除非其作为块被擦除。MML 238理解这些可能对主机不可见的闪存126的潜在限制。相应地,MML 238尝试将从主机的写入转换成到闪存126的写入。如下所述,可以使用MML 238来识别和记录不稳定的位。此不稳定的位的记录可以用于评估块和/或字线(在字线上的存储器单元)的健康状况。
控制器122可以与一个或多个存储器裸芯108接合。在一个实施例中,控制器122和多个存储器裸芯(同时包括非易失性储存系统100)实现固态驱动器(SSD),其可以模拟、替换硬盘驱动器或代替硬盘驱动器被使用,该硬盘驱动器在如NAS装置、笔记本电脑、平板电脑等等的主机的内部。另外,SSD不需要作为硬盘驱动器工作。
非易失性储存系统的一些实施例将包含连接到一个控制器122的一个存储器裸芯108。然而,其他的实施例可以包含与一个或多个控制器122通信的多个存储器裸芯108。在一个示例中,如图3A所描绘的,多个存储器裸芯可以分组为存储器封装体的集合。每个存储器封装体包含与控制器122通信的一个或多个存储器裸芯。图3A示出了N+1个存储器封装体(封装体0-封装体N)和用于控制器122与相应存储器封装体0-N的存储器裸芯108之间通信的N+1个通道(通道0-通道N)。在一个实施例中,存储器封装体包含其上安装有一个或多个存储器裸芯108的印刷电路板(或相似结构)。在一些实施例中,存储器封装体可以包含模制材料以包封存储器封装体的存储器裸芯108。在一个实施例中,存储器封装体108可以是单一的存储器裸芯108。在一些实施例中,控制器122是与任何存储器封装体物理分开的。
图4是包含多个存储器单元的单片三维存储器结构126的一个示例性实施例的部分的透视图。例如,图4示出了存储器的一个块的部分。所描绘的结构包含定位在交替的介电层和导电层的堆叠体上方的位线BL的集合。出于示例的目的,介电层中的一个被标记为D,并且导电层(也被称为字线层)中的一个被标记为W。交替的介电层和导电层的数目可以基于特有的实现方式要求而变化。实施例的一个集合包含108-216个交替的介电层和导电层,例如,96个字线层、8个选择层、4个虚拟字线层和108个介电层。也可以使用多于或少于108-216层。如下面将要解释的,交替的介电层和导电层通过局部互连体LI分割成四个“指状物”。图4仅示出了两个指状物和两个局部互连体LI。交替的介电层和字线层下方是源极线层SL。在交替的介电层和导电层的堆叠体中形成存储器孔。例如,存储器孔中的一个标记为MH。注意到在图4中,介电层描绘成透明的,以便读者可以看到定位在交替的介电层和导电层的堆叠中的存储器孔。在一个实施例中,通过用包含电荷俘获层的材料填充存储器孔来形成NAND串以创建存储器单元的垂直列。每个存储器单元可以储存数据的一个或多个位。以下关于图4A-4F将提供三维单片存储器结构126的更多的细节。
图4A是解释存储器结构126的一个示例性组织的框图,其分割成两个平面302和304。然后每个平面分割成M个块。在一个示例中,每个平面具有约2000个块。然而,也可以使用不同数目的块和平面。在一个实施例中,对于两个平面存储器,块ID通常是偶数块属于一个平面而奇数块属于另一个平面;因此,平面302包含块0、2、4、6,...,而平面304包含块1、3、5、7,...。在一个实施例中,存储器单元的块是擦除单位。换言之,块的所有存储器单元一起被擦除。在其他的实施例中,存储器单元可以由其他的原因分组成块,诸如组织存储器结构126以使能发送信号和选择电路。
图4B-4F描绘了示例性3D NAND结构。图4B是描绘来自存储器结构126的一个块的部分的顶视图的框图。图4B中描绘的块的部分对应于图4A的块2中的部分306。如从图4B中所见的,在图4B中所描绘的块在332的方向延伸。在一个实施例中,存储器阵列将具有60层。其他的实施例具有少于或多于60层。然而,图4B仅示出了顶部的层。
图4B描绘了表示垂直列的多个圆圈。垂直列的每列包含多个选择晶体管和多个存储器单元。在一个实施例中,每个垂直列实现NAND串。例如,图4B描绘了垂直列422、432、442和452。垂直列422实现NAND串482。垂直列432实现NAND串484。垂直列442实现NAND串486。垂直列452实现NAND串488。垂直列的更多的细节在以下提供。因为图4B中所描绘的块在箭头330方向和箭头332方向延伸,块包含比图4B中所描绘的更多的垂直列。
图4B还描绘了位线的集合415,其包含位线411、412、413、414,……419。图4B示出了二十四个位线,因为仅描绘了块的部分。预期连接到块的垂直列的位线多于二十四个。表示垂直列的圆圈的每一个具有“x”以指示其连接到一个位线。例如,位线414连接到垂直列422、432、442和452。
在图4B中所描绘的块包含局部互连体402、404、406、408和410的集合,该局部互连体将各层连接到垂直列之下的源极线。局部互连体402、404、406、408和410也用于将块的每层分割成四个区域,例如,在图4B中所描绘的顶部的层被分割成区域420、430、440和450,这些区域称为指状物。在实现存储器单元的块的层中,四个区域称为字线指状物,其由局部互连体分开。在一个实施例中,在块的共同的级上的字线指状物在块的端部处连接到一起以形成单一的字线。在另一个实施例中,在相同级的字线指状物不连接到一起。在一个示例性实现方式中,位线仅连接到区域420、430、440和450的每个区域中的一个垂直列。在该实现方式中,每个块具有十六行有效列,并且每个位线连接到每个块中的四行。在一个实施例中,连接到共同位线的所有四行(经由在同一层上的连接在一起的不同的字线指状物)连接到相同的字线;因此,系统使用源极侧选择线和漏极侧选择线来选择要经过存储操作(编程、验证、读取和/或擦除)的四行中的一行(或另一个子集)。
虽然图4B示出了每个区域具有四行垂直列,在一个块中具有四个区域和十六行垂直列,但是这些精确的数字是示例性实现方式。其他的实施例可以包含每个块更多或更少的区域、每个区域更多行或更少行的垂直列和每个块更多行或更少行的垂直列。
图4B也示出了垂直列交错。在其他的实施例中,可以使用不同的交错图案。在一些实施例中,垂直列不交错。
图4C描绘了三维存储器结构126的实施例的部分,其示出沿图4B的线AA的横截面视图。此横截面视图穿过垂直列432和434以及区域430(见图4B)。图4C的结构包含四个漏极侧选择层SGD0、SGD1、SGD2和SGD3,四个源极侧选择层SGS0、SGS1、SGS2和SGS3,四个虚拟字线层DD0、DD1、DS0和DS1,以及连接到数据存储器单元的四十八个数据字线层WLL0-WLL47。其他的实施例可以实现多于或少于四个漏极侧选择层,多于或少于四个源极侧选择层,多于或少于四个虚拟字线层,以及多于或少于四十八个字线层(例如,96个字线层)。描绘了垂直列432和434,其突出通过漏极侧选择层、源极侧选择层、虚拟字线层和字线层。在一个实施例中,每个垂直列包括NAND串。例如,垂直列432包括NAND串484。在下面列出的垂直列和层的下方是基板101、基板上的绝缘薄膜454和源极线SL。垂直列432的NAND串具有位于堆叠体底部的源极端和位于堆叠顶部的漏极端。与图4B一致,图4C示出了经由连接器415连接到位线414的垂直列432。同样描述了局部互连体404和406。
为便于参考,漏极侧选择层SGD0、SGD1、SGD2和SGD3,源极侧选择层SGS0、SGS1、SGS2和SGS3,四个虚拟字线层DD0、DD1、DS0和DS1,以及数据字线层WLL0-WLL47共同称为导电层。在一个实施例中,导电层由锡和钨的组合制成。在其他的实施例中,可以使用其他的材料形成导电层,诸如掺杂多晶硅、金属(诸如钨)或金属硅化物。在一些实施例中,不同的导电层可以由不同的材料形成。导电层之间是介电层DL0-DL59。例如,介电层DL49在字线层WLL43上方,并在字线层WLL44下方。在一个实施例中,介电层由SiO2制成。在其他的实施例中,可以使用其他的介电材料来形成介电层。
沿垂直列形成非易失性存储器单元,该垂直列延伸通过堆叠体中交替的导电层和介电层。在一个实施例中,存储器单元布置在NAND串中。字线层WLL0-WLL47连接到存储器单元(也称为数据存储器单元)。虚拟字线层DD0、DD1、DS0和DS1连接到虚拟存储器单元。虚拟存储器单元不储存主机数据(由主机提供的数据,诸如来自主机的用户的数据),而数据存储器单元有资格储存主机数据。漏极侧选择层SGD0、SGD1、SGD2和SGD3用于从位线电气连接和断开NAND串。源极侧选择层SGS0、SGS1、SGS2和SGS3用于从源极线SL电气连接和断开NAND串。
图4D描绘了图4C中部分描绘的块的导电层(SGD0、SGD1、SGD2、SGD3、SGS0、SGS1、SGS2、SGS3、DD0、DD1、DS0、DS1和WLL0-WLL47)的逻辑表示。如上面关于图4B所提到的,在一个实施例中,局部互连体402、404、406、408和410将每个导电层分解成四个区域或指状物。例如,字线层WLL31分割成区域460、462、464和466。对于字线层(WLL0-WLL31),区域称为字线指状物,例如,字线层WLL46分割成字线指状物460、462、464和466。在一个实施例中,在相同级的四个字线指状物连接到一起。在另一个实施例中,每个字线指状物作为分开的字线操作。
漏极侧选择栅极层SGD0(顶部的层)也分割成区域420、430、440和450,也称为指状物或选择线指状物。在一个实施例中,在相同级的四个选择线指状物连接到一起。在另一个实施例中,每个选择线指状物作为分开的字线操作。
图4E描绘了图4C的区域429的横截面视图,其中图4C包含垂直列432的部分。在一个实施例中,垂直列是圆的并且包含四个层;然而在其他的实施例中,可以包含多于或少于四个层并且可以使用其他的形状。在一个实施例中,垂直列432包含由诸如SiO2的电介质制成的内核层470。也可以使用其他的材料。围绕内核层470的是多晶硅沟道471。也可以使用除了多晶硅的材料。注意到,沟道471连接到位线。围绕沟道471的是隧穿电介质472。在一个实施例中,隧穿电介质具有ONO结构。围绕隧穿电介质472的是电荷俘获层473,诸如(例如)氮化硅。也可以使用其他的存储器材料和结构。本文所描述的技术不限于任何特定的材料和结构。
图4E描绘了介电层DLL49、DLL50、DLL51、DLL52和DLL53,以及字线层WLL43、WLL44、WLL45、WLL46和WLL47。字线层的每层包含由氧化铝层477围绕的字线区域476,该氧化铝层由阻断氧化物(SiO2)层478围绕。字线层与垂直列的物理相互作用形成存储器单元。因此,在一个实施例中,存储器单元包括沟道471、隧穿电介质472、电荷俘获层473、阻断氧化物层478、氧化铝层477和字线区域476。例如,字线层WLL47和垂直列432的部分包括存储器单元MC1。字线层WLL46和垂直列432的部分包括存储器单元MC2。字线层WLL45和垂直列432的部分包括存储器单元MC3。字线层WLL44和垂直列432的部分包括存储器单元MC4。字线层WLL43和垂直列432的部分包括存储器单元MC5。在其他的架构中,存储器单元可以具有不同的结构;然而,存储器单元将仍然是储存单位。
在编程存储器单元时,电子被储存在与存储器单元相关联的电荷俘获层473的部分。响应于字线区域476上的适当电压,这些电子从沟道471通过隧穿电介质472进入到电荷俘获层473中。存储器单元的阈值电压(Vth)随着储存的电荷量成比例地增加。在一个实施例中,通过进入到电荷俘获层的电子的隧道效应(Fowler-Nordheim tunneling)来实现编程。在擦除操作期间,返回到沟道或者空穴的电子被注入到电荷俘获层中以与电子重新结合。在一个实施例中,使用空穴经由诸如栅致漏极泄漏(GIDL)的物理机制被注入到电荷俘获层来实现擦除。
图4F示出了贯穿整个块的物理字线WLL0-WLL47。图4F的结构对应于图4A的块2中的部分306,其包括位线411、412、413、414、……419。在块内,每个位线连接到四个NAND串。漏极侧选择线SGD0、SGD1、SGD2和SGD3用于确定四个NAND串中的哪个NAND串连接到相关联的位线。块也可以被认为分割成四个子块SB0、SB1、SB2和SB3。子块SB0对应于由SGD0和SGS0控制的那些垂直NAND串,子块SB1对应于由SGD1和SGS1控制的那些垂直NAND串,子块SB2对应于由SGD2和SGS2控制的那些垂直NAND串,并且子块SB3对应于由SGD3和SGS3控制的那些垂直NAND串。
虽然图4-图4F的示例性存储器系统是包含具有电荷俘获材料的垂直NAND串的三维存储器结构,但是在本文所描述的技术的情况下也可以使用其他的(2D和3D)存储器结构。例如,也可以使用浮置栅极存储器(例如,NAND型和NOR型闪存储器ReRAM存储器、磁阻存储器(例如MRAM)和相变存储器(例如PCRAM))。
ReRAM存储器的一个示例包含布置在由X线和Y线(例如,字线和位线)存取的交叉点阵列中的可逆电阻切换元件。在另一个实施例中,存储器单元可以包含导电桥存储器元件。导电桥存储器元件也可以称为可编程金属化单元。基于固体电解质内的离子的物理重新定位,导电桥存储器元件可以用作状态改变元件。在一些情况下,导电桥存储器元件可以包含两个固体金属电极,一个相对惰性的(例如钨)而另一个电化学活性的(例如银或铜),在两个电极之间具有固体电解质的薄膜。随着温度升高,离子的迁移率也增加,导致导电桥存储单元的编程阈值降低。因此,导电桥存储器元件在温度上可以具有宽范围的编程阈值。
磁阻存储器(MRAM)通过磁储存元件储存数据。元件由被薄绝缘层分开的两块铁磁板形成,每块铁磁板可以保持磁化。两块板中的一块是设置为特定的极性的永磁体;另一块板的磁化可以改变以匹配外置磁场来储存存储器。这种配置被称为自旋阀,并且是MRAM位最简单的结构。由这样的存储器单元的栅格构建存储器装置。在用于编程的一个实施例中,每个存储器单元位于彼此成直角布置的一对写入线之间,该对写入线平行于元件,一个在单元上方且一个在单元下方。在电流通过他们时,创建感应磁场。
相变存储器(PCRAM)利用了硫族化物玻璃的独特的性能。一个实施例使用GeTe-Sb2Te3超晶格通过简单地改变锗原子与激光脉冲(或来自另一源的光脉冲)的协调状态来实现非热相变。因此,编程的剂量是激光脉冲。存储器单元可以通过阻止存储器单元接收光而被禁止。注意到,在本文档中使用“脉冲”不需要方形脉冲,但包含声音、电流、电压光或其他波的(连续或非连续)振动或突发。
上述讨论的存储器系统可以被擦除、编程和读取。在成功的编程过程(具有验证)结束时,存储器单元的阈值电压应当在用于编程的存储器单元的阈值电压的一个或多个分布内,或者在用于擦除的存储器单元的阈值电压的分布内。图5说明了在每个存储器单元储存数据的三位时用于存储器单元阵列的示例性阈值电压分布。然而,其它实施例可以使用每个存储器单元的其他数据容量(例如,诸如每个存储器单元一、二、四或五位数据)。图5示出了对应于八个数据状态的八个阈值电压分布。第一阈值电压分布(数据状态)S0表示存储器单元被擦除。其他的七个阈值电压分布(数据状态)S1-S17表示存储器单元被编程,并且因此也称为已编程状态。每个阈值电压分布(数据状态)对应于数据位的集合的预定值。编程到存储器单元中的数据与单元的阈值电压级别之间的特有的关系取决于单元采用的数据编码方案。在一个实施例中,使用格雷码分配将数据值分配给阈值电压范围,以使得如果存储器的阈值电压错误地移动到其邻近的物理状态,将仅影响一位。
图5也示出了用于从存储器单元读取数据的七个读取参考电压Vr1、Vr2、Vr3、Vr4、Vr5、Vr6和Vr7。通过测试(例如,进行感测操作)给定的存储器单元的阈值电压是在七个读取参考电压之上还是之下,系统可以确定存储器单元所处于的数据状态(即,S0、S1、S2、S3,……)。
图5也示出了七个验证参考电压Vv1、Vv2、Vv3、Vv4、Vv5、Vv6和Vv7。在编程存储器单元到数据状态S1时,系统将测试那些存储器单元是否具有大于或等于Vv1的阈值电压。在编程存储器单元到数据状态S2时,系统将测试存储器单元是否具有大于或等于Vv2的阈值电压。在编程存储器单元到数据状态S3时,系统将确定存储器单元是否具有大于或等于Vv3的阈值电压。在编程存储器单元到数据状态S4时,系统将测试那些存储器单元是否具有大于或等于Vv4的阈值电压。在编程存储器单元到数据状态S5时,系统将测试那些存储器单元是否具有大于或等于Vv5的阈值电压。在编程存储器单元到数据状态S6时,系统将测试那些存储器单元是否具有大于或等于Vv6的阈值电压。在编程存储器单元到数据状态S7时,系统将测试那些存储器单元是否具有大于或等于Vv7的阈值电压。
在一个称为全序列编程的实施例中,存储器单元可以从擦除数据状态S0直接编程到编程数据状态S1-S7中的任何一个状态。例如,要被编程的存储器单元的总体可以首先被擦除,以便总体中的所有存储器单元处于擦除数据状态S0。然后,使用编程过程来将存储器单元直接编程到数据状态S1、S2、S3、S4、S5、S6和/或S7。例如,尽管一些存储器单元从数据状态S0被编程到了数据状态S1,但是其他的存储器单元从数据状态S0被编程到了数据状态S2和/或从数据状态S0被编程到了数据状态S3等。图5的箭头表示全序列编程。除了全序列编程(包含但不限于多级/阶段编程)之外,本文所描述的技术还可以用于其他类型的编程。在一些实施例中,数据状态S1-S7可以重叠,通过控制器122依靠ECC来识别正被储存的正确数据。
图6是描述对数据状态的数据值的布置的一个示例的表格。在图6的表格中,S0=111、S1=110、S2=100、S3=000、S4=010、S5=011、S6=001和S7=101。也可以使用其他的数据编码。本文所公开的技术不需要特定的数据编码。
在一个实施例中,在块经过了擦除操作,所有的存储器单元移动到数据状态S0,即擦除状态。在图6的实施例中,在存储器单元被擦除(例如,在数据状态S0)时,储存在存储器单元中的所有位为1。
图7A是描述由控制器122进行的编程过程的一个实施例的流程图。在一些实施例中,主机可以进行控制器的功能,而不是具有专用的控制器。在步骤702中,控制器122将指令发送到一个或多个存储器裸芯108来编程数据。在步骤704中,控制器122将一个或多个地址发送到一个或多个存储器裸芯108。一个或多个逻辑地址指示编程数据的位置。在步骤706中,控制器122将要编程的数据发送到一个或多个存储器裸芯108。在步骤708中,控制器122从一个或多个存储器裸芯108接收编程的结果。示例性结果包含数据编程成功、编程操作失败的指示和数据被编程但在不同的位置的指示或其他结果。在步骤710中,响应于在步骤708中接收的结果,控制器122更新其维持的系统信息。在一个实施例中,系统维持指示每个块的状况信息的数据表格。此信息包含逻辑地址到物理地址的映射,哪些块/字线是打开/关闭的(或部分打开/关闭),哪些块/字线是坏的等等。
在一些实施例中,在步骤702之前,控制器122将从主机接收主机数据和指令来编程,并且控制器将运行ECC引擎224来由主机数据创建代码字,如本领域已知的和下文描述的更多细节。这些代码字是在步骤706中发送的数据。控制器还可以加扰数据以实现相对于存储器单元的磨损均衡。
图7B是描述编程过程的一个实施例的流程图。响应于图7A的步骤(即,响应于来自控制器122的指令、数据和地址),由存储器裸芯进行图7B的过程。在一个示例性实施例中,在状态机112的方向上使用一个或多个以上讨论的控制电路在存储器裸芯108上进行图7B的过程。图7B的过程也可以用来实现以上讨论的全序列编程。此外,图7B的过程可以用来实现多阶段编程过程的每个阶段。
典型地,在编程操作期间(经由选择字线)施加到控制栅极的编程序电压被施加为一系列程序脉冲。程序脉冲之间是用来进行验证的验证脉冲的集合。在许多实现方式中,随着每个连续脉冲,程序脉冲的幅度增加预定的步长。在图7B的步骤770中,编程电压(Vpgm)初始化为初始幅度(例如,~12-16V或另一适当的级别),并且由状态机112维持的编程计数器PC初始化为1。在步骤772中,将编程信号Vpgm的程序脉冲施加到所选择字线(用于编程的所选择的字线)。在一个实施例中,同时被编程的存储器单元组全部连接到相同的字线(所选择的字线)。未被选择的字线接收一个或多个升压电压(例如,~7-11V)来进行在本领域已知的提升压方案。如果存储单元应该被编程,则对应的位线接地。另一方面,如果存储单元应保留在其当前阈值电压,则对应的位线连接到Vdd以禁止编程。在步骤772中,将程序脉冲同时施加于连接到所选择字线的所有的存储器单元,以使得连接到所选择字线的所有的存储器单元被同时编程。换言之,他们被编程在同一时间或在重叠时间(两者都被认为是同时的)期间。如此,连接到选择字线的所有的存储器单元的阈值电压将同时改变,除非他们已经被锁定在编程之外。
在步骤774中,使用适当的验证参考电压的集合来验证适当的存储器单元以进行一个或多个验证操作。在一个实施例中,通过施加测试来进行验证过程,其测试用于编程所选择的存储器单元的阈值电压是否已经达到适当的验证参考电压。
在步骤776中,确定是否所有的存储器单元已经达到其目标阈值电压(通过)。如果是,则编程过程完成且成功,因为所有所选择的存储器单元都被编程并验证到其目标状态。在步骤778中报告“通过(PASS)”的状况。在776中,如果确定不是所有的存储器单元都已经达到其目标阈值电压(失败),则编程过程继续到步骤780。
在步骤780中,系统计数还未达到其相应的目标阈值电压分布的存储器单元的数目。换言之,系统计数目前验证过程失败的存储器单元的数目。此计数可以由状态机、控制器或其他逻辑电路完成。在一个实现方式中,感测块的每个块将储存其相应的单元的状况(通过/失败)。在一个实施例中,存在一个总计数,其反映了当前正在被编程的最后一个验证步骤已经失败的存储器单元的总数目。在另一个实施例中,为每个数据状态保留分开的计数。
在步骤782中,确定是否来自步骤780的计数小于或等于预定限制。在一个实施例中,预定限制是在对存储单元的页的读取过程期间可由纠错码(ECC)校正的位的数目。如果失败的存储器单元的数目小于或等于预定限制,则编程过程可以停止并在步骤778中报告“通过(PASS)”状况。在这种情况下,正确地编程足够的存储器单元,使得在读取过程期间使用ECC可以校正尚未完全编程的少量剩余存储器单元。在一些实施例中,步骤780将对每个扇区、每个目标数据状态或其他的单位的失败的单元的数目计数,并且在步骤782中将那些计数单独地或共同地与阈值比较。
在另一个实施例中,预定限制可以小于在读取过程期间ECC可以校正的位的数目,以允许将来的错误。在编程小于页面的所有存储器单元时或在比较仅有一个数据状态(或小于所有状态)的计数时,预定限制可以是在对存储器单元的页的读取过程期间ECC可以校正的位的数目的部分(按比例或不按比例)。在一些实施例中,限制未被预定。代替地,限制基于对于页的已计数的错误数目、进行的编程擦除周期的数目或其他的标准而改变。
如果失败的存储器单元的数目不小于预定限制,则在步骤784继续编程过程,并且相对于编程极限值(PL)检查编程计数器PC。编程极限值的示例包含12、20和30;然而,可以使用其他的值。如果编程计数器PC不小于编程序极限值PL,则认为编程过程已经失败,并且在步骤788中报告失败(FAIL)状况。此为程序故障的一个示例。如果编程计数器PC小于编程极限值PL,则在步骤786继续该过程,在步骤786期间编程计数器PC增加1并且编程电压Vpgm升高到下一个幅度。例如,下个脉冲的幅度将比先前脉冲大一个步长(例如,0.1-0.5伏的步长)。在步骤786之后,过程循环回到步骤772,并且将另一程序脉冲施加到所选择的字线,以便进行图7B的编程过程的另一迭代(步骤772-786)。
通常,在验证操作和读取操作期间,所选择的字线连接到电压(参考信号的一个示例),该电压为对于每个读取操作(例如,见图5的读取比较级别Vr1、Vr2、Vr3、Vr4、Vr5、Vr6和Vr7)或验证操作(例如,见图5的验证目标级别Vv1、Vv2、Vv3、Vv4、Vv5、Vv6和Vv7)的级别,以便确定是否有关的存储器单元的阈值电压已经达到这样的级别。在施加字线电压之后,响应于施加到字线的电压测量存储器单元的导通电流来确定存储器单元是否导通(导通电流)。如果测量到导通电流大于某一值,那么假设存储器单元导通,并且施加到字线的电压大于存储器单元的阈值电压。如果未测量到导通电流大于某一值,那么假设存储器单元未导通,并且施加到字线的电压不大于存储器单元的阈值电压。在读取或验证过程期间,未选择的存储器单元在其控制栅极处被提供一个或多个读取通过电压,以使得这些存储器单元将作为通过栅极(例如,传导电流而不管其是否被编程或擦除)而操作。
在读取或验证操作期间,存在许多方式来测量存储器单元的导通电流。在一个示例中,存储器单元的导通电流通过其对感测放大器中的专用电容器放电或充电的速率来测量。在另一个示例中,所选择的存储器单元的导通电流允许(或不允许)包含存储器单元的NAND串放电对应的位线。位线上的电压在一段时间之后被测量以查看是否已经放电。注意到,可以以在本领域已知的用于验证/读取的不同方法来使用本文所描述的技术。也可以使用在本领域已知的其他的读取或验证技术。
在一些实施例中,控制器122从主机(或客户、用户等)接收请求,以将主机数据(从主机接收到的数据)编程到存储器系统。在一些实施例中,控制器122将要编程的主机数据布置成数据单位。例如,控制器122可以将主机数据布置成页、字线单位、块、巨型块或其他的单位。
为了本文的目的,块是存储器单元的物理组。在一个示例中,块是擦除的单位。然而,在其他的示例中块不需要是擦除的单位。在一个示例中,块包括存储器单元的集合,该存储器单元的集合被连接到不间断的字线,诸如连接到公共字线的集合的NAND串的集合。也可以使用其他的物理布置。
巨型块是来自多个存储器裸芯的块的逻辑组合。因此,超级块跨过非易失性存储器系统的多个存储器裸芯。巨型块是被一起编程和读取的数据单位,但其跨过多个存储器裸芯108。在一个实施例中,巨型块包含来自存储器裸芯的集合的每个存储器裸芯的一个块(或多于一个块)。在一个示例性实现方式中,巨型块包含来自每个存储器裸芯的每个平面的一个块。在一个示例性实现方式中,巨型块包含来自在每个封装体中的一个裸芯的两个块,其中来自一个裸芯的两个块包含来自两个平面中的每个平面的一个块。然而,也可以使用其他的布置。
图8描绘了巨型块800的一个示例。如所描绘的,巨型块800包含四个物理块:来自裸芯0的块X、来自裸芯1的块X、来自裸芯2的块X和来自裸芯3的块X。在其他的实施例中,巨型块可以包含来自每个裸芯的两个块,两个平面中的每个平面一个块。虽然图8示出了跨越四个存储器裸芯的巨型块800,但是在其他的实施例中,巨型块可以跨越多于四个裸芯或少于四个裸芯。图8仅示出了在每个块中的八个字线,然而,大多数块(或所有块)可能具有多于八个字线(例如,每个块具有用于储存用户/主机数据的48个字线)。在一些实施例中,巨型块包含来自每个存储器裸芯的相同的块地址(例如,X),而在其他的实施例中,巨型块可以包含对于每个块(或块的子集)的不同块地址,例如,裸芯0的块1、裸芯1的块1003、裸芯2的块3033、裸芯3的块44等。
巨型块的单独物理块的对应字线在逻辑上被视为一个大字线。例如,巨型块的每个块的字线WL0是巨型字线WL0的部分。
有时存储器系统接收准确数量的数据来填充一个块的一个字线。其他时间,存储器系统接收数据的集合,其需要编程连接到块或巨型块的多个字线的存储器单元。突发编程是响应于编程命令的大量数据的写入,使得数据将在一个或多个目标物理块的集合中占用多于一个字线。与响应于多个编程命令(例如,每个字线一个编程命令)的编程多个字线形成对照。突发编程可以包含将数据编程到巨型块的多个字线。例如,图8A描绘了在突发编程过程之后的巨型块800。数据“xxxxxxxxxx”已经写入到巨型块800的三个字线(WL0、WL1和WL2)。换言之,巨型块的每个物理块具有写入到WL0、WL1和WL2的数据。在其他的实施例中,数据可以被写入到不同物理块的不同的字线。
正如以上已经提到的,在编程时,存在编程过程失败(称为程序故障)的可能性。如果在特定的块的字线上存在程序故障,则可能该特定的块存在缺陷,所以期望将在该特定块中的已编程的数据移动到新的并且更安全的块。
在进行突发编程之时,如果在一个块的一个字线中存在程序故障,以前的系统将暂停整个突发编程过程,以便程序故障的数据可以在其他地方编程,并且在经历了程序故障的块中的所有已编程数据可以被移动。此用于所有物理块的整个突发编程的暂停效率不高。
图9是描述用于从程序故障中有效地恢复的过程的一个实施例的流程图,例如,如果在其中一个块的一个字线(或者块的子集的字线的s子集)上存在程序故障。图9的过程可以通过控制器122或在控制器122的方向进行,其包含突发编程管理器236。替代地,图9的过程可以通过状态机112或在状态机112的方向(结合存储器裸芯108上的其他电路)进行或通过另一控制电路进行,该控制电路在或不在存储器108上,和/或在或不在存储器系统100上。图9的过程明确地提供了在突发编程(例如,将数据编程到块的集合中的每个块的多个字线上的存储器单元的突发写入过程)期间从程序故障中恢复的示例,然而,图9的过程也可以在不是突发编程的编程过程期间使用。为了使能图9的过程,控制电路(例如,控制器122、状态机112和/或其他的电路)配置为在尝试编程数据(用于突发编程或其他的编程)之前维持对备份块的指示。换言之,控制电路在图9的步骤902之前已经保留了备份块的集合。这些备份块可以被列在表格中。
在图9的步骤902中,在非易失性存储器中控制电路进行突发编程。例如,图8A的巨型块800将被编程,目的是用数据填充三个字线(例如,w0、w1、w2)。在步骤904中,控制电路确定在突发编程期间和在完成突发编程之前发生的程序故障。因此,在这个时候,存在要编程的更多数据。例如,如果突发编程包含编程五个字线,或许在编程五个字线中的第三个字线时发生程序故障。在步骤906中,与程序故障相关联的数据被编程到非易失性存储器中的备份位置。例如,编程过程失败的正在编程的数据将被重新编程到备份块。因此,步骤906包含控制电路,该控制电路选择先前识别的备份块中的一个块。之后编程失败的数据将被编程到已选择的备份块。在步骤908中,在将与程序故障相关联的数据编程到备份位置之后,系统继续突发编程,该突发编程包含将尚未经过编程过程的数据编程到备份位置。换言之,突发编程的剩余部分被完成。如上示例所述,如果在编程五个字线中的第三个字线上的数据期间发生程序故障,则步骤908将包含编程用于第四字线和第五字线的数据。程序故障发生的块将不再使用。当然,作为步骤908的部分,将用于该故障块的数据编程到所选择的备份块中。相对于图10A-D以下将讨论更多的细节。在步骤910中,在将尚未经过编程过程的数据编程到备份位置之后,控制电路将在非易失性存储器中的已编程的数据移动到备份位置。例如,故障块的其他的字线中的已编程数据将被移动到备份块。
图10A-图10D描绘了在图9的过程的示例性实现方式期间的巨型块1000。图10A示出了包含四个裸芯的巨型块1000。巨型块包含来自裸芯0、裸芯1、裸芯2和裸芯3中的每个裸芯的一个物理块。在其他的实施例中,巨型块1000可以包含来自多于或少于四个裸芯的块。巨型块也可以包含多于或少于四个物理块。在一些实施例中,巨型块可以包含来自每个裸芯(或裸芯的子集)的每个平面(或多个平面)的物理块。图10A示出了在图9的步骤902和904之后的巨型块1000的状态。换言之,系统已经开始了对于巨型块1000的突发编程(参见步骤902)。然而,在突发编程期间和在完成突发编程(步骤904)之前发生程序故障。因此,突发编程仅部分完成。例如,裸芯0的块X已经成功地将数据“aaaaaaaaaaa”编程到连接到字线w0的存储器单元,将“eeeeeeeeeee”编程到连接到字线w1的存储器单元,以及将“jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj”编程到连接到字线w2的存储器单元。相似地,裸芯1的块X已经成功地将数据“bbbbbbbbbbbb”编程到连接到字线w0的存储器单元,以及将“gggggggggggg”编程到连接到字线w1的存储器单元。然而,裸芯1的块X的字线w2旨在储存“kkkkkkkkkkkkk”,但是在图10A中存在由“FFFFFFF”表示的程序故障。裸芯2的块X已经成功地将数据“cccccccccccc”编程到连接到字线w0的存储器单元,将“hhhhhhhhhhh”编程到连接到字线w1的存储器单元,以及将“mmmmmmmm”编程到连接到字线w2的存储器单元。裸芯3的块X已经成功地将数据“dddddddddddd”编程到连接到字线w0的存储器单元,将“iiiiiiiiiiiiiiiiiiiiiiiiiii”编程到连接到字线w1的存储器单元,以及将“nnnnnnnnnnn”编程到连接到字线w2的存储器单元。因此,图10A清晰地示出了存储器系统的控制电路配置为尝试将数据编程到连接到第一块的第一字线的第一存储器单元(例如,连接到裸芯1的块X的字线w2的存储器单元),并确定对第一存储器单元的数据编程失败。
图10B示出了在图9的步骤906之后的巨型块1000。换言之,控制电路已经识别备份块(裸芯1的备份块Y),并且已经将与程序故障相关联的数据编程到备份块。注意到,备份块(块Y)和故障块(裸芯1的块X)处于相同的裸芯。因此,旨在被编程到裸芯的块X的字线w2的原始数据目前被编程到裸芯1的备份块Y的字线w0。图10B示出了控制电路配置为响应于确定第一存储器单元的数据的编程失败,而将与程序故障相关联的数据编程到第二存储器单元,该第二存储器单元连接到第二块的特定字线。用于编程与程序故障相关联的数据的第二块的特定字线是第二块的第一字线(备份块Y的字线W0)。第一字线表达该字线是要编程的第一个字线。其也是边缘字线,边缘字线是用于储存主机或用户数据字线W0和字线W47的字线组中在字线组边缘的字线(即,在字线组的开始或结束处),假设48字线用于用户/主机数据。
控制电路还建立了的链接表1002,该链接表指示第一块(故障块)的字线与第二块(备份块Y)的字线之间的相关性。链接表1002包含二列。左边的列指示来自故障块的旧字线的识别。右边的列指示新备份块的字线。链接表1002的第一行示出了旧字线w2和新字线w0。此意味,被认为是要编程到故障块中字线w2的数据现在被编程到备份块的字线w0。
图10C示出了在图9的步骤908之后的巨型块1000。换言之,在将与程序故障相关联的数据编程到备份块Y之后,系统继续突发编程,其包含将尚未经过编程过程的数据编程到备份块以及原始目标块。例如,图10C示出了,将附加的数据编程到裸芯0的块X的字线w3和w4、裸芯2的块X的字线w3和w4以及裸芯3的块X的字线w3和w4。用于突发编程的附加的数据也将在字线w1和w2被编程到裸芯1的备份块Y。步骤908还包含更新链接表1002,该链接表现在指示来自以字线w3为目标的突发编程的附加数据现在被储存在字线w1中,以及以字线w4为目标的突发编程的数据现在在字线w2中。因此,图10C示出了控制电路配置为将附加数据编程到连接到第二块的附加字线的第三存储器单元(例如,连接到备份块Y的字线w1或字线w2的存储器单元)。
图10D描绘了在图9的步骤910之后的巨型块1000的状态。换言之,在将尚未经过编程过程的数据编程到备份位置之后,控制电路将已编程数据移动到备份块。例如,将已编程数据“gggggggggggg”和数据“bbbbbbbbbbbb”从裸芯1的块X的字线w0和w1移动到裸芯1的备份块Y的字线w3和w4。另外更新链接表以指示来自故障块的w0的数据现在被储存在连接到备份块的字线w3的存储器单元,以及来自故障块的w1的数据现在被储存在连接到备份块的字线w4的存储器单元。因此,链接表1002指示来自故障块中的存储器单元的旧数据被储存在备份块中的位置。在链接表中,第一块(故障块)的字线的顺序可以不同于第二块(备份块)中的字线的顺序。
图11、11A和11B一起为描述对于图9的过程的一个示例性实现方式的更多细节的流程图。如上所述,可以施加该过程来编程突发数据或编程非突发数据。图11、11A和11B的过程可以通过控制器122或在控制器122的方向进行,控制器122包含突发编程管理器236。替代地,图11、11A和11B的过程可以通过另一控制电路或在另一控制电路的方向进行,该控制电路可以在或不在存储器裸芯108上,和/或在或不在存储器系统100上。在步骤1102中,存储器系统从主机(或另一实体,诸如客户、服务器等)接收突发数据。例如在控制器122处接收数据。在步骤1104中,将一个字线的数据(即,将被储存在连接到单一字线的存储器单元中的数据)从控制器122传输到包含于巨型块的存储器裸芯中的每一个。在一个实施例中,不同的存储器裸芯中的每个接收数据的不同集合,其中每个集合有足够的数据以储存在连接到相应的字线的所有存储器单元上。在步骤1106中,包含于巨型块中的每个存储器裸芯编程接收到的用于一个目标字线的数据。在步骤1108中,包含于巨型块中的每个存储器裸芯报告相应的编程过程的状况。控制器122确定(步骤1110)是否存在任何程序故障。该确定基于在步骤1108中从存储器裸芯中的每个裸芯接收回来的状态报告。如果不存在程序故障,则在步骤1112中,控制器122确定在突发中是否有尚未编程的任何更多数据。如果在突发中有尚未编程的更多数据,则过程循环回到步骤1104,并且然后将数据的下一个集合提供到包含于巨型块中的存储器裸芯。如果,在步骤1112中,控制器122确定在突发中没有更多数据,则在步骤1114中,控制器122向主机(或其他的实体)报告编程成功。
如果,在步骤1110中,控制器122确定如果存在程序故障,则在步骤1120中(见图11A),控制器122识别发生程序故障的存储器裸芯、平面、块(故障块)以及字线。在步骤1122中,控制器122在与故障块相同的存储器裸芯和相同的平面上选择备份块。在步骤1124中,将与程序故障相关联的数据编程到所选择的备份块的第一可用字线。在许多情况下,第一可用字线将是第一字线(WL0或w0),因为在许多实施例中,所选择的备份块将是完全擦除的块。在其他的实施例中,备份块可以是部分编程块(也称为开放块)。在步骤1126中,控制器122更新各种参考表。一个示例性参考表是如上所述的链接表,该链接表将被更新,以指示与程序故障相关联的数据现在储存在备份块上(例如,见图10B的链接表1002)。在一个实施例中,控制器122将还包含其他的参考表、要压缩的块的列表以及维持存储器系统所必需的其他表,其中参考表包含坏块到替换块的映射、物理块到逻辑巨型块的映射、废弃数据的映射、逻辑块地址到物理块地址的映射。
在图11A的步骤1128中,控制器122确定在突发中是否有需要被编程的更多数据。如果是,则在步骤1130中,控制器122发送编程存储器单元的数据的附加组,该存储器单元在包含于巨型块中的每个块的单一字线上。换言之,包含于巨型块的每个存储器裸芯将接收足够的数据以编程连接到一个字线的存储器单元。在步骤1132中,每个存储器裸芯编程用于一个字线的数据,包含将数据编程到备份块的下一个可用字线(例如,见图10C)。在步骤1134中,包含于巨型块中的每个存储器裸芯报告编程过程的状况。在步骤1134之后,编程循环回到步骤1126。注意到,如果存在附加的程序故障,则过程将继续到步骤1120。步骤1126-1134的循环被继续直到突发编程过程已经完成。当对于突发编程过程没有要被编程的更多数据时(见步骤1128),则过程继续到步骤1150(见图11B),其中控制器122向主机报告成功编程。
在步骤1152中,控制器122确定是否存储器系统处于空闲。如果存储器系统未进行主机命令(诸如在主机的请求下编程、读取和/或擦除),则存储器系统处于空闲。例如,在存储器系统完成了编程过程之后,存储器系统处于空闲的并且正等待来自主机的下一命令。步骤1152可以包含测试整个存储器系统(包含多个存储器裸芯)是否处于空闲。替代地,步骤1152可以包含测试单一存储器裸芯(包含程序故障的存储器裸芯)是否处于空闲。如果存储器系统(或存储器裸芯)不处于空闲,则图11B的过程将继续循环并等待系统或存储器裸芯变为空闲。在存储器系统(或存储器裸芯)被确定处于空闲时,则在步骤1154中,控制器122读取储存在存储器单元上的数据,该存储器单元连接到与具有程序故障的字线紧邻的字线。此字线称为邻近字线。例如,回头看图10B,在裸芯1中的块X的字线w2具有程序故障。邻近字线是裸芯1中的块X的字线w1。
通过首先进行错误校正过程来储存数据以创建代码字的集合在本领域是已知的。然后代码字被储存在存储器中。在读取时,代码字被读取,并且然后使用与错误校正方案相关联的解码过程解码。如果数据已经被破坏,解码过程将未成功完成,并且代码字不可以被解码到主机数据。例如,如果字线由于与邻近字线短路而经历程序故障,则在编程该故障字线时,储存在邻近字线上的数据可能被破坏。在步骤1156中,控制器122确定是否储存在连接到邻近字线的存储器单元中的数据是破坏的。如果否,则在步骤1160中,控制器122从已经编程数据的故障块中的所有其他字线中读取数据。例如,参见图10D,在步骤1160中将被读取的其他字线是在裸芯1中的块X的w0和w1。在步骤1162中,从那些其他的字线(包含邻近字线)读取的数据被编程到备份块中(如在图10D中所描绘的)。在一个实施例中,即使数据被破坏,在步骤1160中从其他的字线读取的数据也被移动(编程到备份块中)。换言之,即使数据中存在ECC解码错误,具有不可校正错误的数据仍将被移动到备份块。在一个实施例中,系统在步骤1160中读取时不解码数据,而是仅感测信息并在步骤1162中重新编程所感测的信息。在其他的实施例中,系统将尝试解码,并且如果解码成功则在步骤1162中数据将被重新编码和编程。然而,如果解码失败,具有错误的数据被移动(重新编程)作为最初感测。在步骤1164中,如上所述参考表被更新。在步骤1166中,备份块被标记为被压缩的。在一个实施例中,控制器122将包含在系统处于空闲时要被压缩的块的表。压缩过程包含读取数据、移除任何错误、丢弃过时或废弃的数据以及组合数据以利用存储器结构中更少的空间。
回看步骤1156,如果邻近字线被破坏,则在步骤1158中控制器恢复在邻近字线上的数据。在一个实施例中,在邻近字线上的数据从来自故障块的多个字线的数据的XOR总和中恢复。在本领域中已知的是,存储器系统将保持在块中编程的数据的XOR总和。当块正在被编程时,控制器将维持XOR总和。在一些实施例中,直到该块被编程完成,该XOR总和被储存在控制器122的RAM中。一旦块已经被数据完全填充,则将创建最终的XOR总和并将其储存在物理块自身的最后的字线上。XOR总和包含来自已编程的所有字线的数据的组合。因此,如果任何一个字线被破坏,则可以从在其他的字线上的XOR总和与数据来恢复字线数据。此恢复过程在步骤1158进行。在其他的实施例中,也可以使用其他类型的恢复过程。在步骤1158之后,过程继续到步骤1160。
步骤1126和1164包含更新参考表。图12是描述所提出的参考表格的一个示例的框图。图12的表格也可以称为链接表的另一示例。图12的表格包含六列。第一列(最左边的列)提供巨型块的识别。第二列提供在已识别的巨型块内的故障块的指示。第三列指示是故障字线的字线。第四列指示备份块,控制器122使用该备份块以从故障中恢复并将数据移动到该备份块。第五列指示在备份块中用于储存与故障相关联的数据的第一字线。第六列指示储存旧数据的起始的字线。旧数据是在程序故障之前先前被编程到故障块中的数据。例如,旧数据是储存在裸芯1的块X的字线w0和w1上的数据(见图10D)。
为了本文的目的,在说明书中对“实施例”、“一个实施例”、“一些实施例”或“另一个实施例”的引用可以用来描述不同的实施例或相同的实施例。
为了本文的目的,连接可以是直接连接或间接连接(例如,经由一个或多个其他部件)。在一些情况下,在元件被称为连接或耦合到另一元件时,元件可以直接连接到另一元件或经由中间元件间接连接到另一元件。在元件被称为直接连接到另一元件时,则该元件和另一元件之间不存在中间元件。如果两个装置直接或间接连接,以便他们可以在他们之间传达电子信号,则两个装置处于“通信”。
为了本文的目的,术语“基于”可以被解读为“至少部分基于”。
为了本文的目的,在没有附加的上下文的情况下,诸如“第一”对象、“第二”对象和“第三”对象的数值术语的使用可能不隐含对象的顺序,而是可能代替地用于识别目的来识别不同的对象。
为了本文的目的,术语对象的“集合”可以指代对象的一个或多个的“集合”。
上文的详细描述已经出于说明和描述的目的而被呈现。这并不旨在穷举或限制到所公开的精确形式。鉴于上述教导,许多修改和变化是可能的。选择所描述的实施例是为了最好地解释所提出的技术的原理及其实际应用,从而使得本领域的其他技术人员能够以各种实施例和适合于所预期的特定用途的各种修改来最好地利用它。范围旨在由所附的权利要求限定。
Claims (20)
1.一种操作非易失性储存系统的方法,包括:
对非易失性存储器进行突发编程;
确定在所述突发编程期间以及在完成所述突发编程之前发生程序故障;
将与所述程序故障相关联的数据编程到所述非易失性存储器中的备份位置;
在将与所述程序故障相关联的数据编程到所述备份位置之后,继续所述突发编程,所述突发编程包含将尚未经过编程过程的数据编程到所述备份位置;以及
在将尚未经过编程过程的数据编程到所述备份位置之后,将所述非易失性存储器中的已编程的数据移动到所述备份位置。
2.如权利要求1所述的方法,其中:
确定所述系统处于空闲,响应于确定所述系统处于空闲,当所述系统处于空闲时,进行将所述非易失性存储器中的已编程的数据移动到所述备份位置。
3.如权利要求1所述的方法,其中:
所述非易失性存储器系统包括多个存储器裸芯;
所述进行突发编程包括将数据编程到不同的存储器裸芯上的目标块的集合中的每个块的多个字线;
所述确定发生所述程序故障包括识别所述程序故障的故障存储器裸芯、故障块和故障字线;并且
所述备份位置是与所述故障块相同的故障存储器裸芯上的备份块。
4.如权利要求1所述的方法,其中:
所述进行突发编程包括对巨型块进行全序列编程。
5.如权利要求1所述的方法,其中所述将所述非易失性存储器中的已编程的数据移动到所述备份位置包括:
感测所述已编程的数据,所述已编程的数据包括错误;以及
将所感测到的具有所述错误的已编程的数据重新编程到所述备份位置。
6.一种非易失性存储器设备,包括:
布置在块中的多个存储器单元;
连接到所述存储器单元的多个字线;以及
与所述多个存储器单元和所述多个字线通信的控制电路,所述控制电路配置为尝试将数据编程到连接到第一块的第一字线的第一存储器单元,并且确定将所述数据编程到所述第一存储器单元失败,所述控制电路配置为,响应于确定将所述数据编程到所述第一存储器单元失败,将所述数据编程到连接到第二块的特定字线的第二存储器单元,所述控制电路配置为将尚未经过编程过程的数据编程到连接到所述第二块的附加字线的第三存储器单元,所述控制电路配置为,在所述将尚未经过编程过程的数据编程到所述第三存储器单元之后,将已编程的数据从所述第一块中的存储器单元移动到所述第二块中的存储器单元。
7.如权利要求6所述的非易失性存储器设备,其中:
所述控制电路配置为尝试将数据编程到连接到所述第一块的第一字线的第一存储器单元作为突发写入过程的部分,所述突发写入过程将数据编程到块的集合中的每个块的多个字线上的存储器单元;并且
所述控制电路配置为,在将已编程的数据从所述第一块中的存储器单元移动到所述第二块中的存储器单元之前,完成所述突发写入过程。
8.如权利要求6所述的非易失性存储器设备,其中:
所述控制电路配置为尝试将数据编程到连接到所述第一块的第一字线的第一存储器单元作为突发写入过程的部分,所述突发写入过程将数据编程到形成巨型块的块的集合;并且
所述突发写入过程对于所述巨型块的多个块是成功的,并且对于所述第一块是失败的。
9.如权利要求6所述的非易失性存储器设备,其中:
所述控制电路配置为维持指示所述第一块的字线与所述第二块的字线之间的相关性的链接表,在所述链接表中,所述第一块的字线的顺序不同于所述第二块的字线的顺序。
10.如权利要求6所述的非易失性存储器设备,其中:
所述控制电路配置为维持指示所述第一块的字线与所述第二块的字线之间的相关性的链接表,所述链接表指示来自所述第一块中的存储器单元的已编程的数据在所述第二块中被储存的位置。
11.如权利要求6所述的非易失性存储器设备,其中:
所述控制电路配置为,在尝试将数据编程到连接到所述第一块的第一字线的第一存储器单元之前,维持备份块的指示,所述第二块为所述备份块中的一个。
12.如权利要求6所述的非易失性存储器设备,其中:
所述第二块的特定字线为所述第二块的待编程的第一字线,并且为边缘字线;
所述第一块的第一字线不为边缘字线;并且
所述控制电路配置为将储存在所述第一块的边缘字线上的已编程的数据移动到所述第二块的不为边缘字线的字线。
13.如权利要求6所述的非易失性存储器设备,其中:
所述控制电路配置为确定所述非易失性存储器设备是否处于空闲;并且
所述控制电路配置为,响应于确定存储器裸芯处于空闲,将所述已编程的数据移动到所述第二块。
14.如权利要求6所述的非易失性存储器设备,其中:
所述第一块在存储器裸芯上;
所述控制电路配置为确定存储器裸芯是否处于空闲;并且
所述控制电路配置为,响应于确定所述存储器裸芯处于空闲,将所述已编程的数据移动到所述第二块。
15.如权利要求6所述的非易失性存储器设备,其中:
所述控制电路配置为,通过确定连接到邻近字线的存储器单元中的邻近数据是否被破坏,并且如果所述邻近数据被破坏,则从来自所述第一块的多个字线的数据的XOR总和恢复所述邻近数据,来将已编程的数据从所述第一块中的存储器单元移动到所述第二块中的存储器单元。
16.如权利要求6所述的非易失性存储器设备,其中:
所述控制电路配置为,通过从所述第一块读取已编程的数据,并且即使所述已编程的数据存在ECC解码错误,也将所述已编程的数据编程到所述第二块,来将已编程的数据从所述第一块中的存储器单元移动到所述第二块中的存储器单元。
17.如权利要求6所述的非易失性存储器设备,其中:
所述多个存储器单元布置在多个裸芯上;
所述控制电路配置为尝试将数据编程到连接到所述第一块的第一字线的第一存储器单元作为突发写入过程的部分,所述突发写入过程将数据编程到所述多个裸芯中的每个裸芯的多个字线上的存储器单元;并且
所述第一块和所述第二块在共同的裸芯上。
18.如权利要求6所述的非易失性存储器设备,其中:
所述多个存储器单元布置为三维单片存储器阵列。
19.一种设备,包括:
适于连接到多个存储器裸芯的存储器接口;以及
用于经由所述存储器接口跨越多个存储器裸芯上的多个块中的每个块的多个字线来编程数据的构件,使得响应于故障块中的程序故障,使用所述故障块的备份块来编程由于所述程序故障而未成功编程的数据以及编程尚未经过编程过程的数据来继续数据的所述编程,并且在将所述尚未经过编程过程的数据编程到所述备份块之后,将所述故障块中的已编程的数据移动到所述备份块。
20.如权利要求19所述的设备,其中:
所述用于编程的构件确定所述设备处于空闲,并且当所述设备处于空闲时,将所述故障块中的已编程的数据移动到所述备份块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/456,237 | 2017-03-10 | ||
US15/456,237 US10019332B1 (en) | 2017-03-10 | 2017-03-10 | Non-volatile memory with program failure recovery |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108573733A CN108573733A (zh) | 2018-09-25 |
CN108573733B true CN108573733B (zh) | 2021-10-15 |
Family
ID=62750315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810149234.0A Active CN108573733B (zh) | 2017-03-10 | 2018-02-13 | 具有编程失败恢复的非易失性存储器 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10019332B1 (zh) |
CN (1) | CN108573733B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10901866B2 (en) * | 2017-08-01 | 2021-01-26 | Seagate Technology, Llc | Failure detection and data recovery in a storage system |
US10776277B2 (en) * | 2017-10-31 | 2020-09-15 | Sandisk Technologies Llc | Partial memory die with inter-plane re-mapping |
KR102456175B1 (ko) * | 2018-04-30 | 2022-10-19 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
CN111161781A (zh) | 2018-11-07 | 2020-05-15 | 爱思开海力士有限公司 | 用于处理编程错误的存储器系统及其方法 |
US10726936B2 (en) * | 2018-12-20 | 2020-07-28 | Micron Technology, Inc. | Bad block management for memory sub-systems |
US10665313B1 (en) * | 2019-05-02 | 2020-05-26 | Sandisk Technologies Llc | Detecting short circuit between word line and source line in memory device and recovery method |
CN114730353A (zh) * | 2019-12-09 | 2022-07-08 | 美商新思科技有限公司 | 使用具有金属线的单元进行电路设计 |
CN111625388B (zh) * | 2020-05-28 | 2023-07-04 | 深圳忆联信息系统有限公司 | Ssd前端错误处理方法、装置、计算机设备和存储介质 |
US10991444B1 (en) * | 2020-05-28 | 2021-04-27 | Western Digital Technologies, Inc. | Tiered read reference calibration |
US11488682B2 (en) | 2020-06-24 | 2022-11-01 | Sandisk Technologies Llc | Calibration for integrated memory assembly |
CN116802735A (zh) * | 2021-01-20 | 2023-09-22 | 华为技术有限公司 | 一种数据处理方法及相关装置 |
US11347609B1 (en) | 2021-04-29 | 2022-05-31 | International Business Machines Corporation | Failed media channel recovery throttling |
US20240071533A1 (en) * | 2022-08-31 | 2024-02-29 | Sandisk Technologies Llc | Adaptive gidl voltage for erasing non-volatile memory |
CN115954037B (zh) * | 2023-03-10 | 2023-06-09 | 上海泰矽微电子有限公司 | 提高efuse芯片良率的方法、装置和设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7552272B2 (en) * | 2002-10-28 | 2009-06-23 | Sandisk Corporation | Automated wear leveling in non-volatile storage systems |
US7561466B2 (en) * | 2005-08-30 | 2009-07-14 | Micron Technology, Inc. | Non-volatile memory copy back |
CN103839591A (zh) * | 2014-03-05 | 2014-06-04 | 福州瑞芯微电子有限公司 | 存储器自动检错和容错电路及控制方法 |
CN103843069A (zh) * | 2011-08-31 | 2014-06-04 | 美光科技公司 | 存储器刷新方法及设备 |
CN105097028A (zh) * | 2014-05-13 | 2015-11-25 | 三星电子株式会社 | 包括非易失性存储器件的存储装置和该器件的读取方法 |
CN105308685A (zh) * | 2013-01-25 | 2016-02-03 | 桑迪士克技术有限公司 | 在非易失性多级多个存储器管芯的编程中恢复附近数据 |
CN105427887A (zh) * | 2014-09-15 | 2016-03-23 | Hgst荷兰有限公司 | 用于三维垂直快闪存储器的编码方案 |
CN105761754A (zh) * | 2014-12-19 | 2016-07-13 | 群联电子股份有限公司 | 存储单元编程方法、存储器控制电路单元与存储装置 |
CN105825890A (zh) * | 2015-01-09 | 2016-08-03 | 华邦电子股份有限公司 | 存储器编程方法以及存储器装置 |
CN106205702A (zh) * | 2015-05-26 | 2016-12-07 | 桑迪士克科技有限责任公司 | 对编程故障自动响应的非易失性存储装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7136986B2 (en) * | 2002-11-29 | 2006-11-14 | Ramos Technology Co., Ltd. | Apparatus and method for controlling flash memories |
US7203874B2 (en) | 2003-05-08 | 2007-04-10 | Micron Technology, Inc. | Error detection, documentation, and correction in a flash memory device |
JP2006309829A (ja) | 2005-04-27 | 2006-11-09 | Nec Electronics Corp | 不揮発性半導体記憶装置及びその制御方法 |
US7631162B2 (en) | 2005-10-27 | 2009-12-08 | Sandisck Corporation | Non-volatile memory with adaptive handling of data writes |
WO2008117381A1 (ja) * | 2007-03-23 | 2008-10-02 | Advantest Corporation | 試験装置及び電子デバイス |
US8397024B2 (en) | 2008-10-25 | 2013-03-12 | Sandisk 3D Llc | Page buffer program command and methods to reprogram pages without re-inputting data to a memory device |
US8259498B2 (en) | 2008-12-08 | 2012-09-04 | Infinite Memory Ltd. | Continuous address space in non-volatile-memories (NVM) using efficient management methods for array deficiencies |
KR102012310B1 (ko) | 2012-08-07 | 2019-10-21 | 삼성전자 주식회사 | 데이터 저장 장치의 동작 방법, 데이터 저장 장치 및 이를 이용한 시스템 |
US8788880B1 (en) | 2012-08-22 | 2014-07-22 | Western Digital Technologies, Inc. | Efficient retry mechanism for solid-state memory failures |
US9021339B2 (en) * | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9026757B2 (en) * | 2013-01-25 | 2015-05-05 | Sandisk Technologies Inc. | Non-volatile memory programming data preservation |
US9996299B2 (en) * | 2015-06-25 | 2018-06-12 | Western Digital Technologies, Inc | Memory health monitoring |
-
2017
- 2017-03-10 US US15/456,237 patent/US10019332B1/en active Active
-
2018
- 2018-02-13 CN CN201810149234.0A patent/CN108573733B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7552272B2 (en) * | 2002-10-28 | 2009-06-23 | Sandisk Corporation | Automated wear leveling in non-volatile storage systems |
US7561466B2 (en) * | 2005-08-30 | 2009-07-14 | Micron Technology, Inc. | Non-volatile memory copy back |
CN103843069A (zh) * | 2011-08-31 | 2014-06-04 | 美光科技公司 | 存储器刷新方法及设备 |
CN105308685A (zh) * | 2013-01-25 | 2016-02-03 | 桑迪士克技术有限公司 | 在非易失性多级多个存储器管芯的编程中恢复附近数据 |
CN103839591A (zh) * | 2014-03-05 | 2014-06-04 | 福州瑞芯微电子有限公司 | 存储器自动检错和容错电路及控制方法 |
CN105097028A (zh) * | 2014-05-13 | 2015-11-25 | 三星电子株式会社 | 包括非易失性存储器件的存储装置和该器件的读取方法 |
CN105427887A (zh) * | 2014-09-15 | 2016-03-23 | Hgst荷兰有限公司 | 用于三维垂直快闪存储器的编码方案 |
CN105761754A (zh) * | 2014-12-19 | 2016-07-13 | 群联电子股份有限公司 | 存储单元编程方法、存储器控制电路单元与存储装置 |
CN105825890A (zh) * | 2015-01-09 | 2016-08-03 | 华邦电子股份有限公司 | 存储器编程方法以及存储器装置 |
CN106205702A (zh) * | 2015-05-26 | 2016-12-07 | 桑迪士克科技有限责任公司 | 对编程故障自动响应的非易失性存储装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108573733A (zh) | 2018-09-25 |
US10019332B1 (en) | 2018-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108573733B (zh) | 具有编程失败恢复的非易失性存储器 | |
CN109119120B (zh) | 非易失性存储器子区块擦除干扰管理方案 | |
CN109427396B (zh) | 在非易失性存储器中确定快速编程字线 | |
CN107958677B (zh) | 具有智能温度感测和局部限制的非易失性存储器 | |
JP6571295B2 (ja) | プログラム性能の改良のためのプログラム検証中の注入型擾乱の制御がカスタマイズされる不揮発性メモリ | |
EP3619710B1 (en) | Electric field to reduce select gate threshold voltage shift | |
US9997258B2 (en) | Using non-volatile memory bad blocks | |
US10452471B2 (en) | Non-volatile memory with dynamic write abort detection and recovery | |
US9852803B2 (en) | Dummy word line control scheme for non-volatile memory | |
US10026488B2 (en) | Non-volatile memory with read disturb detection for open blocks | |
CN111292792B (zh) | 3d存储器中的晶体管阈值电压维持 | |
US10204689B1 (en) | Non-volatile memory with methods to reduce creep-up field between dummy control gate and select gate | |
US9570160B1 (en) | Non-volatile storage system with defect detetction and early programming termination | |
US9672940B1 (en) | Non-volatile memory with fast read process | |
US10068656B2 (en) | Non-volatile memory with multi-pass programming | |
US9910730B2 (en) | System for handling erratic word lines for non-volatile memory | |
US10248499B2 (en) | Non-volatile storage system using two pass programming with bit error control | |
US9711227B1 (en) | Non-volatile memory with in field failure prediction using leakage detection | |
EP3613047B1 (en) | Non-volatile memory with reduced program speed variation | |
US9910749B2 (en) | Non-volatile memory with dynamic repurpose of word line | |
US11862260B2 (en) | Audit techniques for read disturb detection in an open memory block |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |