CN112289358A - 三维存储器系统和对三维存储器进行编程的方法 - Google Patents

三维存储器系统和对三维存储器进行编程的方法 Download PDF

Info

Publication number
CN112289358A
CN112289358A CN202011202078.3A CN202011202078A CN112289358A CN 112289358 A CN112289358 A CN 112289358A CN 202011202078 A CN202011202078 A CN 202011202078A CN 112289358 A CN112289358 A CN 112289358A
Authority
CN
China
Prior art keywords
memory
programming
round
word line
subblock
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.)
Granted
Application number
CN202011202078.3A
Other languages
English (en)
Other versions
CN112289358B (zh
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
Priority to CN202011202078.3A priority Critical patent/CN112289358B/zh
Publication of CN112289358A publication Critical patent/CN112289358A/zh
Application granted granted Critical
Publication of CN112289358B publication Critical patent/CN112289358B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/08Address circuits; Decoders; Word-line control circuits

Landscapes

  • Read Only Memory (AREA)

Abstract

公开了一种三维(3D)存储器系统,包括:存储块,所述存储块分成多个存储子块,每个存储子块包括多个存储单元,以及所述存储块包括多个字线;以及控制器,配置为通过两轮编程方式对所述存储块中的存储单元进行编程,其中,所述编程包括:对所述多个字线中的第一字线上包括的在所述多个存储子块中的存储单元进行第一轮编程;对所述多个字线中与所述第一字线相邻的第二字线上包括的在所述多个存储子块的一部分存储子块中的存储单元进行第一轮编程,其中,所述一部分存储子块至少包括第一存储子块;对所述第一字线上包括的在所述第一存储子块中的存储单元进行第二轮编程。

Description

三维存储器系统和对三维存储器进行编程的方法
技术领域
本公开的实施例涉及三维(3D)存储器件,更具体地,涉及通过两轮编程方式对三维存储器进行写编程的方法和系统。
背景技术
闪存存储器件(flash memory device)可在不供电的情况长时间储存数据,并可提供例如高集成水平、快速存取、易清除与重写等好处。为了改良闪存存储器件的位密度与降低闪存存储器件的成本,已开发了3D NAND存储器件来解决平面存储单元的密度限制。
3D NAND存储器件可包括存储块(也称为存储阵列)与用以控制进出存储块的信号的外围器件。3D NAND存储器件包括设置在衬底之上的水平式字线的堆叠,并搭配在衬底中穿过并与字线交叉的垂直存储串。各存储串可包括垂直半导体通道、隧穿氧化层与电荷捕捉层,其中电荷捕捉层可从半导体通道或字线捕获电荷或去除捕获电荷。字线与存储串的交叉点形成存储单元。举例来说,32个字线与一个存储串交叉而形成沿着存储串排列的32个存储单元。
每个存储单元能够存储一个或多个比特,例如,SLC(单级单元,single-levelcell)类型的一个存储单元能够存储一个比特,MLC(多级单元,multi-level cell)类型的一个存储单元能够存储两个比特,TLC(三级单元,triple-level cell)类型的一个存储单元能够存储三个比特,QLC(四级单元,quad-level cell)类型的一个存储单元能够存储四个比特,PLC(五级单元,penta-level cell)类型的一个存储单元能够存储五个比特,等等。上述MLC、TLC、QLC、PLC等统称为多级存储单元。
一个多级存储单元具有多个状态(例如多个阈值电压),从而通过将一个多级存储单元编程到多个状态之一来将数据比特写入到该存储单元。例如,MLC具有四个状态,四个状态分别由两个比特决定,TLC具有八个状态,八个状态分别由三个比特决定,QLC具有十六个状态,十六个状态分别由四个比特决定,PLC具有三十二个状态,三十二个状态分别由五个比特决定,等等。
在对于多级存储器块的写入编程过程中,由于相邻存储单元之间的耦合效应会产生存储单元间干扰(CCI,cell-to-cell interference)。为了降低该干扰,一种有效的方法是采用两轮编程(two-pass programming)方式,其中,对于一个存储单元的写编程通过两轮或者说两步来完成。在第一轮编程中,将一个存储单元编程到一个中间状态,在后面的第二轮编程中,在该中间状态的基础上将该存储单元编程到最终状态。通过安排两轮编程过程的编程顺序,可以有效的降低存储单元间干扰的问题。
两轮编程方式在降低存储单元间干扰问题的同时,往往需要大的数据缓存量,因此在采用两轮编程方式时如何在保证降低干扰的同时减小数据缓存量是一个需要解决的问题。
发明内容
本文公开了通过两轮编程方式对三维存储块进行写编程的方法和系统的实施例。所公开的方法与系统提供了许多益处,包括但不限于,在采用两轮编程方式对三维存储器进行编程时在保证降低存储单元间干扰的同时减小数据缓存量。
在一个实施例中,公开了一种三维存储器系统,包括:存储块,所述存储块分成多个存储子块,每个存储子块包括多个存储单元,以及所述存储块包括多个字线;以及控制器,配置为通过两轮编程方式对所述存储块中的存储单元进行编程,其中,所述编程包括:对所述多个字线中的第一字线上包括的在所述多个存储子块中的存储单元进行第一轮编程;对所述多个字线中与所述第一字线相邻的第二字线上包括的在所述多个存储子块的一部分存储子块中的存储单元进行第一轮编程,其中,所述一部分存储子块至少包括第一存储子块;对所述第一字线上包括的在所述第一存储子块中的存储单元进行第二轮编程。
在另一个实施例中,公开了一种用于通过两轮编程方式对三维存储块进行编程的方法,其中,所述存储块分成多个存储子块,每个存储子块包括多个存储单元,以及所述存储块包括多个字线,所述方法包括:对所述多个字线中的第一字线上包括的在所述多个存储子块中的存储单元进行第一轮编程;对所述多个字线中与所述第一字线相邻的第二字线上包括的在所述多个存储子块的一部分存储子块中的存储单元进行第一轮编程,其中,所述一部分存储子块至少包括第一存储子块;以及对所述第一字线上包括的在所述第一存储子块中的存储单元进行第二轮编程。
在另一个实施例中,公开了一种存储器系统,包括:一个或多个处理单元;以及存储器,其存储计算机可执行指令,所述指令当被执行时使得所述一个或多个处理单元执行本公开各实施例的方法。
在另一个实施例中,公开了一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得一个或多个处理单元执行本公开各实施例的方法。
附图说明
本公开实施例的附图简要说明如下,附图中相同或相应的部件采用相同或相似的附图标记来表示。
图1根据本公开的一个实施例示出了存储器系统的示意框图。
图2根据本公开的一个实施例示出了图1所示存储器系统的更详细的示意框图。
图3根据本公开的一个实施例示出了半导体存储器件的存储块的立体示意图。
图4a-4b根据本公开的实施例示出了一个字线上包括的存储单元的示意图。
图5根据本公开的一个实施例示出了不同类型的存储单元的编程状态分布的示意图。
图6a-6d根据本公开的实施例示出了对于多级存储单元进行两轮编程的示意图。
图7a-7b根据本公开的实施例示出了对存储块进行两轮编程过程的编程顺序的示意图。
图8a-8b根据本公开的实施例示出了对存储块进行两轮编程过程的编程顺序的示意图。
图9根据本公开的一个实施例示出了一种用于通过两轮编程方式对存储块进行编程的方法的流程图。
图10根据本公开的一个实施例示出了一种用于通过两轮编程方式对存储块进行编程的方法的流程图。
图11根据本公开的一个实施例示出了一种用于通过两轮编程方式对存储块进行编程的方法的流程图。
图12根据本公开的一个实施例示出了一种存储器系统的示意框图。
具体实施方式
在下文中将描述本公开的具体实施例,本领域中的技术人员理解,可以使用所描述实施例的明显变形而不脱离本公开的范围。
图1根据本公开的一个实施例示出了存储器系统10的示意框图。
如图1所示,存储器系统10包括存储控制器100和半导体存储器件200。半导体存储器件200可以是闪存存储器件,可以是NAND型的闪存存储器件,可以是3D NAND闪存存储器件。
存储控制器100可以控制半导体存储器件200的操作,例如,半导体存储器件200的擦除操作、编程操作(也称为写操作、写编程操作等)和读操作。本领域技术人员理解,图1所示的控制信号表示数据信号之外的各种必要信号,例如各种命令信号、使能信号、地址信号等,以用于实现数据的读、写、擦除等各种操作。
在一个实施例中,存储器系统10可以是一个半导体存储设备或者其中的一部分,该半导体存储设备例如是固态硬盘(SSD),相应地,存储控制器100和半导体存储器件200可以集成在该半导体存储设备中。在一些实施例中,存储器系统10可以作为存储部件应用在各种计算设备中,例如计算机、通信设备、多媒体设备、游戏设备等。
图2根据本公开的一个实施例示出了图1所示存储器系统的更详细的示意框图。
如图2所示,存储器系统10可以经由主机接口110接收主机的指令并根据该指令来进行各种操作,例如,响应于写操作指令而将来自主机的数据写入存储器件200,响应于读操作指令而从存储器件200读出数据并经主机接口传送给主机,等等。主机可以是上述任何计算设备,例如计算机、通信设备、多媒体设备、游戏设备等。
存储装置120可以存储机器可执行指令,控制单元130例如可以是处理器,其通过执行存储装置120中的指令来控制存储器系统10(更具体地,存储控制器100和存储器件200)的操作。控制单元130例如可以通过专用的逻辑电路(例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等)来实现。存储装置120还可以用于存储或缓存用于例如读操作或写操作的数据。例如,在执行写操作时,存储装置120可以缓存要写入的数据。本领域技术人员理解,存储装置120可以用于实现程序存储、数据存储、写缓冲、读缓冲、映射缓冲等。
主机接口110通过各种接口协议(例如,通用串行总线(USB)、多媒体卡(MMC)、高速外围组件互连(PCI-e)等)与主机通信。存储器接口140提供控制器100和存储器件200之间的接口连接,以允许控制器100控制存储器件200,例如,存储器接口140在控制单元130的控制下生成用于存储器件200的控制信号和数据信号。
如图2所示,存储器件200可以包括多个存储块210、控制电路220、寻址电路230、页缓存240、电压生成电路250、输入输出电路260。寻址电路230、页缓存240、电压生成电路250、输入输出电路260形成存储块210的外围电路。在控制电路220的控制下,通过这些外围电路可以执行对于存储块210的写操作、读操作或擦除操作等各种操作。
本领域技术人员理解,存储控制器100和存储器件200可能包括更多或更少的部件,为了便于说明,图2中没有示出所有的细节。本领域技术人员理解,虽然图1和2所示的例子中存储控制器100包括在存储器系统10中,但是在其他实施例中,存储器系统10可以不包括存储控制器100,并且存储控制器100的功能可以通过存储器系统10外部的组件来提供,例如,可以通过主机来提供存储控制器100的控制功能,可以通过存储器系统10外部的处理器或控制器来提供存储控制器100的控制功能。本领域技术人员理解,本公开不限于特定的术语,例如,存储块210还可以称为存储阵列。
图3根据本发明的一个实施例示出了半导体存储器件的存储块的立体示意图。例如,图3的存储块可以是图2所示的存储块210中的任意一个。
参照图3,存储块210包括在衬底(未示出)之上平行于衬底表面堆叠的多个层,在图3中示出了四个层上的四个字线(WL),不妨将其表示为WL0-WL3。存储块210还包括与多个字线垂直布置的通孔。一个字线与一个通孔的交叉点形成一个存储单元,因此也将一个通孔称为存储单元串。本领域技术人员理解,存储块210的字线的数量和存储串的数量不限于特定的值。例如,存储块210可以包括64个字线,64个字线与一个存储串交叉而形成沿着存储串的64个存储单元,例如,存储块210包括的存储串数量可能以十万、百万甚至更大的数量级计算,一个字线上包括其与例如几百万个存储串交叉而形成的几百万个存储单元。
存储块210中的每个存储单元可以是单级存储单元或多级存储单元,单级存储单元例如是能够存储1个比特的单级单元(SLC),多级存储单元例如是能够存储2个比特的多级单元(MLC),能够存储3个比特的三级单元(TLC),能够存储4个比特的四级单元(QLC),能够存储5个比特的五级单元(QLC)等。
如图3所示,存储器块210还包括位线(BL)、位线选择器(BLS)、源极线(SL)、源极线选择器(SLS),这些电路线和位线(WL)一起可以实现对于存储器块210中任何一个存储单元的寻址。
图4a和4b分别根据本公开的一个实施例示出了一个字线上包括的存储单元的示意图。例如,图4a和4b可以是图3所示的存储块210沿字线WL0的切面图的示意,其中的黑色圆点代表字线WL0上包括的存储单元。
如图4a所示,沿与Y轴(图3、4a所示的坐标系)垂直的方向将存储块210分为多个存储子块。图4a中示出了该多个存储子块在一个字线(例如WL0)上的切面示意图,本领域技术人员理解,该多个存储子块共享存储块210的多个字线。换言之,存储块210在逻辑上分为多个存储子块,例如图4a所示的三个存储子块B0-B2,通过位线的控制可以分别地对该多个存储子块进行操作。图4a示出了存储子块沿位线方向(Y方向)包括多个存储单元,但是本领域技术人员理解,存储子块沿位线方向(Y方向)可以包括一个存储单元,这种情况下仍然适用本公开的技术方案。
如图4a所示,一个字线包括的在一个存储子块中的多个存储单元(例如WL0B0、WL0B1或WL0B2)也可以称为一个存储单元页或存储页,对于存储块的编程是以存储页为单位进行的。例如,依次执行字线WL0上的存储页WL0B0、WL0B1、WL0B2的编程,然后进行下一个字线WL1上的存储页WL1B0、WL1B1、WL1B2的编程,以此类推,直到进行最后一个字线WLN-1上的存储页WLN-1B0、WLN-1B1、WLN-1B2的编程,其中N是存储块包括的字线的数量。本领域技术人员理解,可以将存储块210在逻辑上分成多个存储子块,该多个存储子块的数量不限于特定的值。
如图4b所示,沿与X轴(图3、4所示的坐标系)垂直的方向将存储块210分为多个存储子块。图4b中示出了该多个存储子块在一个字线(例如WL0)上的切面示意图,本领域技术人员理解,该多个存储子块共享存储块210的多个字线。换言之,存储块210在逻辑上分为多个存储子块,例如图4b所示的三个存储子块B0-B2,通过位线的控制可以分别的对该多个存储子块进行操作。图4b示出了存储子块沿位线方向(Y方向)包括多个存储单元,但是本领域技术人员理解,存储子块沿位线方向(Y方向)可以包括一个存储单元,这种情况下仍然适用本公开的技术方案。
如图4b所示,一个字线包括的在一个存储子块中的多个存储单元(例如WL0B0、WL0B1或WL0B2)也可以称为一个存储单元页或存储页,对于存储块的编程是以存储页为单位进行的。例如,依次执行字线WL0上的存储页WL0B0、WL0B1、WL0B2的编程,然后进行下一个字线WL1上的存储页WL1B0、WL1B1、WL1B2的编程,以此类推,直到进行最后一个字线WLN-1上的存储页WLN-1B0、WLN-1B1、WLN-1B2的编程,其中N是存储块包括的字线的数量。本领域技术人员理解,可以将存储块210在逻辑上分成多个存储子块,该多个存储子块的数量不限于特定的值。
图5根据本公开的一个实施例示出了不同类型的存储单元的编程状态分布的示意图。例如,图5所示的存储单元的各个编程状态是该存储单元的各个不同电平的阈值电压。例如,在编程过程中,通过对存储单元施加脉冲电压,将每个存储单元编程到或者说设定到多个阈值电压中的一个,其中不同的阈值电压代表不同的比特数据。
如图5所示,SLC的存储单元包括两个状态L0和L1,L0指示擦除状态,L1指示编程状态。因为SLC的存储单元可被设置为两种不同状态中的一种,所以每个存储单元可根据设置的编码方法来编程或存储1个比特。MLC的存储单元包括四个状态L0、L1、L2和L3,因为MLC的存储单元可被设置为四种不同状态中的一种,所以每个存储单元可根据设置的编码方法来编程或存储两个比特。TLC的存储单元包括八个状态L0至L7,所以每个存储单元可编程或存储三个比特。QLC的存储单元可包括16个状态L0至L15,所以每个存储单元可编程或存储四个比特。
图6a-6c根据本公开的实施例示出了对于多级存储单元进行两轮编程的示意图。
图6a-6c分别示出了MLC、TLC和QLC的两轮编程方式的示意图。如图6a所示,一个存储单元包括4个状态,其中的一个状态可以由2个比特表示,即,每个状态代表(00,01,10,11)中的一个。两个比特可以表示成“b1b0”。如上文中结合图4a和4b说明的,对存储块210的编程过程是以存储页(例如WL0B0、WL0B1、WL0B2)为单位进行的,以存储页WL0B0为例,对于MLC来说,其对应于两个逻辑页(为了便于说明,记作P1和P0),其中逻辑页P1包含要写入存储页WL0B0的所有存储单元中的所有比特b1,逻辑页P0包含要写入存储页WL0B0的所有存储单元中的所有比特b0。
在图6a所示的2-4两轮编程过程的例子中,对于一个存储页(例如WL0B0),在第一轮编程中,将一个逻辑页(例如P0)中的所有比特(例如b0)分别编入该存储页的相应存储单元中。经第一轮编程后,每个存储单元被编程到或者说设定到两个中间状态中的一个。进而,在第二轮编程中,将两个逻辑页(例如P1和P0)中的所有比特(例如b1b0)分别编程到该存储页的相应存储单元中。经第二轮编程后,每个存储单元在其中间状态的基础上被编程到或者说设定到四个最终状态中的一个,以表示2个比特b1b0。由于第二轮编程是在第一轮编程后的中间状态的基础上进一步得到的,所以编程的电压改变量相对减小,对于已编程的相邻存储单元的干扰降低。
图6b示出的对于TLC的2-8两轮编程过程与上述结合图6a描述的对于MLC的2-4两轮编程过程是类似的。对于一个存储页(例如WL0B0),具有三个逻辑页(例如P2,P1,P0),其分别包含要写入该存储页WL0B0的所有存储单元中的所有比特b2、b1、b0。在图6b的例子中,在第一轮编程中,基于一个逻辑页(例如P0)中的比特(例如b0)将该存储页中每个存储单元编程到或者说设定到两个中间状态中的一个,然后在第二轮编程中,进一步基于全部三个逻辑页(例如P2,P1,P0)中的比特(例如b2b1b0)将该存储页中每个存储单元编程到或者说设定到八个最终状态中的一个。
图6c示出的对于QLC的8-16两轮编程过程与上述结合图6a描述的对于MLC的2-4两轮编程过程是类似的。对于一个存储页(例如WL0B0),具有四个逻辑页(例如P3,P2,P1,P0),其分别包含要写入该存储页WL0B0的所有存储单元中的所有比特b3、b2、b1、b0。在图6c的例子中,在第一轮编程中,基于三个逻辑页(例如P2,P1,P0)中的比特(例如b2b1b0)将该存储页中每个存储单元编程到或者说设定到八个中间状态中的一个,然后在第二轮编程中,进一步基于全部四个逻辑页中的比特(例如b3b2b1b0)将该存储页中每个存储单元编程到或者说设定到十六个最终状态中的一个。
图6d示出的对于QLC的16-16两轮编程过程与上述结合图6a描述的对于MLC的2-4两轮编程过程是类似的。对于一个存储页(例如WL0B0),具有四个逻辑页(例如P3,P2,P1,P0),其分别包含要写入该存储页WL0B0的所有存储单元中的所有比特b3、b2、b1、b0。在图6d的例子中,在第一轮编程中,基于四个逻辑页(例如P3,P2,P1,P0)中的比特(例如b3b2b1b0)将该存储页中每个存储单元编程到或者说设定到十六个中间状态中的一个,然后在第二轮编程中,进一步基于全部四个逻辑页中的比特(例如b3b2b1b0)将该存储页中每个存储单元编程到或者说设定到十六个最终状态中的一个。
图6a-6c所示的例子中,中间状态的数量小于最终状态的数量,例如图6c所示的QLC 8-16两轮编程中,中间状态是八个,其分别对应于十六个最终状态中的八个最终状态。图6d所示的例子中,中间状态的数量等于最终状态的数量,例如图6d所示的QLC 16-16两轮编程中,中间状态是十六个,其分别对应于十六个最终状态。本领域技术人员理解,中间状态可以分别对应于最终状态的一部分或分别对应于最终状态。
在一个实施例中,第一轮编程和第二轮编程都是基于验证状态(例如验证电压)来进行的。以图6c的QLC 8-16两轮编程为例,针对八个中间状态分别设置八个中间验证状态,针对十六个最终状态分别设置十六个最终验证状态。例如,对于一个要编程到一个中间状态的存储单元来说,只有当该存储单元的阈值电压大于对应的中间验证电压时才确定对该存储单元的第一轮编程完毕。对于该存储单元,在第二轮编程中要将其进一步编程到一个最终状态,只有当该存储单元的阈值电压大于对应的最终验证电压后才确定对该存储单元的第二轮编程完毕。同理,以图6d的QLC 16-16两轮编程为例,针对十六个中间状态分别设置十六个中间验证状态,针对十六个最终状态分别设置十六个最终验证状态。在一个实施例中,可以将多个中间验证状态的值设置地分别小于对应的最终验证状态的值。通过这种方式,对于一个存储单元来说,有助于使得该存储单元的中间状态小于其最终状态,从而有助于改进两轮编程过程的可靠性。
图7a根据本公开一个实施例示出了对存储块进行两轮编程过程的编程顺序的示意图。所示的编程顺序适用于任何类型的多级存储块(例如MLC,TLC,QLC,PLC等)的两轮编程,为了便于说明,不妨以QLC 8-16两轮编程为例。
如图7a所示,参考图3的存储块的三维示意图,一个存储块包括多个字线,例如图7a实施例中的64个字线,按顺序编号为字线WL0-WL63。参考图4a和4b的切面示意图,一个存储块分成多个存储子块,并且该多个存储子块是沿与字线垂直的方向上划分的,例如图7a实施例中的6个存储子块,按顺序编号为存储子块B0-B5。本领域技术人员理解,存储块包括的字线数目和存储子块数目不限于特定的值。
图7a所示的数字0-767表示的是操作的顺序,例如,第0个操作(或者说第0组操作)是针对字线0存储子块0(表示为WL0B0)的第一轮编程操作,接下来的第1个操作(或者说第1组操作)是针对字线0存储子块1(表示为WL0B1)的第一轮编程操作,…,第6个操作(或者说第6组操作)是针对字线1存储子块0(表示为WL1B0)的第一轮编程操作,…,第12个操作(或者说第12组操作)是针对字线0存储子块0(表示为WL0B0)的第二轮编程操作,以此类推。
采用图7a所示的两轮编程顺序,例如以字线WL0和WL1上的操作为例,只有在对字线WL1上的所有存储页的第一轮编程全部完成之后,才进行字线WL0上的存储页的第二轮编程。换言之,对于任意两个相邻的字线来说,只有在后一个字线上的所有存储页的第一轮编程全部完成之后,才进行前一个字线上的存储页的第二轮编程。通过这样的两轮编程顺序,避免了后一个字线上的第一轮编程对于前一个字线上的最终编程状态的影响,从而相比于常规的单轮编程方式,能够减轻编程过程中存储单元间干扰的问题。
例如上文结合图6c所述的对于QLC的8-16两轮编程过程,对于一个存储页(表示为WLmBn),具有四个逻辑页(例如P3,P2,P1,P0),其分别包含要写入该存储页WLmBn的所有存储单元中的所有比特b3、b2、b1、b0,即P3中包括所有的b3,P2中包括所有的b2,P1中包括所有的b1,P0中包括所有的b0。如图7a所示的实施例中,例如对于存储页WL0B0而言,在第12个操作(即,对于字线0包括的在存储子块0中的存储单元的第二轮编程操作)完成后,对于存储页WL0B0的编程才完成。因此,在编程过程中需要缓存针对12个存储页(该例中为WL0B0-WL0B5,WL1B0-WL1B5)的要写入的数据,即,48个逻辑页的数据。在一个例子中,一个存储页WLmBn包括12万个存储单元,相应地,需要缓存的数据多达48个逻辑页,即576万比特数据。本领域技术人员理解,一个存储页包括的存储单元数不限于特定的值,随着存储密度的增加,一个存储页包括的存储单元数可能会变得越来越大。在一个实施例中,要写入的数据可以缓存在存储控制器100的存储装置120中,其中存储装置120的至少一部分用于实现写缓存。
图7b根据本公开另一个实施例示出了对存储块进行两轮编程过程的编程顺序的示意图。为了便于说明,仍以QLC 8-16两轮编程为例。
图7b中各个数字的含义与图7a所示的一致。如图7b所示的实施例中,例如对于存储页WL0B0而言,在第12个操作(即,对于字线0包括的在存储子块0中的存储单元的第二轮编程操作)完成后,对于存储页WL0B0的编程才完成。与图7a所示的编程顺序类似,对于任意两个相邻的字线来说,只有在后一个字线上的所有存储页的第一轮编程全部完成之后,才进行前一个字线上的存储页的第二轮编程。因此,与图7a所示的实施例类似,在图7b所示的编程过程中需要缓存针对12个存储页(该例中为WL0B0-WL0B5,WL1B0-WL1B5)的要写入的数据,即,48个逻辑页的数据。
对于存储块的编程来说,尽可能减小缓存的要写入数据量是有利的。例如,在突然掉电的情况下,缓存的数据量越小,所缓存数据量被及时写入存储单元的机会越大,造成数据丢失的可能性就越小。又例如,降低写缓存的缓存量,有利于降低例如图2所示存储器系统10中存储控制器100的存储装置120的容量。
图8a根据本公开的另一个实施例示出了对存储块进行两轮编程过程的编程顺序的示意图。为了便于说明,仍以QLC 8-16两轮编程为例。
图8a中各个数字的含义与图7a所示的一致。如图8a所示的实施例中,第0-5个操作(或者说第0-5组操作)分别是针对字线0存储子块0(表示为WL0B0)到字线0存储子块5(WL0B5)的第一轮编程操作。接下来的第6个操作(或者说第6组操作)是针对字线1存储子块0(表示为WL1B0)的第一轮编程操作,接下来的第7个操作是针对字线0存储子块0(表示为WL0B0)的第二轮编程操作,接下来的第8个操作是针对字线1存储子块1(表示为WL1B1)的第一轮编程操作,接下来的第9个操作是针对字线0存储子块1(表示为WL0B1)的第二轮编程操作,以此类推,第16个操作是针对字线1存储子块5(表示为WL1B5)的第一轮编程操作,接下来的第17个操作是针对字线0存储子块5(表示为WL0B5)的第二轮编程操作。以此类推,直到在第767个操作中进行了针对字线63存储子块5(表示为WL63B5)的第二轮编程操作,完成该存储块的编程。
采用图8a所示的两轮编程顺序,例如以字线WL0和WL1上的操作为例,在对字线WL1上的第一个存储页(例如WL1B0)的第一轮编程完成之后,不是接着进行对于WL1上其他存储页的第一轮编程,而是进行相邻的上一个字线WL0上的相应存储页(例如WL0B0)的第二轮编程。换言之,对于任意两个相邻的字线来说,在后一个字线上的一个存储页的第一轮编程完成之后,接着进行前一个字线上的对应存储页(即,同一个存储子块中的对应存储页)的第二轮编程。
如图8a所示的实施例中,例如对于存储页WL0B0而言,在第7个操作(即,对于字线0包括的在存储子块0中的存储单元的第二轮编程操作)完成后,对于存储页WL0B0的编程完成。因此,在编程过程中需要缓存针对7个存储页(该例中为WL0B0-WL0B5,WL1B0)的要写入的数据,即,28个逻辑页的数据。与图7a所示的实施例相比,两轮编程过程中,要缓存的数据量显著降低。同时,对于一个存储页(例如WL0B0)来说,该存储页中存储单元的已编程的状态主要受到来自于相邻字线中的相邻存储页(即,同一存储子块中的相邻存储页)的后续编程电压的影响,因此通过将WL0B0的第二轮编程安排在WL1B0的第一轮编程之后,仍能够有效地改善对于该存储页WL0B0中的存储单元的已编程状态的影响,同时能够显著降低编程过程中的数据缓存量。
图8b根据本公开的另一个实施例示出了对存储块进行两轮编程过程的编程顺序的示意图。为了便于说明,仍以QLC 8-16两轮编程为例。
图8b中各个数字的含义与图7a所示的一致。如图8b所示的实施例中,第0-5个操作(或者说第0-5组操作)分别是针对字线0存储子块0(表示为WL0B0)到字线0存储子块5(WL0B5)的第一轮编程操作。接下来的第6个操作是针对字线1存储子块0(表示为WL1B0)的第一轮编程操作,接下来的第7个操作是针对字线1存储子块1(表示为WL1B1)的第一轮编程操作,接下来的第8个操作是针对字线0存储子块0(表示为WL0B0)的第二轮编程操作,接下来的第9个操作是针对字线1存储子块2(表示为WL1B2)的第一轮编程操作,接下来的第10个操作是针对字线0存储子块1(表示为WL0B1)的第二轮编程操作,以此类推,第15个操作是针对字线1存储子块5(表示为WL1B5)的第一轮编程操作,接下来的第16个操作是针对字线0存储子块4(表示为WL0B4)的第二轮编程操作,接下来的第17个操作是针对字线0存储子块5(表示为WL0B5)的第二轮编程操作。以此类推,直到在第767个操作中进行了针对字线63存储子块5(表示为WL63B5)的第二轮编程操作,完成该存储块的编程。
采用图8b所示的两轮编程顺序,例如以字线WL0和WL1上的操作为例,在对字线WL1上的第一个存储页(例如WL1B0)和第二个存储页(例如WL1B1)的第一轮编程完成之后,接着进行相邻的上一个字线WL0上的相应第一个存储页(例如WL0B0)的第二轮编程。换言之,对于任意两个相邻的字线来说,在后一个字线上的一个存储页及其相邻的下一个存储页的第一轮编程完成之后,接着进行前一个字线上的对应于该存储页的存储页(即,同一个存储子块中的对应存储页)的第二轮编程。
如图8b所示的实施例中,例如对于存储页WL0B0而言,在第8个操作(即,对于字线0包括的在存储子块0中的存储单元的第二轮编程操作)完成后,对于存储页WL0B0的编程完成。因此,在编程过程中需要缓存针对8个存储页(该例中为WL0B0-WL0B5,WL1B0,WL1B1)的要写入的数据,即,32个逻辑页的数据。与图7a所示的实施例相比,两轮编程过程中,要缓存的数据量显著降低。同时,对于一个存储页(例如WL0B0)来说,该存储页中存储单元的已编程的状态主要受到来自于相邻字线中的相邻存储页(即,同一存储子块中的相邻存储页)的后续编程电压的影响,此外相邻字线中的下一个存储子块中的存储页的后续编程电压也可能带来一定的影响,因此通过将WL0B0的第二轮编程安排在WL1B0和WL1B1的第一轮编程之后,在能够有效地改善对于该存储页WL0B0中的存储单元的已编程状态的影响的同时,能够显著降低编程过程中的数据缓存量。
在图8a和8b所示的两轮编程过程的实施例中,与图7a和7b所示的实施例不同,对于任意两个相邻的字线来说,在后一个字线上的一部分存储页的第一轮编程完成之后,接着进行前一个字线上的存储页的第二轮编程,从而能够在降低写编程过程中存储单元间干扰的同时减小写缓存的数量。本领域技术人员可以理解,具体的编程顺序不限于图8a和8b所示的具体实施例,在图8a和8b的实施方式的基础上做出一些变形都是可能的。
图9根据本公开的一个实施例示出了一种用于通过两轮编程方式对存储块进行编程的方法的流程图。在该实施例中,该存储块可以是3D存储块,其分成多个存储子块,每个存储子块包括多个存储单元,该存储块包括多个字线,通过沿与该多个字线垂直的方向划分该存储块得到该多个存储子块。参见图3的三维示意图,通过沿与该多个字线垂直且与位线垂直或平行的方向划分该存储块得到该多个存储子块。
在步骤910,对该多个字线中的第一字线上包括的在该多个存储子块中的存储单元进行第一轮编程。在步骤920,对该多个字线中与该第一字线相邻的第二字线上包括的在该多个存储子块的一部分存储子块中的存储单元进行第一轮编程,其中,该一部分存储子块至少包括第一存储子块。在步骤930,对该第一字线上包括的在该第一存储子块中的存储单元进行第二轮编程。
如上文中参考图6描述的,在一个实施例中,该第一轮编程包括将存储单元编程到该存储单元的多个中间状态中的一个。以图6c的8-16QLC编程为例,该多个中间状态是L0到L14’,其例如是存储单元的阈值电压。该第二轮编程包括将该存储单元在其中间状态的基础上编程到多个最终状态中的一个。以图6c的8-16QLC编程为例,该多个最终状态是L0到L15,其例如是存储单元的阈值电压。
在一个实施例中,该第一轮编程包括基于与该多个中间状态对应的多个中间验证状态将该存储单元编程到该多个中间状态中的一个。该第二轮编程包括基于与该多个最终状态对应的多个最终验证状态将该存储单元在其中间状态的基础上编程到该多个最终状态中的一个。该多个中间状态与该多个最终状态中的至少一部分是对应的,相应的,该多个中间验证状态与该多个最终验证状态中的至少一部分是对应的,并且该多个中间验证状态的值分别小于对应的该至少一部分最终验证状态的值。
在一个实施例中,该3D存储器系统包括多级NAND闪存存储器。在一个实施例中,该多级NAND闪存存储器包括多级单元MLC闪存存储器、三级单元TLC闪存存储器、四级单元QLC闪存存储器和五级单元PLC闪存存储器中的一个。
在一个实施例中,步骤920中的一部分存储子块仅包括该第一存储子块,并且在步骤930中对该第一字线上包括的在该第一存储子块中的存储单元进行第二轮编程之后,接着对该第二字线上包括的第二存储子块中的存储单元进行第一轮编程。
在一个实施例中,步骤920中的一部分存储子块仅包括该第一存储子块和与该第一存储子块相邻的第二存储子块,并且在步骤930中对该第一字线上包括的在该第一存储子块中的存储单元进行第二轮编程之后,接着对该第二字线上包括的第三存储子块中的存储单元进行第一轮编程。
图10根据本公开的一个实施例示出了一种用于通过两轮编程方式对存储块进行编程的方法的流程图。在该实施例中,该存储块可以是3D存储块,其分成多个存储子块,每个存储子块包括多个存储单元,该存储块包括多个字线。
在步骤1005,将变量n和m均初始化为0,其中n表示该存储块包括的字线的编号,m表示该存储块包括的存储子块的编号。
在步骤1010,对第n个字线包括的在第m个存储子块中的存储单元(即,WLnBm)进行第一轮编程。在步骤1015中,将m的值加1,以及在步骤1020中比较m是否小于M,其中M是该存储块包括的存储子块的数量,例如图8所示的例子中,M=6。如果在步骤1020中判断m小于M,则回到步骤1010。如果在步骤1020中判断m不小于M,则到步骤1025,其中将n的值加1,以及将m的值设为0。
在步骤1030,判断n是否小于N,其中N是该存储块包括的字线的数量,例如图8所示的例子中,N=64。
如果步骤1030中判断n小于N,则到步骤1035,在其中对第n个字线包括的在第m个存储子块中的存储单元(即,WLnBm)进行第一轮编程,接着在步骤1040对第n-1个字线包括的在第m个存储子块中的存储单元(即,WLn-1Bm)进行第二轮编程。在步骤1045中,将m的值加1,以及在步骤1050中比较m是否小于M。如果在步骤1050中判断m小于M,则回到步骤1035。如果在步骤1050中判断m不小于M,则回到步骤1025。
如果步骤1030中判断n不小于N,则到步骤1055,在其中对第n-1个字线包括的在第m个存储子块中的存储单元(即,WLn-1Bm)进行第二轮编程。在步骤1060中,将m的值加1,以及在步骤1065中比较m是否小于M。如果在步骤1065中判断m小于M,则回到步骤1055。如果在步骤1065中判断m不小于M,对于该存储块的编程结束,如1070所示。
在图10所示的编程过程中,在对第一字线(例如WL0)上包括的所有存储子块中的存储单元进行第一轮编程之后,对于该多个字线中的除最后一个字线之外的每一个字线,依次执行以下操作:“对该多个存储子块中的每个存储子块依次执行以下操作:对与该字线相邻的后一个字线上包括的在该存储子块中的存储单元进行第一轮编程,然后对该字线上包括的在该存储子块中的存储单元进行第二轮编程”。然后,对最后一个字线上包括的在所有多个存储子块中的存储单元进行第二轮编程。
图11根据本公开的一个实施例示出了一种用于通过两轮编程方式对存储块进行编程的方法的流程图。在该实施例中,该存储块可以是3D存储块,其分成多个存储子块,每个存储子块包括多个存储单元,该存储块包括多个字线。
在步骤1105,将变量n和m均初始化为0,其中n表示该存储块包括的字线的编号,m表示该存储块包括的存储子块的编号。
在步骤1110,对第n个字线包括的在第m个存储子块中的存储单元(即,WLnBm)进行第一轮编程。在步骤1115中,将m的值加1,以及在步骤1120中比较m是否小于M,其中M是该存储块包括的存储子块的数量,例如图8所示的例子中,M=6。如果在步骤1120中判断m小于M,则回到步骤1110。如果在步骤1120中判断m不小于M,则到步骤1125,其中将n的值加1,以及将m的值设为0。
在步骤1130,判断n是否小于N,其中N是该存储块包括的字线的数量,例如图8所示的例子中,N=64。
如果步骤1130中判断n小于N,则到步骤1135,在其中对第n个字线包括的在第m个存储子块中的存储单元(即,WLnBm)进行第一轮编程。在步骤1140中,将m的值加1,以及在步骤1145中比较m是否小于M。如果在步骤1145中判断m小于M,则到步骤1150,在其中对第n个字线包括的在第m个存储子块中的存储单元(即,WLnBm)进行第一轮编程。接着在步骤1155对第n-1个字线包括的在第m-1个存储子块中的存储单元(即,WLn-1Bm-1)进行第二轮编程。然后回到步骤1140。如果在步骤1145中判断m不小于M,则在步骤1160对第n-1个字线包括的在第m-1个存储子块中的存储单元(即,WLn-1Bm-1)进行第二轮编程,然后回到步骤1125。
如果步骤1030中判断n不小于N,则到步骤1165,在其中对第n-1个字线包括的在第m个存储子块中的存储单元(即,WLn-1Bm)进行第二轮编程。在步骤1170中,将m的值加1,以及在步骤1175中比较m是否小于M。如果在步骤1175中判断m小于M,则回到步骤1165。如果在步骤1175中判断m不小于M,对于该存储块的编程结束,如1180所示。
在图11所示的编程过程中,在对第一字线上包括的在多个存储子块中的存储单元进行第一轮编程之后,对于该多个字线中的除最后一个字线之外的每一个字线,依次执行以下操作:“对与该字线相邻的后一个字线上包括的在该第一存储子块中的存储单元进行第一轮编程;对该多个存储子块中的除该第一存储子块之外的每个存储子块依次执行以下操作:‘对与该字线相邻的后一个字线上包括的在该存储子块中的存储单元进行第一轮编程,然后对该字线上包括的与该存储子块相邻的前一个存储子块中的存储单元进行第二轮编程’;对该字线上包括的在该多个存储子块的最后一个存储子块中的存储单元进行第二轮编程”。然后,对该最后一个字线上包括的在该多个存储子块中的存储单元进行第二轮编程。
图12根据本公开的一个实施例示出了一种存储器系统的示意框图。该存储器系统1200包括一个或多个处理器1210和存储器1220,存储器1220可以存储计算机可执行指令,该指令当被执行时使得该一个或多个处理单元执行本公开中所描述的方法。在一个实施例中,处理器1210可以是图2所示的控制单元130,存储器1220可以是图2所示的存储装置120。在另一个实施例中,处理器1210也可以是包括存储器件200的主机中的处理器。在另一个实施例中,处理器1210也可以表示主机中的处理器和图2所示的控制单元130的组合。
在一个实施例中,本公开的技术方案可以实现为一种机器可读存储介质,其存储有可执行指令,该指令当被执行时使得一个或多个处理单元执行本公开中所描述的方法。
上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。

Claims (20)

1.一种三维(3D)存储器系统,包括:
存储块,所述存储块分成多个存储子块,每个存储子块包括多个存储单元,以及所述存储块包括多个字线;以及
控制器,配置为通过两轮编程方式对所述存储块中的存储单元进行编程,其中,所述编程包括:对所述多个字线中的第一字线上包括的在所述多个存储子块中的存储单元进行第一轮编程;对所述多个字线中与所述第一字线相邻的第二字线上包括的在所述多个存储子块的一部分存储子块中的存储单元进行第一轮编程,其中,所述一部分存储子块至少包括第一存储子块;对所述第一字线上包括的在所述第一存储子块中的存储单元进行第二轮编程。
2.如权利要求1所述的3D存储器系统,其中,
所述第一轮编程包括:将存储单元编程到该存储单元的多个中间状态中的一个;以及
所述第二轮编程包括:将该存储单元在其中间状态的基础上编程到多个最终状态中的一个。
3.如权利要求1所述的3D存储器系统,其中,所述一部分存储子块仅包括所述第一存储子块,其中,在对所述第一字线上包括的在所述第一存储子块中的存储单元进行第二轮编程之后,所述编程包括:对所述第二字线上包括的在所述多个存储子块的第二存储子块中的存储单元进行第一轮编程。
4.如权利要求3所述的3D存储器系统,其中,所述编程包括:
在对所述第一字线上包括的在所述多个存储子块中的存储单元进行第一轮编程之后,对于所述多个字线中的除最后一个字线之外的每一个字线,依次执行以下操作:
对所述多个存储子块中的每个存储子块依次执行以下操作:对与该字线相邻的后一个字线上包括的在该存储子块中的存储单元进行第一轮编程,然后对该字线上包括的在该存储子块中的存储单元进行第二轮编程;
对所述最后一个字线上包括的在所述多个存储子块中的存储单元进行第二轮编程。
5.如权利要求1所述的3D存储器系统,其中,所述一部分存储子块仅包括所述第一存储子块和与所述第一存储子块相邻的第二存储子块,其中,在对所述第一字线上包括的在所述第一存储子块中的存储单元进行第二轮编程之后,所述编程包括:对所述第二字线上包括的第三存储子块中的存储单元进行第一轮编程。
6.如权利要求5所述的3D存储器系统,其中,所述编程包括:
在对所述第一字线上包括的在所述多个存储子块中的存储单元进行第一轮编程之后,对于所述多个字线中的除最后一个字线之外的每一个字线,依次执行以下操作:
对与该字线相邻的后一个字线上包括的在所述第一存储子块中的存储单元进行第一轮编程;
对所述多个存储子块中的除所述第一存储子块之外的每个存储子块依次执行以下操作:对与该字线相邻的后一个字线上包括的在该存储子块中的存储单元进行第一轮编程,然后对该字线上包括的与该存储子块相邻的前一个存储子块中的存储单元进行第二轮编程;
对该字线上包括的在所述多个存储子块的最后一个存储子块中的存储单元进行第二轮编程;
对所述最后一个字线上包括的在所述多个存储子块中的存储单元进行第二轮编程。
7.如权利要求2所述的3D存储器系统,其中,
所述第一轮编程包括:基于与所述多个中间状态对应的多个中间验证状态将该存储单元编程到所述多个中间状态中的一个;
所述第二轮编程包括:基于与所述多个最终状态对应的多个最终验证状态将该存储单元在其中间状态的基础上编程到所述多个最终状态中的一个;
其中,所述多个中间状态与所述多个最终状态中的至少一部分是对应的,所述多个中间验证状态与所述多个最终验证状态中的至少一部分是对应的,并且所述多个中间验证状态的值分别小于对应的所述至少一部分最终验证状态的值。
8.如权利要求1所述的3D存储器系统,其中,所述3D存储器系统包括多级NAND闪存存储器。
9.如权利要求8所述的3D存储器系统,其中,所述多级NAND闪存存储器包括多级单元MLC闪存存储器、三级单元TLC闪存存储器、四级单元QLC闪存存储器和五级单元PLC闪存存储器中的一个。
10.一种用于通过两轮编程方式对三维(3D)存储块进行编程的方法,其中,所述存储块分成多个存储子块,每个存储子块包括多个存储单元,以及所述存储块包括多个字线,所述方法包括:
对所述多个字线中的第一字线上包括的在所述多个存储子块中的存储单元进行第一轮编程;
对所述多个字线中与所述第一字线相邻的第二字线上包括的在所述多个存储子块的一部分存储子块中的存储单元进行第一轮编程,其中,所述一部分存储子块至少包括第一存储子块;以及
对所述第一字线上包括的在所述第一存储子块中的存储单元进行第二轮编程。
11.如权利要求10所述的方法,其中,
所述第一轮编程包括:将存储单元编程到该存储单元的多个中间状态中的一个;以及
所述第二轮编程包括:将该存储单元在其中间状态的基础上编程到多个最终状态中的一个。
12.如权利要求10所述的方法,其中,所述一部分存储子块仅包括所述第一存储子块,在对所述第一字线上包括的在所述第一存储子块中的存储单元进行第二轮编程之后,所述方法包括:对所述第二字线上包括的第二存储子块中的存储单元进行第一轮编程。
13.如权利要求12所述的方法,包括:
在对所述第一字线上包括的在所述多个存储子块中的存储单元进行第一轮编程之后,对于所述多个字线中的除最后一个字线之外的每一个字线,依次执行以下操作:
对所述多个存储子块中的每个存储子块依次执行以下操作:对与该字线相邻的后一个字线上包括的在该存储子块中的存储单元进行第一轮编程,然后对该字线上包括的在该存储子块中的存储单元进行第二轮编程;
对所述最后一个字线上包括的在所述多个存储子块中的存储单元进行第二轮编程。
14.如权利要求10所述的方法,其中,所述一部分存储子块仅包括所述第一存储子块和与所述第一存储子块相邻的第二存储子块,其中,在对所述第一字线上包括的在所述第一存储子块中的存储单元进行第二轮编程之后,所述方法包括:对所述第二字线上包括的第三存储子块中的存储单元进行第一轮编程。
15.如权利要求14所述的方法,包括:
在对所述第一字线上包括的在所述多个存储子块中的存储单元进行第一轮编程之后,对于所述多个字线中的除最后一个字线之外的每一个字线,依次执行以下操作:
对与该字线相邻的后一个字线上包括的在所述第一存储子块中的存储单元进行第一轮编程;
对所述多个存储子块中的除所述第一存储子块之外的每个存储子块依次执行以下操作:对与该字线相邻的后一个字线上包括的在该存储子块中的存储单元进行第一轮编程,然后对该字线上包括的与该存储子块相邻的前一个存储子块中的存储单元进行第二轮编程;
对该字线上包括的在所述多个存储子块的最后一个存储子块中的存储单元进行第二轮编程;
对所述最后一个字线上包括的在所述多个存储子块中的存储单元进行第二轮编程。
16.如权利要求11所述的方法,其中,
所述第一轮编程包括:基于与所述多个中间状态对应的多个中间验证状态将该存储单元编程到所述多个中间状态中的一个;
所述第二轮编程包括:基于与所述多个最终状态对应的多个最终验证状态将该存储单元在其中间状态的基础上编程到所述多个最终状态中的一个;
其中,所述多个中间状态与所述多个最终状态中的至少一部分是对应的,所述多个中间验证状态与所述多个最终验证状态中的至少一部分是对应的,并且所述多个中间验证状态的值分别小于对应的所述至少一部分最终验证状态的值。
17.如权利要求10所述的方法,其中,所述3D存储器系统包括多级NAND闪存存储器。
18.如权利要求17所述的方法,其中,所述多级NAND闪存存储器包括多级单元MLC闪存存储器、三级单元TLC闪存存储器、四级单元QLC闪存存储器和五级单元PLC闪存存储器中的一个。
19.一种存储器系统,包括:
一个或多个处理单元;以及
存储器,其存储计算机可执行指令,所述指令当被执行时使得所述一个或多个处理单元执行如权利要求10到18中任一个所述的方法。
20.一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得一个或多个处理单元执行如权利要求10到18中任一个所述的方法。
CN202011202078.3A 2020-11-02 2020-11-02 三维存储器系统和对三维存储器进行编程的方法 Active CN112289358B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011202078.3A CN112289358B (zh) 2020-11-02 2020-11-02 三维存储器系统和对三维存储器进行编程的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011202078.3A CN112289358B (zh) 2020-11-02 2020-11-02 三维存储器系统和对三维存储器进行编程的方法

Publications (2)

Publication Number Publication Date
CN112289358A true CN112289358A (zh) 2021-01-29
CN112289358B CN112289358B (zh) 2022-10-28

Family

ID=74353425

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011202078.3A Active CN112289358B (zh) 2020-11-02 2020-11-02 三维存储器系统和对三维存储器进行编程的方法

Country Status (1)

Country Link
CN (1) CN112289358B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7218552B1 (en) * 2005-09-09 2007-05-15 Sandisk Corporation Last-first mode and method for programming of non-volatile memory with reduced program disturb
US20140211565A1 (en) * 2013-01-29 2014-07-31 Jung-ho Song Methods of programming multi-level cell nonvolatile memory devices and devices so operating
KR20160090124A (ko) * 2015-01-21 2016-07-29 삼성전자주식회사 메모리 시스템의 동작 방법
CN106169304A (zh) * 2010-02-17 2016-11-30 三星电子株式会社 擦除和刷新非易失性存储器件的方法
CN109716282A (zh) * 2018-12-07 2019-05-03 长江存储科技有限责任公司 用于编程存储器系统的方法
US20190172544A1 (en) * 2017-12-05 2019-06-06 Samsung Electronics Co., Ltd. Non-volatile memory device for improving data reliability and operating method thereof

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7218552B1 (en) * 2005-09-09 2007-05-15 Sandisk Corporation Last-first mode and method for programming of non-volatile memory with reduced program disturb
CN106169304A (zh) * 2010-02-17 2016-11-30 三星电子株式会社 擦除和刷新非易失性存储器件的方法
US20140211565A1 (en) * 2013-01-29 2014-07-31 Jung-ho Song Methods of programming multi-level cell nonvolatile memory devices and devices so operating
KR20160090124A (ko) * 2015-01-21 2016-07-29 삼성전자주식회사 메모리 시스템의 동작 방법
US20190172544A1 (en) * 2017-12-05 2019-06-06 Samsung Electronics Co., Ltd. Non-volatile memory device for improving data reliability and operating method thereof
CN109716282A (zh) * 2018-12-07 2019-05-03 长江存储科技有限责任公司 用于编程存储器系统的方法

Also Published As

Publication number Publication date
CN112289358B (zh) 2022-10-28

Similar Documents

Publication Publication Date Title
KR101927212B1 (ko) 비휘발성 메모리 장치의 프로그래밍 방법
KR100902008B1 (ko) 메모리 셀에 멀티 비트 데이터를 저장하는 플래시 메모리를 포함한 메모리 시스템
CN101635172B (zh) 非易失性存储器件及其编程方法
US7978512B2 (en) Semiconductor memory system
US11361820B2 (en) Semiconductor memory device to hold 5-bits of data per memory cell
CN107369470A (zh) 存储设备的编程方法和使用其的存储系统
US20190121727A1 (en) Memory system and method for operating the same
TWI512735B (zh) 記憶體裝置及記憶體裝置之操作方法
US9607700B2 (en) Non-volatile memory device, memory system, and methods of operating the device and system
CN113257314A (zh) 半导体存储器装置
CN115440283A (zh) 顺序字线擦除验证方案
CN111798892B (zh) 存储器装置及其操作方法
WO2023197774A1 (en) Memory device, memory system, and method of operating
CN112289358B (zh) 三维存储器系统和对三维存储器进行编程的方法
US20110239096A1 (en) Data memory device and method of programming to the same
KR20210010227A (ko) 반도체 메모리 장치
KR102303653B1 (ko) 메모리 장치 및 이를 포함하는 메모리 시스템
CN110580928B (zh) 一种三维存储器的控制方法、装置及存储介质
CN111475426B (zh) 管理闪存模块的方法及相关的闪存控制器与电子装置
CN114974380A (zh) 存储器装置及其操作方法
KR20220041574A (ko) 반도체 메모리 장치 및 그 동작 방법
CN112349325A (zh) 存储装置
KR20080112876A (ko) 불휘발성 메모리 소자 및 그 동작 방법
US20230326537A1 (en) Memory device, memory system, and method of operating the same
CN110197689A (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