CN111081308A - 用于混合非易失性存储系统的系统和方法 - Google Patents

用于混合非易失性存储系统的系统和方法 Download PDF

Info

Publication number
CN111081308A
CN111081308A CN201910678724.4A CN201910678724A CN111081308A CN 111081308 A CN111081308 A CN 111081308A CN 201910678724 A CN201910678724 A CN 201910678724A CN 111081308 A CN111081308 A CN 111081308A
Authority
CN
China
Prior art keywords
ecc
type
volatile storage
storage device
encoder
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201910678724.4A
Other languages
English (en)
Other versions
CN111081308B (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yingren Technology Co.,Ltd.
Original Assignee
Nyquist Semiconductor Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nyquist Semiconductor Ltd filed Critical Nyquist Semiconductor Ltd
Publication of CN111081308A publication Critical patent/CN111081308A/zh
Application granted granted Critical
Publication of CN111081308B publication Critical patent/CN111081308B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/356Unequal error protection [UEP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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 sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes

Abstract

本申请提供用于在非易失性存储系统提供灵活的纠错码(ECC)架构的系统、装置和方法。一种用于存储数据的方法可以包括:为要存储于非易失性存储设备中的一条数据生成第一ECC引擎标签,根据所述第一ECC引擎标签将该条数据路由到多种类型ECC编码器中的第一类型ECC编码器,并使用所述第一类型ECC编码器对该条数据进行编码以生成ECC码字以及将所述ECC码字发送到所述非易失性存储设备以进行存储。

Description

用于混合非易失性存储系统的系统和方法
技术领域
本发明涉及非易失性存储,特别涉及一种具有灵活纠错码(ECC)架构的非易失性存储系统。
背景技术
传统上,计算系统使用各种各样的非易失性存储设备来维护和存储数据和指令,例如,软盘、硬盘驱动器、磁带、光盘。最近,非易失性NAND存储设备已经在存储卡、
USB闪存驱动器和固态驱动器(SSD)中得到广泛使用。随着各种应用的巨大需求,已经开发出了不同种类的非易失性存储器。然而,每种非易失性存储器具有不同的特性,例如操作序列、接口吞吐量、访问延迟、P/E周期、耐久性、数据维持能力,以及原始比特误码率(其需要不同的ECC能力)。因此,本领域需要一种更稳健的ECC架构,其能够处理和利用不同种类的非易失性存储器(NVM)或具有不同品质的不同的NVM。
发明内容
本说明书所公开的主题涉及支持各种非易失性存储设备的系统、方法和装置,其也可以被称为非易失性存储器设备(NVM),诸如NAND闪存(包括但不限于,单层单元(Single-Level Cell,SLC)/多层单元(Multi-Level Cell,MLC)/四层单元(Quad-LevelCell,QLC)等)和3DXpoint(3DXP)存储器)。每种不同类型的非易失性存储器可能表现出不同的特性,例如操作序列、接口吞吐量、访问延迟、编程/擦除(P/E)周期、耐久性、数据维持能力以及原始比特误码率(可能需要不同的ECC)能力)、编程写时间。此外,即使是相同类型的非易失性存储设备,由于诸如P/E周期的增加和不同页面/单元之间的干扰等不同因素,其特性也可能各不相同。通常,ECC引擎可以被设计为通过添加冗余信息(即奇偶校验)或者增加用户数据的容错性来保护用户数据(存储在介质中)免受损坏。不同的特性可能需要不同的ECC功能。例如,多比特单元(例如,TLC/QLC)NAND闪存可能需要高性能和智能ECC引擎以实现低数据故障率。另外,当NAND设备是“新(new)”时,原始比特误码率可能较低,并且ECC引擎可以在低功率模式下操作;当NAND设备变得“旧(old)”时,ECC引擎可能需要以高性能模式操作。
示例性的稳健的ECC系统需要考虑纠错能力、ECC延迟和功耗。当一个系统配备有高性能(低访问延迟、低原始比特误码率等)非易失性存储设备或高容量(高访问延迟、高原始比特误码率等)非易失性存储设备,或同时这两种非易失性存储器时,传统的ECC系统不能满足要求,但是根据本说明书的实施例可以提供统一的灵活ECC系统以适应所有不同的配置。例如,实施例中可以提供灵活或自适应ECC系统以解决高性能非易失性存储设备(例如,NVM(非易失性存储设备))、高容量NVM、低性能/品质NVM、任何未来出现的NVM和/或任何上述的组合。此外,实施例中可以提供对低延迟、高ECC纠错能力或该两者的简单优化。
在一些实施例中,可以在ECC处理器中实现多种类型的ECC编码器和解码器。例如,第一类型编码器和解码器可以被配置用于超低延迟和高吞吐量,第二类型编码器和解码器可以被配置用于平衡延迟和吞吐量,并且第三类型编码器和解码器可以被配置用于超高纠错能力和超高吞吐量。此外,用于其他目的其他类型的编码器和解码器也包括在内。任何类型的ECC编码器或解码器的组合或级联可以被视为多种类型的ECC编码器或解码器之一。在至少一些实施例中,存储器交叉开关矩阵(cross-bar)可以用于路由ECC码字。例如,在读取操作期间,存储器交叉开关矩阵可以用于通过利用ECC引擎标签将从NVM获取的ECC码字路由到相应的ECC解码器。
一个包含灵活或自适应ECC系统的示例性非易失性存储系统可以是一个多通道SSD系统,其在考虑延迟和纠错能力的同时支持各种非易失性存储设备和/或非易失性存储设备的组合。一个实施例可以是一种高性能NVM系统,其具有第一类型编码器和解码器以在延迟和高吞吐量方面实现最佳性能,以及具有第二类型编码器和解码器以在需要的时候提供超高纠错能力。
另一个实施例可以是混合品质NAND系统,其具有第一类型编码器和解码器以实现平衡的性能和纠错能力的高品质NAND,以及具有第二类型编码器和解码器以用于实现在纠错能力和吞吐量方面的超高性能。此外,在需要时,可以将所有NAND切换到第二类型编码器和解码器。可以基于NAND特性来确定该切换,例如错误个数、编程/擦除(P/E)周期次数、编程写时间、访问延迟等。
又一实施例可以是混合型SSD系统,其具有被配置用于高性能NVM(诸如MRAM、3DXP等)的第一类型编码器和解码器、被配置用于常规NVM(诸如高品质NAND)的第二类型编码器和解码器,以及用于低品质NVM的第三类型编码器和解码器。在具有多种类型的ECC编码器和解码器的至少一些实施例中,ECC编码器或解码器不与任何特定物理信道相关联,并且可以在操作期间即时分配。
在一个示例性实施例中,提供了一种用于存储数据的方法。该方法可以包括:为要存储于非易失性存储设备中的一条数据生成第一纠错码(ECC)引擎标签;根据该第一ECC引擎标签,将该条数据路由到多种类型的ECC编码器中的第一类型ECC编码器;采用该第一类型ECC编码器对该条数据进行编码以生成ECC码字;以及将该ECC码字发送到非易失性存储设备进行存储。
在另一示例性实施例中,提供了一种存储系统,其可包括存储控制器和微控制器。该存储控制器可以包括纠错码(ECC)处理器,其包括多种类型的ECC编码器和多种类型的ECC解码器。多种类型的ECC编码器中的每种类型的ECC编码器可以被配置为根据一组独特的编码特性来执行编码,并且多种类型的ECC解码器中的每种类型的ECC解码器可以被配置为根据一组独特的解码特征来执行解码。该微控制器可以被配置为生成ECC引擎标签,该ECC引擎标签指示在操作期间要使用多种类型的ECC编码器或多种类型的ECC解码器中的哪一种。
在又一示例性实施例中,提供了一种具有信息的非暂时性机器可读介质,其中当被硬件处理器系统读取时,该信息使得硬件处理器系统执行以下步骤:接收要存储在非易失性存储系统中的数据,确定要在编码操作中应用的一组编码特性,生成与该数据相关联的纠错码(ECC)引擎标签,并根据该ECC引擎标签,将该块数据路由到从多种类型的ECC编码器中所选择的ECC编码器,用于将要编码的该块数据编码成一个或多个ECC码字,并存储在非易失性存储系统的非易失性存储设备中。
附图简要说明
图1示意性地示出了根据本说明书的一个实施例的非易失性存储控制器。
图2示意性地示出了根据本说明书的一个实施例的非易失性存储控制器。
图3示意性地示出了根据本说明书的一个实施例的非易失性存储系统。
图4示意性地示出了根据本说明书的另一实施例的非易失性存储系统。
图5示意性地示出了根据本说明书的另一实施例的非易失性存储系统。
图6是根据本说明书一个实施例的用于编程非易失性存储设备的过程的流程图。
图7是根据本说明书的一个实施例的用于编程非易失性存储设备的另一过程的流程图。
图8是根据本说明书实施例中的用于从非易失性存储设备读取的过程的流程图。
具体实施方式
现在将参考附图详细描述根据本申请的具体实施例。各个图中的相同元件由相同的附图标记表示以保持一致。
本说明书提供了支持各种高速非易失性存储设备(NVM)和各种NVM的任何组合的装置、系统和方法。如这里所使用的,非易失性存储设备可以是计算机存储设备,其可以在断电之后保留所存储的信息,并且可以在重新通电(关闭和重新打开)之后重新取回所存储的信息。非易失性存储设备可以包括软盘、硬盘驱动器、磁带、光盘、NAND闪存、NOR闪存、磁阻随机存取存储器(MRAM)、电阻随机存取存储器(RRAM)、相变随机存取存储器(PCRAM)、纳米随机存取存储器(Nano-RAM)。在本说明书中,可以使用NAND闪存作为所提出的技术的示例。然而,根据本说明书公开的各种实施例可以利用其他种类的非易失性存储设备来实现这些技术。
图1示意性地示出了根据一个实施例的示例性非易失性存储控制器100。非易失性存储控制器100可以包括第一接口110、第二接口112、微控制器单元(MCU)102和ECC处理器104。第一接口110可以是任何现有的或尚待开发的接口,其被配置为将非易失性存储控制器100耦合到主机计算系统的系统总线,以及从主机计算系统接收数据和向主机计算系统发送数据。在一个实施例中,例如,第一接口110可以是高级可扩展接口(AXI)。第二接口112可以是任何现有的或尚待开发的接口,其被配置为将存储控制器耦合到一个或多个非易失性存储设备。在一个实施例中,第二接口112可以是多通道接口,其可以被配置为并行地在多个通道上传输编码数据(例如,ECC码字)。例如,第二接口112可以是开放式NAND闪存接口(ONFI),其可以支持不同的协议(例如,非易失性双倍数据速率(NVDDR),类型2的NVDDR(NVDDR2),类型3的NVDDR(NVDDR3),以及Toggle协议)并以不同的传输速度运行。
MCU102可以是被配置成执行可执行指令的计算机处理器(例如,软件或固件)。在各种实施例中,MCU102可以是微处理器、微控制器、现场可编程门阵列(FPGA)或专用IC(ASIC)。ECC处理器104可以包括多种类型的ECC编码器和多种类型的ECC解码器。在编程操作(例如,写操作)期间,MCU102可以为从主机接收的一条数据生成ECC引擎标签,以指示可以使用哪种类型的ECC编码器来编码该条数据。而且,在读取操作期间,MCU102可以为从非易失性存储设备获取的码字生成ECC引擎标签,以指示可以使用哪种类型的ECC解码器来解码码字。
在一个或多个实施例中,可以根据一个或多个因素生成ECC引擎标签。一种类型的因素可以与由非易失性存储控制器100存储的数据的属性相关。该数据的属性可以包括但不限于一条数据的使用频率(例如,它是“热(hot)”还是“冷(cold)”数据)、数据(例如,系统数据与用户数据)的重要性和其他合适的因素。另一种类型的因素可能与要使用的存储介质的特性有关,例如,存储数据的非易失性存储设备是否是高性能NVM(例如MRAM/3DXP/等)、高品质NAND,或低品质的NAND。基于选定的因素考虑,可以针对具有一组编码特性的编码操作和具有一组解码特性的解码操作生成与之相对应的ECC引擎标签。在一些实施例中,选择要考虑的因素以及涵盖哪些编码和解码特性的标准可以例如通过软件或固件来配置。此外,在一些实施例中,一些特性(例如,ECC码长度)可能是必需的,而一些特性可以是灵活的但具有优先性(例如,编码/解码速度)。例如,在一个实施例中,对于频繁使用的数据,高吞吐量低延迟可能是优选的;对于重要数据,可能需要更强的ECC保护(例如,更强的纠错能力);对于高品质的NAND,可能优选平衡的性能和纠错能力。
图2示出了根据本说明书公开的一个实施例的ECC处理器200。ECC处理器200可以是ECC处理器104的一个实施例。ECC处理器200可以包括多路分配器202、多种类型的编码器204.1至204.N、存储器交叉开关矩阵206、ECC码字缓冲器208、多路复用器212、可选的错误恢复控制单元210、多种类型的解码器214.1至214.M和可选的解码信息交换缓冲器216。
每种类型的编码器204.1到204.N可以表示配置有一组不同的编码特性的一个或多个ECC编码器,其中整数N可以是大于或等于2的正整数。例如,在一个实施例中,可以存在一个类型1编码器的编码器204.1,其可以被配置用于超低延迟和高吞吐量;两个类型2编码器的编码器204.2,其可被配置为平衡延迟和吞吐量;四个类型N编码器的编码器204.N,其可被配置为超高纠错能力和超高吞吐量;可以为其他目的配置其他类型的编码器,并且每种类型可以有一个或多个编码器。在一些实施例中,相同类型的多个编码器可以由多个ECC引擎的实例实现,但是在一些其他实施例中,相同类型的多个编码器可以由多核ECC引擎实现。例如,两个类型2编码器的编码器204.2可以由双核ECC引擎实现。
类似地,每种类型的解码器214.1至214.M可以表示配置有一组不同的解码特性的一个或多个ECC解码器,其中整数M可以是大于或等于2的正整数。例如,在一个实施例中,可以存在一个类型1解码器的解码器214.1,其可以被配置用于超低延迟和高吞吐量;两个类型2解码器的解码器214.2,其可以被配置用于平衡延迟和吞吐量;四个类型M解码器的解码器214.M,其可以被配置为超高纠错能力和超高吞吐量;可以为其他目的配置其他类型的解码器,并且每种类型可以有一个或多个解码器。在一些实施例中,相同类型的多个解码器可以由多个ECC引擎的实例实现,但是在一些其他实施例中,相同类型的多个解码器可以由多核ECC引擎实现。例如,类型M解码器的四个解码器214.M可以由四核ECC引擎实现。
每组编码和解码特性可以包括但不限于ECC码、纠错能力、延迟及其各种组合。如果一组特征中的至少一个任何其他集合中不存在或不同,则该组特征可以与任何其他特征集不同。在一个实施例中,数字N和M可以相等,并且每种类型的编码器可以与相应的解码器类型匹配。例如,类型1编码器204.1和类型1解码器214.1可以被配置用于超低延迟和高吞吐量;类型2编码器204.2和类型2解码器214.2可以被配置用于平衡延迟和吞吐量;类型N编码器204.N和类型N解码器214.N可以被配置为用于超高纠错能力和超高吞吐量;以及被配置用于其他相应匹配特性的其他类型的编码器和解码器。在另一个实施例中,数字N和M可以相等,但编码器的类型与解码器的类型不一一匹配。例如,一些编码器没有相应匹配的解码器,反之亦然。在又一个实施例中,数字N和M可以不同,并且编码器的类型与解码器的类型不一一匹配。
一些编码和解码特性可以是性能要求,其可以包括但不限于:超低延迟和高吞吐量,平衡延迟和吞吐量,超高纠错能力和超高吞吐量,和/或延迟、纠错能力、吞吐量和其他特性的任意组合。一些其他编码和解码特性可能影响性能,例如但不限于ECC码。例如,更长的ECC代码可能需要更长的时间来编码和解码,但其可以提供更强的错误恢复保护。应当注意,只要ECC“代码”可以是相同的(例如,相同的奇偶校验矩阵或相同的编码器生成多项式),任何类型的解码器都可以解码由一种以上类型的编码器生成的码字,而不管性能要求如何。因此,在一个实施例中,可以针对一个ECC码配置多种类型的编码器的一个子集和多种类型的解码器的一个子集,以及为不同的ECC码配置多种类型的编码器的另一子集和多种类型的解码器的另一子集。
ECC码字缓冲器208可以是存储单元,用于在编码操作(例如,写操作)期间在经由第二接口112将码字发送到非易失性存储设备之前和在读操作期间从第二接口112接收码字之后,存储ECC编码的码字。在一些实施例中,ECC码字缓冲器208可以由存储体实现。在一个实施例中,ECC码字缓冲器208可以由写(PROG)和读(READ)路径共享,因为一个物理信道可以被PROG或READ数据业务占用,但不能两者同时占用。在另一个实施例中,ECC码字缓冲器208可以分别具有用于写和读路径的单独部分。在又一个实施例中,ECC码字缓冲器208可以由分别用于写和读路径的两个单独的缓冲器实现。
在编程写操作期间,ECC处理器200中的PROG路径可以包括多路分配器202、多种类型的编码器204.1至204.N、存储器交叉开关矩阵206和ECC码字缓冲器208。例如,在编程写操作中,可以在多路分配器202处接收一条数据。ECC引擎标签可以由MCU 102生成并且与该数据相关联,以向多路分配器202指示该条数据可以被路由到哪种类型的ECC编码器。也就是说,在编程写操作中,ECC引擎标签可用于将从主机接收的数据路由到所选类型的ECC编码器。然后,所选类型的ECC编码器可以对该数据进行编码,并经由存储器交叉开关矩阵206将码字发送到ECC码字缓冲器208。
在一些实施例中,可以具有不同特性的多个非易失性存储设备可以耦合到一个实施例的非易失性存储控制器100,并且与该数据相关联的ECC引擎标签也可以用于指示向哪个非易失性存储设备或哪种非易失性存储设备发送码字。也就是说,在可以具有不同特性的多个非易失性存储设备的实施例中,ECC引擎标签还可以指示可以使用哪个非易失性存储设备或哪种非易失性存储设备来存储从该条数据生成的码字。
此外,在一些实施例中,在编程写操作期间,可以生成第一ECC引擎标签以选择第一类型的编码器以实现第一组编码特性。在操作期间,MCU 102可以被配置为生成第二ECC引擎标签以选择第二类型的编码器以实现第二组编码特性。例如,最初,可以选择类型1编码器204.1以在延迟和高吞吐量方面实现最佳性能。在操作期间,可以确定可能需要超高性能纠错能力,因此可以生成用于类型N编码器204.N的ECC引擎标签,并且可以激活类型N编码器204.N以实现超高性能纠错能力。在一些实施例中,不同类型的编码器之间的切换可以基于非易失性存储设备特性(例如错误个数、编程/擦除(P/E)周期次数、编程写时间、访问延迟等)来确定。
在读取操作期间,READ路径可以包括ECC码字缓冲器208、存储器交叉开关矩阵206、多种类型的解码器214.1至214.M以及多路复用器212。读取操作可以触发一个或多个命令以获取存储在非易失性存储设备中的码字。从非易失性存储设备获取的码字可以临时存储在ECC码字缓冲器208中。可以针对码字生成(例如,通过MCU102)ECC引擎标签,并且可以根据ECC引擎标签将该码字经由存储器交叉开关矩阵206从ECC码字缓冲器208路由到一种类型的解码器214。
类似于编码操作,在一些实施例中,在读取操作期间,可以生成第一ECC引擎标签以选择第一类型的解码器以实现第一组解码特性。在操作期间,MCU 102可以被配置为生成第二ECC引擎标签以选择第二类型的解码器以实现第二组解码特性。例如,最初,可以选择类型1解码器214.1以在延迟和高吞吐量方面实现最佳性能。在操作期间,可以确定可能需要超高性能纠错能力,因此可以生成用于类型N解码器214.N的ECC引擎标签,并且可以激活类型N解码器214.N以实现超高纠错能力。在一些实施例中,不同类型的解码器之间的切换可以基于非易失性存储设备特性(例如错误个数、编程/擦除(P/E)周期次数、编程写时间、访问延迟等)来确定。
在一些实施例中,在编程操作期间,第一ECC引擎类型1编码器204.1可以是代码编码器的一种方案(例如,Bose-Chaudhuri-Hocquenghem(BCH))以实现最短的编码和解码延迟。从第一类型编码器生成的码字可以被写入具有短访问延迟的非易失性存储设备,例如MRAM、3DXP、RRAM、SLC NAND和NRAM。因此,在读取操作期间,存储在具有短访问延迟的这种非易失性存储设备中的ECC码字可以以最小延迟进行解码,从而产生快速的系统响应。类型2编码器204.2可以是代码编码器的另一种方案(例如,低密度-奇偶校验(Low-Density-Parity-Check,LDPC)),以实现最佳的纠错能力。从第二类型编码器生成的码字可以被写入具有较长访问延迟的非易失性存储设备,例如MLC NAND或TLC NAND。
此外,在一些实施例中,与ECC引擎标签相关联的码字可以首先由ECC引擎标签指示的第一类型解码器解码,并且当解码失败时,可以使用第二类型解码器来尝试解码该码字,不需为第二类解码器生成另一个ECC引擎标签。例如,最初,可以选择类型1解码器214.1以在延迟和高吞吐量方面实现最佳性能。但是在操作期间,类型1解码器214.1可能无法解码与ECC引擎标签相关联的一个或多个码字,该ECC引擎标签指示应当将类型1解码器214.1用于它们。解码失败的码字可以被路由到另一种类型的解码器,该解码器可以具有更强的解码能力(例如,配置有超高性能纠错能力的类型N解码器214.N),而不具有用于其他类型的解码器的ECC引擎标签。在这些实施例中,可以利用相同的ECC引擎标签来关联或获取相关的ECC代码信息和非易失性存储设备特性,当使用第一类型解码器时,该特性可以传递给第一类型解码器,然后当触发第二类型解码器时传递给第二类型解码器。在一个实施例中,可以通过错误恢复控制(ERC)210的配置来控制不同类型的解码器之间的切换。
ERC210可以是用于设置恢复控制以处理解码过程中的一个或多个错误的可选组件。例如,ERC210可以被配置为当当前类型的解码器未能解码当前码字或者在许多解码迭代之后未能在解码当前码字方面取得进展时执行错误恢复流控制。ERC 210可以在硬件状态机、微控制器或微处理器中实现。在一个实施例中,ERC210可以具有示例性配置,使得ERC210可以在解码失败时从当前类型的解码器(例如,类型1解码器214.1)提取ECC标签,并且将相应的ECC标签传递给具有更强纠错能力的第二类型解码器(例如,类型N解码器214.N)。一旦用关联的ECC标签激活第二类型解码器,它就可以开始解码原始码字。
此外,ERC 210可以具有第二示例性配置,使得一个ECC标签可以与两种类型的解码器相关联,以通过利用解码信息交换缓冲器216协调地操作,以在不同类型的解码器之间共享解码结果。在一些实施例中,第一解码器可能无法解码码字但仍然生成一些解码结果。例如,在解码过程期间,第一解码器可以生成和收集信息,例如但不限于哪个比特被翻转、比特翻转的次数、表明比特可靠性的对数似然比(LLR)。这些信息可以统称为解码结果,并且这些解码结果可以由第一解码器存储在解码信息交换缓冲器216中,并在第一解码器发生故障时由第二解码器访问。通过利用后续解码器共享来自先前解码器的解码信息,后续解码器可以利用先前解码器的先前结果。因此,可以提高整体ECC纠错能力。
另外,ERC210可以具有第三示例性配置,使得ERC 210可以被配置为来维持目标ECC吞吐量,其通过解码快速的第一类型解码器尝试解码任何输入的码字,并将解码失败的码字移动到第二类型解码器,该第二类型解码器的解码速度比第一类型解码器慢,但具有更强的纠错能力。当那些失败的码字被成功解码时,然后可以将解码的用户数据发送到主机(例如,通过接口110)。
在一些实施例中,MCU102可以被配置为执行错误恢复控制功能。例如,MCU102可以被配置为当当前类型解码器未能解码码字时重新生成用于切换解码器类型的新ECC标签。相反,当错误恢复控制可以由ERC 210实现时,ERC 210可以被设计为预先配置错误恢复策略,使得它知道何时以及如何在解码操作使用一个ECC标签将不同类型的解码器组合在一起(例如,在切换解码器时不需要重新生成新的ECC标签)。
如这里所使用的,一种类型的编码器、解码器或ECC引擎可以指ECC的一种方案(例如但不限于,Bose-Chaudhuri-Hocquenghem(BCH)或低密度奇偶校验(LDPC)),或者特定ECC方案的一个级别(例如但不限于,BCH或LDPC的某个代码或某一长度的代码),或者BCH或LDPC的一个特定的实现(例如但不限于,硬解码、软解码或变化的解码技术)。应当注意,用一种ECC方案(例如,BCH)编码的码字不可以被不同的ECC方案(例如,LDPC)解码,因此,从第一类型解码器到第二类型解码器的切换可以指的是第一类解码器切换到与第一类解码器兼容的第二类解码器。也就是说,当从第一类型解码器切换到第二类型解码器时,第一类型解码器和第二类型解码器都适合于解码同一个码字。
在一些实施例中,实现第一ECC方案的第一类型解码器的解码器故障可以提示写入存储介质的所有未来数据切换到实现与第一ECC方案不同的第二ECC方案的第二类型编码器。例如,可以在存储介质上执行读取操作。存储介质可以存储利用以第一ECC方案(例如,BCH)实现的第一类型编码器编码的数据,并且可以利用在第一ECC方案(例如,BCH)中实现的对应于第一类型编码器的第一类型解码器来执行初始读取操作。然而,第一类型解码器可能难以解码编码数据。为了成功解码已经存储在存储介质中的编码数据,可以使用在第一ECC方案(例如,BCH)中实现但具有更强解码能力的另一种类型解码器。对于要写入存储介质的未来数据,可以使用以第二ECC方案(例如,LDPC)实现的第二类编码器。在一个实施例中,LDPC码可以比BCH码更强,并且在BCH码失败之后,写入存储介质的数据可以从被BCH码编码转换为由LDPC码编码。并且可以通过在第二ECC方案中实现的第二类解码器首先解码用第二类编码器编码的数据的所有未来读取,并且如果失败,则可以切换到在第二ECC方案中实现的另一类型解码器。在一个实施例中,ERC210可以被配置为执行不同ECC方案之间的切换。
图3示意性地示出了根据本说明书公开的一个实施例的非易失性存储系统300。非易失性存储系统300可以包括非易失性存储控制器302和非易失性存储设备(NVM)304。当非易失性存储系统300耦合到主机时,非易失性存储系统300可以向主机提供数据存储和/或对存储数据的访问。非易失性存储控制器302可以是非易失性存储控制器100的一个实施例。NVM304可以表示一个或相同类型的多个非易失性存储设备(例如,高性能介质或常规性能介质),并且这些一个或多个非易失性存储设备可以被配置为在多个纠错和延迟条件下工作。非易失性存储控制器302可以包括多种类型的ECC编码器和多种类型的ECC解码器,其支持多个纠错和延迟要求。
在一个实施例中,例如,NVM304可以是高性能NVM,并且非易失性存储控制器302可以包括多种类型的编码器和多种类型的解码器,其包括:被配置用于在延迟和高吞吐量方面的最佳性能的第一类型的编码器和第一类型的编码器(例如,类型1的编码器204.1和类型1的解码器214.1),以及被配置用于超高纠错性能的第二类型编码器和第二类型解码器(例如,类型2的编码器204.N和类型2的解码器214.N)。当可能需要在编码或解码的延迟和高吞吐量方面的最佳性能时,非易失性存储系统300可以使用第一类型编码器或解码器,并且当可能需要编码或者解码的超高纠错能力时,非易失性存储系统300可以使用第二类型编码器或解码器。因此,具有单一类型的存储介质(例如,高性能介质诸如MRAM、3DXP)的实施例,可以被配置为针对目标存储介质在延迟和高吞吐量方面实现最佳性能。在相同类型的ECC引擎中,当系统要求改变或需要错误恢复时,激活/切换多级ECC引擎。
图4示意性地示出了根据本说明书公开的另一实施例的非易失性存储系统400。非易失性存储系统400可以包括非易失性存储控制器402和包括第一NVM404和第二NVM406的多个非易失性存储设备(NVM)。当非易失性存储系统400耦合到主机时,非易失性存储系统400可以向主机提供数据存储和/或对存储数据的访问。非易失性存储控制器402可以包括多种类型的ECC编码器和多种类型的ECC解码器,其支持多个纠错和延迟要求。第一NVM404可以是一个或多个第一类型的非易失性存储设备,第二NVM406可以是一个或多个第二类型的非易失性存储设备。NVM404和NVM406可以具有不同的特性(例如,性能和/或品质)。在一个实施例中,例如,NVM404可以是一个或多个常规NAND设备(例如,高品质NAND设备),并且NVM406可以是一个或多个低品质NAND设备(例如,低品质NAND设备)。在另一个实施例中,NVM404和NVM406可以是相同类型但具有不同的品质的存储介质,例如,SLC、TLC和QLCNAND的混合。
非易失性存储控制器402可以包括多种类型的编码器和多种类型的解码器,其包括:被配置用于平衡性能和纠错能力的第一类型的编码器和第一类型的解码器(例如,编码器204.2和解码器214.2),以及被配置用于在纠错能力和吞吐量方面实现超高性能的第二类型的编码器和第二类型的解码器(例如,编码器204.N和解码器214.N)。在操作期间,当可能需要平衡性能和纠错能力时,非易失性存储系统400可以将第一类型的编码器和第一类型的解码器用于NVM404,并且切换到第二类型的编码器和第二类型的解码器以实现在纠错能力和吞吐量方面具有超高性能。对于NVM406,非易失性存储系统400可以使用第二类型的编码器和第二类型的解码器。在一些实施例中,可以将所有NVM切换到编码器和解码器,该编码器和解码器可以在需要时被配置用于在纠错能力和吞吐量方面的超高性能。不同类型的编码器和解码器之间的切换可以基于NAND特性来确定,例如错误个数、编程/擦除(P/E)周期次数、编程写时间、访问延迟等。
图5示意性地示出了根据本说明书公开的另一实施例的非易失性存储系统500。非易失性存储系统500可以包括非易失性存储控制器502和多个非易失性存储设备(NVM),该多个非易失性存储设备包括第一NVM504,第二NVM506和第三NVM508。当非线性存储系统500耦合到主机时,非易失性存储系统500可以向主机提供数据存储和对存储数据的访问。非易失性存储控制器502可以是非易失性存储控制器100的一个实施例,并且包括多种类型的编码器和多种类型的解码器,其支持多个纠错和延迟要求。NVM504、506和508可以是不同种类的存储介质或相同种类但具有不同特性(例如,性能和/或品质)的存储介质。
在一个实施例中,例如,NVM504可以是一个或多个高性能NVM(诸如MRAM、3DXP等),NVM506可以是一个或多个常规NAND设备(例如,高品质NAND),NVM508可以是一个或多个低品质NAND设备。非易失性存储控制器502可以包括多种类型的编码器和解码器,其包括:被配置用于在延迟和高吞吐量方面的最佳性能的第一类型的编码器和第一类型的解码器(例如,编码器204.1和解码器214.1),被配置用于平衡性能和纠错能力的第二类型的编码器和第二类型的解码器(例如,编码器204.2和解码器214.2),以及被配置用于在纠错能力和吞吐量方面实现超高性能的第三类型的编码器和第三类型的解码器(例如,编码器204.N和解码器214.N)。在操作期间,第一类型编码器和第一类型解码器可以用于NVM504,第二类型编码器和第二类型解码器可以用于NVM506以及第三类型编码器和第三类型编码器可以用于NVM508。
在非易失性存储系统300、400和500的一些实施例中,在需要时,所有NVM可以切换到一种特定类型的编码器和解码器(例如,用于在纠错和吞吐量方面的超高性能的编码器204.N和解码器214.N)。可以根据NVM特性(例如错误个数、编程/擦除(P/E)周期次数、编程写时间、访问延迟等)确定不同类型ECC引擎之间的切换。此外,值得注意的是,在一些实施例中,具有不同性能和/或品质的不同NVM可以是相同类型的。例如,NVM406可以是与NVM404相同的类型,以及NVM508可以是与NVM506相同的类型,但是NVM406和NVM508可能已经使用了一段时间(例如,“旧”),并且由于使用其性能和品质可能已经降低(例如,与NVM404和506相比)。此外,非易失性存储系统300、400和500的至少一些实施例可以是多通道固态驱动器(SSD)。在这些实施例中,ECC编码器和解码器不依赖于任何特定物理信道,并且可以在操作期间即时分配(和重新分配)。
非易失性存储系统300、400和500的一些实施例可以用独立磁盘冗余阵列(RAID)配置来实现。例如,实施例中的不同非易失性存储设备可以用于数据、备份、奇偶校验和/或其他RAID特征。在一个实施例中,例如,非易失性存储系统可以包括两种非易失性存储设备和具有两种类型的编码器和两种类型的解码器的ECC处理器。第一类型的编码器/解码器和第一类非易失性存储设备可以用于数据,第二类型的编码器/解码器和第二类非易失性存储设备可以用于备份。
图6是根据本说明书公开的实施例的用于编程写入非易失性存储设备的过程的流程图。在框602中,可以为要存储在非易失性存储设备中的一条数据生成第一纠错码(ECC)引擎标签。例如,该数据可以由包括多种非易失性存储设备的非易失性存储系统接收。可以基于一个或多个因素(例如,数据的重要性、使用频率等)来选择一个非易失性存储设备存储该数据。可以根据所选择的非易失性存储设备特征生成ECC引擎标签。在框604中,可以根据第一ECC引擎标签将该条数据路由到多种类型的ECC编码器中的第一类型ECC编码器。例如,第一类型ECC编码器可以配置有一组满足存储数据要求的编码特性。在框606中,可以使用该第一类型ECC编码器对该条数据进行编码以生成一个或多个ECC码字。在框608中,可以将ECC码字发送到非易失性存储设备以进行存储。在一个或多个实施例中,非易失性存储系统可以是多通道NVM系统。
图7是根据本说明书公开的实施例的用于在非易失性存储系统中存储数据的另一过程700的流程图。在框702中,可以接收要存储在非易失性存储系统中的一条数据。例如,在一个实施例中,非易失性存储系统可以耦合到主机,并且可以从主机接收要存储在非易失性存储系统中的数据。在框704中,可以确定要在编码操作中应用的一组编码特性。在至少一个实施例中,非易失性存储系统可以包括微控制器,该微控制器可以被配置为确定该数据可能需要什么编码特性。例如,可以考虑一个或多个因素,例如但不限于使用频率、数据的重要性、非易失性存储系统中的哪种非易失性存储设备可以用于存储数据。在框706中,可以生成与该条数据相关联的纠错码(ECC)引擎标签。在框708中,可以根据ECC引擎标签将该条数据路由到从多种类型的ECC编码器中选择的ECC编码器,用于编码成一个或多个ECC码字,并存储在非易失性存储系统的非易失性存储设备中。在各种实施例中,ECC引擎标签可以用于指示可以使用哪种类型的编码器来对接收的数据进行编码以用于存储,并且将码字路由到非易失性存储设备以进行存储。
图8是根据本说明书公开的实施例的用于在非易失性存储系统中读存储数据的另一过程800的流程图。在框802中,可以从非易失性存储设备接收一个或多个ECC码字。非易失性存储设备可以包括一个或多个非易失性存储设备,其中每个非易失性存储设备具有不同的特性。在框804中,可以为一个或多个ECC码字生成ECC引擎标签。在一个实施例中,例如,可以基于ECC码、纠错能力、延迟及其各种组合来生成ECC引擎标签。在框806中,可以根据ECC引擎标签将一个或多个ECC码字路由到从多种类型的ECC解码器中选择的ECC解码器。在至少一些实施例中,多种类型的ECC解码器可以配置有不同的特征集,并且可以生成ECC引擎标签,使得所选择的ECC解码器可以满足解码一个或多个ECC码字的要求。
过程600、700和800可以使用软件(例如,可执行计算机处理器(CPU,GPU或两者))、硬件(例如,现场可编程门阵列(FPGA)或专用IC(ASIC))、固件或三者的任意合适组合来实现。例如,在一个实施例中,过程700和800被编程在计算机处理器可执行指令中,并由执行可执行指令的计算机处理器(例如,微处理器或微控制器)执行。
本说明书的实施例可以提供灵活或自适应ECC系统,其支持高性能非易失性存储设备(NVM)、高容量NVM、低性能或低品质NVM、任何未来新兴NVM或它们的任意组合。此外,实施例中可以提供简单优化的低延迟、高ECC纠错能力或该两者。例如,实施例可以是多通道SSD系统,以支持非易失性存储设备的任意组合,同时满足足够的延迟和纠错要求。另外,可以应用实施例来平衡非易失性存储设备的生命周期和性能。例如,示例性非易失性存储系统中的“旧”NVM可以与“新”NVM并行使用,并且可以通过使用不同类型的编码器和解码器来适应不同品质和特性的“旧”和“新”NVM。
可以应用根据本说明书公开的实施例来减少整体ECC处理延迟,尤其是在混合SSD系统中,其中一个或多个通道可以配备有快速非易失性存储设备。例如,快速NVM可能需要快速ECC以提供最佳性能,因此快速ECC编码器/解码器可以与较快的NVM一起使用,而较慢的ECC编码器/解码器可以与较慢的NVM一起使用。此外,可以应用根据本申请公开的实施例以在新的非易失性存储设备出现时降低重新开发新SSD系统的成本。例如,示例性存储控制器可以支持不同组的编码和解码特性,并且可以与新的非易失性存储设备一起使用而无需任何硬件改变(例如,简单地更新固件将支持新的NVM)。在实施例中升级到快速或新的NVM以进一步改善整体系统性能可以容易地实现。
在示例性实施例中,提供了一种用于存储数据的方法。该方法可以包括为要存储在非易失性存储设备中的一条数据生成第一纠错码(ECC)引擎标签,根据第一ECC引擎标签,将该条数据路由到多个类型的ECC编码器中的第一类型ECC编码器,采用第一类型ECC编码器对该条数据进行编码以生成ECC码字,并且将ECC码字发送到非易失性存储设备进行存储。
在一个实施例中,该方法可以进一步包括:从非易失性存储设备获取ECC码字,为ECC码字生成第二ECC引擎标签,并根据第二ECC引擎标签将ECC码字路由到多种类型的ECC解码器中的第一类型ECC解码器。
在一个实施例中,该方法还可以包括:确定第一类型ECC解码器未能成功解码ECC码字的一个或多个ECC码字,并切换到用于解码的多个类型ECC解码器中的第二类型ECC解码器。
在一个实施例中,该方法可以进一步包括:确定第一类型ECC解码器未能成功解码ECC码字的一个或多个ECC码字,并切换到用于编码要写入非易失性存储设备的数据的第二类型ECC编码器,其中第一类型ECC编码器实现第一ECC方案,第二类型ECC编码器实现与第一ECC方案不同的第二ECC方案。
在一个实施例中,可以基于数据的属性、非易失性存储设备的特性或该两者来生成第一ECC引擎标签。
在一个实施例中,第一类型ECC编码器可以配置有从多组编码特性中选择的一组编码特性,其中多组编码特性包括:超低延迟和高吞吐量,平衡延迟和吞吐量,以及超高纠错能力和超高吞吐量。
在一个实施例中,该方法可以进一步包括接收要存储的第二条数据,确定第二条数据将被存储在第二非易失性存储设备中,生成第二ECC引擎标签并路由第二条数据到多个ECC编码器中的第二类型ECC编码器。
在一个实施例中,第一类型ECC编码器是Bose-Chaudhuri-Hocquenghem(BCH)编码器,第二类型ECC编码器是低密度奇偶校验(LDPC)编码器。
在一个实施例中,非易失性存储设备和第二非易失性存储设备可以是以下任意不同的两个:NAND闪存、NOR闪存、磁阻随机存取存储器(MRAM)、电阻随机存取存储器(RRAM)、相变随机存取存储器(PCRAM)和纳米随机存取存储器(Nano-
RAM)。
在一个实施例中,非易失性存储设备和第二非易失性存储设备可以是具有不同品质的相同种类的非易失性存储设备。
在另一示例性实施例中,提供了一种存储系统,其可包括存储控制器和微控制器。该存储控制器可以包括纠错码(ECC)处理器,其包括多种类型的ECC编码器和多种类型的ECC解码器。多种类型的ECC编码器中的每种类型的ECC编码器可以被配置为根据一组特定的编码特性来执行编码,并且多种类型的ECC解码器中的每种类型的ECC解码器可以被配置为根据一组特定的解码特征来执行解码。该微控制器可以被配置为生成ECC引擎标签,该ECC引擎标签指示在操作期间要使用多种类型的ECC编码器或多种类型的ECC解码器中的哪一种。
在一个实施例中,该存储控制器还可以包括:多路分配器,被配置为在编程操作期间将要存储的数据路由到由ECC引擎标签指示的所选类型的ECC编码器;多路复用器,被配置为在读取操作期间将ECC码字从非易失性存储设备路由到由ECC引擎标签指示的所选类型的ECC解码器;存储体,被配置为缓存由多种类型的ECC编码器生成的ECC码字和来自非易失性存储设备的ECC码字;以及多种类型的ECC编码器和存储体之间的以及多种类型的ECC解码器和存储体之间的存储器交叉开关矩阵。
在一个实施例中,在第一ECC方案中实现至少一种类型的ECC编码器和一种类型的ECC解码器,并且在与第一个ECC方案不同的第二ECC方案中实现至少另一种类型的ECC编码器和另一种类型的ECC解码器。
在一个实施例中,第一ECC方案是Bose-Chaudhuri-Hocquenghem(BCH),第二ECC方案是低密度奇偶校验(LDPC)。
在一个实施例中,微控制器可以被配置为:生成第一ECC引擎标签,其指示要从非易失性存储设备中选择用于ECC码字的第一类型ECC解码器以用于解码;以及当第一类型ECC解码器不满足解码要求时,生成第二ECC引擎标签,其指示从非易失性存储设备中选择用于ECC码字的第二类型ECC解码器。
在一个实施例中,存储控制器还可以包括耦合到该存储控制器的一种非易失性存储设备。
在一个实施例中,存储系统还可以包括多个非易失性存储设备,其包括至少两个具有不同性能和/或存储特性的非易失性存储设备。
在一个实施例中,存储系统还可以包括多个非易失性存储设备,其至少包括第一类非易失性存储设备和第二类非易失性存储设备。微控制器可以被配置为:生成第一ECC引擎标签以选择第一类型ECC编码器和第一类型ECC解码器,以在第一类非易失性存储设备的延迟和高吞吐量方面实现最佳性能;并且生成第二ECC引擎标签以选择第二类型ECC编码器和第二类型ECC解码器,以实现第二类非易失性存储设备的平衡性能和纠错能力。
在一个实施例中,微控制器还可以被配置为基于非易失性存储设备特性生成用于第一类非易失性存储设备的第一ECC引擎标签和用于第二类非易失性存储设备的第二ECC引擎标签。该设备特性包括以下一项或多项:错误个数、编程/擦除(P/E)周期次数、编程写时间和访问延迟。
在又一示例性实施例中,提供了一种具有信息的非暂时性机器可读介质,其中当由硬件处理器系统读取时,该信息使得硬件处理器系统执行:接收要存储在非易失性存储系统中的数据;确定要在编码操作中应用的一组编码特性;生成与该条数据相关联的纠错码(ECC)引擎标签;根据将要编码的数据编码成一个或多个ECC码字的ECC引擎标签,将该条数据路由到从多种类型的ECC编码器中所选择的ECC编码器;并存储在非易失性存储系统的非易失性存储设备中。
在一个实施例中,当由硬件处理器系统读取时,该信息还使硬件处理器系统执行:从非易失性存储设备接收一个或多个ECC码字;为一个或多个ECC生成ECC引擎标签;根据ECC引擎标签,将一个或多个ECC码字路由到从多种类型的ECC解码器中选择的第一ECC解码器。
在一个实施例中,当由硬件处理器系统读取时,该信息还使硬件处理器系统执行:确定第一ECC解码器未能成功解码一个或多个ECC码字中的至少一个,以及切换到用于编码要写入非易失性存储设备的数据的第二ECC编码器,其中第一ECC编码器实现第一ECC方案,第二ECC编码器实现与第一ECC方案不同的第二ECC方案。
在一个实施例中,ECC引擎标签可以根据从多组编码特性中选择的编码特性生成,其中该多组编码特性包括:超低延迟和高吞吐量、平衡延迟和吞吐量以及超高纠错能力和超高吞吐量。
在一个实施例中,至少一种类型的ECC编码器和一种类型的ECC解码器用BCH算法实现,至少另一种类型的ECC编码器和另一种类型的ECC解码器用编码器用低密度奇偶校验(LDPC)算法实现。
任何说明书所公开的方法和操作可以由存储在一个或多个计算机可读存储介质(例如,非暂时性计算机可读介质,例如一个或更多的光学介质盘、易失性存储器组件(例如DRAM或SRAM)或非易失性存储设备组件(例如硬盘驱动器)))上的计算机可执行指令(例如,用于本文所述操作的软件代码)实现,并在设备控制器(例如,由ASIC执行的固件)上执行。用于实现说明书所公开的技术的任何计算机可执行指令以及在所公开的实施例实现期间创建和使用的任何数据可以存储在一个或多个计算机可读介质(例如,非暂时性计算机可读介质)上。
虽然本说明书已经公开了各种方面和实施例,但是其他方面和实施例对于本领域技术人员来说将是显而易见的。这里公开的各个方面和实施例是出于说明的目的而不是限制性的,真正的范围和思想由所附权利要求指示。

