CN109726142B - 回收坏块的非易失性存储系统 - Google Patents

回收坏块的非易失性存储系统 Download PDF

Info

Publication number
CN109726142B
CN109726142B CN201811213602.XA CN201811213602A CN109726142B CN 109726142 B CN109726142 B CN 109726142B CN 201811213602 A CN201811213602 A CN 201811213602A CN 109726142 B CN109726142 B CN 109726142B
Authority
CN
China
Prior art keywords
block
memory
memory cells
data
particular group
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
Application number
CN201811213602.XA
Other languages
English (en)
Other versions
CN109726142A (zh
Inventor
V.A.杜贝科
S-H.宋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN109726142A publication Critical patent/CN109726142A/zh
Application granted granted Critical
Publication of CN109726142B publication Critical patent/CN109726142B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/88Masking faults in memories by using spares or by reconfiguring with partially good memories
    • G11C29/883Masking faults in memories by using spares or by reconfiguring with partially good memories using a single defective memory device with reduced capacity, e.g. half capacity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/88Masking faults in memories by using spares or by reconfiguring with partially good memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

本发明题为“回收坏块的非易失性存储系统”。本发明公开了一种非易失性存储系统,该非易失性存储系统被配置为回收坏块。一个实施方案包括确定非易失性存储器单元块为坏块,让所述块空闲某个时间段以允许所述块自动修复,验证所述自动修复是否成功,刷新所述块,验证所述刷新是否成功并且随后使用所述块来存储主机数据。

Description

回收坏块的非易失性存储系统
背景技术
半导体存储器被广泛应用于各种电子装置,诸如移动电话、数码相机、个人数字助理、医疗电子器件、移动计算装置、服务器、固态驱动器(“SSD”)、非移动计算装置以及其他装置。半导体存储器可包括非易失性存储器或易失性存储器。即使当非易失性存储器未连接至电源(例如,电池)时,非易失性存储器也允许存储和保留信息。
由于某些非易失性存储器经历许多程序和擦除循环,因此性能和可靠性会降低。在一些情况下,非易失性存储器单元的块可能失效,从而导致系统使块退役以免在将来使用。虽然使块退役以免在将来使用的确保持了装置可靠性,但是使坏块退役的确降低存储器容量。
附图说明
附图中相同编号的附图标记表示不同附图中的共同部件。
图1为示出存储系统的一个实施方案的框图。
图2为示出存储器封装的一个实施方案的框图。
图3是存储器管芯的一个实施方案的框图。
图4是存储器阵列的一个实施方案的框图。
图5是NAND串的剖面。
图6A是单体三维闪存的透视图,该单体三维闪存包括具有电荷捕集层的垂直NAND串。
图6B是垂直NAND串的一部分的剖面。
图7示出阈值电压分布。
图8是描述将数据值分配给数据状态的一个示例的表。
图9A是描述用于编程的过程的一个实施方案的流程图。
图9B是描述用于将数据编程到连接至公共字线的存储器单元的过程的一个实施方案的流程图。
图9C示出编程和验证操作期间的字线电压。
图10是描述用于从存储器单元读取数据的过程的一个实施方案的流程图。
图11是描述用于回收坏块的过程的一个实施方案的流程图。
图12是描述用于验证自动修复成功的过程的一个实施方案的流程图。
图12A是示出数据页的框图。
图13是描述用于验证自动修复成功的过程的一个实施方案的流程图。
图14是描述磨损均衡过程的一个实施方案的流程图。
图15示出分组到子集中的一组块。
图16是示出磨损均衡方案的多个阶段的时序图。
具体实施方式
本发明提出了用于回收坏块的技术。当一些非易失性存储器经历许多程序和擦除循环时,在存储器单元的隧道电介质(或其他区域)中可能累积不必要的电荷。这种不必要的电荷累积可导致存储器的好块变为坏块。已发现,允许坏块长期(例如,1至2个月)保持空闲导致不必要的电荷累积中的一些消散,由此使得存储器的坏块变为好块。因此,提出响应于确定存储器的特定块是坏块,存储器的特定块将被保持空闲一段时间,由此使得在空闲时间段内不对特定块执行编程、读取或擦除;然而,在该段时间内对其他块或存储器执行编程。在空闲时间段结束之后,系统测试存储器的特定块是坏块还是好块。如果存储器的特定块现在再次成为好块,那么存储器的特定块可用于以与其他好块所用的相同方式存储主机数据。
图1是实现所提出的用于回收坏块的技术的存储系统100的一个实施方案的框图。在一个实施方案中,存储系统100为SSD。存储系统100还可以是存储卡、USB驱动器或其他类型的存储系统。所提出的用于回收坏块的技术不限于任何一种类型的存储系统。存储系统100连接至主机102,该主机可以是计算机、服务器、电子装置(例如,智能电话、平板电脑或其他移动装置)、家用电器或使用存储器并具有数据处理能力的其他设备。在一些实施方案中,主机102与存储系统100分开、但连接至该存储系统。在其他实施方案中,存储系统100嵌入主机102内。
图1中示出的存储系统100的部件是电路。存储系统100包括连接至一个或多个存储器封装130和本地高速易失性存储器140(例如,DRAM)的控制器120。存储器封装130包括多个存储器管芯,每个存储器管芯包括多个非易失性存储器单元。下文中相对于图2至图6B提供关于存储器封装130的结构的更多信息。控制器120使用本地高速易失性存储器140来执行某些功能。例如,本地高速易失性存储器140存储L2P表(L2P)、坏块池(BBP)、好块池(GBP)和刷新队列(RQ),所有这些将在下文中更详细地描述。
控制器120包括主机接口152,该主机接口连接至主机102并与该主机通信。在一个实施方案中,主机接口152提供PCIe接口。还可以使用其他接口,诸如SCSI、SATA等。主机接口152还连接至片载网络(NOC)154。NOC是集成电路上的通信子系统。NOC能够跨越同步和异步时钟域或使用非时钟异步逻辑。NOC技术将联网理论和方法应用于片载通信,并且与传统总线和交叉开关互连相比带来了显著的改善。与其他设计相比,NOC提高了片载系统(SoC)的可扩展性和复杂SoC的功效。NOC的导线和链路由许多信号共享。由于NOC中的所有链路可以在不同的数据分组上同时操作,因此实现了高水平的并行性。因此,随着集成子系统的复杂性不断增长,与先前的通信架构(例如,专用的点对点信号线、共享总线或带有桥接的分段总线)相比,NOC提供增强的性能(诸如通过量)和可扩展性。连接至NOC 154并与其通信的是处理器156、ECC引擎158、存储器接口160和DRAM控制器164。DRAM控制器164用于操作本地高速易失性存储器140(例如,DRAM)并与之通信。在其他实施方案中,本地高速易失性存储器140可以是SRAM或其他类型的易失性存储器。
ECC引擎158执行纠错服务。例如,ECC引擎158根据实现的ECC技术执行数据编码和解码。下文中提供了关于纠错的更多细节。在一个实施方案中,ECC引擎158是由软件编程的电路。例如,ECC引擎158可以是可以编程的处理器。在其他实施方案中,ECC引擎158是没有任何软件的定制且专用的硬件电路。在另一实施方案中,ECC引擎158的功能由处理器156实现。
处理器156执行各种控制器的存储操作。例如,存储器模块(MM)是在处理器156上运行的过程,用于执行编程、擦除、读取以及存储器管理过程。在一个实施方案中,处理器156由固件编程。在其他实施方案中,处理器156是没有任何软件的定制且专用的硬件电路。如下文中将更详细讨论的,处理器156(单独或与ECC引擎158一起)可确定非易失性存储器单元的块是坏块,允许该块在不施加额外热量的情况下被动地自动修复,并且在自动修复之后使用该块来存储主机数据。在自动修复期间,该块将不用于存储主机数据。
处理器156还实现转换模块(TM),作为软件/固件过程或作为专用硬件电路。在许多系统中,使用与一个或多个存储器管芯相关联的物理地址,在内部向存储系统对非易失性存储器进行寻址。然而,主机系统将使用逻辑地址来对各种存储器位置进行寻址。这使得主机能够将数据分配给连续的逻辑地址,而存储系统可以随意地在一个或多个存储器管芯的位置当中自由地存储数据。为了启用该系统,控制器(例如,转换模块TM)执行由主机使用的逻辑地址与由存储器管芯使用的物理地址之间的地址转换。一个示例性具体实施是保持标识逻辑地址和物理地址之间的当前转换的表(即,上述L2P表)。L2P表中的条目可包括逻辑地址和对应的物理地址的标识。虽然逻辑地址对物理地址表(或L2P表)包括词语“表”,但它们不一定是字面上的表。相反,逻辑地址对物理地址表(或L2P表)可以是任何类型的数据结构。在一些示例中,存储系统的存储空间如此之大,以至于本地存储器140不能保持所有L2P表。在这种情况下,L2P表的整个集存储在存储器封装130中,并且L2P表的子集被高速缓存(L2P高速缓存)在本地存储器140中。
存储器接口160与多个存储器封装130通信。在一个实施方案中,存储器接口提供切换模式接口。在一些示例性具体实施中,存储器接口160(或控制器120的另一部分)实现调度器和缓冲器,用于向一个或多个存储器管芯发送数据和从一个或多个存储器管芯接收数据。
图2是存储器封装200的一个实施方案的框图,该存储器封装是包括在图1的存储器封装130中的存储器封装的示例性具体实施。图2示出了连接至存储器总线(数据线和芯片启用线)208的多个存储器管芯206。存储器总线208连接至控制器接口210,该控制器接口是用于与控制器120的存储器接口160对接的电路。在一个实施方案中,控制器接口是用于与存储器接口160的切换模式接口通信的切换模式接口。在一些实施方案中,存储器封装可包括连接至存储器总线208的小型控制器。在一个实施方案中,每个存储器封装包括八个或十六个存储器管芯;然而,还可以实现其他数量的存储器管芯。本文所述的技术不限于任何特定数量的存储器管芯。
图3是存储器管芯206的一个实施方案的功能框图。图3中示出的部件是电路。存储器管芯206包括存储器单元的三维存储器结构326(诸如,存储器单元的3D阵列)、控制电路310和读取/写入电路328。存储器结构326可经由行解码器324通过字线寻址,以及可经由列解码器332通过位线寻址。读取/写入电路328包括包含SB1、SB2...SBp(感测电路)的多个感测块350,并且允许并行读取或编程一页存储器单元。命令和数据经由线318传输至存储器管芯300或从该存储器管芯传输。在一个实施方案中,存储器管芯300包括连接至线318的输入和/或输出(I/O)引脚集。
存储器结构326可包括存储器单元的一个或多个阵列,包括非易失性存储器单元的单体三维阵列,其中多个存储器层级形成在单个基板(诸如晶片)上方(而不是在其中),没有中间基板。存储器结构可包括在存储器单元阵列的一个或多个物理层级中单体地形成的任何类型的非易失性存储器,该存储器单元具有设置在硅基板上方的有源区。
控制电路310与读取/写入电路328协作以在存储器结构326上执行存储操作(例如,擦除、编程、读取等),并且包括状态机312、片载地址解码器314、功率控制模块316和温度检测电路318。状态机312提供存储操作的管芯级控制。温度检测电路318被配置为检测在存储器结构326处的温度,并且可以是本领域中已知的任何合适的温度检测电路。在一个实施方案中,状态机312可由软件编程。在其他实施方案中,状态机312不使用软件并且完全在硬件(例如,电路)中实现。在一个实施方案中,控制电路310包括寄存器、ROM熔丝和其他存储装置,用于存储默认值诸如基准电压和其他参数。片载地址解码器314提供由主机或控制器使用的地址与由解码器324和332使用的硬件地址之间的地址接口。功率控制模块316控制在存储操作期间提供给字线和位线的功率和电压。功率控制模块316可包括用于产生电压的电荷泵。感测块包括位线驱动器。需注意,控制电路319、状态机312或控制器120中的任何一者或它们的组合可被认为是用于执行下文所讨论的方法的一个或多个控制电路。
存储器结构326中的多个存储器单元可被配置为使得它们串联连接或使得每个元件可单独访问。通过非限制性示例的方式,NAND配置(NAND闪存)中的闪存装置通常包含串联连接的存储器单元。NAND串是串联连接的存储器单元和选择栅晶体管集的示例,该NAND串可用于实现作为三维存储器结构的存储器结构326。NAND闪存阵列可被配置为使得阵列由多个NAND串组成,其中NAND串由共享单个位线并作为组访问的多个存储器单元组成。另选地,存储器元件可被配置为使得每个元件可单独访问,例如NOR存储器阵列。NAND和NOR存储器配置是示例性的,并且可以以其他方式配置存储器单元。
布置三维存储器阵列,使得存储器单元占据多个平面或多个存储装置层级,从而形成三维结构(即,在x、y和z方向上,其中z方向基本上垂直于基板的主表面,并且x和y方向基本上平行于基板的主表面)。作为非限制性示例,三维存储器结构可以垂直布置为多个二维存储装置层级的堆叠。作为另一个非限制性示例,三维存储器阵列可被布置为多个垂直列(例如,基本上垂直于基板的主表面,即在y方向上延伸的列),每列具有多个存储器单元。这些垂直列可以以二维配置布置,例如在x-y平面中,从而导致存储器单元的三维布置方式,其中存储器单元在多个垂直堆叠的存储器平面上。三维存储器元件的其他配置也可以构成三维存储器阵列。作为非限制性示例,在三维NAND存储器阵列中,存储器元件可以耦接在一起以形成具有电荷捕集材料的垂直NAND串,该垂直NAND串遍历跨过多个水平存储装置层级。可用于实现存储器结构126的三维NAND存储器阵列的一个示例可见于美国专利9,343,156中,该专利的全文以引用方式并入本文。
尽管一个示例包括三维存储器结构326,该三维存储器结构包括具有电荷捕集材料的垂直NAND串,但是其他(2D和3D)存储器结构也可以与本文所述技术一起使用。例如,还可以使用浮栅存储器(例如,NAND型和NOR型闪存)、ReRAM存储器、磁阻存储器(例如,MRAM)、相变存储器(例如,PCM)和导电桥存储器元件。本领域的普通技术人员将认识到,本文所述技术不限于单个具体存储器结构,而是涵盖如本文所述并且如本领域的普通技术人员所理解的技术的精神和范围内的许多相关存储器结构。
图4示出存储器结构326的一个示例。在一个实施方案中,存储器结构326是被划分为多个平面的存储器单元阵列。在图4的示例中,存储器结构326被划分为两个平面:平面0和平面1。在其他实施方案中,可使用多于或少于两个的平面。在一些实施方案中,每个平面被划分为大量的块(例如,块0至1023或其他量)。每个块包括许多存储器单元。在一个实施方案中,块为擦除单位,因此有时被称为擦除块。也就是说,每个块包含被一起擦除的最小数量的存储器单元。还可以使用其他擦除单位。
在一个实施方案中,块包含经由位线(例如,位线BL0至BL69,623)和字线(WL0、WL1、WL2、WL3)访问的NAND串集。图4示出了串联连接以形成NAND串的四个存储器单元。尽管示出在每个NAND串中包括四个存储器单元,但是可以使用多于或少于四个存储器单元(例如,16、32、64、128、256或者在NAND串上可具有其他数量的存储器单元)。NAND串的一个端子经由漏极选择栅连接至对应的位线,并且另一个端子经由源极选择栅连接至源极线。尽管图4示出了69624个位线,但是也可以使用不同数量的位线。另外,如上所述,块可以实现除NAND闪存之外的非易失性存储技术。
每个块通常被划分为许多页。在一个实施方案中,页为编程单位。还可以使用其他编程单位。一页或多页数据通常存储在一行存储器单元中。例如,一页或多页数据可以存储在连接至公共字线的存储器单元中。页的一个示例可以是存储在连接至公共字线和公共块的存储器单元中的所有数据。页的另一示例是连接至公共字线并且在公共块中的存储器单元的一部分(例如,1/4、1/2、1/3)或者是存储在那些存储器单元中的位的一部分。页包括主机数据和开销数据(也称为系统数据)。开销数据通常包括已从扇区的主机数据计算的标头信息和纠错码(ECC)。当数据被编程到阵列中时,控制器(或其他部件)计算ECC,并且当从阵列读取数据时也对其进行检查。
在一个实施方案中,存储器结构326是闪存单元的二维存储器阵列,其中闪存单元各自包括浮栅并且布置在NAND串中(如图4所示)。图5是在硅基板402上实现的NAND串400的剖视图。NAND串400包括堆叠404、406、408和410,每个堆叠实现非易失性存储器单元。堆叠404、406、408和410中的每一者包括控制栅CG(例如,钨)、浮栅FG(例如,多晶硅)、在相应的控制栅和浮栅之间的栅极间电介质区域IGD(例如,SiO2),以及在相应的浮栅FG和基板402之间的隧道电介质TD(例如,SiO2)。在一个实施方案中,控制栅CG形成字线。基板402中的N+掺杂区域410、411、424、426、428、420和432在相邻堆叠404、406、408和410之间共享,以形成存储器单元的晶体管。对于每个存储器单元,N+掺杂区域中的一个为漏极,而另一个N+掺杂区域为源极。NAND串400的一端经由漏极选择栅414连接至对应的位线,并且NAND串400的另一端经由源极选择栅412连接至源极线。漏极选择栅414包括控制栅CG和在其控制栅CG和基板402之间的电介质区域DI。源极选择栅412包括控制栅CG和在其控制栅CG和基板402之间的电介质区域DI。尽管图4的NAND串包括串联连接以形成NAND串的四个存储器单元,但是可以使用多于或少于四个的存储器单元来形成NAND串(例如,16、32、64、128、256或另一个数字或存储器单元可以连接而形成NAND串)。
当对图5的闪存单元进行编程时,程序电压施加于控制栅并且位线接地。来自基板402的电子(例如,基板402中的p阱)经由隧道电介质TD注入浮栅FG中。当电子在浮栅中累积时,浮栅变为带负电,并且存储器单元的阈值电压升高。
通过将基板402(例如,基板中的p阱)电压升高至擦除电压(例如20伏)并使选定块的字线(即控制栅CG)接地来擦除存储器单元。源极线和位线是浮动的。在一个实施方案中,在整个块上执行擦除(使该块成为擦除单位)。电子经由隧道电介质从浮栅FG转移到基板402(例如,基板中的p阱),并且阈值电压降低。
在另一个实施方案中,存储器结构326包括单体三维存储器结构,其中多个存储器层级形成在单个基板(诸如晶片)上方(而不是在其中),没有中间基板。图6A是这种存储器结构326的一部分的透视图,示出存储器单元的一个块的一部分。所示出的结构包括定位在交替的电介质层和导电层的堆叠上方的位线BL集。出于示例的目的,电介质层之一被标记为D,并且导电层之一(也被称为字线层)被标记为W。交替的电介质层和导电层的数量可基于具体实施要求而有差别。一个实施方案集包括的交替的电介质层和导电层为介于108至216个之间,例如,96个数据字线层、8个选择层、4个虚设字线层和108个电介质层。还可以使用多于或少于108至216个层。交替的电介质层和导电层通过局部互连件LI被划分为四个子块。图6A仅示出了两个子块和两个局部互连件LI。在交替的电介质层和字线层下面是源极线层SL。存储器孔形成在交替的电介质层和导电层的堆叠中,并且用垂直列填充。例如,垂直列之一被标记为VC。需注意,在图6A中,电介质层被示出为透视层,使得读者可以看到定位在交替的电介质层和导电层的堆叠中的存储器孔。在一个实施方案中,通过用包括电荷捕集层的材料填充存储器孔来形成NAND串,以产生垂直列的存储器单元。每个存储器单元可以存储一个或多个数据位。
图6B示出图6A中示出的存储器阵列的垂直列之一的一部分的剖视图。在一个实施方案中,垂直列呈圆形;然而,在其他实施方案中,可使用其他形状。在一个实施方案中,垂直列432包括由电介质诸如SiO2制成的内芯层470。还可以使用其他材料。围绕内芯470的是多晶硅通道471。还可以使用除多晶硅之外的材料。需注意,连接至位线的是通道471。围绕通道471的是隧道电介质472。在一个实施方案中,隧道电介质472具有ONO结构。围绕隧道电介质472的是电荷捕集层473,诸如(例如)氮化硅。还可以使用其他存储器材料和结构。本文所述技术不限于任何特定的材料或结构。
图6B示出电介质层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)与存储的电荷量成比例地增加。在一个实施方案中,通过电子的福勒-诺德海姆隧道而进入电荷捕集层中来实现编程。在擦除操作期间,返回通道或空穴的电子被注入电荷捕集层中以与电子重新结合。在一个实施方案中,使用物理机制诸如栅极诱导漏电流(GIDL)将空穴注入电荷捕集层中来实现擦除。
可以对上面讨论的存储器进行擦除、编程和读取。在成功编程过程结束时(通过验证),存储器单元的阈值电压应当在所编程的存储器单元的阈值电压的一个或多个分布内,或者酌情在已擦除存储器单元的阈值电压的分布内。图7示出了当每个存储器单元存储三位数据时存储器单元阵列的示例性阈值电压分布。然而,其他实施方案可以使用每个存储器单元的其他数据容量(例如,每个存储器单元的诸如一位、两位、四位或五位数据)。图7示出了八个阈值电压分布,对应于八个数据状态。第一阈值电压分布(数据状态)S0表示被擦除的存储器单元。其他七个阈值电压分布(数据状态)S1至S7表示所编程的存储器单元,因此也被称为已编程状态。每个阈值电压分布(数据状态)对应于该数据位集的预定值。编程到存储器单元中的数据与单元的阈值电压电平之间的特定关系取决于针对单元采用的数据编码方案。在一个实施方案中,使用格雷码分配将数据值分配给阈值电压范围,使得如果存储器的阈值电压错误地偏移到其相邻物理状态,则仅将影响一个位。
图7还示出了七个读取基准电压Vr1、Vr2、Vr3、Vr4、Vr5、Vr6和Vr7,用于从存储器单元读取数据。通过测试(例如,执行感测操作)给定存储器单元的阈值电压是高于还是低于七个读取基准电压,系统可以确定存储器单元所处的数据状态(即S0、S1、S2、S3…)。
图7还示出了七个验证基准电压Vv1、Vv2、Vv3、Vv4、Vv5、Vv6和Vv7。当将存储器单元编程到数据状态S1时,系统将测试那些存储器单元是否具有大于或等于Vv1的阈值电压。当将存储器单元编程到数据状态S2时,系统将测试存储器单元是否具有大于或等于Vv2的阈值电压(该电压应当不大于Vr3)。当将存储器单元编程到数据状态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,诸如此类。图7的箭头表示完整序列编程。除了完整序列编程之外,本文所述的技术还可以用于其他类型的编程(包括但不限于多级/阶段编程)。在一些实施方案中,数据状态S1至S7可以重叠,其中控制器120依靠ECC来识别正在存储的校正数据。
图8是描述将数据值分配给数据状态的一个示例的表。在图8的表中,S0=111。S1=110、S2=100、S3=000、S4=010、S5=011、S6=001并且S7=101。还可以使用其他数据编码。本文所公开的技术不需要特定的数据编码。在一个实施方案中,当块经历擦除操作时,所有存储器单元被移动到数据状态S0,即已擦除状态。在图8的实施方案中,当擦除存储器单元时(例如,处于数据状态S0),存储在存储器单元中的所有位都为1。
图9A是描述由控制器120执行的用于编程的过程的一个实施方案的流程图。在一些实施方案中,主机可执行控制器的功能,而不是具有专用控制器。可响应于从主机140接收编程命令或作为在控制器120的方向上的系统操作的一部分,诸如在碎片整理过程期间,执行图9A的过程。在步骤500中,控制器120(经由主机接口152)从主机102接收编程命令。在步骤502中,控制器120(经由主机接口152)从主机102接收逻辑地址。在步骤504中,控制器120(经由主机接口152)从主机102接收数据。在步骤504中接收的数据将被编程到在步骤502中接收的逻辑地址处的存储器封装130中。在步骤506中,控制器120使用转换管理器TM和L2P表将步骤502中接收的逻辑地址转换为存储器130中的物理地址(参见图1)。
在步骤508中,ECC引擎158对数据进行编码以添加ECC信息。例如,ECC引擎158用于创建代码字。在一个实施方案中,数据以页为单位进行编程。因此,例如,图9A的过程用于对一页数据进行编程。因为可能在编程或读取时可能发生错误,并且在存储数据时可能发生错误(例如,由于电子漂移、数据保持时间问题或其他现象),因此纠错与数据页的编程一起使用。许多纠错编码方案在本领域中是熟知的。这些常规纠错码(ECC)在包括闪存(和其他非易失性)存储器的大规模存储器中特别有用,因为这种编码方案可以提供对制造产量和装置可靠性的实质性影响,所以使具有少量不可编程或有缺陷的单元的装置可用。当然,在产量节省和提供额外存储器单元来存储代码位(即编码“速率”)的成本之间存在权衡。因此,某些ECC代码比其他ECC代码更适合闪存装置。一般来讲,用于闪存装置的ECC代码往往具有比数据通信应用中使用的代码(其可能具有低至1/2的编码速率)更高的编码速率(即,代码位与数据位之比更低)。通常与闪存存储结合使用的众所周知的ECC码的示例包括里德-所罗门码、其他BCH码、汉明码等。有时,与闪存存储结合使用的纠错码是“系统的”,因为最终代码字的数据部分未从正被编码的实际数据改变,其中代码或奇偶校验位附加到数据位以形成完整的代码字。在其他实施方案中,实际数据已改变。
给定纠错码的特定参数包括代码类型、从中导出代码字的实际数据块的大小以及编码后代码字的总体长度。例如,如果使用至少60个ECC或奇偶校验位,则应用于512字节(4096位)数据的典型BCH码可以校正多达四个错误位。里德-所罗门码是BCH码的子集,并且通常也用于纠错。例如,典型的里德-所罗门码可以使用约72个ECC位来校正512字节数据扇区中的多达四个错误。在闪存上下文中,纠错编码在制造产量以及闪存随时间的可靠性方面提供了实质性的改进。
在一些实施方案中,控制器接收待存储在存储器结构326中的主机数据,也被称为信息位。信息位由矩阵i=[1 0]表示(需注意,两个位仅用于示例的目的,并且许多实施方案具有长于两个位的码字)。实现纠错编码过程(例如上述或下述所提及过程中的任何者),其中将奇偶校验位添加到信息位以提供由矩阵或码字v=[1 0 1 0]表示的数据,从而指示两个奇偶校验位已被附加到数据位。可以使用其他技术以更复杂的方式将输入数据映射到输出数据。例如,可以使用低密度奇偶校验(LDPC)码,也被称为Gallager码。More detailsabout LDPC codes can be found in R.G.Gallager,“Low-density parity-checkcodes,”IRE Trans.Inform.Theory,vol.IT-8,pp.2128,Jan.1962;and D.MacKay,Information Theory,Inference and Learning Algorithms,Cambridge UniversityPress 2003,chapter 47.实际上,这种LDPC码通常应用于跨多个存储元件编码的多个页,但是它们不需要跨多个页应用。通过将一个或多个存储器单元编程到一个或多个编程状态,数据位可以被映射到逻辑页并存储在三维存储器结构126中,这对应于v。
在一种可能的具体实施中,使用迭代概率解码过程,该迭代概率解码过程实现对应于在控制器120中实现的编码的纠错解码。关于迭代概率解码的进一步细节可见于上述D.MacKay编写的教材。迭代概率解码尝试通过将初始概率量度分配给码字中的每一位来对码字进行解码。概率量度指示每一位的可靠性,即该位没有错误的可能性。在一种方法中,概率量度是从LLR表获得的对数似然比LLR。LLR值是可靠性量度,利用该可靠性量度,从存储元件读取的各种二进制位的值是已知的。
一个位的LLR由给出,其中P(v=0|Y)为给定状态读取为Y的条件下位为0的概率,并且P(v=1|Y)为给定状态读取为Y的条件下位为1的概率。因此,LLR>0表示位更有可能为0而不是1,而LLR<0表示位更有可能为1而不是0,以满足纠错码的一个或多个奇偶校验。此外,更大的量值指示更大的概率或可靠性。从而,LLR=63的位比LLR=5的位更有可能为0,LLR=-63的位比LLR=-5的位更有可能为1。LLR=0表示该位为0或为1的概率相等。
可以为代码字中的每个位位置提供LLR值。此外,LLR表可以对多个读取结果做出说明,使得当位值在不同代码字中一致时使用量值更大的LLR。
控制器120接收代码字Y1和LLR并在连续的迭代中迭代,其中它确定是否已满足错误编码过程的奇偶校验。如果所有奇偶校验都已满足,则解码过程已收敛,并且代码字已被纠错。如果一个或多个奇偶校验未满足,解码器将调节与奇偶校验不一致的位中的一个或多个的LLR,然后重新应用奇偶校验或该过程中的下一个校验以确定其是否已满足。例如,可以调节LLR的量值和/或极性。如果关注的奇偶校验仍未满足,则可以在另一个迭代中再次调节LLR。调节LLR可以导致在一些但不是所有情况下翻转一个位(例如,从0到1或从1到0)。在一个实施方案中,一旦关注的奇偶校验得到满足,就将另一个奇偶校验应用于该代码字。在其他情况下,该过程移至下一个奇偶校验,从而在晚些时候循环回到未通过的校验。该过程继续尝试满足所有奇偶校验。因此,完成Y1的解码过程以获得包括奇偶位v和解码信息位i的解码信息。
回顾图9A,在步骤510中,控制器120将指令发送到一个或多个存储器管芯206以对数据进行编程。在步骤512中,控制器120向一个或多个存储器管芯206发送一个或多个物理地址。该一个或多个地址指示在何处对数据进行编程。在步骤514中,控制器120将有待编程的数据发送到一个或多个存储器管芯206。例如,传输作为ECC过程的结果的代码字。在步骤516中,控制器120从一个或多个存储器管芯206接收编程的结果。示例性结果包括数据被成功编程的指示、编程操作失败的指示以及数据被编程但处于不同的位置的指示或其他结果。在步骤518中,响应于在步骤516中接收到的结果,控制器120将结果报告给主机102(经由主机接口152)。
在图9A的过程的一些实施方案中,如果数据是被编程到目标块的第数据集,则在指示存储器管芯206在步骤510中编程之前,控制器120将指示存储器管芯擦除该块。擦除块然后将数据编程到该块的整个过程被称为程序和擦除循环。在一个示例中,在块上执行的每个擦除过程指示另一个程序和擦除循环。
图9B是描述编程过程的一个实施方案的流程图。图9B的过程由存储器管芯206响应于图9A的步骤(即响应于来自控制器120的指令、数据和地址)执行。在一个示例实施方案中,图9B的过程在状态机312的方向上的存储器管芯206上执行。图9B的过程可用于实现上述全序列编程。另选地,图9B的过程可用于实现多阶段编程过程的每个阶段。
通常,在程序操作期间施加到控制栅(经由选定字线)的程序电压被施加为一系列程序脉冲。编程脉冲之间是用以执行验证的验证脉冲集。在许多具体实施中,程序脉冲的量值随着每个连续的脉冲增加预定的步长大小。在图9B的步骤570中,将编程电压(Vpgm)初始化至起始量值(例如,约12至16V或另一个合适的电平),并且将由状态机312保持的程序计数器PC初始化为1。在步骤572中,将程序信号Vpgm的程序脉冲施加到选定字线(选定用于编程的字线)。在一个实施方案中,并行编程的存储器单元组全部连接到同一字线(选定字线)。未选定字线接收一个或多个升压电压(例如,约7至11伏)以执行本领域已知的升压方案。如果一个存储器单元应当被编程,则将对应的位线接地。另一方面,如果存储器单元应当保持在其当前阈值电压,则将对应的位线连接到Vdd以禁止编程。在步骤572中,将程序脉冲同时施加到连接到选定字线的所有存储器单元,使得连接到选定字线的所有存储器单元被同时编程。也就是说,它们同时或在重叠的时间被编程(两者均被认为是并发的)。这样,连接到选定字线的所有存储器单元将同时具有其阈值电压变化,除非它们已从编程锁闭。
在步骤574中,使用适当的验证基准电压集来执行一个或多个验证操作,从而验证适当的存储器单元。在一个实施方案中,通过测试选定用于编程的存储器单元的阈值电压是否已达到适当的验证基准电压(参见例如,图7的Vv1、Vv2、Vv3、Vv4、Vv5、Vv6和Vv7)来执行验证过程。已被验证为达到其目标的存储器单元从图9B的当前编程过程的进一步迭代被锁闭。
在步骤576中,确定所有存储器单元是否已达到其目标阈值电压(通过)。如果是,则编程过程完成并成功,因为所有选定的存储器单元都已被编程并验证到其目标状态。在步骤578中报告了“通过”状态。在步骤576中,如果确定不是所有存储器单元都已达到其目标阈值电压(未通过),则编程过程继续至步骤580。在步骤580中,系统对尚未达到其相应目标阈值电压分布的存储器单元的数量进行计数。即,系统对到目前为止未通过验证过程的存储器单元的数量进行计数。此计数可由状态机、控制器或其他逻辑完成。在一个具体实施中,感测块中的每个将存储其相应单元的状态(通过/未通过)。在一个实施方案中,存在一个总计数,其反映当前被编程的未通过最后验证步骤的存储器单元的总数。在另一个实施方案中,为每个数据状态保持单独的计数。
在步骤582中,确定来自步骤580的计数是否小于或等于预定限制。在一个实施方案中,预定限制为可在存储器单元页的读取过程期间由ECC校正的位数。如果未通过的存储器单元的数量小于或等于预定限制,则编程过程可停止并且在步骤578中报告“通过”状态。在这种情况下,对足够的存储器单元进行正确编程,由此使得可以在读取过程间使用ECC校正其余少数未被完全编程的存储器单元。在另一实施方案中,预定限制可以小于可在读取过程期间由ECC校正的位数以允许未来的误差。此外,当对页的少于所有的存储器单元进行编程或比较仅一个数据状态(或少于所有状态)的计数时,预定限制可以是在存储器单元页的读取过程期间可由ECC校正的位数的一部分(成比例或不成比例)。在一些实施方案中,该限制不是预定的。相反,它基于页的已计数的错误数量、已执行的程序和擦除循环的数量或其他标准而变化。
如果未通过的存储器单元的数量不小于预定限制,则在步骤584中继续进行编程过程,并且对照程序限值(PL)检查程序计数器PC。程序限值的示例包括12、20和30;然而,可以使用其他值。如果程序计数器PC不小于程序限值PL,则程序过程被视为失败,并且在步骤588中报告未通过(FAIL)状态。这是程序故障的一个示例。如果程序计数器PC小于程序限值PL,则该过程在步骤586中继续,期间程序计数器PC递增1并且程序电压Vpgm阶跃至下一个量值。例如,下一个脉冲将具有比上一个脉冲大步长大小(例如,0.1至0.5伏的步长大小)的量值。在步骤586之后,该过程循环回到步骤572,并且将另一个程序脉冲施加到选定字线,使得执行图9B的编程过程的另一个迭代(步骤572至586)。
通常,在验证操作(步骤574)和读取操作期间,选定字线连接到某个电压(参考信号的一个示例),为每个读取操作(例如,参见图7的读取基准电压Vr1、Vr2、Vr3、Vr4、Vr5、Vr6和Vr7)或验证操作(例如,参见图7的验证基准电压Vv1、Vv2、Vv3、Vv4、Vv5、Vv6和Vv7)指定该电压的电平,以便确定所关注的存储器单元的阈值电压是否已达到这样的电平。在施加字线电压之后,测量存储器单元的传导电流以确定存储器单元是否响应于施加到字线的电压而接通(传导了电流)。如果测得该传导电流大于某个值,则假定该存储器单元接通并且施加到该字线的电压大于存储器单元的阈值电压。如果传导电流未被测得大于所述某个值,则假定该存储器单元未接通,并且施加到该字线的电压不大于存储器单元的阈值电压。在读取或验证过程期间,未选定存储器单元在其控制栅处设置有一个或多个读取通过电压,使得这些存储器单元将作为通过栅极来操作(例如,传导电流,不论它们是否已编程或已擦除)。
在读取或验证操作期间,有许多方式测量存储器单元的传导电流。在一个示例中,存储器单元的传导电流通过其对感测放大器中的专用电容器的放电或充电速率来测量。在另一个示例中,选定存储器单元的传导电流允许(或未能允许)包括该存储器单元的NAND串将对应的位线放电。在某个时间段之后测量该位线上的电压,以查看其是否已放电。需注意,本文所述的技术可与本领域已知的用于验证/读取的不同方法一起使用。也可使用本领域已知的其他读取和验证技术。
图9B的步骤572包括在选定字线上施加程序电压脉冲。图9B的步骤574包括验证,在一些实施方案中,验证包括在选定字线上施加验证基准电压。当步骤572和574是迭代循环的一部分时,程序电压被施加为在量值上增大的一系列电压脉冲。在电压脉冲之间,施加验证基准电压。这在图9C中示出,其示出在步骤572的三次连续迭代期间施加的程序电压脉冲592、594和596。在程序电压脉冲592、594和596之间,系统测试存储器单元,以通过将验证基准电压施加为验证脉冲来确定存储器单元的阈值电压是否大于相应的验证基准电压。
图10是流程图,其描述了用于读取存储在非易失性存储器(例如,存储器结构126)中的数据的过程的一个实施方案。在步骤602中,控制器120(经由主机接口152)从主机102接收读取数据的命令和逻辑地址。在步骤604中,控制器120使用转换管理器TM和L2P表将在步骤602中接收的逻辑地址转换为存储器130中的物理地址。在步骤606中,控制器120将物理地址和读取数据的命令发送到适当的存储器管芯206。在步骤608中,响应于该命令,存储器管芯206感测来自寻址页的信息。在一个实施方案中,从控制器120发送到存储器管芯206的地址是一个页地址,并且步骤608包括感测在该寻址页处的存储器单元的数据状态。在步骤610中,将感测的信息从存储器管芯206传输到控制器120。
在图10的步骤612中,控制器120执行ECC解码过程(参见ECC引擎158)。有许多不同的纠错过程可以与本文所述的技术一起使用。因此,本文所述的过程(包括图9A和图10的过程)不限于任何一种ECC技术。在一个实施方案中,解码过程的输入是在步骤608中感测到的信息。如果解码过程成功,则解码过程的输出将是表示存储在该非易失性存储器中的数据的数据解。另外,解码过程将确定在数据中发现了多少个错误,以及解码过程使用纠错校正了多少个错误。出错并被校正的数据位数量被称为误码率(BER)。如果解码过程成功找到解(步骤614),则控制器120在步骤616中返回解码数据。在一个实施方案中,数据被返回到主机102。在其他实施方案中,数据可用于控制器120内的另一过程。BER由控制器120存储以用于分析、记录和/或用于预测缺陷。如果在步骤614中确定解码过程未成功找到正确的解,则在步骤618中,控制器120返回错误消息。错误消息可被返回到主机102或返回到控制器120中的另一过程。在步骤620中,确定刚读取的块是否为坏块。在一个实施方案中,如果刚读取的块未通过读取过程,则该块是坏块,因此将它标记为坏块,使得它不再用于存储主机数据(例如,从存储系统以外的主机或实体接收的数据)。例如,控制器120可以确定该块因为解码过程没有得到解(例如,有太多错误需要修复)或因为BER过高而是坏的;因此,将该块添加到坏块池BBP中(参见图1),并且不再将其用于存储主机数据。如果针对某个块的编程操作失败,则该块也可以被确定为坏块并且被放置在坏块池BBP中。在另一个实施方案中,如果读取过程因为控制器不能解码数据而失败,则不一定意味着该块是坏的。在这样的实施方案中,读取数据失败后,系统将尝试擦除该块。如果块擦除成功,则该块被视为好块,并且可用于存储主机数据。如果不能擦除该块,则将该块视为坏块,并将其放置在坏块池BBP中。
当一些非易失性存储器经历许多程序和擦除循环时,在存储器的不应累积电荷的区域中可累积不必要的电荷。例如,回顾图5,在许多程序和擦除循环之后,电荷可在存储器单元404至410的隧道电介质区域TD中被捕集并积聚。这种充电可使存储器单元的编程更不容易且更慢,并且可在读取或擦除时导致错误。同样地,回顾图6B,在许多程序和擦除循环之后,电荷可在隧道电介质层472中被捕集并积聚,这可能使存储器单元的编程更不容易且更慢,并且可在读取或擦除时导致错误。电荷还可以在6B图的实施方案的电荷捕集层473中被捕集或迁移,这也可在编程、擦除和读取时导致错误。来自这种不必要的电荷累积的错误可导致存储器单元好块变成存储器单元坏块。如上文相对于图10所讨论的,当控制器120确定一个块是坏块时,该坏块被添加到坏块池BBP中(参见图1)并且不再用于存储主机数据。因此,存储系统的容量减少。
已发现,允许在存储器的不应累积这种电荷的区域中累积有不必要电荷的此类坏块在长时间(例如,1至2个月)保持空闲导致电荷的一些不必要的累积消散。例如,在隧道电介质区域TD中被捕集的一些电荷将迁移到基板402或浮栅FG,或者在隧道电介质层472中被捕集的一些电荷将迁移到通道471或电荷捕集层473。在更高的温度下,这种迁移将更快地发生。但强制较高的温度可损坏存储系统100的其他部分(例如控制器120或控制电路310)或主机102。如果允许该块空闲足够长的时间(例如,1至2个月),则足够的电荷(例如电子)将迁移,由此使得该块在编程、擦除和读取期间将不再表现出错误。因此,该块变为好块。这种允许坏块保持空闲以使得电荷的不必要累积消散的过程被称为自动修复。
因此,提出响应于确定特定块是坏块,存储系统的一个或多个控制电路将使特定块空闲某个时间段,由此使得在该空闲时间段期间不对特定块执行编程、读取或擦除;但是,在该时间段期间,对其他块执行编程、读取和擦除。在空闲时间段已经完成之后,存储系统的一个或多个控制电路测试特定块是坏块还是好块。如果特定块现在再次成为好块,那么特定块可用于以与其他好块所用的相同方式存储主机数据。
图11是流程图,其描述用于使用自动修复来回收坏块的过程的一个实施方案。在步骤702中,制造存储器。例如,将制造存储器管芯206中的每一个。在步骤704中,在制造存储器管芯206之后,每个存储器管芯的存储器结构326将被测试以识别任何坏块。可通过编程和读取数据来测试块。被发现为坏块的任何块都被放置在坏块池(BBP)中。在一个实施方案中,坏块池是确定为坏块的块的列表或其他标识。坏块池中的这些块将不用于存储主机数据。在制造过程中或之后的测试中未被发现是坏块的那些块将被放置在好块池(GBP)中。在一个实施方案中,好块池GBP(参见图1)是作为好块并且可用于存储主机数据的那些块的列表或其他标识。在一些实施方案中,系统将不存储好块池。相反,不在坏块池中的任何块都被假定为好块。
在步骤706中,存储系统100在块上执行一个或多个存储操作。图11的过程可用于描述单个块(任何特定块)的生命周期。因此,在一个实施方案中,在存储器的每个块上执行图11的过程。步骤706包括执行一个或多个程序和擦除循环。在步骤706中执行的存储操作由上述一个或多个控制电路中的任一个执行。在步骤708中,一个或多个控制电路中的任一个确定该块是坏块。在一个示例性实施方案中,控制器120确定一个块在图10的过程期间是坏块。例如,一个或多个控制电路可被配置为确定特定块(或其他非易失性存储器单元组)因为特定块包括在不正确位置被捕集的电荷而是坏块,如上所述。在其他实施方案中,可使用状态机312来确定一个块是坏块。如果在一个块上的编程操作失败或擦除操作失败,则也可以将该块视为坏块。擦除操作包括指示该擦除操作是成功还是失败的擦除验证操作。
如果在框708中确定一个块是坏的,则该块将被添加到刷新队列(RQ)中。在步骤710中,一个或多个控制电路将使该块(其在步骤708中已被确定为坏块)空闲某个时间段以允许该块在没有额外热量被提供给该块的情况下被动地自动修复。通过使该块空闲,不在该块上执行任何编程、擦除或读取。虽然该块在步骤710中空闲,但在同一时间段期间,对其他块执行编程、读取和擦除。步骤710在不施加额外热量的情况下进行,因为没有将加热元件添加到存储器管芯206和存储系统100中来有意地添加热量。然而,由于存储系统100处于电子装置中,因此变热不被认为是施加了额外热量。由于没有提供额外热量,并且不存在导致电子或其他电荷迁移的有意行为,因此步骤710的自动修复过程被认为是被动的。该块保持空闲的时间段可包括一至两个月。在其他实施方案中,可使用小于一个月。在其他实施方案中,可使用多于两个月。
在步骤712中,一个或多个控制电路验证自动修复过程是否成功。也就是说,控制器、状态机或另一个实体将确定自动修复是否成功。不需要该块100%完美。相反,系统需要确定该块是否经历足够的自动修复,使得可能的是该块可能变成好块。图12和图13(下文讨论)提供步骤712的示例性具体实施。
如果确定(步骤714)自动修复未成功,则在步骤716中,该块在刷新队列RQ中保持额外时间段,以允许在不施加额外热量的情况下额外的被动自动修复。在一个实施方案中,该额外时间段与步骤710的初始时间段相同。在另一个实施方案中,步骤716的额外时间段为在步骤710中用于自动修复过程的时间段的一小部分。在步骤716中的额外时间段之后,该过程循环回到步骤712并再次尝试验证额外的自动修复是否成功。
如果确定(步骤714)自动修复成功,则在步骤718中刷新该块。在一个实施方案中,通过在一个块上执行擦除操作来刷新该块。在步骤720中,一个或多个控制电路验证刷新块是否成功。验证刷新是否成功的一个示例包括执行擦除验证。例如,回顾图7,擦除该块可导致所有存储器单元移动到状态0。擦除验证过程可测试存储器单元的阈值电压是否低于0伏。也可使用其他变型。测试刷新是否成功是确定该块是否仍然是坏块的一种形式。如果刷新成功(步骤722),使得该块不再是坏的(该块现在是好块),那么在步骤724中,该块被放置在好块池GBP中,使得该块用于存储主机数据。如果在步骤722中确定刷新未成功(即该测试确定该块仍然是坏块),则过程在步骤716处继续,使得该块在刷新队列RQ中保持额外时间段,以允许在不施加额外热量的情况下额外的被动自动修复。在步骤716中的额外时间段之后,该过程循环回到步骤712并再次尝试验证额外的自动修复是否成功。在一个另选实施方案中,如果在步骤722中确定刷新未成功,则该块被移动到坏块池BBP,使得它不再用于存储主机数据。在一个实施方案中,完全不使用坏块池BBP中的块。
在一个实施方案中,一个或多个控制电路被配置为使用相同的标准来确定在步骤710的时间段之前和之后存储器单元块是好块还是坏块。也就是说,用于将一个块识别为坏块的标准对于步骤708以及步骤720和722而言是相同的。
图12的步骤706至726可由上述一个或多个控制电路中的任一个执行。在一个实施方案中,图12的步骤706至726由控制器120执行。
图12是描述用于验证自动修复的过程的一个实施方案的流程图。也就是说,图12的过程是图11的步骤712的一个示例性具体实施。图12的过程可由上述一个或多个控制电路中的任一个执行。在一个实施方案中,图12的过程由控制器120执行。在步骤802中,一个或多个控制电路将访问已知数据。在图12的过程依赖于已知的数据集在块变成坏块之前被存储在该块中的假设。例如,可以在该块中的可预测位置存储二字节图案。在其他实施方案中,可以使用多于或少于两个字节。如上所述,在一个示例性具体实施中,连接到单个字线的所有存储器单元形成单个数据页。因此,如果一个块有64个字线,则将有64个数据页。图12A示出用于数据页的一个示例性架构。图12A的数据页包括标头(HDR)、存储的数据(DATA)和纠错信息(ECC)。在一个实施方案中,纠错信息与数据组合。数据可以是代表主机102存储的主机数据。标头信息HDR包括控制器120用来管理存储器的信息,包括物理地址标识、磨损均衡信息、垃圾收集信息、超级块标识等。在一个实施方案中,两个字节的已知数据KD存储在标头HDR内的预定位置中,如图12A所示,在块的第一字线、块的所有已编程的字线或字线子集中。相同的已知数据KD可存储在每个单个块中,并且还由控制器120存储在易失性存储器140中。在步骤802中,可从易失性存储器140(或非易失性存储器内的另一位置)访问已知数据。
在步骤804中,一个或多个控制电路将已经存储在该块中的已知数据KD部分地重新编程。部分重新编程包括没有首先擦除的编程。另外,部分重新编程包括执行图9B的步骤572至586(由在控制器的方向上的状态机执行)以添加少量程序脉冲来清理数据。在步骤806中,从该块(来自一个或多个页)读回已知数据。步骤806包括执行图10的过程,该过程包括确定读取的数据的误码率(BER)。在步骤808中,将BER与参考进行比较。如果BER小于参考(步骤810),则推断自动修复过程是成功的。如果BER不小于参考(步骤810),则推断自动修复过程未成功。
图13是描述用于验证自动修复成功的过程的另一个实施方案的流程图。也就是说,图13的过程是步骤712的另一个示例性具体实施。图13的过程可由上述一个或多个控制电路中的任一个执行。在一个实施方案中,图13的过程由控制器120执行。在图13的实施方案中,一个或多个控制电路不知道块中的已知数据。在图13的步骤852中,一个或多个控制电路读取已存储在该块中的数据。例如,将从该块读取一个或多个页。在一个示例中,将读取第一字线(WL0)。步骤852可使用图10的过程来执行。步骤852的结果是对存储在该块中的数据的估计。在步骤854中,一个或多个控制电路将部分地重新编程来使相同的数据读取到相同的位置。部分重新编程包括不执行擦除过程。相反,图9B的过程的少量迭代将由在控制器的方向上的状态机执行。在另一个实施方案中,系统可将数据重新编程到另一个页。各种替代方案可以使用两个页的数据(同一位置和另一个位置)的某种智能组合(例如,类似于XOR的组合),目标是执行可检查页的状态的智能重新编程操作。在步骤856中,使用图10的过程再次读回数据。这包括确定BER。在步骤858中,一个或多个控制电路将把BER与参考进行比较。如果BER小于参考(步骤860),则一个或多个控制电路推断自动修复过程是成功的。如果BER不小于参考(步骤860),则在步骤864中推断自动修复过程未成功。
图14是流程图,其描述用于在实现上述用于回收坏块的过程时进行磨损均衡的过程的一个实施方案。在步骤902中,一个或多个控制电路将接续块分配成块子集。在一个实施方案中,块可已经被组织成在制造期间作为制造或测试的一部分的块子集。例如,图15示出了包括多个块B的存储器结构326的部分950。部分950中的接续块被组织成子集,包括子集0、子集1和子集2。
存储系统分阶段进行操作,其中每个阶段在某个时间段期间执行。在图14的步骤904中,一个或多个控制电路(或另一个实体)将把组的每个子集分配到操作阶段。例如,具有三个操作阶段的系统可具有分配到阶段0的子集0、分配到阶段1的子集1和分配到阶段2的子集2。存储系统使用阶段的重复循环随时间推移而运行。即,首先将执行阶段0,然后执行阶段1,然后进行阶段2,然后执行阶段0,然后执行阶段1,然后执行阶段2,然后执行阶段0,等等。在每个阶段期间,对于分配到某个阶段的块子集,存储操作执行的次数比其他块子集的多。例如,在阶段0期间,子集0将使其块经受大量存储操作,而子集1和/或子集2的块可经受0或非常少量的存储操作。因此,当前处于块被分配到的阶段中的组中的每个块将比未分配到该阶段的其他块的磨损更强烈。当前阶段中激活的当前组的块将可能更频繁地遇到错误并更可能最后处于上文讨论的刷新队列RQ中。然后,在执行后续阶段时,刷新队列中的这些块可保持空闲。因此,回顾图11,当一个块正经历为其分配的阶段时,可以为该块执行步骤706的存储操作,并且当该块正经历没有为其分配的阶段时,在步骤710中保持空闲的时间段。
图16以图形方式示出了图14的过程,其中示出阶段0、阶段1、阶段2、阶段0,…。如果在页上有更多的空间,则图16可示出阶段1、2、0、1、2、0等的额外重复。图16示出了三个曲线图。顶部曲线图示出用于子集0的程序和擦除循环。中部曲线图示出用于子集1的程序和擦除循环。第三个曲线图示出用于子集2的程序和擦除循环。可以看出,在阶段0期间用于子集0的程序和擦除循环的数量很高,用于子集1和子集2的程序和擦除循环的数量较低。在阶段1期间,用于子集1的程序和擦除循环的数量很高,用于子集0和子集2的程序和擦除循环的数量很低。在阶段2期间,用于子集2的程序和擦除循环的数量很高,用于子集0和子集1的程序和擦除循环的数量很低。因此,图16以图形方式示出在第一时间段期间在第一块子集上执行多次存储操作,该次数比在第一时间段期间在其他块子集中执行的存储操作次数多;并且在第二时间段期间在组的第二子集上执行多次存储操作,该次数比在第二时间段期间在其他块子集上执行的存储操作次数多;并且在第三时间段期间在组的第三子集上执行多次存储操作,该次数比在该第三时间段期间在其他块子集上执行的存储操作次数多。
虽然上文的讨论使用了非易失性存储器单元块作为一个单元加以操作以回收坏块,但在其他实施方案中,可以利用其他类型的非易失性存储器单元组。示例包括超级块或子块。超级块是多个块的聚合。子块是块的一部分。需注意,有时一个块可以被称为擦除块。
一个实施方案包括一种非易失性存储设备,其包括被布置为非易失性存储器单元组的多个非易失性存储器单元以及一个或多个控制电路,该一个或多个控制电路连接到非易失性存储器单元并且被配置为确定特定非易失性存储器单元组是坏组并让特定组空闲某个时间段,由此使得在该时间段期间不为特定组执行编程或擦除,并且在该时间段期间为其他非易失性存储器单元组执行编程。所述一个或多个控制电路被配置为确定特定组在该时间段之后不再是坏组,并且响应于确定特定组不再是坏组,使用特定组来存储主机数据。
在一个实施方案中,一个或多个控制电路被配置为使用相同的标准来确定在该时间段之前和之后特定非易失性存储器单元组是好组还是坏组。
一个实施方案包括一种用于操作非易失性存储器的方法,该方法包括:确定非易失性存储器单元块是坏块;让该块空闲某个时间段,以允许该块的被动自动修复;验证自动修复的成功;并且在验证自动修复成功之后,使用该块存储主机数据。
一个实施方案包括一种设备,该设备包括:主机接口;存储器接口;以及连接到主机接口和存储器接口的装置,其用于确定非易失性存储器单元块是坏的,从而允许该块在不施加额外热量的情况下自动修复,并且在自动修复之后使用该块来存储主机数据。
用于确定非易失性存储器单元块是坏块的装置的示例包括控制器120的部件,诸如处理器156和/或ECC引擎158,两者均可通过软件(包括固件)编程或实现为无需软件的定制电路。这些部件执行图10至图14的过程。
用于允许块自动修复而无需施加额外的热的装置的示例包括控制器120的部件,诸如处理器156和/或ECC引擎158,两者均可通过软件(包括固件)编程或实现为无需软件的定制电路。这些部件执行图11至图14的过程。
用于在自动修复之后使用该块来存储主机数据的装置的示例包括控制器120的部件,诸如处理器156和/或ECC引擎158,两者均可通过软件(包括固件)编程或实现为无需软件的定制电路。这些部件执行图9A至图14的过程。
出于本文献的目的,说明书中提到“实施方案中”、“一个实施方案”、“一些实施方案”或“另一个实施方案”可用于描述不同的实施方案或相同的实施方案。
出于本文献的目的,连接可以是直接连接或间接连接(例如,经由一个或多个其他部件)。在一些情况下,当一个元件被称为连接或耦接到另一个元件时,该元件可直接连接到另一个元件或经由居间元件间接连接到另一个元件。当一个元件被称为直接连接到另一个元件,则在该元件和另一个元件之间没有居间元件。如果两个装置是直接或间接连接的,则这两个装置“连通”,使得它们能够在它们之间传送电子信号。
出于本文献的目的,术语“基于”可以解读为“至少部分地基于”。
出于本文献的目的,在没有附加上下文的情况下,使用数值术语诸如“第一”对象、“第二”对象和“第三”对象可能并不暗示对象的排序,而是可用于标识目的以识别不同的对象。
出于本文献的目的,术语对象“集”可以是指对象中的一个或多个的“集”。
已经出于举例说明和描述的目的提供了前述详细说明。它并非意图详尽无遗,也不旨在限制所公开的精确形式。根据上述教导,许多修改形式和变型形式是可能的。选择所述实施方案以便最好地解释所提议的技术的原理及其实际应用,从而使本领域的其他技术人员能够在各种实施方案中最好地利用它,并且各种修改形式适于所构想的特定用途。本发明的范围旨在由所附权利要求书限定。

