CN111326199A - 用于存储器设备的多态编程 - Google Patents
用于存储器设备的多态编程 Download PDFInfo
- Publication number
- CN111326199A CN111326199A CN201910799164.8A CN201910799164A CN111326199A CN 111326199 A CN111326199 A CN 111326199A CN 201910799164 A CN201910799164 A CN 201910799164A CN 111326199 A CN111326199 A CN 111326199A
- Authority
- CN
- China
- Prior art keywords
- data
- encoded data
- encoding
- encoded
- flash 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
- 238000000034 method Methods 0.000 claims abstract description 63
- 230000005055 memory storage Effects 0.000 claims description 32
- 238000012937 correction Methods 0.000 claims description 9
- 230000015654 memory Effects 0.000 description 69
- 238000009826 distribution Methods 0.000 description 42
- 238000005516 engineering process Methods 0.000 description 38
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000007935 neutral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- 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
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
- 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/5642—Sensing or reading circuits; Data output 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/08—Address circuits; Decoders; Word-line control 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/26—Sensing or reading circuits; Data output 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/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3404—Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
-
- 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
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/781—Masking faults in memories by using spares or by reconfiguring using programmable devices combined in a redundant decoder
-
- 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/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/80—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
- G11C29/802—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout by encoding redundancy signals
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/562—Multilevel memory programming aspects
- G11C2211/5623—Concurrent multilevel programming and reading
-
- 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/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/74—Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies
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)
- Quality & Reliability (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Human Computer Interaction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
本公开题为“用于存储器设备的多态编程”。描述了存储设备编程方法、系统和介质。方法可以包括对数据进行编码以生成一组编码数据。第一编程操作可以将一组编码数据写入存储器设备。方法包括基于数据使用第二编码操作进行编码以生成第二组编码数据。将第二组编码数据存储到高速缓存。基于第二组编码数据和一组编码数据执行第一解码操作以生成一组解码数据。执行第二解码操作以生成第二组解码数据。对第二组解码数据进行编码以生成第三组编码数据。方法包括执行第二编程操作以将第三组编码数据写入存储器设备。
Description
背景技术
本主题申请整体涉及数据存储系统、设备和方法。更具体地,本主题申请涉及例如但不限于用于将数据写入存储器设备的多态编程。
背景技术部分中提供的描述不应仅因为它在背景技术部分中被提及或与背景技术部分相关联而被认为是现有技术。背景技术部分可以包括描述本主题技术的一个或多个方面的信息,并且该部分中的描述不限制本发明。
附图说明
将参考附图进行详细描述:
图1是示出根据本主题技术的方面的闪存存储系统的部件的框图;
图2A概念性地示出了根据本主题技术的一个或多个具体实施的由闪存存储系统的各个部件提供的模糊/精细编程的示例;
图2B概念性地示出了根据本主题技术的一个或多个具体实施的由闪存存储系统的各个部件提供的模糊/精细编程的第二示例;
图3A和图3B概念性地示出了根据本主题技术的一个或多个具体实施的读取处于模糊状态下的数据(例如,使用模糊编程操作写入闪存存储器的数据)并将其解码的示例;
图4示出了根据一个或多个具体实施的用于执行模糊/精细编程的过程的流程图。
具体实施方式
下面阐述的详细描述旨在作为本主题技术的各种配置的描述,而不旨在表示可实践本主题技术的唯一配置。附图结合到本文中并构成详细描述的一部分。详细描述包括具体细节,其目的是提供对本主题技术的透彻理解。然而,对本领域的技术人员将显而易见的是,可以在没有这些具体细节的情况下实践本主题技术。在一些情况下,熟知的结构和部件以框图的形式示出,以便避免使本主题技术的概念晦涩难懂。为了便于理解,类似的部件标有相同的元件符号。
在一个或多个示例中,用于每单元多位NAND闪存存储器的模糊和精细编程技术可以是指两阶段或多阶段编程技术(例如,“模糊/精细编程”),其中在第一字线编程操作(例如,模糊编程操作)中NAND单元电压快速地接近期望的电压电平(例如,由存储在每个单元中的位模式确定),然后在程序步长尺寸小得多的第二编程操作(例如,精细编程操作)中被编程到其最终的电压电平。当在模糊状态下时,存储在给定闪存存储器设备上的数据由于可能使给定纠错码(ECC)解码器不堪重负的非常高的误码率而无法由控制器读取。
在示例中,前述编程阶段中的每个阶段都要求数据从控制器传输到NAND闪存存储器。因此,控制器需要在整个过程中存储该数据。在一些情况下,一个或多个其他字线可以在单个字线上的模糊编程阶段和精细编程阶段之间进行模糊编程。在示例中,控制器中的存储器要求可能很大,尤其对于每单元4位四级单元(QLC),其中每个字线上存储了4个数据页面。在本文所述的一个或多个具体实施中,本主题技术有利地降低了在模糊/精细编程期间控制器中的数据缓冲要求,这改善了给定计算设备的功能。
在示例中,模糊/精细编程可以产生“最佳”最终结果,即,在精细编程之后的误码率(BER)低于其他编程技术。然而,已经普遍地使用其中字线上的各个页面渐进地编程的其他技术。中间编程步骤是可读的,并且用作待存储在字线上的页面的子集的缓冲器。在可在单遍编程(例如,全序列编程)中实现目标BER的一些情况下,可能不需要模糊/精细编程,就像现有一代位成本可扩展(BiCS)三级单元闪存(TLC)那样。
在一些先前模糊/精细编程具体实施(例如,平面三级单元闪存)中,所有数据可能已经在控制器中进行缓冲。对于一些较低性能系统(例如,具有较少处理能力),这种缓冲可能不是问题,因为并发编程操作要少得多(例如,较低的并行性)。与所有数据都被缓冲的前述先前模糊/精细编程具体实施相比,本文进一步公开的一个或多个具体实施可以减少在控制器中进行缓冲的数据量。
在一个或多个具体实施中,本主题技术有利地使模糊编程能够由给定控制器读取。因此,本主题技术可以避免在模糊编程期间发生的可能使在精细编程之后的最终结果降级的折衷。在示例中,这通过在控制器中存储可有助于从模糊编程恢复数据的冗余信息来实现。存储在控制器中以用于恢复单个模糊字线的冗余信息量无需为页面大小单位,就像上面描述的现有方法中的一些那样,但是在一些具体实施中,为了简单起见,这可能是需要的或期望的。尽管出于例证目的,本文的描述可以是指冗余的单个页面单位,但是应当理解,在本主题技术的一些具体实施中,这是不需要的。
本主题技术的一个或多个具体实施提供了若干性能有益效果,其改善了计算机(例如,计算设备)的功能。例如,本主题技术使得能够利用模糊/精细编程技术,而不大幅地提高控制器的存储器要求。本文所述的模糊/精细编程技术可以产生最高质量(例如,就最低BER而言)最终结果,这对使用可能具有极小的误差余量的基于QLC的存储器的闪存存储系统而言可为关键的。因此,应当理解,本主题技术的具体实施通过至少降低存储器要求来改善计算设备(包括如本文所述的闪存存储系统)的功能,这还可以改善这种计算设备的处理负担。此外,当使用模糊/精细编程时将数据写入闪存存储器设备的延迟可以通过利用本文进一步详细描述的具体实施来改善,这进一步改善这种计算设备的功能。另外,当使用模糊/精细编程时,本文所述的具体实施可以改善解码延迟并降低数据的解码复杂度,从而改善计算设备的性能。
图1是示出根据本主题技术的方面的闪存存储系统110的部件的框图。如图1所示,闪存存储系统110包括接口115、控制器120、存储器125、高速缓存126、编码器160、ECC编码器162、模糊编码器164、解码器170、模糊解码器172、ECC解码器174和闪存存储器设备130。接口115便于在闪存存储系统110与主机150之间传送数据、命令和/或控制信号。控制器120控制闪存存储系统110的操作以根据从主机150接收的命令在闪存存储器设备130(例如,被示出为闪存存储器设备130(a)、130(b)至130(n)以描绘至少若干设备)中存储和检索数据。控制器120可以包括单核处理器或多核处理器,该多核处理器包括用于执行指令的若干单独的计算核心。例如,多核具体实施中的计算核心可以并行地运行相应指令,包括闪存存储系统110的固件的部分。存储器125(其可以是随机存取存储器(RAM))为控制器120提供临时存储空间以处理命令,并且在主机150与闪存存储器设备130之间传输数据。
可包括存储器、寄存器、一个或多个处理器、片上系统(SoC)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、离散门或晶体管逻辑器件、离散硬件部件或它们的任何组合并且可以与控制器120集成或分离的解码器170使用各种解码方案对数据进行解码。存储器125可以包括高速缓存126。另选地,高速缓存126可以与存储器125分开地实施为单独的易失性存储器(例如,随机存取存储器),其可以是比存储器125更快的存储器。可包括存储器、寄存器、一个或多个处理器、片上系统(SoC)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、离散门或晶体管逻辑器件、离散硬件部件或它们的任何组合并且可以与控制器120集成或分离的编码器160使用各种编码方案对待写入闪存存储器设备130的数据进行编码。下面更详细地描述这些部件中的每个部件的操作。
接口115提供主机150与闪存存储系统110之间的物理和电气连接。接口115被配置为便于经由物理和电气连接在主机150与闪存存储系统110之间传送数据、命令和/或控制信号。与接口115的连接和通信可以基于标准接口,诸如通用串行总线(USB)、小型计算机系统接口(SCSI)、串行高级技术附件(SATA)、Mini-SATA(mSATA)、PCIe等。另选地,连接和/或通信可以基于专有接口,但是本主题技术不限制于任何特定类型接口。
主机150可以是计算设备,诸如计算机/服务器、智能电话、或从闪存存储系统110读取数据并向该闪存存储系统写入数据的任何其他电子设备。主机150可以具有向闪存存储系统110发出读取和写入命令的操作系统或其他软件。闪存存储系统110可以与主机150集成,或可以在主机150的外部。闪存存储系统110可以无线连接到主机150,或可以物理连接到主机150。
控制器120还可以包括内部管理处理器,该内部管理处理器在多核具体实施中可以在控制器120的核心中的一个上运行。内部管理处理器可以使用接口115与图1中所示的其他部件通信,包括主机150、存储器125、控制器120和闪存存储器设备130。
图1示出了多个闪存存储器设备130。闪存存储系统110可以包括一个或多个闪存存储器设备130,并且不限于特定数量的闪存存储器设备130。闪存存储器设备130可以各自包括单个闪存存储器芯片或管芯。闪存存储器设备130可以组织在多个通道中,由控制器120通过多个通道从闪存存储器设备130读取数据或向闪存存储器设备写入数据,或该闪存存储器设备可以耦接到单个通道。闪存存储器设备130可以使用包括3D NAND存储器的NAND闪存存储器来实现,其中存储器单元使用分别可每单元存储三个位和四个位的三级单元(TLC)和/或四级单元(QLC)来堆叠成多个层。例如,闪存存储器设备可以包括NAND闪存存储器,其由可被编程为存储多个位或多个级的存储器单元组成,这种存储器单元被称为多级单元(MLC),诸如前述TLC和/或QLC。
另外,闪存存储器设备130可以各自包括一个或多个寄存器以用于存储相应闪存存储器设备130的操作参数。在示例中,此类操作参数可以包括:读取操作参数,诸如读取电压;写入操作参数,诸如初始脉冲值、增量脉冲值和脉冲宽度;以及擦除操作参数,诸如初始脉冲值、增量脉冲值和脉冲宽度。
如图所示,闪存存储器设备130包括分布到诸如闪存存储器块140(例如,被示出为闪存存储器块140(a)、140(b)至140(n)以描绘在相应闪存存储器设备中的至少若干块)的存储块中的多个存储器单元。闪存存储器设备130可以具有一个或多个闪存存储器块140,并且闪存存储器设备130可以各自具有相同或不同数量的闪存存储器块140。闪存存储器块140可以被称为数据块或存储器块,并且可由控制器120使用物理块地址进行寻址。闪存存储器块140中的每个进一步被分成可由控制器120使用物理页面地址或与包含引用页面的存储块的物理块地址的偏移来进行寻址的多个数据段或页面。页面可以存储扇区或其他主机数据单元。闪存存储器块140表示在单个擦除操作中在闪存存储器设备130内被擦除的数据单元。页面表示在读取或写入操作中从闪存存储器设备130读取或向该闪存存储器设备写入的数据单元。尽管就块和页面描述了闪存存储器设备130,但是也可以使用其他术语指代闪存存储设备内的这些数据单元。
还应理解,本主题技术不限制于闪存存储器的任何特定容量。例如,存储块可以各自包括32、64、128或512个页面,或任何其他数量的页面。另外,例如,页面可以各自包括512字节、2KB、4KB或32KB。扇区可以各自包括例如512字节、4KB或其他大小。每一页面可能存在一个或多个扇区。
在图1中,存储器125和高速缓存126表示在闪存存储系统110的操作期间耦接到控制器120并由该控制器使用的易失性存储器。控制器120可以缓冲存储器125和/或高速缓存126中的命令和/或数据。控制器120还可以使用存储器125和/或高速缓存126存储地址映射表或查找表,其用于将主机150所使用的逻辑地址转换成与闪存存储器设备130的块和页面对应的虚拟和/或物理地址。用来管理闪存存储器设备130的其他类型的表、数据、状态指示符等也可以由控制器120存储在存储器125中。在不脱离本主题技术的范围的情况下,可以使用动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)或其他类型的易失性随机存取存储器来实施存储器125和/或高速缓存126。控制器120还可以周期性地将存储器125和/或高速缓存126的内容存储到一个或多个指定闪存存储器块140中,诸如在闪存存储系统110断电之前。
控制器120管理主机150与闪存存储器设备130之间的数据流。控制器120被配置为经由接口115从主机150接收命令和数据。例如,控制器120可以从主机150接收数据和写入命令(在本文中也被称为“编程”或“程序”命令)以将数据写入闪存存储器设备130。控制器120被进一步配置为经由接口115向主机主机150发送数据。例如,控制器120可以从闪存存储器设备130读取数据并响应于读取命令而将数据发送到主机150。
控制器120被进一步配置为基于内部控制算法或可从主机150接收的其他类型的命令而管理存储在闪存存储器设备130、存储器125和高速缓存126中的数据。例如,控制器120被配置为执行诸如垃圾收集(GC)、纠错编码技术(例如,LDPC)、耗损均衡、安全技术(例如,加密)、压缩技术、冗余技术(例如,独立磁盘冗余阵列(RAID)技术)、多态编程(例如,模糊/精细编程)等的操作。例如,控制器120可以使用纠错编码来为写入闪存存储器设备130的数据提供保护并执行与此类数据相关的模糊/精细编程。就这一点而言,在第一遍编程或状态中,控制器120的ECC编码器162和模糊编码器164可以对从主机设备150接收的数据进行编码。然后,作为该遍模糊编程的一部分,控制器114(或其一个或多个部件)将编码数据写入闪存存储器设备130中的一个或多个闪存存储器设备和/或在存储器125和/或高速缓存126中缓冲编码数据。在第二遍编程或状态中,模糊解码器172和ECC解码器174对来自闪存存储器设备130中的一个或多个闪存存储器设备的数据和/或存储器125和/或高速缓存126中的缓冲的数据进行解码。然后,作为该遍精细编程的一部分,控制器114(或其一个或多个部件)将解码的数据写入闪存存储器设备130中的一个或多个闪存存储器设备。在一个或多个具体实施中,高速缓存126与闪存存储器设备130是分离且不同的,并且高速缓存126不是闪存存储器设备130的一部分。模糊/精细编程的示例在下面的图2A和图2B中更详细地进行描述。
当控制器120(或其一个或多个部件)随后从闪存存储器设备130中的一个或多个闪存存储器设备读取数据时,控制器120经由接口115将数据提供到主机设备150。本领域的技术人员将熟悉由闪存存储器设备中的控制器执行的其他操作,这些操作本文不再进行赘述。
控制器120可以用通用处理器、多核处理器、微控制器、数字信号处理器(DSP)、片上系统(SoC)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑器件、离散门或晶体管逻辑器件、离散硬件部件或被设计和配置为执行本文所述的操作和功能的它们的任何组合来实施。在多核处理器具体实施中,若干计算核心中的每个可以并行地运行相应指令,包括闪存存储系统110的固件的部分。控制器120可以通过执行存储在机器/计算机可读介质上的一个或多个指令序列来执行本文所述的操作和功能。机器/计算机可读介质可以是闪存存储器设备130、存储器125、高速缓存126、或控制器120可从中读取指令或代码的其他类型的介质。例如,闪存存储系统110可以包括用固件/软件进行编码的只读存储器(ROM),诸如EPROM或EEPROM,该固件/软件包括在闪存存储系统110的操作期间由控制器120读取和执行的一个或多个指令序列。
图2A概念性地示出了根据本主题技术的一个或多个具体实施的由闪存存储系统的各个部件提供的模糊/精细编程的示例。通过参考图1中的闪存存储系统110的部件讨论图2A。
如图所示,由ECC编码器162接收来自主机设备(例如,主机150)的主机数据205。在图2A的示例中,为了将数据编程到使用QLC单元(例如,每单元四个位)的NAND闪存存储器(闪存存储器设备130中的一个或多个闪存存储器设备)中,每字线写入四个数据页面,以便在两遍单独的编程中实施模糊/精细编程。尽管在该示例中描述了四个数据页面,但是本主题技术可以基于存储器的类型而写入不同数量的页面。在NAND闪存存储器每单元使用三个位的示例中,可以每字线写入三个数据页面,而不是实施根据本主题技术的具体实施的模糊/精细编程。
使用ECC编码方案(例如,Reed-Solomon、BCH、LDPC等),ECC编码器162对主机数据205进行编码,从而生成编码数据的四个页面。关于模糊/精细编程中的第一遍编程,作为第一遍编程的一部分,控制器120(或另选地,ECC编码器162)执行模糊编程操作250以将编码数据的四个页面写入闪存存储器设备130(例如,NAND闪存存储器)中的一个或多个闪存存储器设备。
ECC编码器162将编码数据的四个页面发送到模糊编码器164。模糊编码器164接收编码数据的四个页面并对编码数据的四个页面进行编码,从而生成一个数据页面。在具体实施中,模糊编码器164对编码数据的四个页面执行XOR运算,以便生成一个数据页面以存储在高速缓存中。控制器120(或另选地,模糊编码器164)将一个数据页面写入高速缓存(例如,高速缓存126)中。在示例中,存储在高速缓存中的一个数据页面是单个附加的页面,其是每个单元中的四位数据的XOR运算的结果(例如,对于使用QLC的闪存存储器)。四位数据的这种XOR运算可以产生单个位的结果。当使用格雷代码技术对映射到单元的数据进行编码时,该单个位将在相邻读取电平上切换。因此,单个位指示单元读取电平是偶数的还是奇数的(例如,对应于偶数或奇数分布,如下面进一步讨论的)。当结合另选的读取阈值集使用时(例如,在模糊读取期间),这可以减少对闪存存储器进行的读取操作的要求,以针对每个单元仅区分八个级而不是十六个级。然后,经高速缓存的位可以解析对十六个级的检测。在这种情况下,经高速缓存的页面也是ECC码字,因为它是四个码字的线性组合。因此,通过示例,在要将经高速缓存的页面存储在单级单元(SLC)NAND中的情况下,可以可靠地检索经高速缓存的页面。
在具体实施中,高速缓存(例如,高速缓存126)可以为模糊编程的四个页面中的每个页面存储附加的ECC奇偶校验。在该示例中,当高速缓存在大小上是全NAND页面时,附加的ECC奇偶校验相当于百分之二十五(25%)的附加冗余。这可以是来自对数据的不同编码的奇偶校验(例如,在模糊解码期间未利用存储在闪存中的ECC奇偶校验的情况下),或作为可用来加强在由模糊解码器172进行的模糊解码期间存储在闪存存储器中的奇偶校验的扩展的奇偶校验。在一个具体实施中,存储在高速缓存中的数据仅是可结合第一ECC代码奇偶校验一起使用的更强ECC代码的附加的奇偶校验位,或可以完全不依赖于(被写入闪存的)较弱ECC奇偶校验。
控制器120(或模糊解码器172)对存储在高速缓存126中的一个数据页面执行读取操作。控制器120(或模糊解码器172)对存储在闪存存储器设备130中的四个数据页面执行第二读取操作。在示例中,第二读取操作是特殊读取命令252,其使得能够读取处于模糊状态下的四个数据页面(例如,使用前述模糊编程操作写入闪存存储器的那些)。在具体实施中,该特殊读取命令252使读取阈值移位到电压分布的中心(例如,不在读取操作中的分布的交汇处)。用于该特殊读取操作的这种分布的示例在下面的图3A和图3B中更详细地进行讨论。
模糊解码器172至少部分地基于来自高速缓存126的一个数据页面而对四个数据页面进行解码。解码数据的示例在下面的图3A和图3B中更详细地进行讨论。模糊解码器172将解码的四个数据页面发送到ECC解码器174以进行ECC解码。
ECC解码器174使用ECC解码方案进一步对四个数据页面进行解码,以便从数据消除错误并准备数据以便写入闪存存储器设备130中的一个或多个闪存存储器设备。在示例中,在被编程到闪存存储器设备130之前对解码的数据进行重新编码。作为第二遍模糊/精细编程,控制器120(或ECC解码器174)执行精细编程操作254以将重新编码的四个数据页面写入闪存存储器设备130中的一个或多个闪存存储器设备。
图2B概念性地示出了根据本主题技术的一个或多个具体实施的由闪存存储系统的各个部件提供的模糊/精细编程的第二示例。将参考图1中的闪存存储系统110的部件来讨论图2B。图2B类似于图2A,一个差别在于模糊编码器164从主机(例如,主机150)接收主机数据。
如图所示,由ECC编码器162接收来自主机设备(例如,主机150)的主机数据205。使用ECC编码方案(例如,Reed-Solomon、BCH、LDPC等),ECC编码器162对主机数据205进行编码,从而生成编码数据的四个页面。关于模糊/精细编程中的第一遍编程,作为第一遍编程的一部分,控制器120(或另选地,ECC编码器162)执行模糊编程操作250以将编码数据的四个页面写入闪存存储器设备130(例如,NAND闪存存储器)中的一个或多个闪存存储器设备。
在图2B的示例中,模糊编码器164还直接接收主机数据255。如图所示,来自主机设备(例如,主机150)的主机数据205由模糊编码器164接收。在该示例中,主机数据205包括四个数据页面。在具体实施中,模糊编码器164对主机数据255的四个页面执行XOR运算,以便生成一个数据页面以存储在高速缓存中。控制器120(或另选地,模糊编码器164)将一个数据页面写入高速缓存(例如,高速缓存126)中。在示例中,存储在高速缓存中的一个数据页面是单个附加页面,其是每个单元中的四位数据的XOR运算的结果(例如,对于使用QLC的闪存存储器)。
控制器120(或模糊解码器172)对存储在高速缓存126中的一个数据页面执行读取操作。控制器120(或模糊解码器172)对存储在闪存存储器设备130中的四个数据页面执行第二读取操作。在示例中,第二读取操作是特殊读取命令252(如图2A所述),其使得能够读取处于模糊状态下的四个数据页面(例如,使用前述模糊编程操作写入闪存存储器的那些)。
模糊解码器172至少部分地基于来自高速缓存126的一个数据页面而对四个数据页面进行解码。模糊解码器172将解码的四个数据页面发送到ECC解码器174以进行ECC解码。
ECC解码器174使用ECC解码方案进一步对四个数据页面进行解码,以便从数据消除错误并准备数据以便写入闪存存储器设备130中的一个或多个闪存存储器设备。在示例中,在被编程到闪存存储器设备130之前对解码的数据进行重新编码。然后,控制器120(或ECC解码器174)执行精细编程操作254以将重新编码的四个数据页面写入闪存存储器设备130中的一个或多个闪存存储器设备。
图3A和图3B概念性地示出了根据本主题技术的一个或多个具体实施的读取处于模糊状态下的数据(例如,使用模糊编程操作写入闪存存储器的数据)并将其解码的示例。参考图1中的闪存存储系统110的部件讨论图3A和图3B。图3A示出了二进制表示的示例。图3B示出了图形表示的示例。
图3A和图3B示出了多个位,包括位301、位302、位303、位304、位305、位306、位307、位308、位309、位310、位311、位312、位313、位314和位315。这些位可以表示如前面所讨论的存储在高速缓存中的经高速缓存的位,其可以指示给定分布是奇数的还是偶数的。多个位表示对数据381、382、383、384、385、386、387、388、389、390、391、392、393、394和395的相应四个位的XOR运算的相应结果。
在存储多级数据的情况下,可能的阈值电压范围被分成多个数据级。例如,如果存储四级信息(两位数据),那么将存在分配给数据值“11”、“10”、“01”和“00”的四个阈值电压范围(例如,分布)。在NAND型存储器的一个示例中,在擦除操作之后的阈值电压是负的,并且被限定为“11”。正阈值电压用于“10”、“01”和“00”的数据状态。如果存储八级信息(或状态)(例如,对于三位数据),那么将存在分配给数据值“000”、“001”、“010”、“011”、“100”、“101”、“110”和“111”的八个阈值电压范围(例如,分布)。如果存储十六级信息(或状态)(例如,对于四位数据),那么将存在分配给数据值“0000”、“0001”、“0010”、“0011”、“0100”、“0101”、“0110”、“0111”、“1000”、“1001”、“1010”、“1011”、“1100”、“1101”、“1110”和“1111”的十六个阈值电压范围(例如,分布)。
相应四位数据中的每一个对应于存储在闪存存储器中的数据(例如,使用如上面所讨论的模糊编程操作写入闪存存储器的四个数据页面)。在该示例中,闪存存储器使用四级存储器单元(QLC),该QLC可以每单元存储十六个可能状态(例如,从0000到1111的值),从而每单元产生四位信息。因此,读取存储在QLC存储器中的数据可能需要读取十六个分布。
在使用QLC存储器的示例中,当模糊解码器172从闪存存储器设备130读取处于模糊状态下的数据时,可能仅需要十四个读取电平来读取十六个分布(例如,而不是当读取十六个分布时的十五个读取电平),如图3A和图3B的示例所示。图3A和图3B将这十四个读取电平示出为读取电平331(“RL1”)、读取电平332(“RL2”)、读取电平333(“RL3”)、读取电平334(“RL4”)、读取电平335(“RL5”)、读取电平336(“RL6”)、读取电平337(“RL7”)、读取电平338(“RL8”)、读取电平339(“RL9”)、读取电平340(“RL10”)、读取电平341(“RL11”)、读取电平342(“RL12”)、读取电平343(“RL13”)和读取电平344(“RL14”)。前述读取电平中的每一个基于它们的数字标记对应于“奇数”分布或“偶数”分布。例如,奇数分布包括分布361、分布363、分布365、分布367、分布369、分布371、分布373和分布375。偶数分布包括分布362、分布364、分布366、分布368、分布370、分布372和分布374。
控制器(例如,控制器120)确定偶数分布中的每一个之间的空间或奇数分布中的每一个之间的空间处的相应读取电平,该空间大致位于相应分布的中心,如图3所示。存储在高速缓存中的页面(例如,如上面所讨论的经高速缓存的位)使控制器能够区分奇数分布和偶数分布。
如图所示,分布361“RL1”对应于包括四个1(“1111”)的四位数据381。对四位数据381的XOR运算的结果将是对应于存储在高速缓存中的位301的值零(0)。相邻偶数分布是分布332“RL2”,其包括与四位数据382(“0111”)对应的零(0)和三个一。对四位数据382的XOR运算的结果将是对应于也存储在高速缓存中的位302的值一(1)。当对处于模糊状态下的存储的数据执行读取操作时,来自高速缓存的位301或位302中的每一个的值使控制器能够确定对应分布是奇数的还是偶数的。对于剩余分布中的每一个,控制器可以执行类似的操作以确定给定奇数或偶数分布的特定读取电平。
图4示出了根据一个或多个具体实施的用于执行模糊/精细编程的过程400的流程图。另外,出于说明目的,过程400的框在本文描述为顺序地或线性地发生。然而,过程400的多个框可以并行地发生。另外,不需要以所示的次序执行过程400的框,以及/或者不需要执行过程400的一个或多个框,以及/或者可以用其他操作来替换过程400的一个或多个框。图4的一个或多个框可以由闪存存储系统(包括例如闪存存储器设备的控制器、数据存储系统或固态存储设备(SSD)的数据存储控制器、处理器等)执行。闪存存储系统或控制器的示例可以是闪存存储系统110和/或控制器120。类似地,非暂态机器可读介质可以包括在其上的机器可执行指令,该机器可执行指令当由计算机或机器执行时执行图4的框。过程400的步骤可以被实施为硬件/固件或软件。将参考闪存存储系统110的部件来描述图4。
过程400可以在ECC编码器162接收到(例如,来自主机150的)主机数据时开始。在给定闪存存储器设备使用QLC存储器的示例中,可以从主机接收四个数据页面以便编程到闪存存储器设备。在410处,ECC编码器162基于第一编码操作对数据进行编码以生成一组编码数据。第一编码操作可以基于ECC编码方案。
如前所述,可以使用两个不同的编程阶段(例如,第一阶段和第二阶段)来实施模糊/精细编程。在412处,ECC编码器在第一阶段期间执行第一编程操作以将一组编码数据写入闪存存储器设备。该示例中的第一编程操作是模糊编程操作。在示例中,模糊编程将一组编码数据(例如,四个数据页面)以临时状态(例如,模糊状态)写入至少一个闪存存储器设备(例如,闪存存储器设备130中的至少一个闪存存储器设备)。
ECC编码器162将一组编码数据发送到模糊编码器164。在414处,模糊编码器164基于第二编码操作对一组编码数据进行编码以生成第二组编码数据。如前面所讨论,第二编码操作是对包括四个数据页面的一组编码数据的XOR运算。在示例中,XOR运算的结果是第二组编码数据,其包括一组编码数据的一部分(例如,一个数据页面)。在416处,模糊编码器164将第二组编码数据存储到高速缓存126。
为了读取存储在闪存存储器设备130中的处于模糊状态下的四个数据页面,如前面所讨论,模糊解码器172执行特殊读取命令。如前面所提及,该特殊读取命令使读取阈值移位到电压分布的中心(例如,不在读取操作中的分布的交汇处)。然后,模糊解码器可以使用经高速缓存的数据页面以便对从闪存存储器设备130中的至少一个闪存存储器设备读取的四个数据页面进行解码。就这一点而言,在418处,模糊解码器172基于来自高速缓存的第二组编码数据和来自闪存存储器设备130中的至少一个闪存存储器设备的一组编码数据执行第一解码操作以生成一组解码数据。第一解码操作包括模糊解码操作,其在图3A和图3B中更详细地讨论。然后,模糊解码器172将一组解码数据发送到ECC解码器174。
在420处,ECC解码器174基于一组解码数据执行第二解码操作以生成第二组解码数据。在示例中,在被编程到闪存存储器设备130中的至少一个闪存存储器设备之前,对第二组解码数据进行重新编码。具体地,数据将被解码(例如,去除奇偶校验),并且然后被重新编码(例如,再次计算奇偶校验),因为ECC解码器174可能在校正错误之后不传递奇偶校验并被丢弃。另选地,在示例中,第二解码数据是指包括奇偶校验的校正的ECC码字,并且可以不执行对第二解码数据的重新编码。
在422处,ECC解码器(或控制器120)对第二组解码数据进行编码以生成第三组编码数据。还应理解,该编码操作重新创建与在第一遍(例如,模糊)编程期间写入闪存存储器设备130的一组编码数据相同的数据,并且可以包括重新计算用于第二组解码数据的奇偶校验值。在424处,ECC解码器174(或控制器120)在第二阶段期间执行第二编程操作以将第三组编码数据写入闪存存储器设备130中的至少一个闪存存储器设备。
下面描述本公开的各方面的各个示例。这些被提供作为示例,并且不限制本主题技术。
本主题技术的一个或多个方面提供了用于提供降低对缓冲数据的存储器要求的改善的多阶段模糊/精细编程的方法。根据一些方面,方法可以包括基于第一编码操作对数据进行编码以生成一组编码数据。该方法还可以包括在第一阶段期间执行第一编程操作以将一组编码数据写入存储器设备。该方法还可以包括基于数据使用第二编码操作进行编码以生成第二组编码数据,其中第二组编码数据的量小于一组编码数据的量。该方法还可以包括将第二组编码数据存储到高速缓存。该方法还可以包括基于来自高速缓存的第二组编码数据和来自存储器设备的一组编码数据执行第一解码操作以生成一组解码数据。该方法还可以包括基于一组解码数据执行第二解码操作以生成第二组解码数据。该方法可以包括对第二组解码数据进行编码以生成第三组编码数据。该方法还可以包括在第二阶段期间执行第二编程操作以将第三组编码数据写入存储器设备。
在其他方面,系统可以包括闪存存储器设备和控制器。控制器可以被配置为基于第一编码操作对数据进行编码以生成一组编码数据。控制器还可以被配置为在第一阶段期间执行第一编程操作以将一组编码数据写入闪存存储器设备中的至少一个闪存存储器设备。控制器还可以被配置为基于数据使用第二编码操作进行编码以生成第二组编码数据,其中第二组编码数据的量小于一组编码数据的量。控制器还可以被配置为将第二组编码数据存储到高速缓存。控制器还可以被配置为基于来自高速缓存的第二组编码数据和来自闪存存储器设备中的至少一个闪存存储器设备的一组编码数据执行第一解码操作以生成一组解码数据。控制器还可以被配置为基于一组解码数据执行第二解码操作以生成第二组解码数据。控制器可以被配置为对第二组解码数据进行编码以生成第三组编码数据。控制器还可以被配置为在第二阶段期间执行第二编程操作以将第三组编码数据写入闪存存储器设备中的至少一个闪存存储器设备。
在其他方面,系统可以包括用于基于第一编码操作对数据进行编码以生成一组编码数据的装置。该系统还可以包括用于在第一阶段期间执行第一编程操作以将一组编码数据写入存储器设备的装置。该系统还可以包括用于基于数据使用第二编码操作进行编码以生成第二组编码数据的装置,其中第二组编码数据的量小于一组编码数据的量。该系统还可以包括用于将第二组编码数据存储到高速缓存的装置。该系统还可以包括用于基于来自高速缓存的第二组编码数据和来自存储器设备的一组编码数据执行第一解码操作以生成一组解码数据的装置。该系统还可以包括用于基于一组解码数据执行第二解码操作以生成第二组解码数据的装置。该系统可以包括用于对第二组解码数据进行编码以生成第三组编码数据的装置。该系统还可以包括用于在第二阶段期间执行第二编程操作以将第三组编码数据写入存储器设备的装置。
在其他方面,非暂态机器可读介质可以包括在其上的机器可执行指令,该机器可执行指令当由处理器执行时执行方法。该方法可以包括基于第一编码操作对数据进行编码以生成一组编码数据。该方法还可以包括在第一阶段期间执行第一编程操作以将一组编码数据写入存储器设备。该方法还可以包括基于数据使用第二编码操作进行编码以生成第二组编码数据,其中第二组编码数据的量小于一组编码数据的量。该方法还可以包括将第二组编码数据存储到高速缓存。该方法还可以包括基于来自高速缓存的第二组编码数据和来自存储器设备的一组编码数据执行第一解码操作以生成一组解码数据。该方法还可以包括基于一组解码数据执行第二解码操作以生成第二组解码数据。该方法可以包括对第二组解码数据进行编码以生成第三组编码数据。该方法还可以包括在第二阶段期间执行第二编程操作以将第三组编码数据写入存储器设备。
本领域的技术人员将了解到,本文所述的各个示例性框、模块、元件、部件、方法和算法可实施为电子硬件、计算机软件、或两者的组合。为了例证硬件和软件的这种可互换性,上面已经大体就它们的功能方面描述了各个示例性框、模块、元件、部件、方法和算法。将这种功能实施为硬件或软件取决于特定应用和强加于整个系统的设计约束。技术人员可以针对每个特定应用以不同的方式实现所述功能。在不脱离本主题技术的范围的情况下,各个部件和框可以不同方式布置(例如,以不同的次序布置、或以不同的方式划分)。
应当理解,所公开的过程中的步骤的特定次序或层级是示例性方法的例证。基于设计偏好,应当理解,这些过程中的步骤的特定次序或层级可以进行重新布置。步骤中的一些可以同时执行。所附方法权利要求以样本次序呈现各个步骤的要素,而不旨在被限制于所呈现的特定次序或层级。
先前描述被提供以使本领域技术人员能够实践本文所述的各个方面。先前描述提供本主题技术的各个示例,并且本主题技术不限制于这些示例。这些方面的各种修改对本领域的技术人员将是显而易见的,并且本文限定的一般原理可应用于其他方面。因此,权利要求并非旨在被限制于本文所示的各方面,而是将被赋予与语言权利要求一致的全部范围,其中除非特别说明,否则以单数指称某个元件并非旨在意指“一个且仅一个”,而是意指“一个或多个”。除非另外特别说明,否则术语“一些”是指一个或多个。男性化代词(例如,他的)包括女性化代词和中性代词(例如,她的和它的),反之亦然。标题和副标题(如果有的话)仅为了方便才使用,而不限制本发明。
诸如“方面”等短语并非暗示此类方面对本主题技术是必要的,或此类方面适用于本主题技术的所有配置。与方面有关的公开内容可适用于所有配置、或一个或多个配置。方面可以提供一个或多个示例。诸如方面等短语可以是指一个或多个方面,反之亦然。诸如“实施方案”等短语并非暗示此类实施方案对本主题技术是必要的,或此类实施方案适用于本主题技术的所有配置。与实施方案有关的公开内容可适用于所有实施方案、或一个或多个实施方案。实施方案可以提供一个或多个示例。诸如“实施方案”等短语可以是指一个或多个实施方案,反之亦然。诸如“配置”等短语并非暗示此类配置对本主题技术是必要的,或此类配置适用于本主题技术的所有配置。与配置有关的公开内容可以适用于所有配置、或一个或多个配置。配置可以提供一个或多个示例。诸如“配置”等短语可以是指一个或多个配置,反之亦然。
字词“示例性”在本文中用于意指“用作示例或例证”。本文描述为“示例性”的任何方面或设计不必理解为是比其他方面或设计更优选或更有利。
本领域的普通技术人员已经知道或之后知道的贯穿本公开描述的各个方面的要素的所有结构等同物和功能等同物以引用的方式明确地并入本文并旨在被权利要求所涵盖。此外,无论在权利要求中是否明确地叙述此公开内容,本文公开的内容都并非旨在贡献给社会大众。依据35U.S.C.§112第六段条款,将不解释任何权利要求要素,除非使用短语“用于…的装置”来明确地叙述该要素,或在方法权利要求的情况下使用短语“用于…的步骤”来叙述该要素。此外,在说明书或权利要求中使用术语“包括”、“具有”等等的意义上,这种术语旨在以与术语“包括”在“包括”用作权利要求中的过渡字词时的解释类似的方式为包括性的。
Claims (20)
1.一种用于存储器设备的使用一个或多个控制器实现的方法,所述方法包括:
基于第一编码操作对数据进行编码以生成一组编码数据;
在第一阶段期间执行第一编程操作以将所述一组编码数据写入所述存储器设备;
基于所述数据使用第二编码操作进行编码以生成第二组编码数据,其中所述第二组编码数据的量小于所述一组编码数据的量;
将所述第二组编码数据存储到高速缓存;
基于来自所述高速缓存的所述第二组编码数据和来自所述存储器设备的所述一组编码数据执行第一解码操作以生成一组解码数据;
基于所述一组解码数据执行第二解码操作以生成第二组解码数据;
对所述第二组解码数据进行编码以生成第三组编码数据;以及
在第二阶段期间执行第二编程操作以将所述第三组编码数据写入所述存储器设备。
2.根据权利要求1所述的方法,其中所述第二组编码数据包括所述一组编码数据的第二编码,并且所述第三组编码数据包括与所述一组编码数据相同的数据。
3.根据权利要求1所述的方法,其中所述第二组编码数据包括所述数据的编码,所述数据是从主机接收的。
4.根据权利要求1所述的方法,其中所述第一编程操作包括模糊编程操作,并且所述第一解码操作包括模糊解码操作。
5.根据权利要求1所述的方法,其中所述第二编程操作包括精细编程操作,所述第二解码操作包括纠错码(ECC)解码操作。
6.根据权利要求1所述的方法,其中基于所述第一编码操作对数据进行编码还包括:
从主机设备接收主机数据;
使用纠错码(ECC)编码方案基于所述主机数据生成一组编码的页面;以及
将所述一组编码的页面发送到模糊编码器以执行所述第二编码操作。
7.根据权利要求1所述的方法,其中基于所述数据使用所述第二编码操作进行编码以生成所述第二组编码数据还包括:
基于所述存储器设备的每个单元中的多个数据位的XOR运算生成附加的数据页面。
8.根据权利要求1所述的方法,其中所述第一编码操作包括纠错码(ECC)编码,并且所述第二编码操作包括XOR运算。
9.根据权利要求1所述的方法,其中所述一组编码数据包括四个数据页面,所述第二组编码数据包括一个数据页面,并且
所述一组解码数据包括四个数据页面。
10.根据权利要求1所述的方法,还包括:
执行第二读取操作以从所述存储器设备读取所述第三组编码数据。
11.一种系统,包括:
多个闪存存储器设备;和
控制器,所述控制器被配置为:
基于第一编码操作对数据进行编码以生成一组编码数据;
在第一阶段期间执行第一编程操作以将所述一组编码数据写入所述闪存存储器设备中的至少一个闪存存储器设备;
基于所述数据使用第二编码操作进行编码以生成第二组编码数据,其中所述第二组编码数据的量小于所述一组编码数据的量;
将所述第二组编码数据存储到高速缓存;
基于来自所述高速缓存的所述第二组编码数据和来自所述闪存存储器设备中的所述至少一个闪存存储器设备的所述一组编码数据执行第一解码操作以生成一组解码数据;
基于所述一组解码数据执行第二解码操作以生成第二组解码数据;
对所述第二组解码数据进行编码以生成第三组编码数据;以及
在第二阶段期间执行第二编程操作以将所述第三组编码数据写入所述闪存存储器设备中的所述至少一个闪存存储器设备。
12.根据权利要求11所述的系统,其中存储在所述高速缓存中的所述第二组编码数据包括用于特定纠错码(ECC)代码的附加奇偶校验位,并且所述第三组编码数据包括与所述一组编码数据相同的数据。
13.根据权利要求11所述的系统,其中所述第二组编码数据包括所述数据的编码,所述数据是从主机接收的。
14.根据权利要求11所述的系统,其中所述第一编程操作包括模糊编程操作,并且所述第一解码操作包括模糊解码操作。
15.根据权利要求11所述的系统,其中所述第二编程操作包括精细编程操作,并且所述第二解码操作包括纠错码(ECC)解码操作。
16.根据权利要求11所述的系统,其中所述控制器被进一步配置为:
从主机设备接收主机数据;
使用纠错码(ECC)编码方案基于所述主机数据生成一组编码的页面;以及
将所述一组编码的页面发送到模糊编码器以执行模糊编码操作。
17.根据权利要求11所述的系统,其中所述控制器被进一步配置为:
基于所述闪存存储器设备中的所述至少一个闪存存储器设备的每个单元中的多个数据位的XOR运算生成附加的数据页面。
18.根据权利要求11所述的系统,其中所述一组编码数据包括四个数据页面,并且所述第二组编码数据包括一个数据页面,并且所述一组解码数据包括四个数据页面。
19.一种闪存存储系统,包括:
用于基于第一编码操作对数据进行编码以生成一组编码数据的装置;
用于在第一阶段期间执行第一编程操作以将所述一组编码数据写入存储器设备的装置;
用于基于所述数据使用第二编码操作进行编码以生成第二组编码数据的装置,其中所述第二组编码数据的量小于所述一组编码数据的量;
用于将所述第二组编码数据存储到高速缓存的装置;
用于基于来自所述高速缓存的所述第二组编码数据和来自所述存储器设备的所述一组编码数据执行第一解码操作以生成一组解码数据的装置;
用于基于所述一组解码数据执行第二解码操作以生成第二组解码数据的装置;
用于对所述第二组解码数据进行编码以生成第三组编码数据的装置;和
用于在第二阶段期间执行第二编程操作以将所述第三组编码数据写入所述存储器设备的装置。
20.根据权利要求19所述的闪存存储系统,其中所述第二组编码数据包括所述一组编码数据的第二编码,并且所述第三组编码数据包括与所述一组编码数据相同的数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/221,332 | 2018-12-14 | ||
US16/221,332 US10748606B2 (en) | 2018-12-14 | 2018-12-14 | Multi-state programming for memory devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111326199A true CN111326199A (zh) | 2020-06-23 |
CN111326199B CN111326199B (zh) | 2023-04-28 |
Family
ID=70859430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910799164.8A Active CN111326199B (zh) | 2018-12-14 | 2019-08-28 | 用于存储器设备的多态编程 |
Country Status (3)
Country | Link |
---|---|
US (4) | US10748606B2 (zh) |
CN (1) | CN111326199B (zh) |
DE (1) | DE102019124438B4 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112735498A (zh) * | 2021-02-03 | 2021-04-30 | 山东大学 | 一种存储器译码方法 |
CN113254372A (zh) * | 2020-08-07 | 2021-08-13 | 广东高云半导体科技股份有限公司 | 用两阶段配置过程提供可编程微控制器的方法和系统 |
WO2023098207A1 (zh) * | 2021-11-30 | 2023-06-08 | 深圳忆联信息系统有限公司 | 多Pass编程NAND的RAID优化方法、装置及计算机设备 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11029874B2 (en) * | 2019-07-30 | 2021-06-08 | Western Digital Technologies, Inc. | Rolling XOR protection in efficient pipeline |
US11211119B1 (en) | 2020-06-11 | 2021-12-28 | Western Digital Technologies, Inc. | QLC programming method with staging of fine data |
US11914886B2 (en) * | 2020-10-02 | 2024-02-27 | Western Digital Technologies, Inc. | Nonvolatile memory with on-chip encoding for foggy-fine programming |
US11568938B2 (en) | 2020-11-03 | 2023-01-31 | Western Digital Technologies, Inc. | QLC data programming |
US11670380B2 (en) * | 2020-12-07 | 2023-06-06 | Sandisk Technologies Llc | Two-sided adjacent memory cell interference mitigation |
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 |
JP2022118489A (ja) * | 2021-02-02 | 2022-08-15 | キオクシア株式会社 | メモリシステム |
US11861195B2 (en) | 2021-03-15 | 2024-01-02 | Western Digital Technologies, Inc. | TLC data programming with hybrid parity |
US11922011B2 (en) * | 2021-09-01 | 2024-03-05 | Micron Technology, Inc. | Virtual management unit scheme for two-pass programming in a memory sub-system |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102656566A (zh) * | 2009-12-17 | 2012-09-05 | 国际商业机器公司 | 固态存储系统中的数据管理 |
CN102893337A (zh) * | 2010-02-19 | 2013-01-23 | 桑迪士克技术有限公司 | 具有基于邻近存储元件的状态信息的温度补偿的非易失性存储装置 |
CN103929643A (zh) * | 2013-01-16 | 2014-07-16 | 索尼公司 | 信息处理设备、信息处理方法及程序 |
US20140351674A1 (en) * | 2010-03-16 | 2014-11-27 | Cleversafe, Inc. | Utilizing cached encoded data slices in a dispersed storage network |
CN106126447A (zh) * | 2015-05-07 | 2016-11-16 | 三星电子株式会社 | 控制存储装置的方法、存储器模块和存储系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8885410B2 (en) | 2012-08-29 | 2014-11-11 | Sandisk Technologies Inc. | Direct multi-level cell programming |
US9400713B2 (en) | 2014-10-02 | 2016-07-26 | Sandisk Technologies Llc | System and method for pre-encoding of data for direct write to multi-level cell memory |
US10229051B2 (en) | 2015-12-30 | 2019-03-12 | Samsung Electronics Co., Ltd. | Storage device including nonvolatile memory device and controller, operating method of storage device, and method for accessing storage device |
US9792998B1 (en) * | 2016-03-29 | 2017-10-17 | Sandisk Technologies Llc | System and method for erase detection before programming of a storage device |
US10635335B2 (en) | 2017-03-21 | 2020-04-28 | Western Digital Technologies, Inc. | Storage system and method for efficient pipeline gap utilization for background operations |
US10679708B2 (en) | 2018-09-17 | 2020-06-09 | Western Digital Technologies, Inc. | Pre-program read to counter wordline failures |
US10705966B1 (en) | 2018-12-14 | 2020-07-07 | Western Digital Technologies, Inc. | Mapping for multi-state programming of memory devices |
-
2018
- 2018-12-14 US US16/221,332 patent/US10748606B2/en active Active
-
2019
- 2019-08-28 CN CN201910799164.8A patent/CN111326199B/zh active Active
- 2019-09-11 DE DE102019124438.2A patent/DE102019124438B4/de active Active
-
2020
- 2020-07-22 US US16/936,320 patent/US10878896B2/en active Active
- 2020-12-18 US US17/127,290 patent/US11087836B2/en active Active
-
2021
- 2021-06-23 US US17/356,413 patent/US11562787B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102656566A (zh) * | 2009-12-17 | 2012-09-05 | 国际商业机器公司 | 固态存储系统中的数据管理 |
CN102893337A (zh) * | 2010-02-19 | 2013-01-23 | 桑迪士克技术有限公司 | 具有基于邻近存储元件的状态信息的温度补偿的非易失性存储装置 |
US20140351674A1 (en) * | 2010-03-16 | 2014-11-27 | Cleversafe, Inc. | Utilizing cached encoded data slices in a dispersed storage network |
CN103929643A (zh) * | 2013-01-16 | 2014-07-16 | 索尼公司 | 信息处理设备、信息处理方法及程序 |
CN106126447A (zh) * | 2015-05-07 | 2016-11-16 | 三星电子株式会社 | 控制存储装置的方法、存储器模块和存储系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254372A (zh) * | 2020-08-07 | 2021-08-13 | 广东高云半导体科技股份有限公司 | 用两阶段配置过程提供可编程微控制器的方法和系统 |
CN112735498A (zh) * | 2021-02-03 | 2021-04-30 | 山东大学 | 一种存储器译码方法 |
CN112735498B (zh) * | 2021-02-03 | 2024-02-20 | 山东大学 | 一种存储器译码方法 |
WO2023098207A1 (zh) * | 2021-11-30 | 2023-06-08 | 深圳忆联信息系统有限公司 | 多Pass编程NAND的RAID优化方法、装置及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111326199B (zh) | 2023-04-28 |
US20200350007A1 (en) | 2020-11-05 |
US10878896B2 (en) | 2020-12-29 |
US10748606B2 (en) | 2020-08-18 |
DE102019124438A1 (de) | 2020-06-18 |
US11562787B2 (en) | 2023-01-24 |
DE102019124438B4 (de) | 2023-11-16 |
US20210104275A1 (en) | 2021-04-08 |
US20200194064A1 (en) | 2020-06-18 |
US11087836B2 (en) | 2021-08-10 |
US20210319828A1 (en) | 2021-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111326199B (zh) | 用于存储器设备的多态编程 | |
CN111324299B (zh) | 用于存储器设备的多态编程的映射 | |
US9311970B2 (en) | Systems and methods of storing data | |
CN108399109B (zh) | 软解码调度 | |
CN108399108B (zh) | 读取操作和软解码时序 | |
US11243838B2 (en) | Methods and apparatuses for error correction | |
CN117171060A (zh) | 用于数据和额外数据部分的存储器子系统寻址 | |
CN108701491B (zh) | 用于错误率降低的方法和设备 | |
CN110383698B (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240829 Address after: California, USA Patentee after: SanDisk Technology Co. Country or region after: U.S.A. Address before: California, USA Patentee before: Western Digital Technologies, Inc. Country or region before: U.S.A. |