Claims (23)

1.一种存储数据的方法,包括:
为要存储于非易失性存储设备中的一条数据生成第一ECC引擎标签;
根据所述第一ECC引擎标签将该条数据路由到多种类型ECC编码器中的第一类型ECC编码器;
使用所述第一类型ECC编码器对该条数据进行编码以生成ECC码字;以及
将所述ECC码字发送到所述非易失性存储设备以进行存储。
2.如权利要求1所述的方法,其特征在于,还包括:
从所述非易失性存储设备中获取ECC码字;
为所述ECC码字生成第二ECC引擎标签;以及
根据所述第二ECC引擎标签将所述ECC码字路由到多种类型ECC解码器的第一类型ECC解码器。
3.如权利要求2所述的方法,其特征在于,还包括:
确定所述第一类型ECC解码器未能成功解码所述ECC码字中的一个或多个ECC码字;以及
切换到所述多种类型ECC解码器中的第二类型ECC解码器以进行解码。
4.如权利要求1所述的方法,其特征在于,还包括:
确定所述第一类型ECC解码器未能成功解码所述ECC码字中的一个或多个ECC码字;以及
切换到用于编码要写入所述非易失性存储设备的数据的第二类型ECC编码器,其中所述第一类型ECC编码器实现第一ECC方案,所述第二类型ECC编码器实现与所述第一个ECC方案不同的第二ECC方案。
5.如权利要求1所述的方法,其特征在于,所述第一ECC引擎标签是基于该条数据的属性、所述非易失性存储设备的特性或者它们两者共同生成的。
6.如权利要求5所述的方法,其特征在于,所述第一类型ECC编码器配置有从多组编码特性中选择的一组编码特性,所述多组编码特性包括:超低延迟和高吞吐量、平衡延迟和吞吐量,以及超高纠错能力和超高吞吐量。
7.如权利要求1的方法,其特征在于,还包括
接收要存储的第二条数据;
确定将所述第二条数据存储在第二非易失性存储设备中;
生成第二ECC引擎标签;以及
将所述第二条数据路由到多种类型ECC编码器中的第二类型ECC编码器。
8.如权利要求7所述的方法,其特征在于,所述第一类型ECC编码器是BCH编码器,所述第二类型ECC编码器是低密度奇偶校验编码器。
9.如权利要求7所述的方法,其特征在于,所述非易失性存储设备和所述第二非易失性存储设备是以下任意不同的两个:NAND闪存、NOR闪存、磁阻随机存取存储器、电阻随机存取存储器、相变随机存取存储器和纳米随机存取存储器。
10.如权利要求7所述的方法,其特征在于,所述非易失性存储设备和所述第二非易失性存储设备是具有不同品质特性的相同种类的非易失性存储设备。
11.一种存储系统,包括:
存储控制器,包括:
ECC处理器,包括多种类型的ECC编码器和多种类型的ECC解码器,所述多种类型的ECC编码器中的每种类型ECC编码器被配置为根据一组特定的编码特性执行编码,所述多种类型的ECC解码器中的每种类型ECC解码器被配置为根据一组特定的解码特性执行解码;以及
微控制器,被配置为生成ECC引擎标签,所述ECC引擎标签指示在操作过程中使用多种类型ECC编码器或多种类型ECC解码器中的哪一种。
12.如权利要求11所述的存储系统,其特征在于,所述存储控制器还包括:
多路分配器,被配置为在写操作过程中将要存储的数据路由到由所述ECC引擎标签指示的所选类型的ECC编码器;
多路复用器,被配置为在读操作过程中将所述ECC码字从非易失性存储设备路由到由所述ECC引擎标签指示的所选类型的ECC解码器;
存储体,被配置为缓存由所述多种类型的ECC编码器生成的ECC码字和来自所述非易失性存储设备的ECC码字;以及
所述多种类型的ECC编码器和所述存储体之间以及所述多种类型的ECC解码器和所述存储体之间的存储器交叉开关矩阵。
13.如权利要求11所述的存储系统,其特征在于,在第一ECC方案中实现至少一种类型的ECC编码器和至少一种类型的ECC解码器,并且在与所述第一个ECC方案不同的第二ECC方案中实现至少另一种类型的ECC编码器和至少另一种类型的ECC解码器。
14.如权利要求13所述的存储系统,其特征在于,所述第一ECC方案是BCH,所述第二方案是低密度奇偶校验。
15.如权利要求11所述的存储系统,其特征在于,所述微控制器被配置为:
生成第一ECC引擎标签,所述第一ECC引擎标签指示要从非易失性存储设备中为ECC码字选择第一类型ECC解码器以进行解码;以及
当所述第一类型ECC解码器不满足解码要求时,生成第二ECC引擎标签,所述第二ECC引擎标签指示要从所述非易失性存储设备中为所述ECC码字选择第二类型ECC解码器进行解码。
16.如权利要求11所述的存储系统,其特征在于,还包括多个非易失性存储设备,所述多个非易失性存储设备包括至少两个具有不同性能和/或存储特性的非易失性存储设备。
17.如权利要求11所述的存储系统,其特征在于,还包括多个非易失性存储设备,所述多个非易失性存储设备至少包括第一类非易失性存储设备和第二类非易失性存储设备;
其中所述微控制器被配置为:
生成第一ECC引擎标签以选择第一类型ECC编码器和第一类型ECC解码器,从而为所述第一类非易失性存储设备在延迟和高吞吐量方面实现最佳性能;以及
生成第二ECC引擎标签以选择第二类型ECC编码器和第二类型ECC解码器,从而为所述第二类非易失性存储设备实现平衡的性能和纠错能力。
18.如权利要求17所述的存储系统,其特征在于,所述微控制器还被配置为基于所述非易失性存储设备特性生成用于所述第一类非易失性存储设备的第一ECC引擎标签和用于所述第二类非易失性存储设备的第二ECC引擎标签,所述非易失性存储设备特性包括以下一项或多项:错误个数、编程/擦除周期次数、编程写时间和访问延迟。
19.一种具有信息的非暂时性机器可读介质,其特征在于,当由硬件处理器系统读取时,所述信息使得所述硬件处理器系统执行以下步骤:
接收要存储于非易失性存储系统中的一条数据;
确定要在编码操作中应用的一组编码特性;
生成与该条数据相关联的ECC引擎标签;以及
根据所述ECC引擎标签,将该条数据路由到在多种类型的ECC编码器中选择的第一ECC编码器,用于将该条数据编码成一个或多个ECC码字,并存储在所述非易失性存储系统的非易失性存储设备中。
20.如权利要求19所述的非暂时性机器可读介质,其特征在于,当由所述硬件处理器系统读取时,所述信息还使得所述硬件处理器系统执行以下步骤:
从所述非易失性存储设备接收一个或多个ECC码字;
为所述一个或多个ECC码字生成ECC引擎标签;以及
根据所述ECC引擎标签将所述一个或多个ECC码字路由到从多种类型的ECC解码器中选择的第一类型ECC解码器。
21.如权利要求20所述的非暂时性机器可读介质,其特征在于,当由所述硬件处理器系统读取时,所述信息还使得所述硬件处理器系统执行以下步骤:
确定所述第一ECC解码器未能成功解码所述一个或多个ECC码字中的至少一个ECC码字;以及
切换到用于编码要写入所述非易失性存储设备的数据的第二ECC编码器,其中所述第一ECC编码器实现第一ECC方案,所述第二ECC编码器实现与所述第一ECC方案不同的第二ECC方案。
22.如权利要求20所述的非暂时性机器可读介质,其特征在于,所述ECC引擎标签是根据从多组编码特性中选择的编码特性生成的,所述多组编码特性包括:超低延迟和高吞吐量、平衡延迟和吞吐量,以及超高纠错能力和超高吞吐量。
23.如权利要求20所述的非暂时性机器可读介质,其特征在于,至少一种类型的ECC编码器和至少一种类型的ECC解码器用BCH算法实现,以及至少另一种类型的ECC编码器和至少另一种类型的ECC编码器用低密度奇偶校验算法实现。
CN201910678724.4A 2018-10-19 2019-07-25 用于混合非易失性存储系统的系统和方法 Active CN111081308B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/166,003 US20200127685A1 (en) 2018-10-19 2018-10-19 Systems and methods for a hybrid non-volatile storage system
US16/166,003 2018-10-19

