CN105487985A - 预编码直接写入到多级单元存储器的数据的系统和方法 - Google Patents
预编码直接写入到多级单元存储器的数据的系统和方法 Download PDFInfo
- Publication number
- CN105487985A CN105487985A CN201510631821.XA CN201510631821A CN105487985A CN 105487985 A CN105487985 A CN 105487985A CN 201510631821 A CN201510631821 A CN 201510631821A CN 105487985 A CN105487985 A CN 105487985A
- Authority
- CN
- China
- Prior art keywords
- data
- programming
- nonvolatile memory
- direct
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1072—Adding 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 multilevel memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Abstract
一种用于减少在非易失性存储器中的字线(WL)的编程过程期间存储器控制器和多级单元(MLC)非易失性存储器之间的数据转移的方法和系统。系统包括控制器和非易失性存储器,所述非易失性存储器具有多个WL,每个WL具有多个MLC存储器单元。控制器在易失性存储器中贮存接收的数据,直到接收到目标WL数据量。控制器将接收的数据预编码为直接WL编程数据以用于编程目标MLC?WL所必要的每个编程过程。用于所有的编程过程的所有的直接WL编程数据在编程之前被贮存在易失性存储器中。将直接WL编程数据的不同的部分在每个通路上从控制器发送到非易失性存储器。在将至少一部分的直接WL编程数据发送到非易失性存储器之前,可以从易失性存储器删除接收的数据。
Description
技术领域
本申请一般地涉及在存储器系统管理数据。更具体地,本申请涉及存储器控制器以及向多级单元非易失性存储器的写入处理。
背景技术
当将数据写入到具有多级单元(MLC)配置的非易失性闪速存储器时,所述处理通常通过以下步骤来实现:贮存用于一个单元的多个位的每一个在存储器控制器中的随机存取存储器(RAM)中、贮存用于所有单元的在闪速存储器中的完整字线中,并且然后继续多阶段编程处理以用于将电荷注入到多位单元的每一个以实现对该单元的期望的编程状态。作为该多步骤闪速编程处理的一部分,并且对于多个编程步骤的每一个,在控制器中的RAM将通常贮存将要编程到单元中的所有主机数据位的复制,并且处理将要写入到存储器单元的位的ECC和编码,并且然后转移已编码的位的已处理的部分。例如,在用于每单元三位的MLC存储器单元的三个编程阶段处理中,对于每个MLC存储器单元的三个主机位的三份复制可以被贮存在控制器中的RAM中,并且控制器可以分别地处理并且对于每个编程阶段将三个位转移到非易失性存储器。这将产生九个分别位贮被存在控制器RAM中,并且九位——对于每个编程阶段三个——在三个编程阶段上被处理并且被发送到闪速存储器。通过重复地取回和处理用于多步骤编程处理的每个过程的原始数据,消耗来控制器资源和功率,潜在地降低了闪速存储器的整体性能。
发明内容
为了解决对改善性能的需求,这里公开了方法和系统,用于提供用于减少在编程操作期间写入到MLC闪速存储器单元所必要的控制器资源量的控制器架构和方法。
根据一个方面,一种存储器系统包括非易失性存储器系统,所述非易失性存储器系统包括具有多个字线的多级单元(MLC)非易失性存储器,每个字线(WL)具有多个MLC存储器单元并且能够在多个编程过程中编程。存储器系统可以包括诸如易失性存储器的电路,所述电路被配置为在第一部分中接收来自数据源的对应于在MLC非易失性存储器中的WL的贮存容量的接收的数据量。所述电路还可以包括:预编码引擎,被配置为将在第一部分中的接收的数据量转换为用于将在所述多个字线中的一个中进行的所有的多个编程过程的直接WL编程数据,并且在所述易失性存储器的第二部分中贮存用于所述多个字线中的一个的所有所述多个编程过程的所述直接WL编程数据。所述电路还可以包括处理器,其被配置为将所述直接WL编程数据的不同部分从所述第二部分发送到所述多个字线中的一个以用于多个编程过程的每一个。存储器系统可以单次预处理原始接收的数据,以便于产生用于WL的所有的多个编程过程的直接WL编程数据。处理器还可以被配置为在将所述直接WL编程数据的至少一部分从所述易失性存储器发送到所述MLC非易失性存储器之前、从所述易失性存储器删除接收的数据量。
在另一方面,提供了一种管理将数据写入到非易失性存储器的WL的方法。这些方法可以包括:从数据源接收数据并且在易失性存储器的第一部分贮存所述接收的数据,直到接收到对应于字线(WL)在所述MLC非易失性存储器中的贮存容量的预定量的数据。接收的预定量的数据被预编码为用于将在用于一个WL的MLC非易失性存储器中进行的多个编程过程的每一个的直接WL编程数据。用于WL的所有的多个编程过程的预编码的直接WL编程数据被贮存在易失性存储器的第二部分中。对于用于WL的多个编程过程的每一个,所述方法包括从所述易失性存储器的第二部分发送比接收的所述预定量的数据少的直接WL编程数据量。
当检阅下述附图、具体实施方式和权利要求时其它特征和优点将变得清晰。此外,公开了其它实施例,并且每个实施例可以单独或者组合使用。现在将参考附图描述实施例。
附图说明
图1示出了与具有包含多个裸芯的多条(multi-bank)非易失性存储器的存储器系统连接的主机。
图2是用在图1的存储器系统中的示例闪速存储器系统控制器的示例框图。
图3是适用图1所示的非易失性存储器条中的一个的示例一个闪速存储器条。
图4是示出可以用在图3的存储器条中的字线和块分组的存储器单元阵列的代表性电路图。
图5示出了图3的存储器条的示例物理存储器组织。
图6示出了图5的物理存储器的一部分的扩展视图。
图7示出了描述用于在每单元三位存储器中的三个阶段NAND闪速编程操作的每个阶段的目标电压水平的示例非易失性存储器编程图。
图8示出了用于编程每单元三位NAND存储器的交织的字线写入和编程过程顺序的示例图表。
图9示出了相比于图7使用减少的数据转移方案的三个阶段编程操作的第一NAND闪速字线编程过程。
图10示出了接着图9的第一编程过程的具有减少的数据转移的第二或者模糊的(foggy)、NAND闪速编程过程。
图11示出了接着图9和10的第一和第二编程过程的具有减少的数据转移的第三或者精细的、NAND闪速编程过程。
图12是在用于实现诸如图9-11所示的具有减少的数据转移操作的多阶段NAND闪速编程操作的图1的存储器系统中的控制电路的功能性框图。
图13是可用在图1和12的存储器系统中的直接WL写入操作位转换表的实施例。
图14是将接收的数据预编码为直接WL编程数据、以用在多编程阶段NAND闪速存储器编程操作并且可以由图12的控制电路执行的实施例的流程图。
具体实施方式
在图1-6中示出适用于实现本发明的方面的闪速存储器系统。图1的主机系统100将数据贮存到存储器系统102中,并从存储器系统102取回数据。存储器系统可以是嵌入在主机中的闪速存储器——诸如以安装在个人计算机中的固态磁盘(SSD)驱动的形式。可替换地,存储器系统102可以是以通过如图1中所示的机械的和电的连接器的配件104和106而可拆卸地连接到主机的卡的形式。被配置为用作内部或嵌入的SSD驱动盘的闪速存储器看上去可以与图1的示意图相似,其中主要的区别在于存储器系统102的位置在主机的内部。SSD驱动盘可以以作为用于旋转磁盘驱动的插入式(drop-in)替换的分立的模块的形式。
图1的主机系统100可以被视作具有两个主要部件,在考虑存储器系统102的情况中,其由电路和软件的组合构成。它们是与存储器系统102接口的应用部分108和驱动器部分110。在PC中,例如,应用部分110可以包括在主机100上运行文字处理、图形、控制或其它流行的应用软件的处理器112以及用于管理数据的文件系统114。在相机、蜂窝电话或主要致力于进行单集合的功能的其它主机系统中,应用部分108包括操作相机以拍取并贮存图片、拨打蜂窝电话以接収电话等的软件。
图1的存储器系统102可以包括非易失性存储器(诸如闪速存储器116)以及与主机100接口以来回传递数据并且控制存储器116的系统控制器118,所述主机100连接到存储器系统102。系统控制器118可以在数据编程和读取期间在主机100所使用的数据的逻辑地址以及闪速存储器116的物理地址之间转换。闪速存储器116可以包括任何数量的存储器条120,并且仅是以说明的方式在图1中示出两个存储器条。功能上,系统控制器118可以包括,与主机系统接口的前端122、用于协调存储器116的操作的控制器逻辑124、用于诸如垃圾收集的内部存储器管理操作的闪速管理逻辑126、以及提供控制器与闪速存储器116之间的通信接口的一个或多个闪速接口模块(FIM)128。
系统控制器118可以被实现在单个集成电路芯片(诸如在图2所示的专用集成电路(ASIC))上。系统控制器118的处理器206可以被配置为能够通过存储器接口204单独地与各自的存储器条120的每一个通信的多线程处理器,所述存储器接口204具有用于在闪速存储器116中的各自的存储器条120的每一个的I/O端口。系统控制器118可以包括内部时钟218。处理器206通过内部数据总线202与误差校正码(ECC)模块214、RAM缓冲器212、主机接口216和启动代码ROM210通信。
在闪速存储器116中的每个存储器条120可以包含一个或多个存储器裸芯,每个存储器裸芯具有被组织到多个平面中的存储器单元阵列。图3示出了在裸芯中的平面310和312的一个实施例,但是为了简洁仅示出在存储器裸芯中的平面/阵列的一部分。替代地,可以使用更多数量的平面,诸如四个、八个或者更多平面。可替换地,存储器条的存储器单元阵列可以不被划分为平面。但是当被如此划分时,每个平面具有其各自的可相互独立地操作的列控制电路314和316。电路314和316从系统总线302的地址部分306接收它们各自的存储器单元阵列的地址,并且将这些地址译码以寻址特定的一个或多个的各自的位线318和320。响应于在地址总线19上接收的地址,通过行控制电路324寻址字线322。源极电压控制电路326和328也与各自的平面连接,p阱电压控制电路330和332也一样。如果条300是以具有单个存储器单元阵列的存储器芯片的形式,并且如果在系统中存在两个或更多这样的芯片,通过与系统总线302的数据部分304连接的各自的数据输入/输出电路334和336将数据转移进入或者转移出平面310和312。提供电路334和336以用于通过经由各自的列控制电路314和316而连接到平面的线338和340、将数据编程到存储器单元中并且从其各自平面的存储器单元读取数据两者。
尽管在系统控制器118中的处理器206控制在每个条120中的存储器芯片的操作以编程数据、读取数据、擦除以及参与各种内务,但每个存储器芯片还包含执行来自控制器118的命令以进行这样的功能的一些控制电路。接口电路342连接到系统总线302的控制和状态部分308。来自控制器118的命令被提供到状态机344,所述状态机344然后提供其他电路的特定控制以便于执行这些命令。如图3中所示,控制线346-354将状态机344与这些其它电路连接。来自状态机344的状态信息在线356上被传输到接口342以用于在总线部分308上传送到控制器118。
下面讨论存储器单元阵列310和312的NAND架构,尽管可以替代地使用诸如NOR的其它架构。图4的电路图示出了示例NAND阵列,其是图3的存储器条300的存储器单元阵列310的一部分。提供了多个全局位线,为了说明的简洁在图4中仅示出了四个这样的线402-408。多个串联的存储器单元串410-424被连接在这些位线中的一个和参考电势之间。使用存储器单元串414作为代表,多个电荷贮存存储器单元426-432在所述串的任一端处与选择晶体管434和436串联连接。当一串的选择晶体管被呈现为传导的时,该串被连接在其位线和参考电势之间。然后,在该串中的一个存储器单元一次被编程或者读取。
图4的字线438-444独立地延伸穿过在多串存储器单元的每一个中的一个存储器单元的电荷贮存元件,并且栅极446和450控制在所述串的每一端处的选择晶体管的状态。使得共享共同的字线和控制栅极线438-450的存储器单元串形成被一起擦除的存储器单元的块452。单元的该块包含可以一次物理地擦除的最小数量的单元。一次编程存储器单元的一行、沿着字线438-444的一个的那些。典型地,以预定顺序编程NAND阵列的行,在该情况中,以沿着最靠近连接到地或者另外的共同电势的串的端部的字线444的行开始。接着编程沿着字线442的存储器单元的行,以此类推,贯穿块452。最后编程沿着字线438的行。
第二块454是类似的,其存储器单元的串连接到与在第一块452中的串相同的全局位线,但是具有字线和控制栅极线的不同组。对每个阵列构造多个块。由行控制电路324驱动字线和控制栅极线到其合适的操作电压。如果在系统中有多于一个平面,诸如图3的平面1和2,一个存储器架构使用在其中之间延伸的共同字线。可以可替换地存在共享共同字线的多于两个的平面。在其它存储器架构中,单独地驱动单个平面的字线。
存储器单元可以被操作以贮存两级电荷,使得单个位的数据被贮存在每个单元中。这也被称为X1或单级单元(SLC)存储器。可替换地,存储器单元可以被操作以在每一个电荷贮存元件或区域中贮存多于两个的可检测的级的电荷,从而在每一个中贮存多于一个位的数据。该后一种配置被称为多级单元(MLC)存储器。一种或两种类型的存储器单元可以用在存储器中,例如二进制闪速存储器可以被用于缓存数据,并且MLC存储器可以被用于更长期的贮存。存储器单元的电荷贮存元件最通常地是传导的浮置栅极,但是可以可替换地是非传导的电介质电荷捕捉材料。再次参照图1,每个条120可以包括被配置有SLC或MLC存储器单元的阵列的裸芯,其中一个条120可以包括SLC存储器单元,并且另外的条120可以包括MLC存储器单元,或者每个条可以具有SLC和MLC存储器单元的类型的组合。
图5概念性地描述了示出存储器单元的四个平面502-508的多平面布置。这些平面502-508可以在单个裸芯上、在两个裸芯上(在每个裸芯上两个平面)或者在四个分离的裸芯上。当然,其它数量的平面、诸如1、2、8、16或者更多也可以存在于系统的每个裸芯中。平面被独立地分为如图5中所示的矩形的存储器单元的块、诸如位于各自的平面502-508中的块510、512、514和516。在每个平面中可以有几十个或者几百个块。
如上所述,存储器单元的块是擦除的单位、可以一起物理地擦除的最小数量的存储器单元。但是为了增加的并行性,以更大的元块为单位来操作所述块。来自每个平面的一块被逻辑地链接在一起以形成元块。示出四个块510-516为形成一个元块518。在元块中的所有的单元通常被一起擦除。被用于形成元块的块不需要被限制到在其各自平面中相同的相对位置,如由块522-528构成的第二元块520所示。尽管通常优选的是将元块延伸穿过所有的平面,但是为了高系统性能,可以以动态地由在不同的平面中的一个、两个或三个块中的任何或者所有来形成元块的能力来操作存储器系统。这允许元块的尺寸可以更加紧密地匹配可用于在一个编程操作中贮存的数据的量。
如图6中所示,单个的块又为了操作性目的被划分为存储器单元的页。例如,每个块510-516的存储器单元的每一个被分为八页P0-P7。可替换地,在每个块中可以有32、64或者更多的存储器单元的页。页是在块中数据编程和读取的单位,包含一次编程或读取的最小数量的数据。在图3的NAND架构中,一页由沿着在块中的字线的存储器单元来构成。但是,为了增加存储器系统的操作性并行性,在两个或多个块中的这样的页可以逻辑地链接为元页。在图6中示出元页602,其由来自四个块510-516的每一个的一个物理页形成。例如,元页602包括在四个块的每一个中的页P2,但是元页的页不一定需要具有在每个块中的相同的相对位置。在裸芯中,元页是编程的最大单位。
当编程字线(WL)的每个单元——诸如图4中的WL438的单元426——时,在非易失性存储器中的编程电路可以包括电荷泵或在非易失性闪速存储器裸芯一般可以找到的其它内部控制器电路,其通常将小电荷注入到单元中直到达到期望的电压状态。在被配置为贮存3位的信息的MLC存储器单元——其在这里还被称为X3存储器——中,存在表示3位所必要的23=8个可能的状态。8个状态(在这里被称为Er、A、B、C、D、E、F和G,其中Er指擦除状态)是单元可能被编程的8个离散的电压水平(Vt)。参照图7,在对于每单元3位NAND闪速存储器的WL中的每个单元可以贮存来自3个不同的页的每一个的位:高页位(UP)702、中页位(MP)704和低页位(LP)706。这样的存储器单元的典型编程操作将会需要将意欲用于该单元的主机数据的3个原始的位从控制器转移到NAND存储器三次,对于三个编程过程的每一编程过程需要一次,以将正确的电荷量推进(nudge)单元中以达到期望的电压状态而不超过(overshoot)期望的电压状态。
如在图7中所指示的,三个编程过程或状态可以在这里分别被称为第一编程过程708、模糊(foggy)编程过程710和精细编程过程712。一般来说,第一编程过程708将会是将贮存的电压留在擦除的(Er)714水平或者中间水平(在图7中的LM716)的粗略(cruder)电压脉冲,其中Er电压水平允许接续的继续的编程到8个期望的电压状态的前4个(Er、A、B或C)的一个,并且LM电压水平将电压推到可以增加到8个期望的电压状态的后4个(D、E、F或G)的一个的阈值。
在诸如图7中所示的存储器中的典型的第一/模糊/精细编程方案中,原始3个主机位被重复地从控制器被发送到NAND以进行三个编程阶段的每一个。因此,在第二或者“模糊”编程步骤中,UP、MP和LP数据再次从控制器被发送到NAND存储器。UP、MP和LP位被非易失性存储器(例如NAND闪存)使用来产生如下模糊编程阶段电压脉冲,需要该模糊编程阶段电压脉冲来将在第一编程步骤708中实现的当前状态(Er或LM)推到8个期望的状态中的更加精确(resolved)的1个。在图7中示出了在模糊编程710之后的假设的电压分布选项、以及在该电压水平处的3个页位的相关联的状态。在第二轮的发送数据的原始3位到NAND存储器并且执行第二或者模糊、编程阶段710之后,原始的三位再次从在控制器中的RAM被取回并且被发送到NAND以提供实现8个状态的期望的1个所必要的最后的、或者精细的编程步骤712。在图7中示出了在精细编程阶段712之后的可能的编程电压的分布,其中8个可能的状态被示出为完全还原(restored)。
尽管每个WL将被写入三次,但是可以在字线之中交织写入的顺序。更具体地,由于应用到邻近字线的第一、模糊和精细编程过程可能导致编程干扰问题,其中应用到一个WL的电荷可能影响应用到邻近WL的电荷,因此可以使用预定WL编程顺序。在图8示出一个这样的预定WL编程顺序,其中相邻字线的编程被充分地交织以减少编程干扰的机会。在图8中,提供了示例编程顺序表800,示出WL号802以及用于在各自的WL上的第一804、模糊806和精细808编程过程的每一个的WL编程步骤的相应的顺序。表800示出了,WL编程顺序基本上以从表800的左下到右上的对角线的模式进行。
例如,在对WL0的第一编程过程之后,进行对WL1的第一编程过程,并且然后回到对WL0的模糊编程过程。在此之后,如所示出的,在所述模式进行到在WLN(在该示例中以N=2开始)上的第一编程过程之后,进行在WLN-1上的模糊编程过程,并且然后在WLN-2上的精细编程过程直到在最后的WL上的第一编程过程完成。当使用传统的第一/模糊/精细编程技术X3WL的每一个已经被完全编程时,控制器已经向NAND存储器转移了九页数据以编程三页数据。此外,任何ECC或扰码已经进行多次:每次用于三个编程过程的每一个。为了以更加有效的方式完成第一、模糊和精细编程步骤,构造了用于在控制器中预编码原始的主机数据位的方法和系统。该可替换的方法使用控制器118来用主机数据以计算字线(WL)页数据,由于其将由NAND存储器自身内部地计算而不是多次发送主机数据的所有页(UP、MP、LP)以用于NAND存储器自身处理所有的数据。以在图8-11中的直接WL编程数据预编码步骤示出了预编码WL数据到NAND的一个这样的方法。
现在参照图9,对于每单元3位NAND存储器单元,标准的主机数据的3页位可以由控制器预处理为单个LM位904,所述单个LM位904在之后被作为单个直接WL写入页的部分而转移到NAND存储器以用于第一编程阶段902,而不是作为将所有的3个原始数据的页发送到NAND存储器的部分将所有的3个原始主机位发送到NAND存储器。假设在第一、模糊、精细编程处理中的第一编程阶段基本上是在两个电压(Er或LM)的一个之间选择,控制器118可以计算或者仅使用表906查看页数据(UP、MP、LP)以找到目的地为WL中的单元的3位的每一个位,以查看这3位落入了两个预定组中的哪一个组中。表906可以将“1”值关联到第一组的4个组合(111、110、100和000),并且将“0”关联到第二组的4个组合(010、011、0001、101),并且当应该使用第一编程过程来编程目的地WL时,控制器则会在第一编程过程期间将该单个位(LM位904)传递到合适的NAND存储器单元,而不是如图7中所示的发送所有3个原始位以编程单元以用于第一编程过程。当NAND存储器在第一编程过程902期间接收LM位时,在WL中的目标单元上的电荷被移动到Er或LM状态,如图9中所示。
如图10所示,可以在控制器或控制电路处理目的地为在WL上的单元的主机数据的原始的3位以用于第一编程过程的同时,完成用于在接下来的、或者模糊编程过程1002中转移的位的预编码。在产生用于传送到NAND以用于模糊编程阶段1002的数据的该第二预编码步骤中,控制器可以利用如下优点:NAND存储器能够在上述第一编程阶段902之后读取目标单元的电压状态,以仅产生两位的预处理的编程数据以在模糊编程过程1002中发送到NAND存储器。假定在第一编程步骤902之后,NAND存储器将具有两个可能的电压水平(Er或LM)之一,并且可以内部地感测该第一阶段电压水平是什么,则对于那些两个可能的电压水平的每一个,NAND仅需要2个额外的位的信息来识别与该原始编程水平分组的4个状态的哪一个是所期望的。因此,由于在第一编程阶段之后的Er水平将表示可能的Er、A、B或C目标水平,并且LM第一编程电压与可能的D、E、F或G目标水平有关,NAND存储器仅需要知道有关于NAND可读的第一编程阶段的四个中的哪一个是所期望的。控制器因此可以简单地计算或从表1004a读取用于在原始的两组位组合中的4个状态的每一个的两位编程组合(模糊位1004)。当对WL执行模糊编程过程时,控制器则仅需要发送该两位组合到NAND存储器,而不是如在之前的编程计数中的原始的三个主机数据位。用于图10中所示的模糊编程过程的两个预处理的直接WL位的最高有效位是模糊位1(FB1),以及模糊位的最低有效位是模糊位0(FB0)。
对于第三和最后编程阶段,在这里还被称为精细编程阶段1102并且如图11中所示,控制器预处理用于单元的原始的3位以产生用于精细编程过程的直接WL写入位。如对于用在第一和模糊编程过程中的直接WL写入位的预编码一样,在与直接WL写入位相同的时间并且从相同的原始的主机数据位产生用于精细编程过程的直接WL位。在预编码用在精细编程过程1102中的原始主机位时,控制器可以减少原始的3位为1位。
由于NAND存储器关于在目标WL上的单元的当前状态的感测能力,再一次是可能的,将原始的3位预编码为用于精细编程过程的单个直接WL编程位。在对NAND存储器中的目标WL进行模糊编程过程1110之后,在WL上的每个单元将具有最终的8个状态的一个的电荷代表(在该X3MLC示例中),这只需要更加精细的调节以达到期望的电压水平和分辨率。认识到,8个可能的编程状态可以被分为奇数和偶数状态,诸如表1106中所示的,预先进行的用于精细编程过程1102的直接WL写入信息可以是每单元单个位。在该示例中,偶数状态被认为是Er、B、D、F电压状态,并且奇数状态被认为是A、C、E、G电压状态。控制器可以再次使用查找表1106,该查找表1106列出3位模式(pattern)以及该主机数据模式的相应的预定偶数或奇数指定。
当轮到对WL的精细编程过程1102时,控制器则可以仅发送单个直接WL写入页到NAND存储器。然后,NAND存储器将获得用于WL的每个目标单元的精细位(FB1104),并且在目标单元的非相邻模糊状态之间进行内部感测(见在图11中标识的用于模糊状态电压的读取点1108)。在Er和BF、AF和CF、BF和DF、CF和EF、DF和FF以及EF和GF之间示出了六个非相邻状态,其中在每个状态的结尾的“F”仅表示它是在模糊编程状态1110的结尾的状态的版本。然后,NAND存储器可以识别当前的(后模糊阶段)单元电压水平所处于的7个可能的模糊状态‘对’1111中的一个。为了方便,每对1111包括一个偶数状态和一个奇数状态。通过从控制器接收的单个精细编程状态位FB1004,NAND可以使用模糊状态对索引来确定每个单元需要被编程到哪个精细状态。例如,如果NAND存储器确定目标单元是FF或GF(在图11的模糊编程状态图1110上的框1112中读取),并且从控制器接收的精细页位FB1104是0(偶数),NAND存储器将单元编程到所述对的偶数状态或F状态。可替换地,如果来自控制器的精细页位1104是1(奇数),所述单元将被编程到奇数状态,这在该示例中将是G状态。
可以在应用到从主机接收的原始数据位的离散处理中确定用于在上述三个过程第一/模糊/精细编程方案期间发送的直接WL写入页的直接WL写入位的预编码,但是在一个实现方式中,优选地一次从目的地为在NAND存储器中的X3MLCWL的主机数据的原始的3页中全部产生预处理的直接WL写入信息。此外,为多个不同的WL单独地计算的直接WL写入页的组可以被贮存在输出缓冲器中,并且以关于图8所述的相同的交织方式被发送到合适的WL以减少写入干扰问题。
为了将预编码主机页信息支持到在产生上述直接WL写入页时所使用的减少的编程位,现在讨论控制器架构和方法。参照图12,示出了功能性控制器架构1200,其可以被实现在诸如图2的控制器118的控制器电路中。
控制器1200可以在控制器1200中的主机接口电路1202处接收主机数据以及相关联的主机逻辑块地址(LBA)地址。命令和逻辑块地址信息可以在第一信道1204上被路由到中央处理单元1206,而与命令和逻辑块地址信息相关联的数据可以在数据路径1208上被发送到在控制器1200中的高(upper)页、中间页或低(lower)页(1212、1214和1216)缓冲器。CPU1206可以使用逻辑块地址伴随用于写入数据的命令来关联标头信息,并且适当地放置用于具有高页、中间页和低页信息的数据的合适的标头信息1218。其它元数据可以被包含在标头信息1218中。当高页、中间页和低页信息1212、1214和1216和相关联的标头1218信息被组合,数据和标头信息被一起发送到误差校正码(或ECC)引擎1220,并且为高页加标头、中间页加标头以及低页加标头的每一个计算的ECC信息1222分别被附加到页数据条目的每一个。
在用于每个页的误差校正码产生之后,使用扰码引擎1224首先处理和扰码该数据,接着在预编码引擎1225中从误差校正的以及扰码的页数据产生直接WL写入编程页。如上所述,在将主机数据扰码和预编码为直接WL写入页之前,具有标头和ECC信息的主机数据(分别具有标头和ECC的UP、MP和LP数据)可以首先被传递通过误差校正码(ECC)引擎1220,该误差校正码(ECC)引擎1220在数据上实现多个已知ECC技术中的任何。扰码引擎1224可以是被配置为打断数据模式的任何的多个类型的已知的扰码引擎,否则所述数据模式将导致长序列的连续的逻辑“1”或“0”状态。由于1的长序列或者的0的长序列有时不能良好地转移到NAND存储器中并且可能导致NAND存储器有时可能看到的类似读取干扰问题的电荷的不均衡,扰码器1224可以基于已知的公式打断这些数据模式以避免这些问题。
如这里所使用的,术语“扰码”意味着在将数据贮存在闪速存储器中之前使得将要贮存在闪速存储器中的原始数据经历随机化或扰码处理。当读取扰码的数据时,该扰码的数据在使用之前必须被解扰。该随机化处理的一个实施例可以是通过用扰码器模式来XOR要贮存在闪速存储器中的数据来随机化。合适的扰码机制的示例包括应用搅码器模式的扰码电路。扰码器模式可以是伪随机模式或者被特定地选择为解决特定编程干扰影响的模式。例如,被解扰的32位数据字可以与在移位寄存器中的32位扰码器模式XOR,以形成32位扰码的数据字。实现方式可以一次XOR一个或多个位。移位寄存器的初始值或者种子(seed)对每一页可以是不同的以减少页之间的相关性。在示例性实施例中,一页是4096字节并且一字线是16384字节。其它实施例可以具有不同的页和字线大小。可以实现任何的多个可用的扰码电路和技术。
一旦字线量的数据(对于该示例的每单元3位MLC单元包括用于每个单元的高页、中间页和低页数据位)、标头数据和ECC信息已经被扰码,则可以执行用于字线的每一页的扰码的且编码的位的预编码,以产生NAND直接WL编程页。在一个实现方式中,预编码表——诸如图13所示的表1300——可以被贮存在控制器1200中的非易失性存储器中,其中处理器1206可以访问所述控制器1200以取回合适的直接WL编程位1204,用于对应于扰码的和ECC编码的位的八个可能的位模式1202的合适的一个的所有编程阶段。可替换地,预编码引擎表可以是在预编码引擎中的嵌入的微代码,或者完全实现在预编码引擎1225的硬件逻辑中,在其它的可替换实现方式中,ECC引擎1220和扰码引擎1224的功能可以组合,使得ECC引擎将ECC算法和扰码算法两者应用到主机数据。
存储器系统102可以以许多不同的方式实现。每个引擎——诸如ECC引擎1220、扰码器引擎1224和预编码引擎1225——可以是硬件或者硬件和软件的组合。例如,每个引擎可以包括专用集成电路(ASIC)、可编程门阵列(FPGA)、电路、数字逻辑电路、模拟电路、离散电路的组合、开关电路、任何其它类型的硬件或其组合。可替换地或者此外,每个模块可以包括存储器硬件——诸如包含例如可以用处理器1206或者其它处理器执行的以实现所述引擎的一个或多个特征的指令的易失性或非易失性存储器一部分。当任何一个引擎包括存储器的包含可以用处理器1206执行的指令的部分时,引擎可以包括或可以不包括处理器1206。因为即使当包括的硬件包含软件时每个引擎或控制电路,包括至少一些硬件,每个引擎可以可交换地指硬件引擎或模块。
在该示例中的表1300包含在上面关于图9-11讨论的直接WL编程位,其中对于在每一页的ECC编码和扰码操作之后出现的扰码且编码的位的3位模式确定用于编程过程的每一个(第一、模糊和精细)的单独的直接WL编程位。因此,在控制器1200中的处理器1206执行ECC编程的数据的扰码之后,处理器查找或确定对应于ECC编码的和扰码的数据所表示的编程过程的每个直接WL编程位。例如,如果目的地为WL的第一单元的扰码的数据的3位(UP、MP、LP)是“110”模式,对应于在表1300中的“A”状态,控制器将取回LM页位的1、以及2个模糊页位的10(模糊页1=0、模糊页0=1)。由于在该示例中精细页位1总是与模糊页1位相同,所以仅需要每单元3位。对WL的ECC编码的和扰码的单元数据的每个3位组进行重复,并且所述结果累积到在多个易失性存储器输出缓冲器1232(其可以是控制器RAM)的一个中的单独的直接WL编程页中,以作为LM页1126、模糊1页1127以及模糊0页1128。该组预处理的数据页在这里还被称为直接WL编程页,其中直接WL编程页对应于上述关于图9-11描述的直接WL编程数据。用于不同的WL的直接WL编程页的单独的输出缓冲器1232被一次填充。在用于上述提供的X3MLC的示例的控制器1200中的输出缓冲器1232的数量在使用图8的WL写入交织模式使得用于三个不同的WL的不同的编程过程在任何一时间处被处理的实施例中可以至少是三个。
参照图14,预编码(也被称为预处理)的一个实现方式,示出了接收主机数据到传送直接WL编程页的步骤。假设在如上所述的非易失性存储器中每单元3位目的地WL,控制器1200的主机接口1202接收主机数据,直到接收到足以填充三页数据以编程一个WL的数据量(在1402处)。接收的数据可以照原样处理或者首先被加密。三页的每一个的一位被布置为高页位、中页位和低页位,并且用于UP、MP和LP的每一个的标头信息被附加到每一页(在1404处)。
三页1212、1214、1216和各自的标头1218被传递通过误差校正码引擎1220——其可以是由处理器1206执行的任何的多个已知的ECC算法——以产生数据的ECC编码的WL(在1406处)。数据的ECC编码的WL可以然后被传递通过在控制器1200中的扰码引擎1224和直接WL编程预编码引擎1225。扰码和预编码引擎可以实现在处理器1206上执行的软件中以使用如上所述的任何的多个已知的扰码算法以已知的扰码例程扰码数据的ECC编码的WL,以避免1或0的长序列(在1408处)。然后,数据的ECC编码的和扰码的WL可以被如上所述地预处理,以对于每个3位单元的大小的扰码的数据来识别用于在WL中的每个单元的三个编程阶段的每一个的直接WL编程位。直接WL编程位在输出缓冲器中被累积为单独的直接WL编程页(在1410处)。
所产生的直接WL编程页包括用于第一编程阶段的一页的直接WL编程位(也被称为LM页)、以及用于模糊编程阶段的两页的直接WL编程位,该模糊编程阶段已经包括一页的精细编程阶段位的复制(copy)。当包含所有的预处理的直接WL编程页的输出缓冲器1232已经被完全填充以用于目的地WL时,控制器1200则可以通过丢弃原始的主机页来释放控制器的输入RAM缓冲器,以允许控制器接收用于下一个WL的将被编程的下一组的数据(在1412处)。然后,控制器1200可以将直接WL编程页转移到目的地非易失性存储器(在1414处)。
在一个实现方式中,控制器1200通过非易失性存储器接口1234仅发送特定编程阶段(第一、模糊或精细)所要求的由非易失性存储器1236当前所需要的直接WL编程页的部分。换句话说,对于在非易失性存储器1236中的WL上的第一编程过程,控制器仅发送直接WL编程数据的LM页1226,并且剩余的直接WL编程页被保留在输出RAM缓冲器1232中,直到第一编程过程完成,并且用于该WL的模糊编程过程被授权,例如基于诸如在图8的表800中列出的WL写入顺序交织。编程然后将一次继续一个编程步骤,其中控制器1200仅发送出用于在非易失性存储器中的WL的当前编程过程的一个或多个直接WL编程页。
优选地,直接WL编程位的所有的ECC编码、扰码和决定从主机数据的原始的3页的单个组完成。换句话说,这里所述的控制器1200和方法仅需要单个输入缓冲器1231以用于被编程到各自的不同的X3WL的接收的主机数据的每个三页,并且然后仅实现一个ECC过程和单个扰码操作以得出数据,所述数据将在然后在预编码引擎中被进一步预处理,以获得用于如前所述的该WL的所有编程阶段的直接WL编程位。通过在单个预编码过程之后在输出缓冲器1232中贮存所有的直接WL编程页,控制器1200的输入缓冲器1231可以比在使用原始数据的多个复制或者在原始数据上在不同的通路中产生直接WL编程位的控制器系统中更早地释放。
这里所述的控制器和方法可能需要更大的输出缓冲器1232,使得用于编程多个WL的所有的直接WL编程页可以被贮存,直到它们可以被发送,但是控制器和方法减少单独地并且连续地产生用于每个编程阶段的独立的直接WL编程页的处理开销。此外,所述的方法和系统利用用于编程过程的预编码主机数据,并且对于X3MLC,相比于传统的在控制器和非易失性存储器之间的在三个第一/模糊/精细编程过程的过程上的9页的未处理的主机数据的传送,仅需要在三个编程过程期间发送总共4页的直接WL编程数据。在公开的方法和系统中可获得的总线拥堵、功率和编程时间的减少可以改善整体的存储器系统性能。
此外,因为在图9-11中所述的四个直接WL编程页产生于3个原始的主机数据页,就携带信息来说,一页是冗余的。假设对存储器系统来说,直接WL编程编码的类型是已知的,可以识别直接WL编程数据的冗余的页,诸如模糊0页位和精细页位的冗余。因此,在控制器RAM中的输出缓冲器1232仅示出三个直接WL编程页,而不是四个,因为精细页数据与模糊0数据1230相同。
一旦在引擎1224、1225中完成扰码和预处理,LM页位1226、模糊页位1228、1230和精细页位(在该示例中与模糊0页位1230相同)被贮存在输出缓冲器1232中,以用于通过非易失性存储器接口1234接口传送到非易失性存储器1236存储器。再一次,相比于单独地为每个编程过程从主机数据的原始位重新计算第一、模糊和精细编程位的每一个,其中标头和ECC信息被打包并且计算单独的三次,原始数据被处理一次以用于ECC和数据扰码的需要,并且然后一次从ECC处理的和扰码的数据的该单个复制确定所有的直接WL编程页。尽管在上述实现方式中,从原始的主机数据预处理的直接WL编程页的每一个在一个通路中计算、贮存在控制器上并且一次发送一个,但在其它实现方式中可以构造预编码处理可以实现在单独的处理通路中以单独地得到用于每个编程过程的直接WL编程页。
通过非易失性存储器接口1234从非易失性存储器1236读取数据的处理可以是在图14中所描述的直接WL写入处理的修改的反转(reversal),其中的区别在于从完全编程的WL读取数据将不需要预编码步骤1410的反转处理。从在MLC非易失性存储器中的每个字线读取的数据可以通过非易失性存储器接口1234接收并且在扰码器1224中解扰,以反转当数据被贮存时实现的扰码。由于从在非易失性MLC存储器中的WL读取的信息是其最终的编程形式,所以不需要转换诸如用于编程WL的直接WL编程数据的任何中间的编程阶段的命令。相反,解扰的数据可以然后使用相同的ECC引擎1220处理以检查误差,并且UP1212、MP1214和LP1216数据可以从其各自的ECC数据1218和标头数据1222分开并且被贮存在控制器1200中的输入缓冲器1231中,以用于通过主机接口1202传送到主机或一些其它目的地。但是如果主机读取命令指向数据而同时该数据还在输出缓冲器中处于预编码的和扰码的形式(即,在RAM中在编程到在非易失性存储器中的WL之前),则从RAM的主机读取将需要扰码和预编码的反转两者。
在上面图12-14中提供的示例涉及一种控制器,其用于直接的字线写入的预编码数据,以相比于标准的非易失性存储器写入操作减少数据转移和处理步骤的数量,其中所述标准的非易失性存储器写入操作可能需要将位多次传送到非易失性存储器以用于编程处理。在上述示例中,假设每单元三位的MLC单元容量,其中如所述WL具有多个MLC单元,所述MLC单元包括用于字线的三页(高页、中间页和低页)。图13的查找表基于产生单个LM页直接的写入位、两个模糊位(模糊页1和模糊页0)以及一个精细编程阶段位的特定的八个状态模式。在图12的特定示例中,可能的状态的布置被配置为使得对于在字线中的每个单元精细页位实际上与模糊页0位相同。因此,相比于需要在控制器上贮存每单元四个单独的位以用于编程,仅需要每单元三位,因为可以在向非易失性存储器的两个单独的传送中使用模糊页0位。
在一个实现方式中,用于产生诸如上述的直接WL编程页的系统和方法还可以被配置为在关机的情况中保护直接WL编程页。当主机需要关机时,例如当主机将要掉电时将关机命令从主机100通信到存储器系统102,在易失性存储器缓冲器中的任何数据,诸如输出缓冲器1232可能丢失。为了防止此发生,可以在将直接WL编程数据发送到在MLC存储器中的WL之前增加将直接WL编程页直接写入到非易失性存储器1236的SLC存储器的额外的步骤。以此方式,还没有被写入到MLC存储器的直接WL编程页可以之后被恢复以用于继续到MLC的写入处理。在该实施例中,用于每单元三位示例的四个预处理的页的一个完全不需要被编程,因为如上所述它是冗余的。具体地,冗余的精细页位和模糊页0位可能仅需要在未完成的编程步骤(关机)期间被贮存在SLC中的一个复制。用于精细页的第四预处理的页可以在之后基于该已知的冗余从贮存的三页被重建。
在SLC中的直接WL编程页的中间的贮存还可以辅助主机需要在完成用于MLCWL的所有三个编程过程之前清除输出缓冲器的情况。将预处理的直接WL编程页贮存到SLC甚至可能在避免由于非预期的断电(例如当在写入操作期间手动地从主机断开存储器系统)导致的数据损坏中是有益的。如果在存储器系统中的剩余容量足以在所述剩余容量耗尽前允许直接WL编程数据写入到SLC的完成,则预处理的直接WL编程数据在该情况中也可以从SLC中恢复。
在从在非易失性存储器中的MLC到MLC(两者都是每单元三位MLC)完成片外复制的情况中,控制器可以读取三个贮存的数据页(一个WL),并且将它们处理为上述直接的数据页形式以用于重新编程到MLC存储器的另外的部分,例如在非易失性存储器中的另外的条或裸芯。在该X3到X3片外复制期间,当防止将数据编程到目的地X3的完成的正常关机或清除缓存步骤发生时,如果原始源X3数据位置还没有被擦除,在控制器RAM中的数据不需要用任何中间SLC贮存来保护。
所意欲的是前述具体描述被理解为本发明可以采用的选择的形式的说明,而不是本发明的定义。只有下述权利要求,包括所有等效物意欲定义本发明的范围。此外,下述权利要求的一些可以申明一组件可操作为进行某些功能或者为某些任务而配置。应注意的是,这些不是限制性因素。还应注意的是,在权利要求中记述的动作可以以任何顺序进行而不一定是以它们被记述的顺序。
半导体存储器系统(诸如在本申请中描述的那些)可以包括,易失性存储器装置——诸如动态的随机存取存储器(“DRAM”)或静态的随机存取存储器(“SRAM”)装置;非易失性存储器装置——诸如电阻式随机存取存储器(“ReRAM”)、电可擦除可编程只读存储器(“EEPROM”)、闪速存储器(也可以被认为是EEPROM的子集)、铁电的随机存取存储器(“FRAM”)以及磁阻的随机存取存储器(“MRAM”);以及其他能够贮存信息的半导体元件。每种类型的存储器装置可以具有不同的配置。例如,闪速存储器装置可以配置在NAND或NOR配置中。
存储器装置可以以任何组合由无源和/或有源元件构成。以非限制性示例的方式,无源半导体存储器元件包括ReRAM装置元件,其在一些实施例中包括电阻率切换贮存元件——诸如反熔丝、变相材料等,以及可选地控制元件——诸如二极管等。进一步以非限制性示例的方式,有源半导体存储器元件包括EEPROM和闪速存储器装置元件,其在一些实施例中包括包含电荷贮存区域的元件——诸如浮置栅极、传导的纳米粒子或电荷贮存电介质材料。
多个存储器元件可以被配置为使得它们串联连接或者使得每个元件可被独立地访问。以非限制性示例的方式,在NAND配置(NAND存储器)中的闪速存储器装置通常包含串联连接的存储器元件。NAND存储器阵列可以被配置为使得阵列由多个存储器串构成,其中串由共享单个位线并作为一组存取的多个存储器元件构成。可替换地,存储器元件可以被配置为使得每个元件可被独立地访问,例如NOR存储器阵列。NAND和NOR存储器配置是示例性的,并且可以以其它方式配置存储器元件。
位于衬底中和/或衬底上的半导体存储器元件可以被布置为二维或者三维,诸如二维存储器结构或三维存储器结构。
在二维存储器结构中,半导体存储器元件被布置在单个平面或者单个存储器装置级中。典型地,在二维存储器结构中,存储器元件被布置在基本上平行于支撑存储器元件的衬底的主表面地延伸的平面中(例如,在x-z方向平面中)。衬底可以是在其上或其中形成存储器元件的层的晶片,或者它可以是在存储器元件形成之后附接到存储器元件的载体衬底。作为非限制性示例,衬底可以包括诸如硅的半导体。
存储器元件可以布置在有序的阵列中的单个存储器装置级中——诸如在多个行和/或列中。但是,存储器元件在不规则或者非正交的配置中形成阵列。存储器元件的每一个具有两个或多个电极或接触线——诸如位线和字线。
三维存储器阵列被布置为使得存储器元件占据多个平面或多个存储器装置级,从而在三维中形成结构(即,在x、y和z方向中,其中y方向基本上垂直于衬底的主表面,并且x和z方向基本上平行于衬底的主表面)。
作为非限制性示例,三维存储器结构可以被垂直地布置为多个二维存储器装置级的堆叠。作为另一非限制性示例,三维存储器阵列可以被布置为多个垂直的列(例如,基本上垂直地延伸到衬底的主表面的列,即,在y方向中),其中每个列在每个列中具有多个存储器元件。列可以布置在二维配置中,例如,在x-z平面中,产生具有在多个垂直地堆叠的存储器平面上的元件的存储器元件的三维布置。存储器元件在三维中的其它配置也可以组成三维存储器阵列。
以非限制性示例的方式,在三维NAND存储器阵列中,存储器元件可以耦接在一起以在单个水平的(例如,x-z)存储器装置级中形成NAND串。可替换地,存储器元件可以耦接在一起以形成横穿多个水平的存储器装置级的垂直的NAND串。可以设想其它三维配置,其中一些NAND串在单个存储器级中包含存储器元件,而其它串在跨过多个存储器级的存储器元件。三维存储器阵列也可以设计在NOR配置中和在ReRAM配置中。
典型地,在单片三维存储器阵列中,一个或多个存储器装置级形成在单个衬底上。可选地,单片三维存储器阵列也可以具有至少部分在单个衬底中的一个或多个存储器层。作为非限制性示例,衬底可以包括诸如硅的半导体。在单片三维阵列中,组成阵列的存储器装置级的层通常形成在阵列的在下面的存储器装置级的层上。但是,单片三维存储器阵列的相邻存储器装置级的层可以被共享或者具有在存储器装置级之间相互介入的层。
其次,二维阵列可以单独地形成并且然后封装在一起以形成具有存储器的多个层的非单片存储器装置。例如,非单片堆叠的存储器可以由在单独的衬底上形成存储器级并且然后在彼此上堆叠存储器级来构造。可以在堆叠之前将衬底减薄或者从存储器装置级移除,但是由于存储器装置级初始形成在单独的衬底之上,所产生的存储器阵列不是单片三维存储器阵列。此外,多个二维存储器阵列或三维存储器阵列(单片或非单片)可以形成在单独的芯片上并且然后封装在一起以形成叠层芯片存储器装置。
存储器元件的操作以及与存储器元件的通信通常需要相关联的电路。作为非限制性示例,存储器装置可以具有用于控制和驱动存储器元件以实现诸如编程和读取的功能的电路。该相关联的电路可以在与存储器元件相同的衬底上和/或在单独的衬底上。例如,用于存储器读取-写入操作的控制器可以位于单独的控制器芯片上和/或在与存储器元件相同的衬底上。
本领域技术人员应认识到本发明不限于所述的二维和三维示例性结构但是覆盖本发明在这里所述的以及由本领域技术人员理解的精神和范围中的所有相关的存储器结构。
Claims (20)
1.一种非易失性存储器系统,包括:
多级单元(MLC)非易失性存储器,其具有多个字线,每个字线(WL)具有多个MLC存储器单元并且能够在多个编程过程中编程;以及
电路,包括:
易失性存储器,被配置为在第一部分中接收来自数据源的数据量,接收的数据量对应于字线(WL)在所述MLC非易失性存储器中的贮存容量;
预编码引擎,被配置为将在所述第一部分中的接收的数据量转换为用于将要在所述多个字线中的一个中进行的所有所述多个编程过程的直接WL编程数据,并且在所述易失性存储器的第二部分中贮存用于所述多个字线中的所述一个的所有所述多个编程过程的所述直接WL编程数据;以及
处理器,被配置为将所述直接WL编程数据的不同的部分从所述第二部分发送到所述多个字线中的一个以用于多个编程过程的每一个。
2.如权利要求1所述的非易失性存储器系统,其中,所述电路还包括与所述易失性存储器和所述预编码引擎通信的误差校正码(ECC)引擎,所述ECC引擎被放置为在所述预编码引擎转换接收的数据量之前将误差校正码应用到接收的数据量。
3.如权利要求1所述的非易失性存储器系统,其中,所述数据源包括主机装置,所述易失性存储器的第一部分包括随机存取存储器(RAM)的一部分,并且所述RAM被配置为从所述主机装置接收数据以用于编程到所述MLC非易失性存储器。
4.如权利要求1所述的非易失性存储器系统,其中,所述数据源包括所述MLC非易失性存储器的一部分,所述易失性存储器的第一部分包括随机存取存储器(RAM)的一部分,并且所述RAM被配置为从所述MLC非易失性存储器的所述部分接收数据以用于编程到所述多个字线中的一个,作为芯片外复制操作的一部分。
5.如权利要求1所述的非易失性存储器系统,还包括与所述处理器通信的单级单元(SLC)非易失性存储器,其中,所述处理器被配置为,响应于在所述多个编程过程完成之前检测到中断,将当前贮存在所述易失性存储器的第二部分中的所述直接WL编程数据发送到所述SLC非易失性存储器。
6.如权利要求5所述的非易失性存储器系统,其中,所述中断包括电源关闭。
7.如权利要求1所述的非易失性存储器系统,还包括与所述处理器通信的单级单元(SLC)非易失性存储器,其中,所述控制器被配置为首先将贮存在所述易失性存储器的第二部分中的所有所述直接WL编程数据发送到所述SLC非易失性存储器,并且然后仅将所述直接WL编程数据的被配置为用于向所述MLC非易失性存储器的所述多个编程过程中的特定编程过程的一部分从所述SLC非易失性存储器转移到在所述MLC非易失性存储器中的所述多个字线中的所述一个,直到所述特定编程过程完成。
8.如权利要求2所述的非易失性存储器系统,还包括:
数据扰码引擎,与所述ECC引擎通信,且被配置为在所述ECC引擎中应用误差校正码之后、并且在所述预编码引擎将接收的数据量转换为直接WL编程数据之前、重新布置数据的顺序。
9.如权利要求2所述的非易失性存储器系统,其中,所述预编码引擎包括数据结构,并且其中所述预编码引擎被配置为在与在所述接收的数据中的每组位相关联的数据结构中查找一组直接WL编程位。
10.一种操作非易失性存储器系统的方法,包括:
在具有多级单元(MLC)非易失性存储器和控制器的非易失性存储器系统中,所述多级单元(MLC)非易失性存储器具有多个字线,每个字线(WL)具有多个MLC存储器单元,并且所述控制器与所述MLC非易失性存储器和易失性存储器通信:
从数据源接收数据;
在所述易失性存储器的第一部分中贮存接收的数据,直到已经接收到预定量的数据,所述预定量包括对应于字线(WL)在所述MLC非易失性存储器中的贮存容量的数据量;
将所述预定量的接收的数据转换为用于将要在用于所述多个字线中的一个的所述MLC非易失性存储器中进行的多个编程过程的每一个的直接WL编程数据;
在所述易失性存储器的第二部分中贮存用于所述多个字线中的所述一个的所有所述多个编程过程的所述直接WL编程数据;以及
对于用于所述多个字线中的所述一个的所述多个编程过程的每一个,从所述易失性存储器的第二部分发送比接收的所述预定量的数据少的直接WL编程数据量。
11.如权利要求10所述的方法,还包括,在贮存用于所述多个编程过程的直接WL编程数据之后,仅将直接WL编程数据的被配置为用于所述多个编程过程中的特定编程过程的一部分发送到所述MLC非易失性存储器,直到所述特定编程过程完成。
12.如权利要求10所述的方法,其中,所述数据源包括主机装置,并且所述易失性存储器包括随机存取存储器(RAM),并且其中接收数据包括:
从所述主机装置接收数据以用于编程到所述MLC非易失性存储器;以及
将接收的数据贮存在所述RAM中。
13.如权利要求10所述的方法,其中,所述数据源包括所述MLC非易失性存储器的一部分,并且接收数据包括从所述MLC非易失性存储器的部分接收数据以用于编程到所述MLC非易失性存储器的不同的部分,作为芯片外复制操作的一部分。
14.如权利要求10所述的方法,还包括,响应于在所述多个编程过程完成之前检测到中断,将贮存在所述易失性存储器的第二部分中的所述直接WL编程数据发送到单级单元(SLC)非易失性存储器。
15.如权利要求14所述的方法,其中,所述中断包括电源关闭或易失性存储器清除。
16.如权利要求10所述的方法,还包括:
将贮存在所述易失性存储器的第二部分中的所有所述直接WL编程数据发送到单级单元(SLC)非易失性存储器;以及
仅将所述直接WL编程数据的被配置为用于到所述MLC非易失性存储器的所述多个编程过程中的特定编程过程的一部分从所述SLC非易失性存储器转移到在所述MLC非易失性存储器中的所述多个字线中的一个,直到所述特定编程过程完成。
17.如权利要求10所述的方法,其中,将所述预定量的接收的数据转换为直接WL编程数据还包括所述控制器:
产生用于接收的数据的每个页的误差校正码数据;
扰码所述接收的数据以及相关联的误差校正码数据,以将在接收的数据和产生的误差校正码数据中的数据位的顺序重新布置为扰码的数据;以及
将所述扰码的数据转换为用于所述多个编程过程的每一个的直接WL编程数据的一个或多个页。
18.如权利要求17所述的方法,其中,转换所述扰码的数据包括从在所述存储器系统中的数据结构确定与在所述扰码的数据中的每组位相关联的直接WL编程位的组,其中所述数据结构包含映射到相应的扰码的数据位模式的直接WL编程位的预定组。
19.一种非易失性存储器系统,包括:
多级单元(MLC)非易失性存储器,其具有多个字线,每个字线(WL)具有多个MLC存储器单元并且能够在多个编程过程中编程;以及
电路,包括:
易失性存储器,被配置为在第一部分中接收来自数据源的接收的数据量,所述接收的数据量对应于字线(WL)在所述MLC非易失性存储器中的贮存容量;
预编码引擎,被配置为将在所述第一部分中接收的数据量转换为用于将在所述多个字线中的一个中进行的所有所述多个编程过程的直接WL编程数据,并且在所述易失性存储器的第二部分中贮存用于所述多个字线中的一个的所有所述多个编程过程的所述直接WL编程数据;以及
处理器,被配置为在将所述直接WL编程数据的至少一部分从所述易失性存储器发送到所述MLC非易失性存储器之前从所述易失性存储器删除接收的数据量。
20.如权利要求1所述的非易失性存储器系统,其中,所述MLC非易失性存储器包括具有形成单片三维结构的多个存储器单元的裸芯。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/505,291 | 2014-10-02 | ||
US14/505,291 US9400713B2 (en) | 2014-10-02 | 2014-10-02 | System and method for pre-encoding of data for direct write to multi-level cell memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105487985A true CN105487985A (zh) | 2016-04-13 |
CN105487985B CN105487985B (zh) | 2019-03-12 |
Family
ID=55531322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510631821.XA Active CN105487985B (zh) | 2014-10-02 | 2015-09-29 | 预编码直接写入到多级单元存储器的数据的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9400713B2 (zh) |
CN (1) | CN105487985B (zh) |
DE (1) | DE102015116801A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107633859A (zh) * | 2016-07-18 | 2018-01-26 | 三星电子株式会社 | 包括具有开放桩的传输线的数据存贮装置及其操作方法 |
CN108733575A (zh) * | 2017-04-20 | 2018-11-02 | 立而鼎科技(深圳)有限公司 | 一种断电重启后逻辑对物理映像表的重建方法、固态硬盘 |
CN109979508A (zh) * | 2019-03-15 | 2019-07-05 | 合肥沛睿微电子股份有限公司 | 固态硬盘装置与相关的固态硬盘控制电路 |
CN113220215A (zh) * | 2020-02-04 | 2021-08-06 | 西部数据技术公司 | 双slc/qlc编程和资源释放 |
CN113220602A (zh) * | 2018-10-09 | 2021-08-06 | 长江存储科技有限责任公司 | 一种闪存器的数据写入方法及闪存器 |
CN113393884A (zh) * | 2020-03-13 | 2021-09-14 | 西部数据技术公司 | 组合qlc编程方法 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102247087B1 (ko) * | 2014-07-08 | 2021-05-03 | 삼성전자주식회사 | 스토리지 장치 및 스토리지 장치의 동작 방법 |
KR20170010273A (ko) * | 2015-07-17 | 2017-01-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US9875049B2 (en) * | 2015-08-24 | 2018-01-23 | Sandisk Technologies Llc | Memory system and method for reducing peak current consumption |
US10389380B2 (en) * | 2016-04-20 | 2019-08-20 | SK Hynix Inc. | Efficient data path architecture for flash devices configured to perform multi-pass programming |
CN111679787B (zh) * | 2016-04-27 | 2023-07-18 | 慧荣科技股份有限公司 | 闪存装置、闪存控制器及闪存存储管理方法 |
US10019314B2 (en) | 2016-04-27 | 2018-07-10 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
US10381094B2 (en) | 2016-10-11 | 2019-08-13 | Macronix International Co., Ltd. | 3D memory with staged-level multibit programming |
US10685710B2 (en) * | 2016-11-17 | 2020-06-16 | Toshiba Memory Corporation | Memory controller |
US10534551B1 (en) * | 2018-06-22 | 2020-01-14 | Micron Technology, Inc. | Managing write operations during a power loss |
US10705966B1 (en) | 2018-12-14 | 2020-07-07 | Western Digital Technologies, Inc. | Mapping for multi-state programming of memory devices |
US10748606B2 (en) | 2018-12-14 | 2020-08-18 | Western Digital Technologies, Inc. | Multi-state programming for memory devices |
KR20210028517A (ko) * | 2019-09-04 | 2021-03-12 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
KR20210117528A (ko) * | 2020-03-19 | 2021-09-29 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US11914886B2 (en) * | 2020-10-02 | 2024-02-27 | Western Digital Technologies, Inc. | Nonvolatile memory with on-chip encoding for foggy-fine programming |
US11650756B2 (en) | 2020-12-28 | 2023-05-16 | Western Digital Technologies, Inc. | Nonvolatile memory with encoding for foggy-fine programming with soft bits |
US11495296B2 (en) | 2021-01-20 | 2022-11-08 | Western Digital Technologies, Inc. | Read threshold calibration for nonvolatile memory with encoded foggy-fine programming |
CN113409850A (zh) * | 2021-06-17 | 2021-09-17 | 芯天下技术股份有限公司 | 一种提高编程效率的方法、装置、存储介质和终端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101627371A (zh) * | 2007-01-26 | 2010-01-13 | 美光科技公司 | 用于nand存储器的编程管理数据 |
US20120030412A1 (en) * | 2010-07-30 | 2012-02-02 | Krishnamurthy Dhakshinamurthy | Systems and Methods for Implementing a Programming Sequence to Enhance Die Interleave |
CN102549672A (zh) * | 2009-07-08 | 2012-07-04 | 桑迪士克技术有限公司 | 用于非易失性存储器的优化页编程顺序 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8244960B2 (en) * | 2009-01-05 | 2012-08-14 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partition management methods |
US8301828B2 (en) * | 2010-06-02 | 2012-10-30 | Conexant Systems, Inc. | Systems and methods for reliable multi-level cell flash storage |
US8885410B2 (en) | 2012-08-29 | 2014-11-11 | Sandisk Technologies Inc. | Direct multi-level cell programming |
-
2014
- 2014-10-02 US US14/505,291 patent/US9400713B2/en active Active
-
2015
- 2015-09-29 CN CN201510631821.XA patent/CN105487985B/zh active Active
- 2015-10-02 DE DE102015116801.4A patent/DE102015116801A1/de active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101627371A (zh) * | 2007-01-26 | 2010-01-13 | 美光科技公司 | 用于nand存储器的编程管理数据 |
CN102549672A (zh) * | 2009-07-08 | 2012-07-04 | 桑迪士克技术有限公司 | 用于非易失性存储器的优化页编程顺序 |
US20120030412A1 (en) * | 2010-07-30 | 2012-02-02 | Krishnamurthy Dhakshinamurthy | Systems and Methods for Implementing a Programming Sequence to Enhance Die Interleave |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107633859A (zh) * | 2016-07-18 | 2018-01-26 | 三星电子株式会社 | 包括具有开放桩的传输线的数据存贮装置及其操作方法 |
CN108733575A (zh) * | 2017-04-20 | 2018-11-02 | 立而鼎科技(深圳)有限公司 | 一种断电重启后逻辑对物理映像表的重建方法、固态硬盘 |
CN113220602A (zh) * | 2018-10-09 | 2021-08-06 | 长江存储科技有限责任公司 | 一种闪存器的数据写入方法及闪存器 |
CN113220602B (zh) * | 2018-10-09 | 2023-08-08 | 长江存储科技有限责任公司 | 一种闪存器的数据写入方法及闪存器 |
CN109979508A (zh) * | 2019-03-15 | 2019-07-05 | 合肥沛睿微电子股份有限公司 | 固态硬盘装置与相关的固态硬盘控制电路 |
CN113220215A (zh) * | 2020-02-04 | 2021-08-06 | 西部数据技术公司 | 双slc/qlc编程和资源释放 |
CN113393884A (zh) * | 2020-03-13 | 2021-09-14 | 西部数据技术公司 | 组合qlc编程方法 |
Also Published As
Publication number | Publication date |
---|---|
US9400713B2 (en) | 2016-07-26 |
US20160098319A1 (en) | 2016-04-07 |
DE102015116801A1 (de) | 2016-04-07 |
CN105487985B (zh) | 2019-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105487985A (zh) | 预编码直接写入到多级单元存储器的数据的系统和方法 | |
US9778863B2 (en) | System and method for folding partial blocks into multi-level cell memory blocks | |
US10101942B1 (en) | System and method for hybrid push-pull data management in a non-volatile memory | |
CN106796490B (zh) | 用于存储器管理的硬件自动化 | |
US10649867B2 (en) | RAID array rebuild assist from external array copy | |
CN105009088B (zh) | 具有运行时变量raid保护方案的方法、固态驱动器控制器以及数据存储设备 | |
US20160179399A1 (en) | System and Method for Selecting Blocks for Garbage Collection Based on Block Health | |
US20180121121A1 (en) | Non-volatile storage system with integrated compute engine and optimized use of local fast memory | |
EP3635553A1 (en) | Non-volatile storage system with application-aware error-correcting codes | |
CN108694098B (zh) | 对于存储设备的不同存储器区域的比特顺序修改 | |
US9478315B2 (en) | Bit error rate mapping in a memory system | |
CN108694097B (zh) | 存储设备的不同存储器区域中编程数据的多码本的使用方法及装置 | |
CN108694128A (zh) | 存储器系统中的使用单次地址更新的折叠操作 | |
US10223018B2 (en) | Bad page and bad block management in memory | |
US10484019B2 (en) | Adaptive encoder/decoder | |
CN106663046A (zh) | 用于刷新存储器设备中的数据的系统和方法 | |
CN103093818A (zh) | 存储系统及其操作方法 | |
CN108694099B (zh) | 确定用于储存器设备的不同的存储器区域的码本的方法和系统 | |
CN106663463A (zh) | 存储器裸芯的NAND闪存存储器与ReRAM之间的数据的芯片上复制 | |
US9582435B2 (en) | Memory system and method for efficient padding of memory pages | |
CN106716536B (zh) | 数据存储设备的锁存器初始化 | |
US20190164610A1 (en) | Single-port memory with opportunistic writes | |
US20150347228A1 (en) | Method and apparatus for relocating data in non-volatile memory | |
US20170031612A1 (en) | Block management in a dual write memory system | |
WO2016010822A1 (en) | Die failure testing including fault simulation and test of error recovery mechanism |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: texas Applicant after: DELPHI INT OPERATIONS LUX SRL Address before: texas Applicant before: Sandisk Corp. |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |