CN114586102A - 使用内部固件执行自验证的nand存储器中的数据保护 - Google Patents

使用内部固件执行自验证的nand存储器中的数据保护 Download PDF

Info

Publication number
CN114586102A
CN114586102A CN202280000386.9A CN202280000386A CN114586102A CN 114586102 A CN114586102 A CN 114586102A CN 202280000386 A CN202280000386 A CN 202280000386A CN 114586102 A CN114586102 A CN 114586102A
Authority
CN
China
Prior art keywords
nand flash
flash memory
memory device
programming
memory
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.)
Pending
Application number
CN202280000386.9A
Other languages
English (en)
Inventor
何有信
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.)
Yangtze Memory Technologies Co Ltd
Original Assignee
Yangtze Memory Technologies Co Ltd
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 Yangtze Memory Technologies Co Ltd filed Critical Yangtze Memory Technologies Co Ltd
Publication of CN114586102A publication Critical patent/CN114586102A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • G11C2211/5621Multilevel programming verification

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本公开提供了一种用于NAND存储器的数据保护的方法。该方法可以包括根据编程数据对NAND闪速存储器设备的选定页进行编程。对选定页的编程可以包括多个编程操作和多个验证操作,其中,多个验证操作中的验证操作在多个编程操作中的对应的编程操作之后执行,以根据编程数据来确定选定页的已编程存储单元是否具有阈值电压电平。方法还可以包括基于多个验证操作中的每一个验证操作返回通过结果来确定对选定页的编程的完成。方法还可以包括在确定之后,由NAND闪速存储器设备对选定页执行读取操作,以根据编程数据来对存储在选定页处的数据进行自验证。

Description