Publications (2)

Publication Number Publication Date
CN111081308A true CN111081308A (zh) 2020-04-28
CN111081308B CN111081308B (zh) 2023-08-15

Family

ID=70280044

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910678724.4A Active CN111081308B (zh) 2018-10-19 2019-07-25 用于混合非易失性存储系统的系统和方法

Country Status (2)

Country Link
US (1) US20200127685A1 (zh)
CN (1) CN111081308B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113793635A (zh) * 2021-11-08 2021-12-14 阿里云计算有限公司 存储装置和存储设备
CN114047880A (zh) * 2021-11-16 2022-02-15 深圳忆联信息系统有限公司 多Pass编程的NAND写入功耗优化方法、装置及计算机设备
CN114115745A (zh) * 2021-11-30 2022-03-01 深圳忆联信息系统有限公司 多Pass编程NAND的RAID优化方法、装置及计算机设备
US11693733B2 (en) 2021-01-21 2023-07-04 Kioxia Corporation Soft error detection and correction for data storage devices

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11164072B2 (en) 2018-02-08 2021-11-02 Western Digital Technologies, Inc. Convolution engines for systolic neural network processor
US10796198B2 (en) 2018-02-08 2020-10-06 Western Digital Technologies, Inc. Adjusting enhancement coefficients for neural network engine
US11237902B2 (en) * 2019-03-15 2022-02-01 Innogrit Technologies Co., Ltd. Systems and methods for an ECC architecture with memory mapping
US10929058B2 (en) 2019-03-25 2021-02-23 Western Digital Technologies, Inc. Enhanced memory device architecture for machine learning
US11783176B2 (en) * 2019-03-25 2023-10-10 Western Digital Technologies, Inc. Enhanced storage device memory architecture for machine learning
US11088711B2 (en) * 2019-07-08 2021-08-10 Winbond Electronics Corp. Memory apparatus and data accessing method thereof
US11139831B2 (en) * 2019-07-30 2021-10-05 SK Hynix Inc. Fast fail support for error correction in non-volatile memory
US11880277B2 (en) * 2019-09-25 2024-01-23 Advanced Micro Devices, Inc. Selecting an error correction code type for a memory device
CN111651295B (zh) * 2020-05-09 2023-07-04 浙江传媒学院 一种stt-ram缓存的变长纠错码方法
US11593197B2 (en) * 2020-12-23 2023-02-28 Samsung Electronics Co., Ltd. Storage device with data quality metric and selectable data recovery scheme
US11569847B1 (en) * 2021-10-04 2023-01-31 Innogrit Technologies Co., Ltd. Systems and methods for decoding codewords in a same page with historical decoding information
US11687405B2 (en) * 2021-12-01 2023-06-27 Western Digital Technologies, Inc. Centralized SRAM error location detection and recovery mechanism
US11853607B2 (en) 2021-12-22 2023-12-26 Western Digital Technologies, Inc. Optimizing flash memory utilization for NVMe KV pair storage
US11817883B2 (en) * 2021-12-27 2023-11-14 Western Digital Technologies, Inc. Variable length ECC code according to value length in NVMe key value pair devices
US11733876B2 (en) 2022-01-05 2023-08-22 Western Digital Technologies, Inc. Content aware decoding in KV devices

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040236901A1 (en) * 2003-05-10 2004-11-25 Briggs Theodore C. Systems and methods for buffering data between a coherency cache controller and memory
CN101436434A (zh) * 2007-08-16 2009-05-20 三星电子株式会社 提供快速编程及读操作的非易失性存储设备、系统和方法
US20100251036A1 (en) * 2009-03-31 2010-09-30 Moyer William C Implementation of multiple error detection schemes for a cache
CN102024501A (zh) * 2009-09-18 2011-04-20 株式会社东芝 存储器系统以及对存储器系统的控制方法
US20110307758A1 (en) * 2010-06-15 2011-12-15 Fusion-Io, Inc. Apparatus, system, and method for providing error correction
CN102713855A (zh) * 2009-12-23 2012-10-03 桑迪士克科技股份有限公司 在存储器设备处的控制数据的错误校正的系统和方法
CN102812519A (zh) * 2010-03-22 2012-12-05 莫塞德技术公司 具有错误校正的复合半导体存储设备
CN103038830A (zh) * 2010-03-23 2013-04-10 苹果公司 借助元数据标签的非规则奇偶校验分布检测
CN103488578A (zh) * 2012-12-28 2014-01-01 晶天电子(深圳)有限公司 虚拟存储设备(vmd)应用/驱动器
CN105706059A (zh) * 2013-09-27 2016-06-22 英特尔公司 非易失性存储器中的错误校正
US20160301427A1 (en) * 2015-04-08 2016-10-13 Sandisk Enterprise Ip Llc Method for Modifying Device-Specific Variable Error Correction Settings
CN107665723A (zh) * 2016-07-29 2018-02-06 西部数据技术公司 用于非易失性存储器的非二进制编码
CN108172261A (zh) * 2016-12-08 2018-06-15 桑迪士克科技有限责任公司 由数据存储设备的解码期间的流水线延迟检测

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8954817B2 (en) * 2012-07-31 2015-02-10 Kabushiki Kaisha Toshiba Storage apparatus and controller
US9715424B1 (en) * 2013-08-23 2017-07-25 Rambus Inc. Memory device and repair method with column-based error code tracking
KR102140592B1 (ko) * 2013-10-18 2020-08-03 에스케이하이닉스 주식회사 데이터 저장 장치
KR101678933B1 (ko) * 2014-11-18 2016-12-07 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040236901A1 (en) * 2003-05-10 2004-11-25 Briggs Theodore C. Systems and methods for buffering data between a coherency cache controller and memory
CN101436434A (zh) * 2007-08-16 2009-05-20 三星电子株式会社 提供快速编程及读操作的非易失性存储设备、系统和方法
US20100251036A1 (en) * 2009-03-31 2010-09-30 Moyer William C Implementation of multiple error detection schemes for a cache
CN102024501A (zh) * 2009-09-18 2011-04-20 株式会社东芝 存储器系统以及对存储器系统的控制方法
CN102713855A (zh) * 2009-12-23 2012-10-03 桑迪士克科技股份有限公司 在存储器设备处的控制数据的错误校正的系统和方法
CN102812519A (zh) * 2010-03-22 2012-12-05 莫塞德技术公司 具有错误校正的复合半导体存储设备
CN103038830A (zh) * 2010-03-23 2013-04-10 苹果公司 借助元数据标签的非规则奇偶校验分布检测
US20110307758A1 (en) * 2010-06-15 2011-12-15 Fusion-Io, Inc. Apparatus, system, and method for providing error correction
CN103488578A (zh) * 2012-12-28 2014-01-01 晶天电子(深圳)有限公司 虚拟存储设备(vmd)应用/驱动器
CN105706059A (zh) * 2013-09-27 2016-06-22 英特尔公司 非易失性存储器中的错误校正
US20160301427A1 (en) * 2015-04-08 2016-10-13 Sandisk Enterprise Ip Llc Method for Modifying Device-Specific Variable Error Correction Settings
CN107665723A (zh) * 2016-07-29 2018-02-06 西部数据技术公司 用于非易失性存储器的非二进制编码
CN108172261A (zh) * 2016-12-08 2018-06-15 桑迪士克科技有限责任公司 由数据存储设备的解码期间的流水线延迟检测

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11693733B2 (en) 2021-01-21 2023-07-04 Kioxia Corporation Soft error detection and correction for data storage devices
TWI818401B (zh) * 2021-01-21 2023-10-11 日商鎧俠股份有限公司 用於資料儲存裝置之軟錯誤偵測與校正
CN113793635A (zh) * 2021-11-08 2021-12-14 阿里云计算有限公司 存储装置和存储设备
CN113793635B (zh) * 2021-11-08 2022-04-19 阿里云计算有限公司 存储装置和存储设备
CN114047880A (zh) * 2021-11-16 2022-02-15 深圳忆联信息系统有限公司 多Pass编程的NAND写入功耗优化方法、装置及计算机设备
CN114047880B (zh) * 2021-11-16 2023-07-04 深圳忆联信息系统有限公司 多Pass编程的NAND写入功耗优化方法、装置及计算机设备
CN114115745A (zh) * 2021-11-30 2022-03-01 深圳忆联信息系统有限公司 多Pass编程NAND的RAID优化方法、装置及计算机设备
CN114115745B (zh) * 2021-11-30 2023-07-04 深圳忆联信息系统有限公司 多Pass编程NAND的RAID优化方法、装置及计算机设备