Claims (9)

1.一种非易失性存储设备,包括:
多个非易失性存储器单元,所述多个非易失性存储器单元被布置为非易失性存储器单元组;和
一个或多个控制电路,所述一个或多个控制电路连接至所述非易失性存储器单元,并且被配置为确定特定非易失性存储器单元组是坏组并且让所述特定组空闲某个时间段,使得在所述时间段期间没有为所述特定组执行任何编程或擦除并且在所述时间段期间为其他非易失性存储器单元组执行编程,所述一个或多个控制电路被配置为确定所述特定组在所述时间段之后不再是坏组并且响应于确定所述组不再是坏组而使用所述特定组来存储主机数据,
其中:
所述一个或多个控制电路被配置为让所述特定组空闲所述时间段,以允许所述特定组在不将额外的热量施加到所述特定组的情况下被动地自动修复,使得在所述特定组中的电荷的不必要累积消散。
2.根据权利要求1所述的非易失性存储设备,其中:
所述一个或多个控制电路被配置为让所述特定组空闲所述时间段,以允许所述特定组自动修复;并且
所述一个或多个控制电路被配置为确定所述特定组已成功完成所述自动修复,在确定所述特定组已成功完成所述自动修复之后执行关于所述特定组不再是坏组的所述确定。
3.根据权利要求2所述的非易失性存储设备,其中:
所述一个或多个控制电路被配置为响应于确定所述特定组已成功完成所述自动修复来刷新所述特定组;
所述一个或多个控制电路被配置为验证所述特定组是否已成功刷新;并且
所述验证所述特定组已成功刷新包括确定所述特定组不再是坏组。
4.根据权利要求3所述的非易失性存储设备,其中:
所述一个或多个控制电路被配置为通过在所述特定组上执行擦除操作来刷新所述特定组;并且
所述一个或多个控制电路被配置为通过执行擦除验证来验证所述特定组已成功刷新。
5.根据权利要求2所述的非易失性存储设备,其中:
所述一个或多个控制电路被配置为通过下述方法来确定所述特定组已成功完成所述自动修复:执行已存储在所述特定非易失性存储器单元组中的已知数据的部分重新编程,确定在所述部分重新编程之后在所述特定非易失性存储器单元组中的所述已知数据的误码率,并且将所述误码率与参考进行比较。
6.根据权利要求2所述的非易失性存储设备,其中:
所述一个或多个控制电路被配置为通过下述方法来确定所述特定组已成功完成所述自动修复:读取已存储在所述特定非易失性存储器单元组中的数据,基于所述读取执行所述特定非易失性存储器单元组中的所述数据的部分重新编程,确定在所述部分重新编程之后在所述特定非易失性存储器单元组中的所述已知数据的误码率并且将所述误码率与参考进行比较。
7.根据权利要求1至6中任一项所述的非易失性存储设备,其中:
所述非易失性存储器单元组为块并且所述特定组为特定块。
8.一种用于操作非易失性存储设备的方法,包括:
确定非易失性存储器单元块是坏块;
让所述块空闲某个时间段以允许所述块的在不将额外的热量施加到所述块的情况下的被动自动修复,使得在所述块中的电荷的不必要累积消散;
验证所述自动修复是否成功;以及
在验证所述自动修复成功之后,使用所述块存储主机数据。
9.根据权利要求8所述的方法,还包括:
响应于验证所述自动修复成功而刷新所述块,在刷新所述块之后执行所述使用所述块存储主机数据;以及
验证所述刷新所述块是否成功,响应于验证所述刷新所述块成功来执行所述使用所述块存储主机数据。
CN201811213602.XA 2017-10-30 2018-10-18 回收坏块的非易失性存储系统 Active CN109726142B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/798,029 2017-10-30
US15/798,029 US10223216B1 (en) 2017-10-30 2017-10-30 Non-volatile storage system that reclaims bad blocks