使用内部固件执行自验证的NAND存储器中的数据保护
技术领域
本发明总体上涉及半导体技术领域,并且更具体地涉及一种用于NAND存储器的数据保护方法和存储系统。
背景技术
随着存储器设备缩小到较小的管芯尺寸以降低制造成本和增加存储密度,平面存储单元的扩展由于工艺技术限制和可靠性问题而面临挑战。三维(three-dimensional,3D)存储器架构可以解决平面存储单元中的密度和性能限制。
在3D NAND闪速存储器中,可以垂直堆叠存储单元的多个层,使得可以大大提高每单位面积的存储密度。垂直堆叠的存储单元可以形成存储器串,其中存储单元的通道连接在每个存储器串中。每个存储单元可以通过字线和位线来寻址。可以对共享同一字线的整个存储页中的存储单元的数据(即,逻辑状态)进行同时读取或编程。然而,由于攻击性的扩展,可靠性可能是3D NAND闪速存储器的一个问题。
发明内容
在本公开中描述了用于存储器设备中的数据保护的方法和系统的实施例。
在一些实施例中,一种编程方法可以提供用于NAND闪速存储器设备的数据保护。编程方法可以包括根据编程数据对NAND闪速存储器设备的选定页进行编程。选定页可以包括与字线相对应的多个存储单元。对选定页的编程可以包括使用多个编程电压的多个编程操作。对选定页的编程还可以包括多个验证操作。多个验证操作中的验证操作可以在多个编程操作中的对应的编程操作之后执行,以根据编程数据来确定选定页的已编程存储单元是否具有阈值电压电平。编程方法还可以包括:基于多个验证操作中的每一个验证操作返回通过结果来确定对选定页的编程的完成。编程方法还可以包括:在确定之后,由NAND闪速存储器设备对选定页执行读取操作,以根据编程数据来对存储在选定页处的数据进行自验证。
在一些实施例中,多个存储单元中的每一个存储单元可以存储编程数据的n个位,其中,n是大于1的整数。确定还可以基于将编程数据的第n位编程到页中。
在一些实施例中,确定可以包括确定编程数据的最后一位是否已经被编程到页中。
在一些实施例中,读取操作可以包括比较根据读取操作确定出的数据和编程数据。读取操作还可以包括:如果失败位(failed-bit)计数低于阈值则确定通过结果,或者如果失败位计数高于阈值则确定失败结果。
在一些实施例中,编程方法还可以包括:基于读取操作产生失败结果,根据编程数据对NAND闪速存储器设备的另一页进行编程,由此防止存储在选定页处的数据的损坏。
在一些实施例中,编程方法还可以包括:由NAND闪速存储器设备接收输入以调整读取操作的执行。
在一些实施例中,编程方法还可以包括:将读取操作的执行限制到NAND闪速存储器设备的由输入指定的一个或多个区域。一个或多个指定区域可以包括以下各项中的至少一个:用于单层单元(single-level cell,SLC)的区域、用于多层单元(multi-level cell,MLC)的区域、用于三层单元(triple-level cell,TLC)的区域、用于四层单元(quad-levelcell,QLC)的区域、页、块和片存储区(plane)。
在一些实施例中,编程方法还可以包括:延迟对未来编程数据进行高速缓存操作,直到读取操作的执行之后为止。
在一些实施例中,编程方法还可以包括:检测高速缓存操作的使用,其中,延迟基于检测到高速缓存操作的使用。
在一些实施例中,编程方法还可以包括:在验证操作中的验证操作之后,掩蔽选定页的已编程存储单元中的对应的已编程存储单元。
在一些实施例中,掩蔽可以包括将禁止电压施加到NAND闪速存储器设备的一条或多条位线。
在一些实施例中,编程方法还可以包括:基于读取操作产生失败结果,来掩蔽NAND闪速存储器设备的一个或多个区域。
在一些实施例中,NAND闪速存储器设备可以提供数据保护。NAND闪速存储器设备可以包括存储器阵列和外围电路。存储器阵列可以包括多个页。多个页中的每一个页可以包括与字线相对应的多个存储单元。外围电路可以经由字线耦合到多个页。外围电路可以根据编程数据对NAND闪速存储器设备的选定页进行编程。对选定页的编程可以包括使用多个编程电压的多个编程操作。对选定页的编程还可以包括多个验证操作。多个验证操作中的验证操作可以在多个编程操作中的对应的编程操作之后执行,以根据编程数据来确定选定页的已编程存储单元是否具有阈值电压电平。外围电路还可以基于多个验证操作中的每一个验证操作返回通过结果来确定对选定页的编程的完成。外围电路还可以在确定之后,由NAND闪速存储器设备对选定页执行读取操作,以根据编程数据来对存储在选定页处的数据进行自验证。
在NAND闪速存储器设备的一些实施例中,多个存储单元中的每一个存储单元可以存储编程数据的n个位,其中,n是大于1的整数。确定还可以基于将编程数据的第n位编程到选定页中。
在一些实施例中,确定可以包括:确定编程数据的最后一位是否已经被编程到选定页中。
在NAND闪速存储器设备的一些实施例中,读取操作可以包括比较根据读取操作确定出的数据和编程数据。读取操作还可以包括:如果失败位计数低于阈值则确定通过结果,或者如果失败位计数高于阈值则确定失败结果。
在NAND闪速存储器设备的一些实施例中,外围电路还可以基于读取操作产生失败结果,根据编程数据对NAND闪速存储器设备的另一页进行编程,由此防止存储在选定页处的数据的损坏。
在NAND闪速存储器设备的一些实施例中,NAND闪速存储器设备可以接收输入以调整读取操作的执行。
在NAND闪速存储器设备的一些实施例中,NAND闪速存储器设备还可以将读取操作的执行限制到NAND闪速存储器设备的由输入指定的一个或多个区域。一个或多个指定区域可以包括以下各项中的至少一个:用于单层单元(single-level cell,SLC)的区域、用于多层单元(multi-level cell,MLC)的区域、用于三层单元(triple-level cell,TLC)的区域、用于四层单元(quad-level cell,QLC)的区域、页、块和片存储区。
在NAND闪速存储器设备的一些实施例中,NAND闪速存储器设备可以延迟对未来编程数据进行高速缓存操作,直到读取操作的执行之后为止。
在NAND闪速存储器设备的一些实施例中,NAND闪速存储器设备可以检测高速缓存操作的使用,其中,延迟基于检测到高速缓存操作的使用。
在NAND闪速存储器设备的一些实施例中,NAND闪速存储器设备可以在验证操作中的验证操作之后,掩蔽选定页的已编程存储单元中的对应的已编程存储单元。
在NAND闪速存储器设备的一些实施例中,掩蔽可以包括将禁止电压施加到NAND闪速存储器设备的一条或多条位线。
在NAND闪速存储器设备的一些实施例中,NAND闪速存储器设备可以基于读取操作产生失败结果,来掩蔽NAND闪速存储器设备的一个或多个区域。
在一些实施例中,存储器系统可以提供用于NAND存储器的数据保护。该系统可以包括可以存储数据的NAND闪速存储器设备。NAND闪速存储器设备可以包括存储器阵列和外围电路。存储器阵列可以包括多个页。多个页中的每一个页可以包括与字线相对应的多个存储单元。外围电路可以经由字线耦合到多个页。外围电路可以根据编程数据对NAND闪速存储器设备的选定页进行编程。对选定页的编程可以包括使用多个编程电压的多个编程操作。对选定页的编程还可以包括多个验证操作。多个验证操作中的验证操作可以在多个编程操作中的对应的编程操作之后执行,以根据编程数据来确定选定页的已编程存储单元是否具有阈值电压电平。外围电路还可以基于多个验证操作中的每一个验证操作返回通过结果来确定对选定页的编程的完成。外围电路还可以在确定之后,由NAND闪速存储器设备对选定页执行读取操作,以根据编程数据来对存储在选定页处的数据进行自验证。
在存储器系统的一些实施例中,多个存储单元中的每一个存储单元可以存储编程数据的n个位,其中,n是大于1的整数。确定还可以基于将编程数据的第n位编程到选定页中。
在存储器系统的一些实施例中,确定可以包括:确定编程数据的最后一位是否已经被编程到选定页中。
在存储器系统的一些实施例中,读取操作可以包括比较根据读取操作确定出的数据和编程数据。读取操作还可以包括:如果失败位计数低于阈值则确定通过结果,或者如果失败位计数高于阈值则确定失败结果。
在存储器系统的一些实施例中,外围电路还可以基于读取操作产生失败结果,根据编程数据对NAND闪速存储器设备的另一页进行编程,由此防止存储在选定页处的数据的损坏。
在存储器系统的一些实施例中,NAND闪速存储器设备还可以接收输入以调整读取操作的执行。
在存储器系统的一些实施例中,NAND闪速存储器设备还可以将读取操作的执行限制到NAND闪速存储器设备的由输入指定的一个或多个区域。一个或多个指定区域可以包括以下各项中的至少一个:用于单层单元(single-level cell,SLC)的区域、用于多层单元(multi-level cell,MLC)的区域、用于三层单元(triple-level cell,TLC)的区域、用于四层单元(quad-level cell,QLC)的区域、页、块和片存储区。
在存储器系统的一些实施例中,NAND闪速存储器设备还可以延迟对未来编程数据进行高速缓存操作,直到读取操作的执行之后为止。
在存储器系统的一些实施例中,NAND闪速存储器设备还可以检测高速缓存操作的使用,其中,延迟基于检测到高速缓存操作的使用。
在存储器系统的一些实施例中,NAND闪速存储器设备还可以在验证操作中的验证操作之后,掩蔽选定页的已编程存储单元中的对应的已编程存储单元。
在存储器系统的一些实施例中,掩蔽可以包括将禁止电压施加到NAND闪速存储器设备的一条或多条位线。
在存储器系统的一些实施例中,NAND闪速存储器设备还可以基于读取操作产生失败结果,来掩蔽NAND闪速存储器设备的一个或多个区域。
本领域技术人员可以鉴于本公开的说明书、权利要求书和附图来理解本公开的其他方面。
附图说明
并入本文并形成说明书的一部分的附图示出了本公开的方面,并且连同说明书一起进一步用于解释本公开的原理,并且使相关领域的技术人员能够制作和使用本公开。
图1和图2A-2B示出了根据一些实施例的具有一个或多个存储器芯片的存储系统。
图3示出了根据一些实施例的存储器管芯的示意图。
图4示出了根据一些实施例的三维(three-dimensional,3D)存储器管芯的示意图。
图5示出了根据一些实施例的3D存储器结构的一部分的透视图。
图6示出了根据一些实施例的NAND闪速存储器的阈值电压Vth分布。
图7示出了根据一些实施例的对存储单元进行编程的方法。
图8A示出了根据一些实施例的在NAND存储器中存储数据和对数据进行自验证的方法。
图8B示出了根据一些实施例的使用图8A中描述的方法的时间线。
图9示出了用于比较使用NAND固件执行的调整的时间线。
图10示出了根据一些实施例的其中发生双重编程事件的NAND存储器的一部分的快照。
图11示出了根据一些实施例的包括双重编程事件的过程流程。
图12示出了根据一些实施例的调试双重编程事件的时间线。
图13示出了根据一些实施例的用于执行SLC备份的方法。
图14示出了根据一些实施例的用于识别NAND存储器中的不可靠区域的方法。
图15和图16示出了根据一些实施例的用于在SLC备份过程中实现NAND自验证的方法。
本发明的特征和优点将根据以下结合附图阐述的具体实施方式变得更加显而易见,在附图中,相同的附图标记始终标识对应的元素。在附图中,相似的附图标记通常表示相同的、功能相似的和/或结构相似的元素。元素首次出现的附图由对应的附图标记中最左边的数字表示。
将参照附图描述本公开的实施例。
具体实施方式
虽然讨论了特定的配置和布置,但应当理解,这是仅出于说明目的进行的。相关领域的技术人员将认识到的是,在不脱离本公开的精神和范围的情况下可以使用其他配置和布置。对于相关领域的技术人员将显而易见的是,还可以在各种其他应用中采用本公开。
应当注意,说明书中对“一个实施例”、“实施例”、“示例实施例”、“一些实施例”等的引用指示所描述的实施例可以包括特定特征、结构或特性,但每个实施例可能不一定包括特定特征、结构或特性。此外,这些短语不一定指代相同的实施例。此外,当结合实施例描述特定特征、结构或特性时,无论是否明确地描述,影响这种特征、结构或特性与其他实施例相关,都在相关领域的技术人员的知识范围内。
通常,术语可以至少部分地从上下文中的使用来理解。例如,如本文使用的术语“一个或多个”至少部分地取决于上下文,可以用于在单数意义上描述任何特征、结构或特性,或可以用于在复数意义上描述特征、结构、或特性的组合。类似地,再次强调,诸如“一(a)”、“一个(an)”或“该(the)”之类的术语可以被理解为传达单数用法或传达复数用法,这至少部分地取决于上下文。另外地,术语“基于”可以理解为不一定旨在传达因素的排他集合,而是相反,可以允许存在不一定明确描述的附加因素,再次强调,这至少部分地取决于上下文。
应当容易地理解,本公开中“在……上”、“上方”和“上面”的含义应以最宽泛的方式解释,使得“在……上”不仅意味着“直接在某物上”,而且包括“在其间具有中间特征或中间层的某物上”的含义。此外,“上方”或“上面”不仅意味着“在某物上方”或“在某物上面”,还可以包括“在其间没有中间特征或中间层的某物上方”或“在其间没有中间特征或中间层的某物上面”(即,直接在某物上)的含义。
此外,为了便于描述,本文可以使用空间相对术语(例如,“下面”、“下方”、“较下”、“上方”、“较上”等)来描述如图中示出的一个元素或特征与其他(一个或多个)元素或特征的关系。除了图中描绘的定向(orientation)之外,空间相对术语旨在涵盖使用或工艺步骤中的设备的不同定向。装置可以以其他方式定向(旋转90度或以其他定向),并且本文使用的空间相对描述词同样可以相应地解释。
如本文所使用的,术语“衬底”指代其上添加后续材料层的材料。衬底包括“顶部”表面和“底部”表面。衬底的顶部表面典型地是形成半导体器件的地方,因此除非另有说明,否则半导体器件形成在衬底的底部侧。底部表面与顶部表面相对,因此衬底的底部侧与衬底的顶部侧相对。衬底本身可以被图案化。添加在衬底顶部的材料可以被图案化或可以维持未图案化。此外,衬底可以包括各种半导体材料,例如,硅、锗、砷化镓、磷化铟等。可替代地,衬底可以由非导电材料(例如,玻璃、塑料、或蓝宝石晶片)制成。
如本文所使用的,术语“层”指代包括具有厚度的区域的材料部分。层具有顶部侧和底部侧,其中层的底部侧相对靠近衬底,并且顶部侧相对远离衬底。层可以在整个下层结构或上层结构上延伸,或者可以具有小于下层结构或上层结构范围的范围。此外,层可以是同质或不同质的连续结构的区域,该区域的厚度小于连续结构的厚度。例如,层可以位于连续结构的顶部表面与底部表面之间的任何一组水平面之间,或位于连续结构的顶部表面和底部表面处的任何一组水平面之间。层可以水平地、垂直地和/或沿着锥形表面延伸。衬底可以是层、可以在其中包括一个或多个层、和/或可以在其上、在其上方和/或在其下方具有一个或多个层。层可以包括多个层。例如,互连层可以包括一个或多个导电和接触层(其中形成触点、互连线和/或垂直互连通孔(VIA))和一个或多个电介质层。
在本公开中,为了便于描述,“层(tier)”用于指代沿垂直方向具有实质上相同高度的元素。例如,字线和下层栅极电介质层可以被称为“层(tier)”,字线和下层绝缘层可以一起被称为“层(tier)”,具有实质上相同高度的字线可以被称为“字线层(a tier of wordlines)”或类似名称,等等。
如本文所使用的,术语“标称/标称地”指代在产品或工艺的设计阶段期间设置的组件或工艺步骤的特性或参数的期望值或目标值,以及高于和/或低于该期望值的值的范围。值的范围可能是由于制造工艺的微小变化或公差导致的。如本文所使用的,术语“约”指示可以基于与主题半导体器件相关联的特定技术节点而变化的给定量的值。基于特定的技术节点,术语“约”可以指示在例如值的10%-30%范围(例如,值的±10%、±20%或±30%)内变化的给定量的值。
在本公开中,术语“水平/水平地/侧面/侧面地”意味着标称地平行于衬底的侧面表面,并且术语“垂直”或“垂直地”意味着标称地垂直于衬底的侧面表面。
如本文所使用的,术语“3D存储器”指代这样的三维(3D)半导体器件:该3D半导体器件在侧面地定向的衬底上具有垂直地定向的存储单元晶体管串(本文称为“存储器串”,例如,NAND串),使得存储器串在相对于衬底的垂直方向上延伸。
图1示出了根据一些实施例的具有存储系统10的系统S1的框图。在一些实施例中,系统S1可以是移动电话、台式计算机、膝上型计算机、平板计算机、车载计算机、游戏机、打印机、定位设备、可穿戴电子设备、智能传感器、虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备或其中具有存储装置的任何其他合适的电子设备。存储系统10(例如,NAND存储系统)可以包括存储器控制器20和一个或多个半导体存储器芯片25-1、25-2、25-3、……、25-n。每个半导体存储器芯片25(以下简称为“存储器芯片”)可以是NAND芯片(例如,“闪存”、“NAND闪存”或“NAND”)。存储系统10可以通过存储器控制器20与主机15通信,其中存储器控制器20可以经由一个或多个存储器通道30-1、30-2、30-3、……、30-n连接到一个或多个存储器芯片25-1、25-2、25-3、……、25-n。在一些实施例中,每个存储器芯片25可以由存储器控制器20经由一个或多个存储器通道30-1、30-2、30-3、……、30-n来管理。
在一些实施例中,主机15可以包括电子设备的处理器,例如,中央处理单元(central processing unit,CPU),或片上系统(system-on-chip,SoC),例如,应用处理器(application processor,AP)。主机15可以发送要被存储在存储系统10处的数据和/或可以从存储系统10中取回存储的数据。
在一些实施例中,存储器控制器20可以处理从主机15接收到的I/O请求、确保数据完整性和高效存储、并且管理存储器芯片25。为了执行这些任务,存储器控制器20可以运行固件21,该固件21可以由存储器控制器20的一个或多个处理器22(例如,微控制器单元、CPU)执行。例如,存储器控制器20可以运行固件21以将逻辑地址(例如,由主机利用的地址,该主机与主机数据相关联)映射到存储器芯片25中的物理地址(例如,存储数据的实际位置)。控制器20还运行固件21来管理存储器芯片25中的有缺陷的存储器块,其中固件21可以将逻辑地址重新映射到不同的物理地址,即,将数据移动到不同的物理地址。控制器20还可以包括一个或多个存储器23(例如,DRAM、SRAM、EPROM等),该一个或多个存储器23可以用于存储由固件21使用的各种元数据。在一些实施例中,存储器控制器20还可以通过纠错码(error correction code,ECC)引擎29执行错误恢复。ECC用于检测和纠正每个存储器芯片25内发生的原始位错误。
在一些实施例中,存储器通道30可以经由数据总线在存储器控制器20与每个存储器芯片25之间提供数据和控制通信。存储器控制器20可以根据芯片使能信号来选择存储器芯片25中的一个存储器芯片。
在一些实施例中,图1中的每个存储器芯片25可以包括一个或多个存储器管芯100,其中每个存储器管芯可以是3D NAND存储器。
在一些实施例中,存储器控制器20和一个或多个存储器芯片25可以集成到各种类型的存储设备中,例如,被包括在同一封装(例如,通用闪存存储(universal Flashstorage,UFS)封装或eMMC封装)中。即,存储系统10可以被实现并封装到不同类型的终端电子产品中。在如图2A中示出的一个示例中,存储器控制器20和单个存储器芯片25可以集成到存储器卡26中。存储器卡26可以包括PC卡(PCMCIA,个人计算机存储器卡国际协会)、CF卡、智能媒体(smart media,SM)卡、记忆棒、多媒体卡(MMC、RS-MMC、MMCmicro)、SD卡(SD、miniSD、microSD、SDHC)、UFS等。存储器卡26还可以包括存储器卡连接器24,该存储器卡连接器24将存储器卡26与主机(例如,图1中的主机15)耦合。在如图2B中示出的另一示例中,存储器控制器20和多个存储器芯片25可以集成到固态驱动器(solid state drive,SSD)27中。SSD 27还可以包括SSD连接器28,该SSD连接器28将SSD 27与主机(例如,图1中的主机15)耦合。
图3示出了根据一些实施例的存储器管芯100的自上而下视图。图3中示出的示例配置作为非限制性示例给出,并且应当认识到的是,存储器是可扩展的。在一些实施例中,存储器管芯100可以包括一个或多个存储器片存储区101,存储器片存储区101中的每个存储器片存储区可以包括多个存储器块103。可以在每个存储器片存储区101处发生相同和并发的操作。存储器块103(该存储器块103的大小可以是兆字节(megabytes,MB))是执行擦除操作的最小大小。存储器管芯100可以包括例如四个存储器片存储区101。每个存储器片存储区101可以包括例如六个存储器块103。每个存储器块103可以包括多个存储单元,其中每个存储单元可以通过诸如位线和字线之类的互连来寻址。位线和字线可以垂直布置(例如,分别以行和列),从而形成金属线阵列。位线和字线的方向在图3中被标记为“BL”和“WL”。在本公开中,存储器块103也被称为“存储器阵列”或“阵列”。存储器阵列是存储器设备中的执行存储功能的核心区域。
在一些实施例中,存储器管芯100还可以包括外围区域105、围绕存储器片存储区101的区域。外围区域105可以包括用于支持存储器阵列的功能的许多数字、模拟和/或混合信号电路,例如,页缓冲器、行和列解码器和感测放大器。外围电路使用有源和/或无源半导体器件(例如,晶体管、二极管、电容器、电阻器等),这对于本领域普通技术人员来说是显而易见的。
在一些实施例中,图3中示出的存储器管芯100中的存储器片存储区101的布置和每个存储器片存储区101中的存储器块103的布置可以仅用作示例,这不限制本公开的范围。
图4示出了根据一些实施例的存储器管芯100的示意图。在一些实施例中,存储器管芯100可以包括一个或多个存储器块103(例如,103-1、103-2、103-3)。每个存储器块103可以包括多个存储器串212。每个存储器串212包括多个存储单元340。共享相同字线的存储单元340形成存储页432。存储器串212还可以包括在每端处的至少一个场效应晶体管(例如,MOSFET),该至少一个场效应晶体管分别由下部选择栅(lower select gate,LSG)332和顶部选择栅(top select gate,TSG)334控制。顶部选择晶体管334-T的漏极端子可以连接到位线341,并且下部选择晶体管332-T的源极端子可以连接到阵列公共源极(arraycommon source,ACS)430。ACS 430可以由整个存储器块中的存储器串212共享,并且也被称为公共源极线。
在一些实施例中,存储器管芯100还可以包括外围电路,该外围电路可以包括用于支持存储器块103的功能的许多数字、模拟和/或混合信号电路,例如,页缓冲器/感测放大器50、行解码器/字线驱动器40、列解码器/位线驱动器52、控制电路70、电压发生器65和输入/输出缓冲器55。这些电路可以包括有源和/或无源半导体器件(例如,晶体管、二极管、电容器、电阻器等),这对于本领域普通技术人员来说是显而易见的。
在一些实施例中,存储器块103可以经由字线(word line,“WL”)333、下部选择栅(lower select gate,“LSG”)332和顶部选择栅(top select gate,“TSG”)334与行解码器/字线驱动器40耦合。存储器块103可以经由位线(bit line,“BL”)341与页缓冲器/感测放大器50耦合。行解码器/字线驱动器40可以响应于由控制电路70提供的X路径控制信号而选择存储器管芯100上的存储器块103中的一个存储器块。行解码器/字线驱动器40可以根据X路径控制信号来将从电压发生器65提供的电压传送到字线。在读取和编程操作期间,行解码器/字线驱动器40可以根据从控制电路70接收到的X路径控制信号来将读取电压Vread和编程电压Vpgm传送到选定字线,并且将通过电压Vpass传送到未选定字线。
在一些实施例中,列解码器/位线驱动器52可以根据从控制电路70接收到的Y路径控制信号来将禁止电压Vinhibit传送到未选定位线并且将选定位线连接到地。换言之,列解码器/位线驱动器52可以被配置为根据来自控制电路70的Y路径控制信号来选择或取消选择一个或多个存储器串212。页缓冲器/感测放大器50可以被配置为根据来自控制电路70的Y路径控制信号来从存储器块103读取数据以及将数据编程(写入)到存储器块103。例如,页缓冲器/感测放大器50可以存储要被编程到一个存储页432中的一页数据。在另一示例中,页缓冲器/感测放大器50可以执行验证操作以确保数据已经被正确地编程到每个存储单元340中。在又一个示例中,在读取操作期间,页缓冲器/感测放大器50可以感测流过位线341的电流并且将小信号放大到可测量的放大率,该电流反映存储单元340的逻辑状态(即,数据)。
在一些实施例中,输入/输出缓冲器55可以将I/O数据从/向页缓冲器/感测放大器50传送,并且将地址ADDR或命令CMD传送到控制电路70。在一些实施例中,输入/输出缓冲器55可以用作在(图1中的)存储器控制器20与存储器芯片25上的存储器管芯100之间的接口。
在一些实施例中,控制电路70可以响应于由输入/输出缓冲器55传送的命令CMD来控制页缓冲器/感测放大器50和行解码器/字线驱动器40。在编程操作期间,控制电路70可以控制行解码器/字线驱动器40和页缓冲器/感测放大器50,以对选定存储单元进行编程。在读取操作期间,控制电路70可以控制行解码器/字线驱动器40和页缓冲器/感测放大器50,以读取选定存储单元。X路径控制信号和Y路径控制信号包括行地址X-ADDR和列地址Y-ADDR,行地址X-ADDR和列地址Y-ADDR可以用于定位存储器块103中的选定存储单元。行地址X-ADDR可以包括页索引PD、块索引BD和片存储区索引PL以分别识别存储页432、存储器块103和存储器片存储区101(在图3中)。列地址Y-ADDR可以识别存储页432的数据中的字节或字。
在一些实施例中,电压发生器65可以在控制电路70的控制下生成要供应给字线和位线的电压。由电压发生器65生成的电压包括读取电压Vread、编程电压Vpgm、通过电压Vpass、禁止电压Vinhibit等。
需要注意的是,图1、图2A-2B和图3-4中的存储系统10和存储器管芯100中的电子组件的布置被示为非限制性示例。在一些实施例中,存储系统10和存储器管芯100可以具有其他布局并且可以包括附加组件。图4中示出的存储器管芯100上的组件(例如,控制电路70、I/O缓冲器55)也可以作为存储系统10中的独立电子组件移出存储器管芯100。图4中示出的存储器管芯100上的组件(例如,控制电路70、I/O缓冲器55)也可以移动到存储系统10中的其他组件,例如,控制电路70的一部分可以与存储器控制器20组合,反之亦然。
图5示出了根据一些实施例的3D存储器结构500的透视图。在一些实施例中,存储器管芯100可以是3D NAND存储器,并且3D存储器结构500可以是存储器管芯100的一部分,例如,在图3中的区域108中。3D存储器结构500可以包括阶梯区域210和沟道结构区域211。沟道结构区域211可以包括多个存储器串212,每个存储器串包括多个堆叠的存储单元340。阶梯区域210可以包括阶梯结构。
在一些实施例中,3D存储器结构500可以包括衬底330、衬底330上方的绝缘膜331、绝缘膜331上方的下部选择栅(LSG)332的层(tier)、以及控制栅极333的多个层(tier)(也被称为“字线(WL)”),该控制栅极333的多个层(tier)堆叠在LSG 332的顶部以形成交替的导电层和电介质层的膜堆叠体335。为清楚起见,与控制栅极的层(tier)相邻的电介质层未在图5中示出。
在一些实施例中,每一层(tier)的控制栅极由穿过膜堆叠体335的狭缝结构216-1和216-2分开。3D存储器结构500还可以包括在控制栅极333的堆叠体上方的顶部选择栅(top select gate,TSG)334的层(tier)。TSG 334、控制栅极333和LSG 332的堆叠体也可以称为“栅电极”。3D存储器结构500可以进一步包括在相邻LSG 332之间在衬底330的部分中的掺杂源极线区域344。3D存储器结构500的存储器串212中的每个存储器串可以包括延伸穿过绝缘膜331和交替的导电层和电介质层的膜堆叠体335的沟道孔336。存储器串212还可以包括在沟道孔336的侧壁上的存储膜337、在存储膜337上方的沟道层338、以及被沟道层338围绕的核心填充膜(core filling film)339。存储单元340(例如,340-1、340-2、340-3)可以形成在控制栅极333(例如,333-1、333-2、333-3)和存储器串212的交叉处。沟道层338的一部分可以响应于相应的控制栅极,并且也被称为存储单元的沟道338。3D存储器结构500还包括在TSG 334上方与存储器串212连接的多条位线(bit line,BL)341。3D存储器结构500还可以包括通过多个接触结构214与栅电极连接的多条金属互连线343。膜堆叠体335的边缘被配置为阶梯形状以允许电连接到栅电极的每一层(tier)。
在图5中,出于说明的目的,控制栅极的三个层(tier)333-1、333-2和333-3与TSG334的一个层(tier)和LSG 332的一个层(tier)被一起示出。在该示例中,每个存储器串212可以包括三个存储单元340-1、340-2和340-3,这三个存储单元340-1、340-2和340-3分别与控制栅极333-1、333-2和333-3相对应。在一些实施例中,控制栅极的数量和存储单元的数量可以多于三个以增加存储容量。3D存储器结构500还可以包括其他结构,例如,TSG切割、公共源接触部(即,阵列公共源极)和虚拟存储器串。为了简单起见,这些结构未在图5中示出。值得注意的是,图5中示出的3D存储器结构500可以仅用作示例,这不限制本公开的范围,并且还可以采用任何其他合适的3D存储器结构。
返回参考图4,在一些实施例中,存储器块103可以基于浮栅技术形成。在一些实施例中,存储器块103可以基于电荷捕获技术形成。基于电荷捕获的NAND闪速存储器可以提供高存储密度和高内在可靠性。以逻辑状态(“状态”,例如,存储单元340的阈值电压Vth)形式的存储数据取决于被捕获在存储单元340的存储膜337中的电荷载流子的数量。
在一些实施例中,在NAND闪速存储器中,可以针对存储页432执行读取操作和写入操作(也被称为编程操作),并且可以针对存储器块103执行擦除操作。
在一些实施例中,在NAND存储器中,存储单元340可以处于已擦除状态ER或已编程状态Pl。最初,可以通过在控制栅极333与沟道338之间实现负电压差,使得存储单元340的存储膜中的捕获的电荷载流子可以被去除,而将存储器块103中的存储单元340重置为已擦除状态ER作为逻辑“1”。例如,可以通过将存储单元340的控制栅极333设置为接地,并向ACS430施加高正电压(擦除电压Verase)来引起负电压差。在已擦除状态ER(“状态ER”),存储单元340的阈值电压Vth可以被重置为最低值。
在一些实施例中,在编程(即,写入)期间,在控制栅极333与沟道338之间的正电压差可以通过例如在控制栅极333上施加编程电压Vpgm(例如,10V到20V之间的正电压脉冲)并将对应的位线341接地来建立。结果,电荷载流子(例如,电子)可以注入到存储单元340的存储膜中,从而增加存储单元340的阈值电压Vth。因此,存储单元340可以被编程为已编程状态P1(“状态P1”或逻辑“0”)。
在一些实施例中,可以通过测量或感测存储单元的阈值电压Vth来确定存储单元的状态(例如,状态ER或状态P1)。在读取操作期间,可以在存储单元的控制栅极333上施加读取电压Vread,并且可以在位线341处测量流过存储单元的电流。可以在未选定字线上施加通过电压Vpass以接通未选定存储单元。
在一些实施例中,NAND闪速存储器可以被配置为在单层单元(single-levelcell,SLC)模式下操作。为了增加存储容量,NAND闪速存储器还可以被配置为在多层单元(multi-level cell,MLC)模式、三层单元(triple-level cell,TLC)模式、四层单元(quad-level cell,QLC)模式或这些模式中的任何模式的组合下操作。在SLC模式下,存储单元存储1个位,并且具有两个逻辑状态(“状态”):逻辑{1和0},即,状态ER和P1。在MLC模式下,存储单元存储2个位,并且具有四个逻辑状态:逻辑{11、10、01和00},即,状态ER、P1、P2和P3。在TLC模式下,存储单元存储3个位,并且具有8个逻辑状态:逻辑{111、110、101、100、011、010、001、000},即,状态ER和状态P1-P7。在QLC模式下,存储单元存储4个位,并且具有16个逻辑状态。存储系统10的存储器控制器20(参见图1)可以将从主机15接收到的数据转换为存储器管芯100上的存储单元的对应的逻辑状态,反之亦然。
图6示出了根据一些实施例的在三层单元(triple-level cell,TLC)模式下被编程的NAND闪速存储器的阈值电压Vth分布。在一些实施例中,存储单元的每个状态可以与阈值电压Vth的特定范围相对应,其中每个状态的阈值电压Vth分布可以用概率密度来表示。在一些实施例中,可以通过使用增量阶跃脉冲编程(incremental step pulse programming,ISPP)方案来对八个TLC状态进行编程,其中可以通过添加阶跃脉冲Vstep来增量地增加编程电压Vpgm。因此,八个TLC状态可以从具有较低阈值电压的状态P1到具有最高阈值电压的状态P7被编程。
在一些实施例中,在编程之后,可以在验证过程期间通过使用一个或多个读取参考电压VR1-VR7来验证八个TLC状态ER和P1-P7。通过将读取参考电压VR1-VR7中的一个或多个读取参考电压施加到目标存储单元的控制栅极,可以确定存储单元的阈值电压Vth的范围。例如,为了验证存储单元是否处于状态ER,可以使用读取参考电压VR1。如果目标存储单元处于状态ER,则目标存储单元的阈值电压Vth低于读取参考电压VR1。目标存储单元可以被接通并在沟道中形成导电路径。如果目标存储单元处于状态P1-P7中的任一状态,则目标存储单元的阈值电压Vth高于读取参考电压VR1。目标存储单元由此被关断。通过经由页缓冲器/感测放大器50在对应的位线处测量或感测通过目标存储单元的电流,可以验证目标存储单元的阈值电压Vth或状态。
在一些实施例中,如上面所描述的,为了确定在SLC模式下存储的两个状态ER和Pl,仅依赖于读取参考电压VRl就足够了。为了确定在MLC模式下的四个状态ER和P1-P3,可以使用读取参考电压VR1、VR2和VR3。为了确定在TLC模式下的八个状态ER和P1-P7,可以使用读取参考电压VR1-VR7。例如,在TLC模式下,状态ER的阈值电压低于VR1,并且状态P7的阈值电压高于VR7,其中状态P1的阈值电压在VR1与VR2之间。可以类似地确定状态P2-P6。
图7示出了根据一些实施例的用于将存储单元编程到目标逻辑状态(例如,状态P1)的过程流程700。应当认识到的是,过程流程700不是穷尽性的,并且也可以在所示的操作步骤中的任一操作步骤之前、之后或之间执行其他操作步骤。在一些实施例中,过程流程700的一些操作步骤可以被省略,或者可以包括其他操作步骤,为了简单起见,在这里不再描述。在一些实施例中,过程流程700的操作步骤可以以不同的次序执行和/或变化。
在一些实施例中,在操作步骤S705处,可以重置编程循环计数(PLC),例如,PLC=0。当存储器控制器20(图1)向存储器管芯100发送用于对存储器管芯100上的存储单元进行编程的命令时,可以开始操作步骤S705。
在操作步骤S710处,通过将编程电压Vpgm施加到存储单元的字线来对存储单元进行编程。并且在操作步骤S715处,PLC可以增加1,即,PLC=PLC+1。可以根据存储单元的目标逻辑状态来选择编程电压Vpgm,其中目标逻辑状态取决于由存储控制器20发送的编程数据。
在操作步骤S720处,可以通过在存储单元的字线上施加第一读取参考电压并在对应的位线处测量流过存储单元的电流,来将存储单元的阈值电压Vth与第一读取参考电压(也被称为编程验证电平)进行比较。例如,如果存储单元要被编程为目标逻辑状态P1,则可以使用第一读取参考电压VR1(参见图6),因为对于状态P1,通过条件是存储单元位于读取参考电压VR1与VR2之间。
在操作步骤S725处,确定存储单元的阈值电压Vth是高于还是低于第一读取参考电压VRl。如先前所讨论的,如果存储单元的阈值电压Vth低于第一读取参考电压VR1,则存储单元可以被接通,从而在沟道中形成导电路径。由(图4中的)页缓冲器/感测放大器50在对应的位线处测量的电流相对较高。如果存储单元的阈值电压Vth高于第一读取参考电压VR1,则存储单元被关断,并且由页缓冲器/感测放大器50在对应的位线处测量的电流相对较低。
如果存储单元的阈值电压Vth被确定为低于第一读取参考电压VRl,则过程流程700进行到操作步骤S730,在操作步骤S730处,检查PLC是否小于最大值PLCmax
在一些实施例中,最大值PLCmax可以是预定值,例如,PLCmax=25。在一些实施例中,可以根据在预筛选编程测试期间跨不同存储器管芯选择的一组存储单元的PLC来确定最大值PLCmax
如果PLC小于PLCmax,则在操作步骤S735处,编程电压Vpgm可以增加量ΔV,使得编程电压Vpgm=Vpgm+ΔV。并且在操作步骤S710处,可以利用增加的编程电压Vpgm再次对存储单元进行重新编程。
可以重复操作步骤S710-S735,直到存储单元达到期望的目标阈值电压Vth为止。然而,如果在操作步骤S730处,已经达到PLCmax但存储单元仍未被编程到目标逻辑状态,则在步骤S740处,可以识别存储单元具有编程失败。
如果在操作步骤S725处,存储单元的阈值电压Vth被确定为高于第一读取参考电压VRl,则可以在操作步骤S745将该阈值电压Vth与第二读取参考电压进行比较。如果存储单元要被编程到目标逻辑状态P1,则可以使用第二读取参考电压VR2(参见图6)。如果在操作步骤S750处,存储单元的阈值电压Vth被确定为低于第二读取参考电压VR2,则在操作步骤S755处,可以将存储单元识别为编程通过(即,被编程到目标逻辑状态)。在SLC模式下,只有在状态ER和P1的情况下,可以省略第二参考电压。
然而,如果在操作步骤S750处,存储单元的阈值电压Vth被确定为高于第二读取参考电压VR2,则在步骤S740处,可以识别存储单元具有编程失败,因为在编程期间,存储单元的阈值电压可以通过在存储单元的控制栅极(即,对应的字线)上施加编程电压Vpgm来增加,但该阈值电压不能减小。在3D NAND存储器中,在存储单元被擦除并重置为状态ER之后,可以将存储单元重新编程为具有较低阈值电压的逻辑状态。擦除操作将存储器块中的所有存储单元重置为状态ER,因为同一存储器块中的存储单元共享相同的阵列公共源极430。
返回参考图4,在一些实施例中,虽然存储器块(例如,存储器块103)是3D NAND存储器中的最小可擦除单元,但存储页(例如,存储页432)是用于读取和编程操作的最小可寻址单元。在读取和编程操作期间,可以根据由控制电路70接收到的地址ADDR中包括的页索引PD和块索引BD来读取或编程选定存储器块的存储页中的数据(即,逻辑状态)。可以通过在对应的位线341上施加禁止电压Vinhibit来禁止对已经达到目标逻辑状态(即,目标阈值电压)的存储单元进行进一步编程。
以上,已经描述了关于3D NAND存储器的结构及其功能的实施例。在一些实施例中,期望提供可靠的存储单元用于编程以及随后的擦除和重新编程。参考图7的该方法示出了如何在编程操作之后验证存储单元的示例。在过程流程700结束时,存储单元可以通过验证过程或使验证过程失败。本领域的技术人员将认识到的是,一旦对存储单元的编程和验证操作已经结束(通过或失败),编程和验证操作就可以继续到下一个存储单元(即,过程流程700可以在下一个存储单元处重新开始)。在一些实施例中,继续到下一个存储单元可以包括“掩蔽”完成的存储单元,使得算法迭代过程流程700不会错误地在同一存储单元上重复。掩蔽存储单元(或掩蔽存储位)可以被描述为临时或永久地标示或标记存储单元,使得可以基于标志调整未来的操作(例如,跳过未来的操作)。在一个示例中,当发现不可纠正的失败时,可以永久地掩蔽位。NAND控制器可能不允许对有缺陷的存储单元的任何进一步的使用。上面参考图4以及在对应的位线341上使用禁止电压Vinhibit描述了掩蔽的一个示例。
在一些实施例中,过程流程700对于要接收编程(即,将存储单元的状态从ER改变为诸如Pl之类的较高状态的操作)的存储单元可能是足够的。根据过程流程700,在S720处开始的验证过程可以跟随S710处的编程步骤(例如,利用编程电压对存储单元进行编程,然后验证正确性)。但是,要维持在ER状态下的存储单元是怎样呢?在示例场景中,寻求将8位串写入存储页432(图4)中的一个存储页。8位串可以包括例如与电子状态{P1 ER ER P1 ERP1 ER ER}相对应的位。可以认识到的是,接收到P1状态的存储单元将经历步骤S710,随后通过步骤S720和之后的步骤得到验证。然而,要维持在ER状态的单元将不经历步骤S710和S720。通常的做法是在将新数据写入块之前擦除存储器的块(例如,典型地,块中的所有存储单元在编程开始之前都以ER状态开始)。因此,为了将编程数据的ER状态写入存储单元中,NAND对存储单元不做任何事情(即,存储单元被跳过,这依赖于存储单元已经处于ER状态的假定)。
重申一下,在一些实施例中,对页进行编程并不等同于对页中的每个存储单元进行编程。一些单元可以跳过接收编程操作。因此,对页进行编程可以包括仅对页中的存储单元中的一个或多个存储单元进行编程。在存储单元被编程时执行验证(例如,ER→P1可以触发验证操作),而不是在存储单元要维持在ER时执行验证(例如,ER→ER存储单元未被编程,因此可以跳过验证)。其中,可能由于跳过验证而出现问题。如果跳过的存储单元中的现有状态不是预期的ER(例如,存储单元具有持续的P1状态),则这可能成为问题。在这种场景中,写入操作将在存储单元不处于ER状态时假定存储单元处于ER状态。进而,存储器控制器将假定“写入”操作ER→ER已成功执行(由于缺乏验证),但实际发生的是P1状态持续(P1→P1)。当将来从该存储单元中读取数据时,会发现数据已经损坏。因此,需要一种用于在不可纠正的纠错码(uncorrectable error correction code,UECC)出现之前提供数据保护,使得可以使数据丢失的机会最小化的方法和系统。
为了减轻如上面所描述的错误,可以引入操作以使诸如过程流程700之类的过程更加鲁棒。
图8示出了根据一些实施例的用于在NAND存储器中存储数据和对数据进行自验证的过程流程800。在一些实施例中,方法步骤中描述的功能可以由NAND存储器设备本身上的电路(例如,一个或多个处理器22(图1)、存储器芯片25中的控制电路(图10)等)来执行。在步骤S810处,可以将数据存储在NAND存储器的页中。要被存储的数据可以包括一系列位(例如,二进制数据),该一系列位也可以被称为编程数据(例如,要在页中编程的数据)。NAND存储器的页可以包括存储单元(例如,页432(图4))。存储可以包括根据编程数据对NAND存储器的选定页进行编程。选定页包括与字线相对应的多个存储单元。对选定页的编程可以包括使用多个编程电压的多个编程操作(步骤S810)。对选定页的编程还可以包括多个验证操作(步骤S820)。多个验证操作中的验证操作可以在多个编程操作中的对应的操作之后执行,以根据编程数据来确定选定页的已编程存储单元是否具有阈值电压电平。在步骤S820处,可以执行对存储单元的编程的验证,以确定编程是否被正确执行或者是否应该再次执行步骤S810(参见例如步骤S735(图7))。验证可以包括在存储单元中的已编程存储单元的字线上施加参考电压,并且在对应的位线处测量流过存储单元中的已编程存储单元的电流(参见例如S720(图7))。
在一些实施例中,在步骤S860处,可以在步骤S820的验证之后掩蔽存储单元中的已编程存储单元(例如,如果结果是通过,则在数据存储过程的其余部分掩蔽存储单元;如果结果为失败,则在S810处重新开始)。在步骤S865处,可以执行检查以确定目标数量的位是否已经在该页中被编程(例如,检查以查看编程数据的存储是完成还是未完成)。换言之,执行判断步骤,以确定根据编程数据的最后一个位是否已经在页中被编程(例如,最后一个位可以是根据编程数据要在页中被编程的最后一个非ER状态)。若存储尚未结束,则过程可以返回步骤S810并继续至后续的存储单元以存储编程的其余部分。应当认识到的是,过程流程800可以包括基于多个验证操作中的每一个验证操作返回通过结果来确定对选定页的编程的完成。确定编程完成的另一条件可以是考虑用于存储编程数据的n个位的存储单元,其中n是大于1的整数。该确定可以基于将编程数据的第n位编程到页中。
在一些实施例中,在步骤870处,可以通过对页执行读取操作并且将根据自验证读取操作确定出的数据与用于发起过程流程800的编程数据进行比较,来执行另一验证操作。图8的步骤可以被实现为NAND控制器(例如,控制器20(图1))中的固件方法。
在一些实施例中,在步骤S875处,将数据存储在NAND页中的过程流程800结束。这种结束可以通过来自附加验证步骤S870的通过或失败确定来标示。通过/失败确定可以基于由对页进行的读取操作确定出的存储数据与用于发起过程流程800的编程数据之间的精确匹配。在一些实施例中,通过/失败确定可以基于失败计数阈值。例如,如果失败位计数低于给定阈值,则NAND固件可以确定通过结果。应当认识到的是,术语“低于阈值”也旨在包括“低于或等于阈值”的范围,因为这两个术语之间的差异仅仅是阈值的偏移(例如,低于10与低于或等于9是相同的)。类似的逻辑适用于术语“高于阈值”和“高于或等于阈值”。可以基于其中要实现NAND存储器的环境的需要或偏好来调整阈值。例如,具有多个冗余备份机制的数据存储中心可能使用与个人计算机上的用户不同的阈值。
在一些实施例中,图8中示出的时间线示出了迄今为止描述的过程的示例。例如,可能存在用于对NAND存储器的页中的多个存储单元进行编程和验证的步骤S810和S820的多个循环(为了清楚起见,其他步骤未在时间线上示出,但应理解为存在)。在循环结束时(即,当编程数据已经完全传送到页时),执行步骤S870以使用NAND存储器的内部读取能力来验证存储的数据。然后在步骤S875处结束对NAND存储器的页的编程。
如先前提到的,在一些实施例中,过程流程800可以用于在过程流程700(图7)不执行的情况下(例如,当要被写入的数据处于ER状态,但对应的存储单元中存在的实际状态是P1等)增加NAND存储器鲁棒性。例如,当第一编程将数据存储在页上,但随后第二编程将该第二编程的数据存储在同一页上时(例如,存储器的过度编程),可能会出现这种实例。过度编程错误可能是由糟糕的编码引起的。无论是否执行步骤S820(或图7的步骤720),步骤870处的自验证都能够读取完整的页,由此检测未执行的步骤S820可能遗漏的任何错误。以这种方式可以防止数据损坏。例如,如果在步骤S875发出失败结果,则存储器控制器中的固件可以选择不同的页来存储编程数据。如果步骤S870的读取操作返回失败结果,则NAND存储器还可以防止对NAND存储器的一个或多个故障区域的进一步使用(例如,掩蔽NAND存储器的区域)。此外,步骤S870可以是数据存储过程结束时的单个实例,这可以导致与例如在每个循环之后执行读取验证相比小得多的时间负担。
在一些实施例中,步骤S870的NAND固件实现方式允许快速执行附加验证,以及在数据存储操作的早期阶段执行附加验证。由于对页的读取是由NAND存储器本身上的硬件执行的,因此读取操作也可以被称为内部读取,或自验证。相反,如果外部主机计算机要执行步骤S870,则所产生的附加时间负担可能高到足以阻碍执行步骤S870。
在一些实施例中,步骤S870的附加验证可能伴随某些缺点。例如,即使内部固件实现方式比主机固件实现方式更快,但验证步骤S870仍然可以将读取操作的时间增加到NAND存储器的消费者可能不期望的程度。毕竟,步骤S870是附加的读取步骤,并且可以为数据存储过程增加例如数十微秒。因此,NAND存储器固件可以实现有允许调整NAND固件如何执行步骤S870的特征。即,在一些实施例中,该方法可以包括在NAND存储器处接收输入以调整对数据在页中的存储进行的验证。
在一些实施例中,输入可以允许、禁用、在时间上偏移等对步骤S870的读取操作的执行以及限制NAND存储器的哪些区域要接收步骤S870。NAND存储器的某些区域可能比其他区域更可靠。因此,输入可以用于指定NAND存储器的一个或多个区域以允许或禁止执行步骤S870的读取操作。一个或多个指定区域可以包括例如以下各项中的至少一个:用于SLC的区域、用于MLC的区域、用于TLC的区域、用于QLC的区域、页、块或片存储区——仅举几个非限制性示例。作为示例,输入可以包括用于对第一SLC部分、第一TLC部分和第二TLC部分以及特定页执行自验证的指令。作为另一示例,输入可以包括用于对特定QLC部分执行自验证的指令。诸如“元素1、元素2和元素3中的至少一个”等之类的术语可以指代例如以下的排列:元素1中的一个或多个;元素2中的一个或多个;元素1中的一个或多个和元素2中的一个或多个;元素1中的一个或多个和元素3中的一个或多个;元素2中的一个或多个和元素3中的一个或多个;或元素1中的一个或多个、元素2中的一个或多个以及元素3中的一个或多个。对于具有更少或更多元素的组,可以设想对应的排列。
在一些实施例中,输入可以被实现为用户提供的命令的前缀,该命令用于执行数据存储操作。可以存在用于指定SLC/MLC/TLC/QLC模式的一位或两位。例如,可以存在用于指定TLC页的较上页、中间页或较低页中的任一个的三个位。
在一些实施例中,NAND固件可以确定在什么时间以及在哪里以自动化方式(无需用户输入)实现自验证。例如,NAND存储器可以实现对哪些存储单元或存储单元组有缺陷或以其他方式有风险的记录。基于记录,当将数据存储在已知具有相关风险的存储单元中时,NAND固件可以实现自验证。
在一些实施例中,输入还可以调整在数据存储过程期间如何处理某些数据(例如,延迟清除高速缓存的数据)。
图9示出了根据一些实施例的用于比较使用NAND固件执行的调整的时间线900和902。在一些实施例中,NAND存储器产品可以具有高速缓存系统实现。高速缓存系统可能与NAND固件自验证特征(例如,图8中的步骤S870的读取操作)冲突。因此,设想NAND固件可以取决于是否在NAND存储器中实现高速缓存来调整操作。对NAND操作的调整可以通过用户输入或通过NAND固件中的自动过程来控制。
在一些实施例中,时间线900示出了在NAND存储器的高速缓存区域中创建高速缓存数据传送A 904。然后由编程A使用高速缓存数据传送A,这在时间线900中表示为编程忙A906。编程忙A 906可以是例如对NAND存储器中的页的存储单元进行编程的操作(例如,根据过程流程800(图8))。在编程忙A 906期间,可以准备另一高速缓存数据传送908以用于将来执行编程B,这在时间线900中表示为编程忙B 910。高速缓存数据传送B 908的准备允许一旦编程忙A 906结束,就立即执行编程B。一个问题是创建高速缓存数据传送B 908可能会过写现有的高速缓存数据传送A 904。毕竟,高速缓冲存储装置被设计为小的,以用于快速和临时存储。然后,可能是编程忙A 906尝试执行自验证步骤S870(图8),却发现高速缓存已经被编程B占用。注意,在步骤S870处执行页读取时,高速缓存的数据可以用作比较的基础(图8)。
因此,在一些实施例中,当NAND存储器采用高速缓存时,NAND固件可以调整操作以便如时间线902中示出地操作。时间线900和902在执行的过程方面是相似的,然而,时间线902将高速缓存数据传送B 908的创建移动到编程忙A 906之后的时序。注意,这是一种折衷,其中放弃了高速缓存的时间节省,以允许使用NAND固件自验证。通过以这种方式安排高速缓存数据传送B 908的时序,编程忙906可以自由地包括步骤S870(图8)而没有发现被过写的高速缓存的风险。在一些实施例中,NAND固件可以调整时序。例如,NAND固件可以被配置为检测高速缓存的使用,然后基于检测来执行高速缓存数据传送B 908的创建的延迟。
早先提到,在一些实施例中,步骤S870(图8)的NAND固件实现方式允许在数据存储操作的早期阶段快速地执行自验证。该能力可以用于改进调试过程,以例如修复与双重编程相关的问题。
图10示出了根据一些实施例的用于对NAND存储器的页进行编程的过程流程1000。具体地,图10示出了其中发生双重编程事件的NAND存储器的一部分的三个快照。图10的示例场景应被理解为非限制性的(例如,编程可以写入多于或少于NAND存储器的6页,可以有其他方式导致双重编程错误等)。在步骤S1002处,可以由一个或多个计算设备(例如,主计算机15(图1))执行第一组指令。第一组指令可以包括用于根据第一编程数据将数据存储到NAND存储器的页的指令。在图10中示出的示例中,第一组指令已经使存储器控制器20(图1)根据第一编程数据将数据存储在Pg0-Pg6中(表示为Pg0 pgm-Pg6 pgm)。在步骤S1002处还示出了要开始下一个存储事件的地址。该地址由下一个编程指针1008表示,该编程指针1008指向Pg7(Pg7和之后的处于擦除状态(“ers”),准备好接收编程数据)。
在一些实施例中,在步骤S1004处,可以由一个或多个计算设备执行第二组指令。第二组指令可以包括用于根据第二编程数据将数据存储到NAND存储器的页的指令。然而,由于数据存储操作的编码的错误,编程指针被错误寻址到Pg4,Pg4存储的数据与第一编程数据相对应。该事件可以称为双重编程事件。错误寻址由错误的编程指针1008’表示,并且对应的被过写页表示为Pg4双重编程1010。
在一些实施例中,存储在Pg4中的数据直到稍后时间(例如,几分钟后、几天后等)才由一个或多个计算设备使用。在步骤S1006处,一个或多个计算设备执行从NAND存储器的Pg4读回数据的操作。由于Pg4中存在不可纠正的纠错码,该读取失败。Pg4处的数据很可能在此时已损坏,从而既不代表第一编程数据也不代表第二编程数据。如上面所解释的,发生这种情况是因为接收ER状态的存储单元被跳过。例如,具有被第二编程数据{P1 ER P1 ER}不正确过写的状态{ER P1 ER P1}的存储单元可能导致存储单元实际存储{P1 P1 P1 P1}。ER状态的跳过导致第一编程数据和第二编程数据的P1状态组合,从而导致存储的数据的损坏(不代表第一编程数据或第二编程数据中的任一者的无用数据)。
在一些实施例中,为了纠正错误寻址的错误(例如,参考图10所描述的错误),开发者可以实现调试措施来确定错误的原因。一旦确定了错误的原因,就可以对指令代码进行适当的纠正。再次强调,存储在Pg4中的数据可能直到几天后才能被读取。这可能给调试工作带来很大的障碍,因为错误寻址的发现可能要晚得多发生。在双重编程事件与随后的读取失败之间的时间内可能会发生许多操作。由于开发者没有追溯的益处,所以开发者没有太多的选择,只能怀疑所有操作可能有故障。然后,开发者可以针对每个操作设置测试以排除标称上工作的操作。应当认识到的是,如果要执行的测试数量为数百或数千个,这可能是一个繁琐的过程。为了减少这种负担,可以通过实现本文公开的NAND自验证实施例来增强调试过程。
图11示出了根据一些实施例的包括双重编程事件的过程流程1100、1102和1104。通过比较每个过程流程的差异,可以看出本文实施例中的NAND自验证方法可以通过在错误发生后立即检测错误来显著增强调试过程。在一些实施例中,由一个或多个计算设备执行的程序遇到了UECC存储器。错误的来源是未知的——例如,错误可能是从执行的程序的NAND读取数据时代码中的缺陷、一个或多个计算设备的逻辑中的缺陷、NAND存储器中的错误、NAND固件代码中的缺陷等。为了确定UECC的原因,开发者可以准备测试用例(例如,模拟)。测试用例可以包括遇到UECC的程序的执行,但要受到开发者施加的特定约束(例如,测试用例参数)。
在一些实施例中,过程流程1100可以包括步骤S1106、S1108、S1112和S1114。在步骤1106处,执行测试用例。在步骤S1108处,测试用例可以例如使用过程流程700(图7)与最终用户固件(例如,旨在供消费者使用的固件)交互以将数据存储在NAND存储器中。最终用户固件可以包括例如主机15(图1)中的固件和/或NAND存储器中的固件。在过程流程1100的上下文中,应该认识到的是,NAND固件不实现NAND自验证(例如,NAND自验证被禁用或不存在)。在步骤S1112处,在NAND存储器的页中发生双重编程写入(例如,Pg4双重编程1010(图10))。在步骤S1114处——可以是几分钟后、几天后或更长时间后——遇到UECC读取作为双重编程的结果。在这种场景中,程序的开发者几乎没有获得关于UECC是如何发生的附加信息,除了在步骤S1114处被告知测试约束能够产生UECC读取。错误的可能嫌疑人可以是在步骤S1106到S1114之间的时间时由程序和(一个或多个)固件执行的操作中的任何操作。开发者不知道步骤S1112处的双重编程事件,并且该演练的目标是发现双重编程事件。
在一些实施例中,开发者可以实现过程流程1102,过程流程1102相对于过程流程1100具有一些增强。过程流程1102可以包括步骤S1106、S1110、S1112和S1116。步骤1106可以如先前所描述的。现在的不同之处在于,在步骤1110处,允许测试用例与(例如,由开发者提供的)调试固件交互。调试固件是一种临时措施,该调试固件试图在接近可能导致UECC读取的任何原因时停止计算机操作。调试固件可以包括例如指令,该指令用于读取测试用例中过程的某些输出,然后当在输出中的一个输出中发现异常时停止测试用例的运行。然而,在步骤S1112处,发生双重编程错误,但写入数据的验证在一段时间内没有执行。在步骤S1116处,调试过程检测到异常并返回失败结果,从而停止测试用例。在这种场景中,由开发者实现的调试过程被更好地设计为通过比在过程流程1100的步骤S1114中的UECC读取事件更早地检测到异常来排除可能的错误原因。然而,可以通过如在过程流程1104中实现本文公开的NAND自验证实施例来进一步增强调试过程。
在一些实施例中,使用调试固件的又一个问题是这可以增加显著的运行时间和开销。例如,调试固件可以被设置为引入冗余的下一个编程指针,该冗余的下一个编程指针用于跟踪下一个编程指针1008(图10)。冗余的编程指针可以是指向虚拟层或深层的设置点。可以比较冗余的编程指针和下一个编程指针1008以确定匹配或是否发生数据损坏。此过程可能会添加大量调试代码并花费大量时间到达失败点。这会导致高开销,因为存在用于检查逻辑以查看NAND序列是否有故障的更多固件代码。此解决方案可能潜在地改变固件中的大部分。固件可以被看作流水线。每次执行冗余编程指针的比较时,流水线都会暂停,这可能增加大量时间。
在一些实施例中,过程流程1104可以包括步骤S1106、S1110、S1112’和S1116。步骤1106和S1110可以如先前所描述的。过程流程1104的不同在于启用经由NAND固件的自验证(例如,已经启用S870的读取步骤(图8))。在一些实施例中,步骤S870(图8)可以处于禁用状态以便改进系统性能,但可以在需要时启用该步骤S870(图8)。例如,调试固件可以包括用于NAND固件打开NAND自验证特征的指令。在步骤S1112’处,发生双重编程错误。与先前呈现的过程流程相比,过程流程1104可以在读回步骤处检测双重编程的页。读回失败并且NAND自验证过程发出失败指示——NAND存储器的特定页中的数据有错误。该指示可以用于在接近双重编程事件的时间点停止测试场景和调试过程。该信息对于快速识别代码的哪一部分是造成双重编程错误的原因很有价值。即,可以基于编程的停止的时序来进行调试。此外,与上面描述的冗余编程指针场景(其增加大量时间和开销)不同,使用步骤S870(图8)不会实现固件操作的如此大量的改变,并且时序影响不那么严重。步骤S870是使用NAND存储器的内部能力进行快速页读取。
双重编程事件和后续检测方法可以用以下方式描述。在一些实施例中,可以根据第一编程数据对NAND闪速存储器设备的选定页进行编程。然后,可以根据第二编程数据对选定页进行编程。选定页可以包括与字线相对应的存储单元(例如,页432(图4))。对选定页的编程可以包括使用多个编程电压的多个编程操作(例如,步骤S710(图7)或S810(图8))。对选定页的编程还可以包括多个验证操作。多个验证操作中的验证操作可以在多个编程操作中的对应的操作之后执行,以根据第一编程数据或第二编程数据来确定多个存储单元的已编程存储单元是否具有阈值电压电平(例如,步骤S720(图7)或S820(图8))。
然后,在一些实施例中,可以使用与NAND存储器相关联的固件对选定页执行自验证,以确定存储的第一数据是否被过写(或者如果指令以不同的次序执行,则确定第二数据是否被过写)。该方法可以包括在确定存储在选定页处的数据被过写时发出失败指示。自验证可以包括由NAND闪速存储器设备对选定页执行内部读取操作(例如,步骤S870(图8)),以确定存储在选定页处的数据。
应该认识到的是,在一些实施例中,参考图11描述的功能还可以结合参考其他附图描述的特征。例如,可以针对调试固件和/或NAND固件供应用于调整读取操作的执行的输入(例如,启用步骤S870(图8))。在另一示例中,如果NAND存储器具有高速缓存系统,则NAND自验证可以被配置为与先前参考图9描述的高速缓存特征交互。在又一示例中,输入也可以用于限制NAND存储器的将使用NAND自验证的区域,如参考图8所描述的。
图12示出了根据一些实施例的调试双重编程事件的时间线1200。在一些实施例中,时间线1200的上侧表示与调试固件相关的事件。时间线1200的下侧表示与编程的测试用例相关的事件。调试固件和测试用例可以实现先前参考图11描述的特征中的一个或多个特征。
在一些实施例中,调试固件在时间1202处启动。在时间1204处,调试固件向NAND存储器的固件发送输入以启用NAND自验证,如先前参考图8、图9和/或图11所描述的。在时间1206处,可以运行编程的测试用例。可以设想的是,基于测试用例的要求,测试用例在该时间点启动或测试用例先前启动并在时间1206处继续运行。在时间1208处,NAND自验证特征确定由于双重编程事件导致的失败。在时间1210处,调试固件和/或NAND固件被指示停止。在时间1212处,测试用例停止。在时间1214处,调试开始。由于测试用例和固件已经在双重编程事件后立即停止,因此可以显著简化调试步骤,因为将更容易识别已经导致双重编程事件发生的代码段。
在一些实施例中,调试可以由一个或多个计算设备(例如,主机15(图1))执行。
在一些实施例中,本文公开的NAND自验证特征可以在涉及用于防止数据损坏的数据备份的方法中实现。数据备份方案的一个示例可以包括存储驱动器的RAID布置(例如,使用物理驱动器、逻辑驱动器或物理驱动器和逻辑驱动器的组合)。存储驱动器可以包括一个或多个NAND存储器设备。RAID布置可以依赖于寻求保护的每个块的末尾处的所谓奇偶校验位。典型地,RAID布置依赖于控制器硬件支持来指示链接的存储驱动器以冗余布置操作。附加的控制器硬件支持可以导致附加的RAM和管芯尺寸成本。此外,可以限制每个奇偶校验组提供的保护量(例如,每个奇偶校验组一个数据错误)。
在一些实施例中,用于保护NAND存储器中的数据的RAID布置的替代方案可以实现所谓的SLC备份。
图13示出了根据一些实施例的用于执行SLC备份的过程流程1300。在一些实施例中,标准的MLC、TLC或QLC编程要在NAND存储器上执行。怀疑在NAND存储器的部分中,用于MLC、TLC或QLC编程的某些存储单元具有固有的相关联风险(例如,存在一个或多个存储单元可能无法正确接收编程的概率)。由于SLC编程比MLC、TLC或QLC编程可能更可靠,因此冗余SLC编程将与原始MLC、TLC或QLC编程一起执行。
在一些实施例中,提供用于存储在NAND存储器中的编程数据。在步骤S1302处,根据编程数据使用MLC、TLC或QLC编程(例如,使用过程流程700(图7)中的步骤)对NAND存储器的页进行编程。在步骤S1304处,使用一个或多个计算设备(例如,主机计算机15(图1))从NAND存储器读回MLC、TLC或QLC已编程页。注意,与从NAND存储器的固件21(图1)发起页读取指令相反,主机固件可以发出用于从NAND存储器读取的指令。在步骤S1306处,MLC、TLC或QLC编程也可以被编程到NAND存储器中的适当数量的SLC页中(例如,TLC编程数据可以写入三个SLC页)。保存到NAND存储器的SLC区域的编程数据可以为NAND存储器的不那么可靠的MLC、TLC或QLC区域的数据提供可靠的备份。然而,与过程流程1300相关联的时间负担可能是不希望的,特别是使用主机固件执行读回所花费的时间。
本文公开的NAND自验证方法可以用于修改SLC备份方案并缩短执行数据备份的时间负担,由此改进NAND存储器系统中的数据保护方法的性能。然而,在描述使用NAND自验证方法的备份操作之前,首先描述一种用于识别NAND存储器中不可靠区域的方法是有启发性的。
图14示出了根据一些实施例的用于识别NAND存储器中的不可靠区域的过程流程1400。在一些实施例中,应当认识到的是,不可靠区域可以指代NAND存储器的存在正确编程数据失败的风险的(一个或多个)区域(例如,不可靠区域具有编程数据失败的相关联的概率)。在一个非限制性示例中,可以将风险量化为阈值概率。低失败概率(例如,低于阈值)可以被认为是可靠的,反之亦然。例如,可以基于NAND固件的用户或开发者的需要来确定阈值概率。
在一些实施例中,在步骤S1402处,可以对NAND存储器执行数据存储测试。数据存储测试可以包括例如将数据存储在NAND存储器的页中(例如,使用过程流程700(图7))。数据存储测试还可以包括从NAND存储器的页读回存储的数据。在步骤S1404处,可以对在步骤S1402中读回的数据执行分析。该分析可以包括确定NAND存储器中的读取失败区域。该分析可以包括生成可靠和/或不可靠的一个或多个区域的列表。可靠性和/或不可靠性可以如上面所描述的那样被量化(例如,基于失败概率)。在步骤S1406处,确定出的具有可靠性/不可靠性的区域可以存储在NAND固件中和/或发送到NAND固件,以通知后续的SLC备份过程。
图15示出了根据一些实施例的用于在SLC备份过程中实现NAND自验证的过程流程1500。在一些实施例中,提供用于使用MLC、TLC或QLC编程存储在NAND存储器中的编程数据。然而,与过程流程1300(图13)相反,NAND存储器的被识别为不可靠的区域可以遵循过程流程1500。可以使用例如过程流程1400(图14)来确定不可靠区域。提供的数据根据编程数据被存储在NAND存储器的页中。
在一些实施例中,在步骤S1502处,可以根据编程数据对NAND存储器的第一页的存储单元进行编程(例如,使用步骤S710(图7)或S810(图8))。对NAND存储器的第一页的存储单元的编程可以使用SLC编程进行,该SLC编程可以比MLC、TLC或QLC编程更可靠。
在一些实施例中,在步骤S1504处,可以执行验证以确定对第一页的存储单元的编程是否正确地执行(例如,使用步骤S720(图7)或S820(图8))。注意,编程数据最初是针对MLC、TLC或QLC编程提供的。因此,可以使用SLC编程针对适当数量的附加页执行上面描述的数据存储操作(例如,QLC编程数据可以被写入四个SLC页)。
在一些实施例中,在步骤S1506处,可以根据编程数据对NAND存储器的第二页的存储单元进行编程(例如,使用步骤S710(图7)或S810(图8))。对NAND存储器的第二页的存储单元的编程可以使用MLC、TLC或QLC编程来执行。存储在NAND存储器的MLC、TLC或QLC区域中的数据与在步骤S1502处存储在NAND存储器的SLC区域中的数据匹配。
在一些实施例中,在步骤S1508处,可以执行验证以确定对第二页的存储单元的编程是否正确地执行(例如,使用步骤S720(图7)或S820(图8))。
在一些实施例中,在步骤S1510处,可以使用与NAND存储器相关联的固件对第二页执行读取操作,以验证第二页中数据的存储(例如,NAND自验证,类似于步骤S870(图8))。使用NAND内部固件来验证已编程的第二页(即,(一个或多个)MLC、TLC或QLC页),编程的验证可以比使用主机固件执行验证(如步骤S1304(图13)中执行的)显著更快地执行。即,过程流程1500是SLC备份方法的一部分,该SLC备份方法包括不使用与被配置为执行SLC备份方法的一个或多个主机计算设备相关联的固件对第二页执行读取操作,该一个或多个主机计算设备是NAND存储器的主机。换言之,使用与NAND存储器相关联的固件对第二页执行读取操作还包括与使用与一个或多个主机计算设备相关联的固件对第二页执行读取操作相比,减少完成备份方法的时间。在一些示例中,与使用与一个或多个主机计算设备相关联的固件对第二页执行读取操作相比,完成速度可以提高5%或更多、10%或更多、或15%或更多。
在一些实施例中,在步骤S1512处,可以释放第一页(SLC区域)以准备接收新数据(即,可以使第一页中的存储的数据无效和/或擦除)。
参考图8进行了描述,在一些实施例中,输入可以用于调整使用NAND固件21(图1)的读取操作的执行。此外,参考图14进行了描述,具有可靠性/不可靠性的一个或多个区域可以被确定、存储和/或发送到NAND固件以通知随后的SLC备份过程。图16示出了与图8和图14的这些方面相关的附加细节——示例以非限制性的能力提供。即,应该认识到的是,图8、图14或图16中未明确示出的附加特征仍是基于参考其他附图描述的实施例而设想的。
图16示出了根据一些实施例的用于在SLC备份过程中实现NAND自验证的过程流程1600。在一些实施例中,在步骤S1602处,可以启动一个或多个固件。一个或多个固件可以包括例如存储系统10(例如,NAND存储器)的固件21(图1)和/或提供在NAND存储器与一个或多个主机计算设备之间的使能通信的一个或多个计算设备的固件。在启动时,在步骤S1604处,可以启用和配置NAND固件中的NAND自验证特征(例如,启用执行步骤S870(图8))。可以使用输入来实现NAND自验证特征的启用(例如,如参考时间1204(图12)所描述的)。该输入还可以包括NAND存储器的不可靠区域的信息(例如,如参考图14所描述的)。
在一些实施例中,随着使用与NAND存储器相关联的固件启用读取操作,可以选择NAND存储器的一个或多个区域。可以对选定的一个或多个区域执行NAND自验证。可以使用输入指定一个或多个选定区域(例如,不可靠区域)。这可以通过不对被确定为可靠的区域执行NAND自验证来显著改进SLC备份过程的速度(例如,如参考图14所描述的)。
先前已经描述,在一些实施例中,输入可以被实现为用户提供的命令的前缀,该命令用于执行数据存储操作。在步骤S1604处,随着NAND自验证特征的启用,可以进行多种配置。例如,步骤S1604可以包括配置字线位图(以选择字线或页)、配置串位图(以选择串)、配置页类型位图(以选择特定页,例如,较上页、中间页、较低页)、以及配置存储器级别类型(以选择MLC、TLC或QLC)。先前参考图8描述了选择NAND存储器中的特定位置。
在一些实施例中,在步骤S1606处,可以对在步骤S1604中指定的NAND存储器的选定区域执行SLC备份过程。可以通过执行过程流程1500(图5)来实现步骤S1606。可以使用步骤S1502和S1504(图15)来实现对NAND存储器的SLC区域的写入。可以使用步骤S1506和S1508(图15)来实现对NAND存储器的MLC、TLC或QLC区域的写入。可以使用步骤S1510(图15)或S870(图8)来实现执行NAND自验证。可以使用步骤S1512来实现不需要的SLC区域的无效化。
本文公开的实施例中的方法步骤可以以任何可想象的次序执行,并且不要求执行所有步骤。
总之,本公开提供了一种用于NAND存储器的数据保护的方法。编程方法可以包括根据编程数据对NAND闪速存储器设备的选定页进行编程。选定页可以包括与字线相对应的多个存储单元。对选定页的编程可以包括使用多个编程电压的多个编程操作。对选定页的编程还可以包括多个验证操作。多个验证操作中的验证操作可以在多个编程操作中的对应的编程操作之后执行,以根据编程数据来确定选定页的已编程存储单元是否具有阈值电压电平。编程方法还可以包括基于多个验证操作中的每一个验证操作返回通过结果来确定对选定页的编程的完成。编程方法还可以包括在确定之后,由NAND闪速存储器设备对选定页执行读取操作,以根据编程数据来对存储在选定页处的数据进行自验证。
本公开还提供了一种可以提供数据保护的NAND闪速存储器设备。NAND闪速存储器设备可以包括存储器阵列和外围电路。存储器阵列可以包括多个页。多个页中的每一个页可以包括与字线相对应的多个存储单元。外围电路可以经由字线耦合到多个页。外围电路可以根据编程数据对NAND闪速存储器设备的选定页进行编程。对选定页的编程可以包括使用多个编程电压的多个编程操作。对选定页的编程还可以包括多个验证操作。多个验证操作中的验证操作可以在多个编程操作中的对应的编程操作之后执行,以根据编程数据来确定选定页的已编程存储单元是否具有阈值电压电平。外围电路还可以基于多个验证操作中的每一个验证操作返回通过结果来确定对选定页的编程的完成。外围电路还可以在确定之后,由NAND闪速存储器设备对选定页执行读取操作,以根据编程数据来对存储在选定页处的数据进行自验证。
本公开还提供了一种可以提供用于NAND存储器的数据保护的系统。该系统可以包括可以存储数据的NAND闪速存储器设备。NAND闪速存储器设备可以包括存储器阵列和外围电路。存储器阵列可以包括多个页。多个页中的每一个页可以包括与字线相对应的多个存储单元。外围电路可以经由字线耦合到多个页。外围电路可以根据编程数据对NAND闪速存储器设备的选定页进行编程。对选定页的编程可以包括使用多个编程电压的多个编程操作。对选定页的编程还可以包括多个验证操作。多个验证操作中的验证操作可以在多个编程操作中的对应的编程操作之后执行,以根据编程数据来确定选定页的已编程存储单元是否具有阈值电压电平。外围电路还可以基于多个验证操作中的每一个验证操作返回通过结果来确定对选定页的编程的完成。外围电路还可以在确定之后,由NAND闪速存储器设备对选定页执行读取操作,以根据编程数据来对存储在选定页处的数据进行自验证。
具体实施例的上述描述将如此充分地揭示本公开的一般性质,以至于其他人可以通过应用本领域内的知识来针对各种应用容易地修改和/或适应这样的具体实施例,而无需过度实验,且不脱离本公开的一般概念。因此,基于本文所呈现的公开内容和指导,这种适应和修改旨在落入所公开实施例的等同物的含义和范围内。应当理解,本文的措辞或术语是出于描述而非限制的目的,使得本说明书的术语或措辞将由本领域技术人员鉴于公开和指导来解释。
本公开的实施例已经在上面借助说明指定功能的实现方式以及指定功能的关系的功能构建块进行了描述。为了便于描述,本文已经任意定义了这些功能构建块的边界。只要适当地执行指定功能以及指定功能的关系,就可以定义替代边界。
发明内容和摘要部分可以阐述如(一个或多个)发明人所设想的本公开的一个或多个示例性实施例但不是所有示例性实施例,因此,不旨在以任何方式限制本公开和所附权利要求书。
本公开的广度和范围不应受上述示例性实现方式中的任何示例性实现方式的限制,而应仅根据所附权利要求书及其等效物来限定。