Also Published As

Publication number Publication date
US20200127685A1 (en) 2020-04-23
CN111081308B (zh) 2023-08-15

Similar Documents

Publication Publication Date Title
CN111081308B (zh) 用于混合非易失性存储系统的系统和方法
JP6110953B2 (ja) 階層化反復誤り訂正のための停止基準
US11676679B2 (en) Two-layer code with low parity cost for memory sub-systems
US11146291B2 (en) Configuring iterative error correction parameters using criteria from previous iterations
US20230082008A1 (en) Parity protection in non-volatile memory
CN113366449A (zh) 基于存储器子系统的损耗的错误校正码改变
CN113127254A (zh) 存储器子系统中多平面奇偶校验数据的存储管理
US20240086282A1 (en) Multi-layer code rate architecture for copyback between partitions with different code rates
CN117153232A (zh) 用于不规则低密度奇偶校验解码的跨列缩放的位翻转阈值
US11914510B2 (en) Layer interleaving in multi-layered memory
US10922025B2 (en) Nonvolatile memory bad row management
US11921581B1 (en) Read recovery including low-density parity-check decoding
US11750218B2 (en) Iterative error correction with adjustable parameters after a threshold number of iterations
US11748008B2 (en) Changing of memory components to be used for a stripe based on an endurance condition
US20230195358A1 (en) Separation of Parity Columns in Bit-Flip Decoding of Low-Density Parity-Check Codes with Pipelining and Column Parallelism
US20230317195A1 (en) Error Correction in a Memory Device having an Error Correction Code of a Predetermined Code Rate
US20240062839A1 (en) Performing block-level media management operations for block stripes in a memory device
US20230396271A1 (en) Early stopping of bit-flip low density parity check decoding based on syndrome weight
US20220358009A1 (en) Operating memory device in performance mode
CN117594100A (zh) 存储器装置中的读取验证节奏及时序

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
TA01 Transfer of patent application right

Effective date of registration: 20200507

Address after: 2 / F, No.1, Lane 500, shengxia Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai

Applicant after: Yingren Technology (Shanghai) Co.,Ltd.

Address before: Greater Cayman, Cayman Islands

Applicant before: Nyquist Semiconductor Ltd.

TA01 Transfer of patent application right
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: Room 601-606, No. 40, Lane 565, Shengxia Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 201210 (nominal floor 6, actual floor 5)

Patentee after: Yingren Technology Co.,Ltd.

Address before: 2 / F, No.1, Lane 500, shengxia Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai 201210

Patentee before: Yingren Technology (Shanghai) Co.,Ltd.

CP03 Change of name, title or address