Publications (2)

Publication Number Publication Date
CN109726142A CN109726142A (zh) 2019-05-07
CN109726142B true CN109726142B (zh) 2024-03-22

Family

ID=65495901

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811213602.XA Active CN109726142B (zh) 2017-10-30 2018-10-18 回收坏块的非易失性存储系统

Country Status (3)

Country Link
US (2) US10223216B1 (zh)
CN (1) CN109726142B (zh)
DE (1) DE102018123887A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10346346B1 (en) * 2017-12-21 2019-07-09 Xilinx, Inc. Inline ECC function for system-on-chip
US10672497B2 (en) * 2018-04-03 2020-06-02 SK Hynix Inc. Memory system and method for bad block management
US10936456B1 (en) * 2019-02-20 2021-03-02 Apple Inc. Handling malfunction in a memory system comprising a nonvolatile memory by monitoring bad-block patterns
US11397635B2 (en) 2019-12-09 2022-07-26 Sandisk Technologies Llc Block quality classification at testing for non-volatile memory, and multiple bad block flags for product diversity
CN114089908A (zh) * 2020-08-24 2022-02-25 北京兆易创新科技股份有限公司 非易失性存储器及其操作方法
CN113641309A (zh) * 2021-08-19 2021-11-12 深圳忆联信息系统有限公司 Ssd的弱块识别方法、装置、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102782764A (zh) * 2009-09-11 2012-11-14 桑迪士克技术有限公司 识别非易失性存储装置中的有风险数据
CN102937922A (zh) * 2011-09-12 2013-02-20 微软公司 查询和修复数据
CN103455384A (zh) * 2012-06-01 2013-12-18 三星电子株式会社 包括非易失性存储器件的存储设备及修复方法
US9679661B1 (en) * 2016-06-28 2017-06-13 Sandisk Technologies Llc Non-volatile storage system with self-test for read performance enhancement feature setup

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101859604B (zh) 2009-04-10 2012-10-24 国民技术股份有限公司 闪存坏块的利用方法
US10141049B2 (en) 2014-12-19 2018-11-27 Sandisk Technologies Llc Nonvolatile memory system storing system data in marginal word lines
US9343156B1 (en) 2015-06-25 2016-05-17 Sandisk Technologies Inc. Balancing programming speeds of memory cells in a 3D stacked memory
US9997258B2 (en) * 2016-05-10 2018-06-12 Sandisk Technologies Llc Using non-volatile memory bad blocks

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102782764A (zh) * 2009-09-11 2012-11-14 桑迪士克技术有限公司 识别非易失性存储装置中的有风险数据
CN102937922A (zh) * 2011-09-12 2013-02-20 微软公司 查询和修复数据
CN103455384A (zh) * 2012-06-01 2013-12-18 三星电子株式会社 包括非易失性存储器件的存储设备及修复方法
US9679661B1 (en) * 2016-06-28 2017-06-13 Sandisk Technologies Llc Non-volatile storage system with self-test for read performance enhancement feature setup