Claims (36)

1.一种用于NAND闪速存储器设备的编程方法,所述编程方法包括:
根据编程数据对所述NAND闪速存储器设备的选定页进行编程,其中,所述选定页包括与字线相对应的多个存储单元,对所述选定页的所述编程包括:
使用多个编程电压的多个编程操作;以及
多个验证操作,其中,所述多个验证操作中的验证操作在所述多个编程操作中的对应的编程操作之后执行,以根据所述编程数据来确定所述选定页的已编程存储单元是否具有阈值电压电平;
基于所述多个验证操作中的每一个验证操作返回通过结果来确定对所述选定页的所述编程的完成;以及
在所述确定之后,由所述NAND闪速存储器设备对所述选定页执行读取操作,以根据所述编程数据来对存储在所述选定页处的数据进行自验证。
2.根据权利要求1所述的编程方法,其中:
所述多个存储单元中的每一个存储单元被配置为存储所述编程数据的n个位;
n是大于1的整数;以及
所述确定还基于将所述编程数据的第n位编程到所述页中。
3.根据权利要求1所述的编程方法,其中,所述确定包括:确定所述编程数据的最后一位是否已经被编程到所述页中。
4.根据权利要求1所述的编程方法,还包括:
比较根据所述读取操作确定出的数据和所述编程数据;以及
如果失败位计数低于阈值则确定通过结果,或者如果所述失败位计数高于阈值则确定失败结果。
5.根据权利要求1所述的编程方法,还包括:基于所述读取操作产生失败结果,根据所述编程数据对所述NAND闪速存储器设备的另一页进行编程,由此防止存储在所述选定页处的所述数据的损坏。
6.根据权利要求1所述的编程方法,还包括:由所述NAND闪速存储器设备接收输入以调整所述读取操作的所述执行。
7.根据权利要求6所述的编程方法,还包括:将所述读取操作的所述执行限制到所述NAND闪速存储器设备的由所述输入指定的一个或多个区域,其中,一个或多个指定区域包括以下各项中的至少一个:
用于单层单元(SLC)的区域;
用于多层单元(MLC)的区域;
用于三层单元(TLC)的区域;
用于四层单元(QLC)的区域;
页;
块;以及
片存储区。
8.根据权利要求1所述的编程方法,还包括:延迟对未来编程数据进行高速缓存操作,直到所述读取操作的所述执行之后为止。
9.根据权利要求8所述的编程方法,还包括:检测所述高速缓存操作的使用,其中,所述延迟基于检测到所述高速缓存操作的使用。
10.根据权利要求1所述的编程方法,还包括:在所述验证操作中的验证操作之后,掩蔽所述选定页的已编程存储单元中的对应的已编程存储单元。
11.根据权利要求10所述的编程方法,其中,所述掩蔽包括将禁止电压施加到所述NAND闪速存储器设备的一条或多条位线。
12.根据权利要求1所述的编程方法,还包括:基于所述读取操作产生失败结果,来掩蔽所述NAND闪速存储器设备的一个或多个区域。
13.一种NAND闪速存储器设备,所述NAND闪速存储器设备包括:
存储器阵列,所述存储器阵列包括多个页,所述多个页中的每一个页包括与字线相对应的多个存储单元;以及
外围电路,所述外围电路经由所述字线耦合到所述多个页并且被配置为:
根据编程数据对所述NAND闪速存储器设备的选定页进行编程,其中,对所述选定页的所述编程包括:
使用多个编程电压的多个编程操作;以及
多个验证操作,其中,所述多个验证操作中的验证操作在所述多个编程操作中的对应的编程操作之后执行,以根据所述编程数据来确定所述选定页的已编程存储单元是否具有阈值电压电平;
基于所述多个验证操作中的每一个验证操作返回通过结果来确定对所述选定页的所述编程的完成;以及
在所述确定之后,由所述NAND闪速存储器设备对所述选定页执行读取操作,以根据所述编程数据来对存储在所述选定页处的数据进行自验证。
14.根据权利要求13所述的NAND闪速存储器设备,其中:
所述多个存储单元中的每一个存储单元被配置为存储所述编程数据的n个位;
n是大于1的整数;以及
所述确定还基于将所述编程数据的第n位编程到所述选定页中。
15.根据权利要求13所述的NAND闪速存储器设备,其中,所述确定包括:确定所述编程数据的最后一位是否已经被编程到所述选定页中。
16.根据权利要求13所述的NAND闪速存储器设备,其中,所述读取操作包括:
比较根据所述读取操作确定出的数据和所述编程数据;以及
如果失败位计数低于阈值则确定通过结果,或者如果所述失败位计数高于阈值则确定失败结果。
17.根据权利要求13所述的NAND闪速存储器设备,其中,所述外围电路还被配置为:基于所述读取操作产生失败结果,根据所述编程数据对所述NAND闪速存储器设备的另一页进行编程,由此防止存储在所述选定页处的所述数据的损坏。
18.根据权利要求13所述的NAND闪速存储器设备,其中,所述NAND闪速存储器设备被配置为:接收输入以调整所述读取操作的所述执行。
19.根据权利要求18所述的NAND闪速存储器设备,其中,所述NAND闪速存储器设备还被配置为:将所述读取操作的所述执行限制到所述NAND闪速存储器设备的由所述输入指定的一个或多个区域,其中,一个或多个指定区域包括以下各项中的至少一个:
用于单层单元(SLC)的区域;
用于多层单元(MLC)的区域;
用于三层单元(TLC)的区域;
用于四层单元(QLC)的区域;
页;
块;以及
片存储区。
20.根据权利要求13所述的NAND闪速存储器设备,其中,所述NAND闪速存储器设备被配置为:延迟对未来编程数据进行高速缓存操作,直到所述读取操作的所述执行之后为止。
21.根据权利要求20所述的NAND闪速存储器设备,其中,所述NAND闪速存储器设备还被配置为:检测所述高速缓存操作的使用,其中,所述延迟基于检测到所述高速缓存操作的使用。
22.根据权利要求13所述的NAND闪速存储器设备,其中,所述NAND闪速存储器设备被配置为:在所述验证操作中的验证操作之后,掩蔽所述选定页的已编程存储单元中的对应的已编程存储单元。
23.根据权利要求22所述的NAND闪速存储器设备,其中,所述掩蔽包括将禁止电压施加到所述NAND闪速存储器设备的一条或多条位线。
24.根据权利要求13所述的NAND闪速存储器设备,其中,所述NAND闪速存储器设备被配置为:基于所述读取操作产生失败结果,来掩蔽所述NAND闪速存储器设备的一个或多个区域。
25.一种存储器系统,所述存储器系统包括:
NAND闪速存储器设备,所述NAND闪速存储器设备被配置为存储数据,所述NAND闪速存储器设备包括:
存储器阵列,所述存储器阵列包括多个页,所述多个页中的每一个页包括与字线相对应的多个存储单元;以及
外围电路,所述外围电路经由所述字线耦合到所述多个页并且被配置为:
根据编程数据对所述NAND闪速存储器设备的选定页进行编程,其中,对所述选定页的所述编程包括:
使用多个编程电压的多个编程操作;以及
多个验证操作,其中,所述多个验证操作中的验证操作在所述多个编程操作中的对应的编程操作之后执行,以根据所述编程数据来确定所述选定页的已编程存储单元是否具有阈值电压电平;
基于所述多个验证操作中的每一个验证操作返回通过结果来确定对所述选定页的所述编程的完成;以及
在所述确定之后,由所述NAND闪速存储器设备对所述选定页执行读取操作,以根据所述编程数据来对存储在所述选定页处的数据进行自验证;以及
存储器控制器,所述存储器控制器耦合到所述NAND闪速存储器设备并且被配置为控制所述NAND闪速存储器设备。
26.根据权利要求25所述的存储器系统,其中:
所述多个存储单元中的每一个存储单元被配置为存储所述编程数据的n个位;
n是大于1的整数;以及
所述确定还基于将所述编程数据的第n位编程到所述选定页中。
27.根据权利要求25所述的存储器系统,其中,所述确定包括:确定所述编程数据的最后一位是否已经被编程到所述选定页中。
28.根据权利要求25所述的存储器系统,其中,所述读取操作包括:
比较根据所述读取操作确定出的数据和所述编程数据;以及
如果失败位计数低于阈值则确定通过结果,或者如果所述失败位计数高于阈值则确定失败结果。
29.根据权利要求25所述的存储器系统,其中,所述外围电路还被配置为:基于所述读取操作产生失败结果,根据所述编程数据对所述NAND闪速存储器设备的另一页进行编程,由此防止存储在所述选定页处的所述数据的损坏。
30.根据权利要求25所述的存储器系统,其中,所述NAND闪速存储器设备还被配置为:接收输入以调整所述执行读取操作。
31.根据权利要求30所述的存储器系统,其中,所述NAND闪速存储器设备还被配置为:将所述读取操作的所述执行限制到所述NAND闪速存储器设备的由所述输入指定的一个或多个区域,其中,一个或多个指定区域包括以下各项中的至少一个:
用于单层单元(SLC)的区域;
用于多层单元(MLC)的区域;
用于三层单元(TLC)的区域;
用于四层单元(QLC)的区域;
页;
块;以及
片存储区。
32.根据权利要求25所述的存储器系统,其中,所述NAND闪速存储器设备还被配置为:延迟对未来编程数据进行高速缓存操作,直到所述读取操作的所述执行之后为止。
33.根据权利要求32所述的存储器系统,其中,所述NAND闪速存储器设备还被配置为:检测所述高速缓存操作的使用,其中,所述延迟基于检测到所述高速缓存操作的使用。
34.根据权利要求25所述的存储器系统,其中,所述NAND闪速存储器设备还被配置为:在所述验证操作中的验证操作之后,掩蔽所述选定页的已编程存储单元中的对应的已编程存储单元。
35.根据权利要求34所述的存储器系统,其中,所述掩蔽包括将禁止电压施加到所述NAND闪速存储器设备的一条或多条位线。
36.根据权利要求25所述的存储器系统,其中,所述NAND闪速存储器设备还被配置为:基于所述读取操作产生失败结果,来掩蔽所述NAND闪速存储器设备的一个或多个区域。
CN202280000386.9A 2022-01-20 2022-01-20 使用内部固件执行自验证的nand存储器中的数据保护 Pending CN114586102A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2022/072873 WO2023137647A1 (en) 2022-01-20 2022-01-20 Data protection in nand memory using internal firmware to perform self-verification

Publications (1)

Publication Number Publication Date
CN114586102A true CN114586102A (zh) 2022-06-03

Family

ID=81767533

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280000386.9A Pending CN114586102A (zh) 2022-01-20 2022-01-20 使用内部固件执行自验证的nand存储器中的数据保护

Country Status (5)

Country Link
US (1) US11887679B2 (zh)
KR (1) KR20230113692A (zh)
CN (1) CN114586102A (zh)
TW (1) TW202331730A (zh)
WO (1) WO2023137647A1 (zh)

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60302473T2 (de) 2002-07-22 2006-08-24 Advanced Micro Devices Inc., Sunnyvale Built-in-self-test für flash speicherzellen
KR100851853B1 (ko) * 2006-11-22 2008-08-13 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 및 프로그램 검증방법
CN101800077B (zh) * 2009-02-11 2012-04-18 北京兆易创新科技有限公司 一种对闪存进行数据编程的方法和装置
US9666286B2 (en) 2014-09-28 2017-05-30 Aplus Flash Technology, Inc. Self-timed SLC NAND pipeline and concurrent program without verification
KR102292217B1 (ko) * 2015-02-06 2021-08-24 삼성전자주식회사 내부적으로 데이터 읽기 검증을 수행할 수 있는 메모리 장치, 이의 작동 방법, 및 이를 포함하는 메모리 시스템
KR20170065969A (ko) * 2015-12-04 2017-06-14 에스케이하이닉스 주식회사 메모리 장치 및 그의 동작방법
KR102458918B1 (ko) * 2016-02-24 2022-10-25 삼성전자주식회사 메모리 장치 및 메모리 시스템
KR20210092860A (ko) * 2020-01-16 2021-07-27 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 스토리지 장치
CN113692623A (zh) * 2021-06-30 2021-11-23 长江存储科技有限责任公司 用于三维nand存储器的数据保护

