CN108139970A - 用于直接写入多级单元存储器的系统和方法 - Google Patents
用于直接写入多级单元存储器的系统和方法 Download PDFInfo
- Publication number
- CN108139970A CN108139970A CN201680054666.2A CN201680054666A CN108139970A CN 108139970 A CN108139970 A CN 108139970A CN 201680054666 A CN201680054666 A CN 201680054666A CN 108139970 A CN108139970 A CN 108139970A
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- nonvolatile memory
- stored
- single stage
- 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
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
公开了用于在不将数据从单级单元(SLC)存储器折叠或传输到多级单元(MLC)存储器的情况下将数据直接写入到MLC存储器的设备和方法。包含SLC存储器和MLC存储器的存储器装置从主机装置接收数据。存储器装置在不从SLC存储器传输数据的情况下将数据(诸如下/中/上页)从易失性存储器编程到MLC存储器中。存储器装置还将数据的部分(诸如下/中页)储存在SLC存储器中作为以防错误的备份。特别地,如果数据未被正确地编程到MLC存储器中,则使用SLC存储器中的数据来将数据第二次编程到MLC存储器中。
Description
相关申请的引用
本申请要求美国申请号14/942,456(2015年11月16日提交)的优先权,其全部内容通过引用并入本文。
技术领域
本申请总体上涉及存储器装置。更具体地,本申请涉及在不从单级单元(SLC)存储器读取数据的情况下直接写入多级单元(MLC)存储器。
背景技术
在本文中提供的背景描述是为了总体上呈现本公开的背景。目前提及的发明人在本背景部分中描述的范围内的工作,以及在提交时可能不作为现有技术的描述的各方面既不特定也不隐含地被承认为是针对本公开的现有技术。
存储器装置可以包括存储器装置控制器和存储器。存储器可以由不同类型的存储器组成,诸如易失性存储器(例如,随机存取存储器)和非易失性存储器(例如,NAND闪存存储器)。特别地,非易失性存储器可以由可被编程以储存单个位或单个电平的存储器单元组成,被称为单级单元(SLC),而其他存储器单元可被编程为储存多个位或多个电平,被称为多级单元。
当存储器装置从主机装置接收数据时,存储器装置可首先将数据编程到易失性存储器(例如,分配给存储器装置控制器使用的RAM部分)中。然后,存储器装置控制器可以将数据从易失性存储器编程到SLC存储器中。随后,可以将储存在SLC存储器中的数据移动或复制到MLC存储器。例如,可以将储存在一个或多个SLC页(或块)中的数据折叠到一个或多个MLC页(或块)中。作为示例,在MLC每单元储存三个位(例如,X3)的情况下,可以将储存在三个SLC页中的数据复制到单个MLC页。更特别地,MLC页可以储存来自三个SLC页的数据,在这种情况下,将该数据储存在MLC页的上、中和下页。因此,将数据从SLC存储器移动或复制到MLC存储器,或者从一个或多个SLC页(或块)移动或复制到一个或多个MLC页(或块),可以称为折叠操作。
附图图示
参考以下附图和描述可以更好地理解该系统。在图中,贯穿不同的视图,相似的附图标记指定对应的部件。
图1A是示例性非易失性存储器装置的框图。
图1B是图示示例性储存电路的框图。
图1C是图示分级储存系统的框图。
图2A是图示非易失性存储器装置的控制器的示例性组件的框图。
图2B是图示非易失性存储器储存系统的非易失性存储器的示例性组件的框图。
图3图示了存储器的不同条(bank)内的数据传输。
图4图示了存储器的不同裸芯内的数据传输。
图5图示了用于直接写入MLC存储器的第一流程图。
图6图示了用于直接写入MLC存储器的第二流程图。
具体实施方式
存储器装置可以包含存储器装置控制器和存储器。在一个实施例中,存储器可以是一个或多个存储器集成电路芯片的形式。存储器装置可以从主机装置接收数据,指示存储器装置将数据储存在存储器中。响应于此,存储器装置控制器可以向(多个)存储器集成电路芯片发送一个或多个命令以便将数据写入到存储器中。
如下面更详细讨论的,存储器可以包括易失性存储器和非易失性存储器。非易失性存储器可以包括可以储存数据的非易失性存储器单元。非易失性存储器单元可以采取固态(例如,闪存)存储器单元的形式,并且可以是一次可编程的、少次可编程的或者多次可编程的。另外,非易失性存储器单元可以被编程以储存单个电平(例如,逻辑“0”或逻辑“1),称为单级单元(SLC)。替代地,非易失性存储器单元可以被编程以储存多于单个电平(例如,逻辑“00”、逻辑“01”、逻辑“10”或逻辑“11),称为多级单元(MLC)。MLC的示例包含双级单元(DLC)、三级单元(TLC)、四级单元(QLC)等。
当将数据写入到非易失性存储器中时,数据可以被首先储存在SLC中并然后折叠到MLC中。例如,折叠过程可以包括进行将来自三个SLC块的数据片上(on-chip)复制到一个目标MLC块,由此将数据从SLC块的每个单元的1位(2个状态)传输到目标MLC块的更高密度的每个单元3位(8个状态)的布置。如一般所理解的,二进制闪存存储器单元可以具有表示1位信息的两种可能的状态(0或1)。对于单元中可用的给定总操作电压范围,二进制单元的状态可以由高于或低于参考电压来表示,该参考电压设置为该范围的最大与最小电压之间的中间值。MLC存储单元可以具有与二进制单元相同的物理配置,需要将其工作电压范围划分为更精细的增量以允许在每个期望的状态下可辨别的峰值。对于每单元三位MLC布置,可检测的八个状态(000、001、010、011、100、101、110、111)的分布适合于二进制存储器单元仅可以用于两种状态的相同电压范围。
然而,在将储存在一个或多个源SLC块中的数据复制到目标MLC块的折叠操作期间,可能发生导致仅数据中的一些被成功写入到目标MLC块的错误事件。示例性错误事件可以包含电源循环(关闭)或写入中止事件,这可能会导致将数据复制到目标MLC块结束,或在全部数据被复制之前过早中止。另一个示例性错误事件可以包含编程故障,在这种情况下,尽管全部数据都可以被复制到目标MLC块,但是数据中的一些可能被错误地编程到目标MLC块中。还可能是其他错误事件或错误事件的组合,其导致仅数据中的一些被正确写入目标MLC块。
在一个实施例中,不是将数据从SLC折叠到MLC,而是可以在不将数据从SLC折叠或传输到MLC的情况下将主机数据写入MLC。如下面更详细讨论的,可以通过将数据从易失性存储器写入(例如,折叠)到MLC来进行对MLC的写入,而不将数据从SLC传输到MLC。与将数据从SLC折叠到MLC相比,直接写入(例如,不将数据从SLC传输到MLC)可以减少写入放大并且可以更快。然而,如果当写入MLC时发生错误事件(诸如如上所述的任何错误事件),主机数据可能会丢失。特别地,当接收到主机数据时,存储器装置可以周期性地确认接收到主机数据。如果在写入MLC完成之前发生电源循环错误,则已经确认的主机数据可能会丢失。
在一个实施例中,为了在不将数据从SLC折叠或传输到MLC的情况下进行到MLC的写入,直接写入MLC的主机数据的部分或全部可以同样被写入SLC。以这种方法,如果当写入到MLC时发生错误事件,存储器装置可以使用写入到SLC中的数据以折叠到MLC中。因此,在一个实施例中,除非存在错误事件,MLC被写入而不需要从SLC折叠。另外,如果发生错误,可以将数据从SLC折叠到MLC中。
在更特定的实施例中,被直接写入到MLC的少于主机数据的全部的数据(而不是主机数据的全部)同样被写入到SLC。例如,TLC可以对数据的下页、中页和上页进行编程,如下面更详细讨论的。另外,SLC可以使用数据的下页和中页来编程。响应于将数据写入到SLC(在给定的示例中,将数据的下页和中页写入到SLC),对于主机数据已经写入到SLC,存储器装置可以向主机发送确认。以这种方法,响应于在MLC编程(例如,对下页、中页和上页进行编程)中的错误事件,存储器装置可以请求主机重发未确认的数据(例如,未确认的数据的剩余部分,诸如数据的上页),并且可以存取用于储存数据的SLC(例如,已储存的数据的下页和中页)。因此,即便发生错误,数据可以被恢复并编程到MLC。
可以使用一个或多个易失性存储器对MLC进行编程。在TLC的示例中,可以使用下页锁存器、中页锁存器和上页锁存器。实际上,通过将数据从下/中/上页锁存器写入到MLC下/中/上页中来对MLC进行编程。在一个实施例中,当将数据传输到用于对MLC进行编程的易失性存储器时,可以至少部分同时进行对SLC的编程。例如,在TLC中,数据的下页被编程到SLC。同样地,数据的下页被锁存到下页锁存器中。随着当将数据的下页锁存到下页锁存器中时,可以至少部分同时进行将数据的下页编程到SLC中。由于同时(或至少部分同时)编程,SLC的编程不会延迟(或延迟较少)MLC的编程。
在替代实施例中,可以在与数据被编程到用于对MLC进行编程的易失性存储器中的不同的时间(例如,在之前或之后)对SLC进行编程。例如,在TLC中,数据的中页被编程到SLC。同样地,数据的中页被锁存到中页锁存器中。在与将数据的中页锁存到中页锁存器中的不同的时间(例如,在之前),进行将数据的下页编程到SLC。在又一替代实施例中,将数据的一部分编程在SLC中与将数据编程到用于编程MLC的易失性存储器是同时的,并且将数据的另一部分编程在SLC中与将数据编程到用于编程MLC的易失性存储器是不同时的(例如,在之前或之后)。
因此,在一个实施例中,存储器装置将数据(诸如下/中/上页)从易失性存储器编程到MLC存储器,而不从SLC存储器传输数据。在一个实施例中,存储器装置还可以仅将数据的一部分(诸如下/中页)储存在SLC存储器中作为以防错误情况的备份。特别地,如果数据未被正确地编程到MLC存储器中,则使用SLC存储器中的数据来将数据第二次编程到MLC存储器中。
参照附图,图1A是图示非易失性存储器装置的框图。非易失性存储器装置100包含控制器102以及非易失性存储器,该非易失性存储器可以由一个或多个非易失性存储器裸芯104组成。非易失性存储器裸芯可以包括一个或多个存储器集成电路芯片。控制器102和非易失性存储器裸芯104中的一者或两者可以使用经调节的电压。如本文所使用的,术语“裸芯”是指形成在单个半导体基板上的非易失性存储器单元的集合,以及用于管理这些非易失性存储器单元的物理操作的相关联电路。控制器102与主机装置相接口,并向非易失性存储器裸芯104发送用于读取、编程(例如,写入)以及擦除操作的命令序列。
控制器102可以采取处理电路、微处理器或处理器、以及储存可由(微)处理器执行的计算机可读编程代码(例如,软件或固件)的计算机可读介质的形式,例如,逻辑门、开关、专用集成电路(ASIC)、可编程逻辑控制器以及嵌入式微控制器。控制器102的这些示例不是穷尽的,并且可以预期用于执行控制器功能的其他形式。控制器102可以配置有硬件和/或固件以进行下面描述的并在流程图中示出的各种功能。例如,硬件和/或固件可以配置为用于分析是否将读取计数器的值保存到非易失性存储器,如下面更详细讨论的。另外,示出为控制器内部的一些组件也可以储存在控制器外部,并且可以使用其他组件。另外,短语“可操作地与……通信”可以意味着直接与……通信,或通过一个或多个组件间接地(有线或无线)与……通信,这些组件可以或可以不在本文示出或描述。
一种类型的控制器102是闪存存储器控制器。如本文所使用的,闪存存储器控制器是管理储存在闪存存储器上的数据并且与主机装置(诸如,计算机或电子装置)通信的装置。除了本文所描述的特定功能之外,闪存存储器控制器还可以具有各种功能。例如,闪存存储器控制器可以格式化闪存存储器以确保存储器正确操作,映射出坏的闪存存储器单元,并且分配备用存储单元以替换将来出现故障的单元。备用单元的一些部分可以用来保存固件以操作闪存存储器控制器并实现其他的特征。在操作中,当主机装置需要从闪存存储器中读取数据或向其写入数据时,它将与闪存存储器控制器通信。如果主机装置将逻辑地址提供给要读取/写入的数据,闪存存储器控制器可以将从主机装置接收到的逻辑地址转换为闪存存储器中的物理地址。(替代地,主机装置可以提供物理地址)。闪存存储器控制器还可以进行各种存储器管理功能,诸如(但不限于)磨损均衡(分配写入,以避免反复写入特定的存储器块造成的磨损)和垃圾收集(在块满之后,仅将有效的数据页移动到新块,这样满的块可以被擦除和重复使用)。
非易失性存储器裸芯104可以包含任何适合的非易失性储存介质,该非易失性储存介质包含NAND闪存存储器单元和/或NOR闪存存储器单元。非易失性存储器裸芯104的一个示例可以包括存储器集成电路芯片。存储器单元可以采取固态(例如,闪存)存储器单元的形式,并且可以是一次可编程的、少次可编程的或者多次可编程的。如上所述,存储单元也可以是单级单元(SLC)、双级单元(DLC)、三级单元(TLC)、四级单元(QLC),或者使用现在已知或以后开发的其他存储器单元级技术。因此,可以储存多于单个电平的任何单元可以称为多级单元(MLC)。另外,可以以二维或三维样式制造存储器单元。
控制器102与非易失性存储器裸芯104之间的接口可以是任何适合的闪存接口,诸如切换模式(Toggle Mode)200、400或800。在一个实施例中,存储器装置100可以是基于卡的系统,诸如安全数字(SD)卡或微型安全数字(micro-SD)卡。在替代实施例中,存储器装置100可以是嵌入式存储器系统的部分。
虽然在图1A所图示的示例中,非易失性存储器装置100在控制器102与非易失性存储器裸芯104之间包含单个通道,但是本文所描述的主题不限于具有单个存储器通道。例如,在诸如图1B和图1C所图示的一些NAND存储器系统架构中,取决于控制器能力,在控制器与NAND存储器系统之间可以存在2、4、8或更多的NAND通道。在任何本文所描述的实施例中,即使在附图中示出了单个沟道,在控制器与存储器裸芯之间也可以存在多于单个的通道。
图1B图示了储存电路200,其包含复数个非易失性存储器装置100。由此,储存电路200可以包含与主机装置相接口并与储存系统204相接口的储存控制器202,该储存系统204包含多个非易失性存储器装置100。储存控制器202与非易失性存储器装置100之间的接口可以是总线接口,诸如串行高级技术附件(SATA)或外围组件接口快速(PCIe)接口。在一个实施例中,储存电路200可以是固态驱动器(SSD),诸如在便携式计算装置(诸如,膝上型计算机和平板计算机)中可见的固态驱动器(SSD)。
图1C是图示分级储存系统的框图。分级储存系统250包含多个储存控制器202,储存控制器202中的每个储存控制器控制相应的储存系统204。主机系统252可以经由总线接口存取分级储存系统内的存储器。在一个实施例中,总线接口可以是高速非易失性存储器(NVMe)或以太网光纤通道(FCoE)接口。在一个实施例中,图1C中所图示的系统可以是可由多个主机计算机存取的可机架安装的大容量储存系统,诸如可以在数据中心或需要大容量储存的其他位置可见的可机架安装的大容量储存系统。
图2A是更详细地图示控制器102的示例性组件的框图。控制器102包含与主机装置相接口的前端电路108,与一个或多个非易失性存储器裸芯104相接口的后端电路110,以及进行现在将详细描述的功能的各种其他电路。
控制器102的电路可以包含直接存储器存取(DMA)112。在一个实施例中,如在图2A中所图示的,DMA 112可以是控制器112的部分。在替代实施例中,DMA可以与控制器102分开。无论如何,DMA 112可以用于控制存储器的不同部分之间的数据移动。例如,DMA 112可以用于控制在RAM(诸如缓冲器RAM)与一个或多个锁存器(诸如主锁存器)之间的数据移动,下面将更详细地讨论。另外,在一个实施例中,DMA 112可以包括用于管理闪存存储器装置内的数据移动的闪存DMA(FDMA)。
再次参考控制器102的电路,缓冲器管理器/总线控制器114管理随机存取存储器(RAM)116中的缓冲器并控制控制器102的内部总线判优。例如,RAM 116的一个用途是缓冲器RAM,其中缓冲器管理器/总线控制器114可以使用RAM 116来缓冲从主机装置接收的主机数据。如下面更详细讨论的,DMA 112可以控制从RAM 116到存储器上的一个或多个部分(诸如主锁存器158)的数据流,下面将更详细地讨论。只读存储器(118)储存系统启动代码。虽然如在图2A中所图示的与控制器102分开定位,但是在其他实施例中,RAM 116和ROM 118中的一者或两者可以位于控制器内。然而在其他的实施例中,RAM和ROM的部分可以都位于控制器102的内部和控制器的外部。另外,在一些实现方式中,控制器102、RAM 216和ROM 118可以位于分开的半导体裸芯上。
前端电路108包含提供与主机装置或下一级储存控制器的电气接口的主机接口120和物理层接口(PHY)122。主机接口120的类型的选择可以取决于正在使用的存储器的类型。主机接口120的示例包含(但不限于)SATA、SATA Express、SAS、光纤通道、USB、PCIe、eMMC I/F和NVMe。主机接口120典型地便于传输数据、控制信号和定时信号。
后端电路110包含纠错控制器(ECC)引擎124,该纠错控制器引擎对从主机装置接收到的数据字节进行编码,并对从非易失性存储器读取的数据字节进行解码和纠错。命令定序器126产生要被发送到非易失性存储器裸芯104的命令序列(诸如编程和擦除命令序列)。RAID(独立驱动器冗余式阵列)电路128管理RAID奇偶校验的产生和失效数据的恢复。RAID奇偶校验可以被用作用于写入非易失性存储器装置100的数据的完整性保护的附加级。在一些情况下,RAID电路128可以是ECC引擎124的部分。存储器接口130将命令序列提供给非易失性存储器裸芯104,并从非易失性存储器裸芯104接收状态信息。在一个实施例中,存储器接口130可以是双数据速率(DDR)接口,诸如切换模式200、400或800接口。闪存控制器层132控制后端电路110的总体操作。
在图2A中所图示的系统100的附加的组件包含介质管理层138,其进行非易失性存储器裸芯104的存储器单元的磨损均衡。系统100也包含其他的分立组件140,诸如外部电气接口、外部RAM、电阻器、电容器或与控制器102相接口的其他的组件。
在替代实施例中,物理层接口122、RAID电路128、介质管理层138和缓冲器管理/总线控制器114中的一个或多个是在控制器102中的非必要的可选组件。
图2B是更详细地图示非易失性存储器裸芯104的示例性组件的框图。非易失性存储器裸芯104包含外围电路141和非易失性存储器阵列142。非易失性存储器阵列142包含用于储存数据的非易失性存储器单元。非易失性存储器单元可以是任何适合的非易失性存储器单元,包含二维和/或三维配置的NAND闪存存储器单元和/或NOR闪存存储器单元。外围电路141包含向控制器102提供状态信息的状态机160、锁存器控制电路162、SLC编程电路164、以及MLC编程电路166。
非易失性存储器裸芯104进一步包含用于非易失性存储器阵列142内寻址的地址解码器148、150,以及数据缓存152。数据缓存152可以包含锁存器的一个或多个集合。锁存器的示例包含(但不限于)主锁存器154和页锁存器156。在一个实施例中,数据缓存152中的一个、一些或全部锁存器在宽度上可以是页。另外,数据锁存器的多个集合可以包含在数据缓存152中。例如,对于被布置为每页储存n位的非易失性存储器阵列142,数据锁存器的每个集合可以包含n个数据锁存器,其中每个数据锁存器可以储存1位的数据。
在一个实现方式中,单独的数据锁存器可以是具有两个稳定的状态并可以储存1位的数据的电路,诸如由NAND门构成的置位/复位或SR锁存器。数据锁存器158可以用作仅在通电时保留数据的一种类型的易失性存储器。若干种已知类型的数据锁存器电路中的任何一种都可以用于数据锁存器的每个集合中的数据锁存器。每个非易失性存储器裸芯104可以具有其自己的数据锁存器的集合以及非易失性存储器阵列142。
锁存器控制电路162配置为控制到一个或多个锁存器的数据流。如下面更详细讨论的,DMA 112可以用于控制从RAM116(诸如缓冲器RAM)到一个或多个锁存器(诸如主锁存器154)的数据移动。在一个实施例中,锁存器控制电路162可以用于控制从主锁存器154到一个或多个页锁存器156的移动。在TLC示例中,锁存器控制电路162可以用于控制从主锁存器154到下页锁存器、中页锁存器和上页锁存器的数据移动。就此而言,页锁存器156可以包含用于不同的页的锁存器,诸如对于TLC包含下页锁存器、中页锁存器和上页锁存器。另外,尽管在图2B中锁存器控制电路162被图示为处于非易失性存储器104内,但是在替代实施例中,锁存器控制电路162可以在非易失性存储器104的外部,并且可以在控制器102内或在存储器装置的另一部分中。同样地,尽管在图2B中数据缓存152中的锁存器被图示为处于非易失性存储器104内,但是在替代实施例中,锁存器152可以在非易失性存储器104的外部,并且可以在控制器102内或在存储器装置的另一部分中。
外围电路141进一步包含SLC编程电路164和MLC编程电路166。SLC编程电路164包含将数据编程到SLC存储器中的功能。例如,在一个实施例中,可以将数据从主锁存器158编程到非易失性存储器阵列142内的SLC存储器,如下面更详细讨论的。
同样地,MLC编程电路166包含将数据编程到MLC存储器中的功能。如下面更详细讨论的,MLC编程电路166可以包含MLC第一编程电路和MLC重编程电路(响应于确定在对MLC进行的编程中存在错误而使用)。例如,在一个实施例中,可以将数据从页锁存器160编程到非易失性存储器阵列142内的MLC存储器。另外,如果在对MLC的编程中存在错误(其可以使用配置为确定在对MLC非易失性存储器进行的编程中存在错误的MLC编程错误确定电路来识别),则通过使用MLC重编程功能,MLC编程电路166可以存取SLC,以便存取由于错误事件而丢失的数据。尽管在图2B中SLC编程电路164和MLC编程电路166被图示为处于非易失性存储器104内,但是在替代实施例中,SLC编程电路164和MLC编程电路166中的一者或两者可以在非易失性存储器104的外部,并且可以在控制器102内或在存储器装置的另一部分中。
如上所述,存储器装置可以从主机装置接收主机数据。在一个实施例中,存储器装置可以经由物理层与另一电气装置相接口,诸如提供与主机装置或下一级储存控制器电气接口的物理层接口(PHY)122。经由PHY 122,存储器装置可以接收要写入到非易失性存储器的数据,诸如主机数据。当接收到数据时,存储器装置可以将数据储存到RAM 116中,诸如缓冲器RAM(BRAM)。在此之后,DMA 112(或其他的控制装置)可以控制储存在BRAM中的数据到另一存储器(诸如易失性存储器(例如,锁存器))的传输,。在此之后,在主锁存器中的数据可以被传输到SLC存储器用于储存,并且被传输到其他的存储器(诸如下/中/上页锁存器)用于对MLC存储器编程。
图3图示了存储器的不同条内的数据从BRAM到主锁存器、从主锁存器到SLC存储器、以及从下/中/上页锁存器到MLC存储器的传输。图4中图示了从BRAM到下/中/上页锁存器的数据传输。在一个实施例中,存储器装置可以包含单个条。在替代实施例中,存储器装置可以包含多个条,诸如图3中所图示的Bank0至BankN。可以预期任何数目的条。另外,在一个实施例中,条内可以存在单个裸芯。在替代实施例中,条内可以存在多个裸芯。例如,图3图示了4个裸芯(Die0、Die1、Die2、Die3)。然而,可以预期条内有更少或更多数目的裸芯。
如在图3内所图示的,存储器装置可以并行编程条。另外,在一个实施例中,在条内,裸芯可以被串行编程。图3图示了TLC存储器的编程,由此编程下页、中页和上页。图3仅用于图示目的,可以预期不同的MLC存储器(诸如,DLC、QLC等)的编程。
在bank 0内,在300处,对于Die0,DMA 112控制数据的下页(LP)从BRAM到主锁存器158的移动。在300处的传输之后,在302处,将来自主锁存器的下页编程到Die0中的SLC存储器。另外,在300处的传输之后,在304处,DMA 112控制数据的下页(LP)从BRAM到Die1的主锁存器158的移动。就此而言,当DMA 112完成将数据从BRAM到一个裸芯的主锁存器的传输时,DMA 112可以开始将数据从BRAM传输到另一个裸芯的主锁存器。图3在300、304、308和312处图示了DMA 112将下页传输到Die0、Die1、Die2和Die3中的每个裸芯的主锁存器。类似地,302、306、310和314图示了将下页从主锁存器编程到Die0、Die1、Die2和Die3中的每个裸芯的SLC存储器中。
存储器装置可以响应于数个事件中的一个,向主机装置发送数据的下页的确认。在一个实施例中,可以响应于对非易失性存储器中的数据的编程而发送确认。例如,响应于证实SLC存储器已经用下页编程,存储器装置可以向下页的主机装置发送确认。在一个实施例中,在证实单个下页已经被编程在SLC存储器中之后,存储器装置可以发送确认。替代地,存储器装置可以在下页已经被证实编程到多个裸芯(诸如Die0、Die1、Die2和Die3)中之后发送确认。在替代实施例中,存储器装置响应于数据从主锁存器传输到另一易失性存储器(诸如下页锁存器)而向主机装置发送确认,如下面更详细讨论的。图3未图示数据从主锁存器158到页锁存器160中的一个的传输。替代地,图4图示了此传输,如下面更详细讨论的。
当在312处DMA 112控制数据的下页到Die3中的主锁存器的传输之后,DMA开始传输数据的中页(在图3的中间面板图示)。因此,类似于下页的传输,在316、320、324、328处,DMA串行地控制将数据的中页从BRAM传输到主锁存器。同样地,在将中页从BRAM传输到相应的裸芯的主锁存器中之后,将主锁存器中的中页编程到SLC存储器中,如318、322、326、330中所图示的。
类似于下页,存储器装置可以响应于数个事件中的一个,向主机装置发送数据中页的确认。在一个实施例中,可以响应于对非易失性存储器中的数据的编程(例如,将中页编程在SLC存储器中)而发送确认。在替代实施例中,存储器装置响应于数据从主锁存器传输到中页锁存器而向主机装置发送确认,如下面更详细讨论的。
当在328处DMA 112控制数据的中页到Die3中的主锁存器的传输之后,DMA开始传输数据的上页(在图3的右侧面板图示)。因此,类似于下页和中页的传输,在332、336、340、344处,DMA串行地控制将数据的上页从BRAM传输到主锁存器中。然而,不同于图3中的左侧和中间面板,右侧面板未将数据的上页传输到SLC存储器。替代地,在334、338、342、346处,使用下/中/上页锁存器编程MLC。MLC存储器的编程可能需要1.8到2毫秒的量级。这不同于SLC存储器的编程,其可能需要400--500微秒。
存储器装置可以响应于数个事件中的一个,向主机装置发送数据上页的确认。在一个实施例中,可以响应于对非易失性存储器中的数据的编程(例如,完成对MLC存储器的编程)而发送确认。然而,在MLC存储器正在被编程的时间内(并且在对数据的上页的确认已经被发送到主机装置之前),可能发生错误事件,其中MLC存储器未被正确或完全编程。在此实例中,可以使用先前储存在SLC存储器中的已确认的数据(诸如下页和中页)并且请求主机装置重发未确认的数据(诸如未确认的数据的剩余部分,例如上页)来重新开始对于MLC存储器的编程,如下面图5更详细讨论的。响应于发送请求以重发未确认的数据,主机装置重发未确认的数据(例如,上页)。另外,响应于存储器装置再一次接收到未确认的数据,存储器装置可以将未确认的数据载入到页锁存器中,将已确认的数据(其储存在SLC存储器中)载入到页锁存器中,并且然后对MLC存储器进行第二次编程(例如,使用重编程电路类进行对MLC存储器的第二次编程)。
图4图示了存储器的不同裸芯内的数据传输。特别地,图4图示了存储器的裸芯内各种电路元件之间的时序。图4图示了单个裸芯(Die0)内的数据传输。然而,在替代实施例中,可以使用多个裸芯(诸如,图3中所描绘的)。另外,图4图示了TLC存储器的编程,由此编程下页、中页和上页。图4仅用于图示目的,可以预期不同的MLC存储器(诸如,DLC、QLC等)的编程。
在时间0(T0),将数据的下页从BRAM发送到主锁存器中。在一个实施例中,将数据的下页从BRAM发送到主锁存器需要大约100-120微秒。在时间1(T1),将数据的下页编程到SLC页,并将数据的下页从主锁存器传输到下页锁存器。在一个实施例中,在大约10微秒内将数据的下页从主锁存器传输到下页锁存器。另外,在一个实施例中,将数据的下页编程到SLC存储器中可能需要大约400-500微秒。因此,如在图4中所图示的,将数据的下页编程到SLC存储器中与将数据的下页传输到下页锁存器至少部分同时进行。在T1'(将下页从主锁存器传输到下页锁存器中之后),将数据的中页从BRAM发送到主锁存器中。在一个实施例中,将数据的中页从BRAM传输到主锁存器的时间是100-120微秒,类似于将数据的下页从BRAM传输到主锁存器的时间。就此而言,可以在将数据的下页编程到SLC中之前,将数据的中页从BRAM传输到主锁存器中。
在时间2(T2),将数据的中页编程到SLC页。在时间3(T3),将数据的中页从主锁存器传输到中页锁存器。因此,如图4所图示的,将数据的下页编程到SLC存储器中与将数据的下页传输到下页锁存器中是串行进行的。
在时间4(T4),将数据的上页从BRAM传输到主锁存器中。在时间5(T5),将数据的上页从主锁存器传输到中页锁存器。值得注意的是,数据的上页未被编程到SLC存储器中。在时间6(T6),将下/中/上锁存器中的数据编程到MLC下/中/上页。在一个实施例中,将下/中/上锁存器中的数据编程到MLC下/中/上页的时间是1.8-2毫秒。对MLC的编程的一种类型是通过使用第一模糊精确(first-foggy-fine),诸如在美国专利第8,811,091号中所说明的,其通过引用整体并入本文。
图5图示了用于直接写入MLC存储器的第一流程图500。在502,从主机装置接收数据。数据的示例包含数据的下、中和上页。在504处,将数据储存在易失性存储器中,诸如RAM。可选地,可以将数据传输到另一易失性存储器中。例如,在506,可以使用DMA来将数据从易失性存储器传输到一个或多个锁存器。如上所述,锁存器可以包含主锁存器以及一个或多个页锁存器(诸如下/中/上页锁存器)。另外,可以将下/中/上页从BRAM传输到主锁存器中。
在508处,数据的部分但少于全部可以被储存在非易失性存储器中,诸如SLC存储器。例如,储存在主锁存器中的下页和中页可以被保存在SLC存储器中。另外,在510处,可以将储存在SLC存储器中的对数据的接收的确认发送到主机。例如,存储器装置可以将确认发送到主机装置,以指示接收到对应于储存在SLC存储器中的下页和中页的数据。在512处,使用来自锁存器的数据而无需存取储存在SLC存储器中的数据来对MLC存储器进行编程。例如,可以将下/中/上页从主锁存器相应地传输到下/中/上页锁存器。另外,可以使用下/中/上页锁存器来对MLC下/中/上页进行编程。
图6图示了用于直接写入MLC存储器的第二流程图600。在602处,存储器装置确定是否发生了写入中止。例如,存储器装置可以确定在对MLC存储器进行编程时存在错误。特别地,当存储器装置在通电时进行初始化序列时,存储器装置可以扫描MLC存储器中的字线以确定字线未被完全写入。响应于此确定,存储器装置可以使用SLC存储器(诸如下页和中页)中的数据,并且从主机装置请求上页以便对MLC存储器进行编程。
响应于确定发生了写入中止,在606处,存取储存在SLC存储器中的数据。例如,从SLC存储器存取下页和中页。在608处,使用DMA来将SLC储存的数据载入到锁存器中(诸如下/中页锁存器)。在610处,存储器装置向主机装置发送通信以请求主机装置发送未确认的数据。响应于请求,在612处,存储器装置从主机装置接收未确认的数据。在TLC存储器的示例中,存储器装置接收数据的上页。在614处,将未确认的数据储存在易失性存储器(诸如BRAM)中。在616处,使用DMA来将未确认的数据载入到一个或多个锁存器(诸如载入到主锁存器,并然后载入到上页锁存器)中。在618处,使用来自锁存器的数据对MLC存储器进行编程。就此而言,使用从SLC存储器传输的数据对MLC存储器进行编程。在620处,在证实对MCL存储器进行编程之后,存储器装置向主机装置发送关于未确认的数据的确认。
在本申请中,诸如本申请中所描述的半导体存储器装置可以包含诸如动态随机存取存储器(“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-y平面)布置,导致存储器元件的三维布置,其中元件位于多个垂直堆叠的存储器平面上。存储器元件在三维上的其他配置也可以构成三维存储器阵列。
作为非限制性示例,在三维NAND存储器阵列中,存储器元件可以耦接在一起以在单个水平(例如x-z)存储器装置级内形成NAND串。替代地,存储器元件可以耦接在一起以形成横跨多个水平存储装置级的垂直NAND串。可以设想其他的三维配置,其中一些NAND串含有单个存储器级中的存储器元件,而其他串含有跨过多个存储器级的存储器元件。三维存储器阵列还可以以NOR配置和ReRAM配置设计。
典型地,在单片三维存储器阵列中,一个或多个存储器装置级形成在单个基板上方。可选地,单片三维存储器阵列还可以具有至少部分地位于单个基板内的一个或多个存储器层。作为非限制性示例,基板可以包含诸如硅的半导体。在单片三维阵列中,构成阵列的每个存储器装置级的层典型地形成在阵列的下面的存储器装置级的层上。然而,单片三维存储器阵列的相邻存储器装置级的层可以被共享或者具有存储器装置级之间的中间层。
然后再次,二维阵列可以单独形成,并且然后封装在一起以形成具有存储器的多层的非单片存储器装置。例如,可以通过在单独的基板上形成存储器级并且之后将存储器级上下叠置,从而构件非单片堆叠存储器。在堆叠之前,可以将基板减薄或从存储器装置级移除,但是由于存储器装置级初始在单独的基板上形成,所以所得到的存储器阵列不是单片三维存储器阵列。此外,多个二维存储器阵列或三维存储器阵列(单片或非单片)可以形成在单独的芯片上,并且然后封装在一起以形成堆叠芯片存储器装置。
在一个实施例中,模块可以被使用并且采取封装的功能硬件单元的形式,例如,该封装功能硬件单元设计为与其他的组件、编程代码(例如,软件或固件)的部分、或独立的硬件或软件组件一起使用,其中编程代码由通常进行相关功能的特定功能的(微型)处理器或处理电路来执行,独立的硬件或软件组件与更大的系统相接口。
另外,本文中描述的方法、装置、过程、电路和逻辑可以以许多不同的方式以及硬件和软件的许多不同组合来实现。例如,实施方式的全部或部分可以是包含诸如中央处理单元(CPU)、微控制器或微处理器的指令处理器的电路;或者作为专用集成电路(ASIC)、可编程逻辑装置(PLD)或现场可编程门阵列(FPGA);或作为包含分立逻辑或其他电路组件(包含模拟电路组件、数字电路组件或两者)的电路;或其任何组合。作为示例,电路可以包含分立的互连的硬件组件,或者可以在分布在多个集成电路裸芯之间的单个集成电路裸芯上组合,或者以通用封装中的多个集成电路裸芯的多芯片模块(MCM)来实现。
相应地,电路可以储存或存取用于执行指令,或者可以仅用硬件来实现其功能。指令可以储存在非瞬态信号以外的有形储存介质中,诸如闪存存储器、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM));或者储存在磁盘或光盘上,诸如光盘只读存储器(CDROM)、硬盘驱动器(HDD)或其他磁盘或光盘;或者储存在另一个机器可读介质中或其上。诸如计算机编程产品之类的产品可以包含储存介质和储存在介质中或上的指令,并且指令在由装置中的电路执行时可以使得装置实现如上所述或附图中所图示的过程中的任何过程。
实现方式可以是分布式的。例如,电路可以包含多个不同的系统组件,诸如多个处理器和存储器,并且可以跨越多个分布式处理系统。参数、数据库和其他数据结构可以分开储存和管理,可以并入到单个存储器或数据库中,可以以许多不同的方式在逻辑和物理上组织,并且可以以许多不同的方式实现。示例性实现方式包含链表、程序变量、哈希表、数组,记录(例如,数据库记录)、对象和隐式储存机制。指令可以形成单个程序的部分(例如,子例程或其他代码段),可以形成多个单独的程序,可以分布在多个存储器和处理器中,并且可以以许多不同的方式实现。示例性实施方式包含独立程序,并作为库的部分,诸如像动态链接库(DLL)这样的共享库。例如,库可以含有共享数据和一个或多个共享程序,这些共享程序包含当由电路执行时进行如上所述或附图中所图示的处理中的任何处理的指令。
因此,可以使用关联电路来操作存储器元件和与存储器元件通信。作为非限制性示例,存储器装置可以具有用于控制和驱动存储器元件以完成诸如编程和读取的功能的电路。此关联的电路可以在与存储器元件相同的基板上和/或在单独的基板上。例如,用于存储器读取-写入操作的控制器可以位于单独的控制器芯片上和/或在与存储器元件相同的基板上。
本领域的技术人员将认识到,此发明不限于所描述的二维和三维示例性结构,而是涵盖在本文所描述的发明的精神和范围内并且如本领域技术人员所理解的所有的相关的存储器结构。
旨在使前面的详细描述被理解为本发明可以采用的所选形式的说明,而不是作为本发明的限定。仅旨在使得随附的权利要求(包含所有的等同)限定要求保护的发明的范围。最后,应该注意的是,本文描述的任何优选实施例的任何方面可以单独使用或彼此组合使用。
Claims (21)
1.一种编程存储器装置中的非易失性存储器的方法,所述非易失性存储器的第一部分配置为单级单元非易失性存储器,并且所述非易失性存储器的第二部分配置为多级单元非易失性存储器,所述方法包括:
从主机装置接收数据;
将所述数据储存在一个或多个易失性存储器中;
将所述数据的部分而不是全部储存在所述单级单元非易失性存储器中,其中从所述主机装置接收的数据包括所述数据的储存在所述单级单元非易失性存储器中的部分以及剩余部分;
使用所述一个或多个易失性存储器中储存的所述数据,在不从所述单级单元非易失性存储器传输所述数据的储存在单级单元非易失性存储器中的部分的情况下,将所述数据储存在多级单元非易失性存储器中;
确定在将所述数据的至少一些储存在所述多级单元非易失性存储器中是否存在错误;
响应于确定在将所述数据的至少一些储存在所述多级单元非易失性存储器中存在错误:
请求所述主机装置重发所述数据的剩余部分;
从所述主机装置接收所述数据的剩余部分;以及
使用所述数据的储存在所述单级单元非易失性存储器中的部分的至少一部分以及从所述主机装置接收的所述数据的剩余部分,编程所述多级单元非易失性存储器。
2.如权利要求1所述的方法,其中将所述数据储存在一个或多个易失性存储器中包括将数据储存在缓冲器随机存取存储器中。
3.如权利要求1所述的方法,其中所述存储器装置还包括一个或多个锁存器;并且
其中将所述数据储存在一个或多个易失性存储器中包括将所述数据储存到所述一个或多个锁存器中。
4.如权利要求3所述的方法,其中将所述数据的部分储存在所述单级单元非易失性存储器中包括使用所述一个或多个锁存器中储存的所述数据来编程所述单级单元非易失性存储器;并且
其中仅响应于确定所述多级单元非易失性存储器中的错误,使用所述数据的储存在所述单级单元非易失性存储器中的部分来编程所述多级单元非易失性存储器。
5.如权利要求1所述的方法,其中使用所述数据的储存在所述单级单元非易失性存储器中的部分的至少一部分包括:
将所述数据的在所述单级单元非易失性存储器中的部分传输到所述一个或多个易失性存储器;以及
使用所述数据的从所述单级单元非易失性存储器传输到所述一个或多个易失性存储器的部分,以便编程所述多级单元非易失性存储器。
6.一种编程存储器装置中的非易失性存储器的方法,所述非易失性存储器的第一部分配置为单级单元非易失性存储器,并且所述非易失性存储器的第二部分配置为多级单元非易失性存储器,所述方法包括:
从主机装置接收数据;
将所述数据储存在一个或多个易失性存储器中;
将所述数据的部分或全部储存在所述单级单元非易失性存储器中;
在不从所述单级单元非易失性存储器传输单级单元非易失性存储器中储存的所述数据的部分或全部的情况下,使用所述一个或多个易失性存储器中储存的所述数据来将所述数据储存在多级单元非易失性存储器中;以及
由所述存储器装置发送所述数据的编程在所述单级单元非易失性存储器中的部分的接收的确认,在完成将所述数据编程在所述多级单元非易失性存储器中之前进行所述确认的发送。
7.如权利要求6所述的方法,其中将所述数据的部分或全部储存在所述单级单元非易失性存储器中包括将所述多级单元非易失性存储器中编程的数据的部分但少于全部编程到所述单级单元非易失性存储器中;
其中从所述主机装置接收的所述数据包括所述数据的编程在所述单级单元非易失性存储器中的部分以及剩余部分;并且
响应于确定将所述数据储存在多级单元非易失性存储器中存在错误,还包括由所述存储器装置向所述主机装置发送重发所述数据的剩余部分的请求。
8.如权利要求7所述的方法,还包括:
响应于对所述数据的剩余部分的请求,从所述主机装置接收所述数据的剩余部分;以及
将所述数据的剩余部分储存在所述一个或多个易失性存储器中;
其中使用从所述单级单元非易失性存储器传输到所述一个或多个易失性存储器的所述数据的部分或全部以便编程所述多级单元非易失性存储器包括:
使用所述数据的从所述单级单元非易失性存储器传输到所述一个或多个易失性存储器的部分以及所述一个或多个易失性存储器中储存的所述数据的剩余部分,以便编程所述多级单元非易失性存储器。
9.一种存储器装置,包括:
一个或多个易失性存储器;
非易失性存储器,其中所述非易失性存储器的第一部分配置为单级单元非易失性存储器,并且所述非易失性存储器的第二部分配置为多级单元非易失性存储器;
编程电路,所述编程电路配置为将数据的至少部分编程到单级单元非易失性存储器中;
传输电路,所述传输电路配置为将所述数据传输到所述一个或多个易失性存储器中;
编程电路,所述编程电路配置为,在不从所述单级单元非易失性存储器传输所述数据的储存在所述单级单元非易失性存储器中的至少部分的情况下,将所述数据从所述一个或多个易失性存储器编程到多级单元非易失性存储器中;以及
确认电路,所述确认电路配置为,响应于将少于全部的所述数据编程到所述单级单元非易失性存储器中,向主机装置发送所述少于全部的数据的接收的确认。
10.如权利要求9所述的存储器装置,其中所述一个或多个易失性存储器包括缓冲器随机存取存储器以及一个或多个锁存器;并且
其中所述传输电路包括直接存储器存取电路,所述直接存储器存取电路配置为将所述数据从所述缓冲器随机存取存储器传输到所述一个或多个锁存器。
11.如权利要求9所述的存储器装置,其中所述编程电路配置为将少于全部的数据编程到所述单级单元非易失性存储器中。
12.如权利要求9所述的存储器装置,还包括多级单元编程错误确定电路,所述多级单元编程错误确定电路配置为确定编程所述多级单元非易失性存储器中存在错误;以及
多级单元重编程电路,所述多级单元重编程电路配置为,响应于确定编程所述多级单元非易失性存储器中存在错误,使用所述单级单元非易失性存储器中储存的数据的至少部分来编程所述多级单元非易失性存储器。
13.如权利要求12所述的存储器装置,其中从所述主机装置接收所述数据,所述数据包括多个页;
其中少于全部的页被储存在所述单级单元存储器中;并且
其中所述页的全部被储存在多级单元存储器中。
14.如权利要求12所述的存储器装置,所述数据包括页的第一集合以及页的第二集合;
其中所述页的第一集合储存在所述单级单元非易失性存储器中;
其中所述页的第二集合不储存在所述单级单元非易失性存储器中;并且
其中所述页的第一集合和所述页的第二集合两者都储存在所述多级单元非易失性存储器中。
15.如权利要求14所述的存储器装置,其中所述确认电路配置为,响应于将所述页的第一集合编程到所述单级单元非易失性存储器中,向所述主机装置发送存储器对所述页的第一集合的接收的确认;并且
还包括请求重发电路,所述请求重发电路配置为,响应于确定编程所述多级单元非易失性存储器中存在错误,请求重发所述页的第二集合。
16.如权利要求15所述的存储器装置,其中所述确认电路还配置为,响应于将所述数据编程到所述多级单元非易失性存储器中,发送所述页的第二集合的确认。
17.一种编程存储器装置中的非易失性存储器的方法,所述非易失性存储器的第一部分配置为单级单元非易失性存储器,并且所述非易失性存储器的第二部分配置为多级单元非易失性存储器,所述方法包括:
从主机装置接收数据;
将所述数据储存在一个或多个易失性存储器中;
将所述数据的部分或全部储存在单级单元非易失性存储器中;
在不使用所述单级单元非易失性存储器中储存的所述数据的情况下,使用一个或多个易失性存储器中储存的所述数据来进行所述多级单元非易失性存储器的第一编程;
确定所述多级单元非易失性存储器的所述第一编程中是否存在错误;并且
响应于确定所述多级单元非易失性存储器的所述第一编程中存在错误,使用所述单级单元非易失性存储器中储存的所述数据的部分或全部来进行所述多级单元非易失性存储器的第二编程;
其中将所述数据的至少部分储存在所述单级单元非易失性存储器中与将所述数据的至少部分储存在所述易失性存储器中是至少部分地同时进行的。
18.如权利要求17所述的方法,其中所述一个或多个易失性存储器包括多个页锁存器;并且
其中将所述数据储存在所述一个或多个易失性存储器中包括将所述数据储存在所述多个页锁存器中。
19.如权利要求18所述的方法,其中所述数据包括多个页;
其中将所述数据的部分或是全部储存在所述单级单元非易失性存储器中包括储存所述多个页的少于全部;并且
其中进行所述多级单元非易失性存储器的所述第一编程包括编程所述多个页的全部。
20.如权利要求19所述的方法,其中所述数据包括下页、中页和上页;
其中将所述数据的部分或全部储存在所述单级单元非易失性存储器中包括将所述下页和所述中页储存在所述单级单元非易失性存储器中,但不将所述上页存储在所述单级单元非易失性存储器中;并且
其中进行所述多级单元非易失性存储器的所述第一编程包括将所述下页、中页和上页编程到所述多级单元非易失性存储器中。
21.如权利要求20所述的方法,其中将所述下页储存在所述单级单元非易失性存储器中与将所述下页储存在所述页锁存器中是至少部分地同时进行的;并且
其中将所述中页储存在所述单级单元非易失性存储器中与将所述中页储存在所述页锁存器中不是至少部分地同时进行的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/942,456 US9530491B1 (en) | 2015-11-16 | 2015-11-16 | System and method for direct write to MLC memory |
US14/942,456 | 2015-11-16 | ||
PCT/US2016/051651 WO2017087059A2 (en) | 2015-11-16 | 2016-09-14 | System and method for direct write to mlc memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108139970A true CN108139970A (zh) | 2018-06-08 |
CN108139970B CN108139970B (zh) | 2021-11-09 |
Family
ID=57003588
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680054666.2A Active CN108139970B (zh) | 2015-11-16 | 2016-09-14 | 用于直接写入多级单元存储器的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9530491B1 (zh) |
CN (1) | CN108139970B (zh) |
DE (1) | DE112016004760T5 (zh) |
WO (1) | WO2017087059A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110471863A (zh) * | 2019-08-13 | 2019-11-19 | 深圳忆联信息系统有限公司 | 基于固态硬盘的数据写入读取方法、装置和计算机设备 |
CN110658991A (zh) * | 2018-06-29 | 2020-01-07 | 美光科技公司 | 多层级单元数据加载优化 |
TWI811091B (zh) * | 2020-08-27 | 2023-08-01 | 大陸商長江存儲科技有限責任公司 | Nand快閃記憶體及儲存系統 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11288017B2 (en) * | 2017-02-23 | 2022-03-29 | Smart IOPS, Inc. | Devices, systems, and methods for storing data using distributed control |
US20180261281A1 (en) * | 2017-03-10 | 2018-09-13 | Micron Technology, Inc. | Methods for mitigating power loss events during operation of memory devices and memory devices employing the same |
US10394474B2 (en) | 2017-11-10 | 2019-08-27 | Smart IOPS, Inc. | Devices, systems, and methods for reconfiguring storage devices with applications |
US11354247B2 (en) | 2017-11-10 | 2022-06-07 | Smart IOPS, Inc. | Devices, systems, and methods for configuring a storage device with cache |
US10691358B2 (en) * | 2018-06-14 | 2020-06-23 | Silicon Motion, Inc. | Memory controller and method capable of using different storing modes to store data units having different data sizes |
US11133059B2 (en) | 2018-12-06 | 2021-09-28 | Western Digital Technologies, Inc. | Non-volatile memory die with deep learning neural network |
US10896724B2 (en) | 2018-12-18 | 2021-01-19 | Western Digital Technologies, Inc. | Non-volatile storage system with reduced program transfers |
US10916306B2 (en) | 2019-03-07 | 2021-02-09 | Western Digital Technologies, Inc. | Burst mode operation conditioning for a memory device |
US11520521B2 (en) | 2019-06-20 | 2022-12-06 | Western Digital Technologies, Inc. | Storage controller having data augmentation components for use with non-volatile memory die |
US11501109B2 (en) | 2019-06-20 | 2022-11-15 | Western Digital Technologies, Inc. | Non-volatile memory die with on-chip data augmentation components for use with machine learning |
KR20210001508A (ko) | 2019-06-28 | 2021-01-06 | 에스케이하이닉스 주식회사 | 메모리 시스템의 MLC(Multi Level Cell)영역에 데이터를 안전하게 저장하기 위한 장치 및 그 방법 |
US11907114B2 (en) | 2019-08-18 | 2024-02-20 | Smart IOPS, Inc. | Devices, systems, and methods for dynamically remapping memory addresses |
US11036582B2 (en) * | 2019-09-27 | 2021-06-15 | Western Digital Technologies, Inc. | Uncorrectable error correction code (UECC) recovery time improvement |
US11205473B2 (en) | 2020-02-04 | 2021-12-21 | Western Digital Technologies, Inc. | Dual SLC/QLC programming and resource releasing |
TWI747191B (zh) * | 2020-03-09 | 2021-11-21 | 慧榮科技股份有限公司 | 資料儲存裝置與資料處理方法 |
US11288011B2 (en) * | 2020-03-26 | 2022-03-29 | Western Digital Technologies, Inc. | Non-volatile memory array with write failure protection for multi-level cell (MLC) storage elements using coupled writes |
US11507835B2 (en) | 2020-06-08 | 2022-11-22 | Western Digital Technologies, Inc. | Neural network data updates using in-place bit-addressable writes within storage class memory |
US11211119B1 (en) | 2020-06-11 | 2021-12-28 | Western Digital Technologies, Inc. | QLC programming method with staging of fine data |
US11663068B2 (en) * | 2020-06-29 | 2023-05-30 | Western Digital Technologies, Inc. | Write abort error detection in multi-pass programming |
US11568938B2 (en) | 2020-11-03 | 2023-01-31 | Western Digital Technologies, Inc. | QLC data programming |
KR20220120967A (ko) | 2021-02-24 | 2022-08-31 | 삼성전자주식회사 | 스토리지 컨트롤러, 그 동작방법 |
US11861195B2 (en) | 2021-03-15 | 2024-01-02 | Western Digital Technologies, Inc. | TLC data programming with hybrid parity |
TWI780003B (zh) * | 2022-02-15 | 2022-10-01 | 群聯電子股份有限公司 | 記憶體控制方法、記憶體儲存裝置及記憶體控制電路單元 |
US20230282294A1 (en) * | 2022-03-07 | 2023-09-07 | Western Digital Technologies, Inc. | Storage System and Method for Improving Read Latency During Mixed Read/Write Operations |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080109697A1 (en) * | 2006-11-07 | 2008-05-08 | Macronix International Co., Ltd. | Memory and method for checking reading errors thereof |
CN101814318A (zh) * | 2009-02-25 | 2010-08-25 | 群联电子股份有限公司 | 多层存储单元与非型闪存储存系统及其控制器与存取方法 |
CN103119569A (zh) * | 2010-08-31 | 2013-05-22 | 美光科技公司 | 基于存储条的非易失性多级存储器操作 |
CN103730162A (zh) * | 2012-10-15 | 2014-04-16 | Lsi公司 | 用于多级单元的非易失性存储器的加速软读取 |
CN103955430A (zh) * | 2014-03-31 | 2014-07-30 | 深圳市江波龙电子有限公司 | 一种闪存存储设备中数据管理的方法及装置 |
US8811091B2 (en) * | 2011-12-16 | 2014-08-19 | SanDisk Technologies, Inc. | Non-volatile memory and method with improved first pass programming |
US20140244903A1 (en) * | 2013-02-28 | 2014-08-28 | Kabushiki Kaisha Toshiba | Controller, semiconductor storage device and method of controlling data writing |
US20140281683A1 (en) * | 2013-03-15 | 2014-09-18 | Sandisk Technologies Inc. | Flash memory techniques for recovering from write interrupt resulting from voltage fault |
CN104126178A (zh) * | 2011-12-29 | 2014-10-29 | 桑迪士克科技股份有限公司 | Slc-mlc损耗平衡 |
US20150012684A1 (en) * | 2013-07-02 | 2015-01-08 | Sandisk Technologies Inc. | Write Operations with Full Sequence Programming for Defect Management in Nonvolatile Memory |
CN104571938A (zh) * | 2013-10-28 | 2015-04-29 | 擎泰科技股份有限公司 | 在多层单元存储器存取数据的方法及其多层单元存储装置 |
US20150229337A1 (en) * | 2014-02-11 | 2015-08-13 | Lsi Corporation | Mitigation of write errors in multi-level cell flash memory through adaptive error correction code decoding |
CN105051703A (zh) * | 2012-11-13 | 2015-11-11 | 西部数据技术公司 | 用于避免数据存储设备中较低页讹误的方法和设备 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8452912B2 (en) * | 2007-10-11 | 2013-05-28 | Super Talent Electronics, Inc. | Flash-memory system with enhanced smart-storage switch and packed meta-data cache for mitigating write amplification by delaying and merging writes until a host read |
KR101257848B1 (ko) * | 2005-07-13 | 2013-04-24 | 삼성전자주식회사 | 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법 |
SG130988A1 (en) * | 2005-09-29 | 2007-04-26 | Trek 2000 Int Ltd | Portable data storage device incorporating multiple flash memory units |
KR100875539B1 (ko) * | 2007-01-17 | 2008-12-26 | 삼성전자주식회사 | 프로그램 방식을 선택할 수 있는 메모리 시스템 |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
TWI385516B (zh) * | 2008-08-12 | 2013-02-11 | Phison Electronics Corp | 快閃記憶體儲存系統及其資料寫入方法 |
US8307241B2 (en) * | 2009-06-16 | 2012-11-06 | Sandisk Technologies Inc. | Data recovery in multi-level cell nonvolatile memory |
US8402243B2 (en) * | 2010-02-25 | 2013-03-19 | Apple Inc. | Dynamically allocating number of bits per cell for memory locations of a non-volatile memory |
US20120167100A1 (en) * | 2010-12-23 | 2012-06-28 | Yan Li | Manual suspend and resume for non-volatile memory |
US8923045B2 (en) * | 2012-05-31 | 2014-12-30 | Seagate Technology Llc | Multi-level cell (MLC) update with protected mode capability |
US9312885B2 (en) * | 2012-08-15 | 2016-04-12 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor memory system error correction capability of which is improved |
US8885410B2 (en) * | 2012-08-29 | 2014-11-11 | Sandisk Technologies Inc. | Direct multi-level cell programming |
US8886877B1 (en) * | 2014-05-15 | 2014-11-11 | Sandisk Technologies Inc. | In-situ block folding for nonvolatile memory |
-
2015
- 2015-11-16 US US14/942,456 patent/US9530491B1/en active Active
-
2016
- 2016-09-14 CN CN201680054666.2A patent/CN108139970B/zh active Active
- 2016-09-14 WO PCT/US2016/051651 patent/WO2017087059A2/en active Application Filing
- 2016-09-14 DE DE112016004760.6T patent/DE112016004760T5/de active Pending
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080109697A1 (en) * | 2006-11-07 | 2008-05-08 | Macronix International Co., Ltd. | Memory and method for checking reading errors thereof |
CN101814318A (zh) * | 2009-02-25 | 2010-08-25 | 群联电子股份有限公司 | 多层存储单元与非型闪存储存系统及其控制器与存取方法 |
CN103119569A (zh) * | 2010-08-31 | 2013-05-22 | 美光科技公司 | 基于存储条的非易失性多级存储器操作 |
US8811091B2 (en) * | 2011-12-16 | 2014-08-19 | SanDisk Technologies, Inc. | Non-volatile memory and method with improved first pass programming |
CN104126178A (zh) * | 2011-12-29 | 2014-10-29 | 桑迪士克科技股份有限公司 | Slc-mlc损耗平衡 |
CN103730162A (zh) * | 2012-10-15 | 2014-04-16 | Lsi公司 | 用于多级单元的非易失性存储器的加速软读取 |
CN105051703A (zh) * | 2012-11-13 | 2015-11-11 | 西部数据技术公司 | 用于避免数据存储设备中较低页讹误的方法和设备 |
US20140244903A1 (en) * | 2013-02-28 | 2014-08-28 | Kabushiki Kaisha Toshiba | Controller, semiconductor storage device and method of controlling data writing |
US20140281683A1 (en) * | 2013-03-15 | 2014-09-18 | Sandisk Technologies Inc. | Flash memory techniques for recovering from write interrupt resulting from voltage fault |
US20150012684A1 (en) * | 2013-07-02 | 2015-01-08 | Sandisk Technologies Inc. | Write Operations with Full Sequence Programming for Defect Management in Nonvolatile Memory |
CN104571938A (zh) * | 2013-10-28 | 2015-04-29 | 擎泰科技股份有限公司 | 在多层单元存储器存取数据的方法及其多层单元存储装置 |
US20150229337A1 (en) * | 2014-02-11 | 2015-08-13 | Lsi Corporation | Mitigation of write errors in multi-level cell flash memory through adaptive error correction code decoding |
CN103955430A (zh) * | 2014-03-31 | 2014-07-30 | 深圳市江波龙电子有限公司 | 一种闪存存储设备中数据管理的方法及装置 |
Non-Patent Citations (3)
Title |
---|
KI-TAE PARK .ETC: "A Zeroing Cell-to-Cell Interference Page Architecture With Temporary LSB Storing and Parallel MSB Program Scheme for MLC NAND Flash Memories", 《IEEE JOURNAL OF SOLID-STATE CIRCUITS》 * |
冒伟等: "基于相变存储器的存储技术研究综述", 《计算机学报》 * |
姚慧秋等: "半导体工艺不断更新 闪存失效模式简要分析", 《电子测试》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110658991A (zh) * | 2018-06-29 | 2020-01-07 | 美光科技公司 | 多层级单元数据加载优化 |
CN110471863A (zh) * | 2019-08-13 | 2019-11-19 | 深圳忆联信息系统有限公司 | 基于固态硬盘的数据写入读取方法、装置和计算机设备 |
TWI811091B (zh) * | 2020-08-27 | 2023-08-01 | 大陸商長江存儲科技有限責任公司 | Nand快閃記憶體及儲存系統 |
Also Published As
Publication number | Publication date |
---|---|
WO2017087059A2 (en) | 2017-05-26 |
DE112016004760T5 (de) | 2018-06-28 |
CN108139970B (zh) | 2021-11-09 |
US9530491B1 (en) | 2016-12-27 |
WO2017087059A3 (en) | 2017-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108139970A (zh) | 用于直接写入多级单元存储器的系统和方法 | |
US9921956B2 (en) | System and method for tracking block level mapping overhead in a non-volatile memory | |
US9886341B2 (en) | Optimizing reclaimed flash memory | |
CN108475530A (zh) | 用于在储存体装置的编程之前进行擦除检测的系统和方法 | |
CN105988738B (zh) | 服务混合负荷中有效使用数据锁存器的存储器裸芯和方法 | |
CN107924224A (zh) | 用于自适应自动休眠和后台操作的存储器系统及方法 | |
WO2017058301A1 (en) | Zero read on trimmed blocks in a non-volatile memory system | |
US9582435B2 (en) | Memory system and method for efficient padding of memory pages | |
CN110088739A (zh) | 用于精简配置的存储系统和方法 | |
CN108874303A (zh) | 非易失性存储器命令冲突避免的储存系统和方法 | |
CN107111456A (zh) | 用于生成与主机命令相关联的提示信息的系统和方法 | |
US11442666B2 (en) | Storage system and dual-write programming method with reverse order for secondary block | |
US11036407B1 (en) | Storage system and method for smart folding | |
US9846554B1 (en) | Storage system and method for grouping blocks based on deterministic data patterns | |
US11437104B2 (en) | Storage system and method for a hybrid quad-level cell (QLC) write scheme for reduced random access memory (RAM) footprint | |
US20170102877A1 (en) | Systems and Methods for Performing an Adaptive Sustain Write in a Memory System | |
US9620201B1 (en) | Storage system and method for using hybrid blocks with sub-block erase operations | |
US10725705B1 (en) | System and method for storage system property deviation | |
US11836374B1 (en) | Storage system and method for data placement in zoned storage | |
US11334256B2 (en) | Storage system and method for boundary wordline data retention handling | |
US9548105B1 (en) | Enhanced post-write read for 3-D memory | |
US11573893B2 (en) | Storage system and method for validation of hints prior to garbage collection | |
US11915772B1 (en) | Data storage device and method for power on reset and read error handling | |
US11599277B1 (en) | Storage system and method for performing a targeted read scrub operation during intensive host reads | |
US11809331B1 (en) | Storage system and method for avoiding header to improve parity |
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 |