Also Published As

Publication number Publication date
DE102018123887A1 (de) 2019-05-02
CN109726142A (zh) 2019-05-07
US10346266B2 (en) 2019-07-09
US10223216B1 (en) 2019-03-05
US20190155703A1 (en) 2019-05-23

Similar Documents

Publication Publication Date Title
US10896123B2 (en) Enhancing the effectiveness of read scan performance and reliability for non-volatile memory
US9997258B2 (en) Using non-volatile memory bad blocks
CN109726142B (zh) 回收坏块的非易失性存储系统
US10090044B2 (en) System and method for burst programming directly to MLC memory
US10223199B2 (en) Non-volatile memory configured to return error reduced read data
US10452471B2 (en) Non-volatile memory with dynamic write abort detection and recovery
US10403377B2 (en) Non-volatile storage with adaptive redundancy
US11164634B2 (en) Non-volatile storage system with fast SLC operation
US10153046B1 (en) Non-volatile memory with backing up of programmed data
US9672940B1 (en) Non-volatile memory with fast read process
US11049578B1 (en) Non-volatile memory with program verify skip
US10248499B2 (en) Non-volatile storage system using two pass programming with bit error control
US11495311B2 (en) Non-volatile memory with erase verify skip
US11036582B2 (en) Uncorrectable error correction code (UECC) recovery time improvement
US9711227B1 (en) Non-volatile memory with in field failure prediction using leakage detection
CN106205702B (zh) 对编程故障自动响应的非易失性存储装置
US9679661B1 (en) Non-volatile storage system with self-test for read performance enhancement feature setup
US11062756B2 (en) Extending operating temperature of storage device
CN111341371A (zh) 用于响应于存储器单元年限的指示而对存储器单元进行编程的设备及方法
US11342029B2 (en) Non-volatile memory with switchable erase methods
US11538538B1 (en) Apparatus and methods for smart verify with neighbor plane disturb detection
US11003551B2 (en) Non-volatile storage system with program failure recovery
US20240168661A1 (en) Early program termination with adaptive temperature compensation
US20240038315A1 (en) Early detection of programming failure for non-volatile memory
TW202343455A (zh) 一種記憶體裝置、記憶體系統及操作方法

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