Also Published As

Publication number Publication date
US11887679B2 (en) 2024-01-30
KR20230113692A (ko) 2023-08-01
WO2023137647A1 (en) 2023-07-27
US20230230644A1 (en) 2023-07-20
TW202331730A (zh) 2023-08-01

Similar Documents

Publication Publication Date Title
US10019332B1 (en) Non-volatile memory with program failure recovery
US8942028B1 (en) Data reprogramming for a data storage device
WO2023272548A1 (en) Data protection for three-dimensional nand memory
US20240161789A1 (en) Page buffer circuits in three-dimensional memory devices
CN112988053A (zh) 存储装置及其操作方法
US20240152422A1 (en) Firmware repair for three-dimensional nand memory
TW202331728A (zh) 用於nand快閃記憶體設備的編程方法、nand快閃記憶體設備及記憶體系统
CN112908370A (zh) 存储器装置和操作该存储器装置的方法
US11984193B2 (en) Page buffer circuits in three-dimensional memory devices
WO2022247775A1 (zh) 存储器及其擦除验证方法、操作方法、存储器系统
WO2023137576A1 (en) Double program debug method for nand memory using self-verification by internal firmware
WO2023137647A1 (en) Data protection in nand memory using internal firmware to perform self-verification
US20240061606A1 (en) Read retry method for enhancing read performance and stability of 3d nand memory
US20240046980A1 (en) Systems, methods and media of optimization of temporary read errors in 3d nand memory devices
US11966608B2 (en) Memory controller with improved data reliability and memory system including the same
US11769559B2 (en) Methods of reducing program disturb by array source coupling in 3D NAND memory devices
WO2022204930A1 (en) Asynchronous multi-plane independent scheme dynamic analog resource sharing in three-dimensional memory devices
US20240013842A1 (en) Memory and its erase verification method, operation method, and a memory system
CN115705908A (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