CN114385408A - 用于具有任意级的存储器单元的ldpc编码 - Google Patents
用于具有任意级的存储器单元的ldpc编码 Download PDFInfo
- Publication number
- CN114385408A CN114385408A CN202110657353.9A CN202110657353A CN114385408A CN 114385408 A CN114385408 A CN 114385408A CN 202110657353 A CN202110657353 A CN 202110657353A CN 114385408 A CN114385408 A CN 114385408A
- Authority
- CN
- China
- Prior art keywords
- data
- modulated
- parity
- user data
- storage device
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- 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/1044—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 with specific ECC/EDC distribution
-
- 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/1068—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 sector programmable memories, e.g. flash disk
-
- 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/1048—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 using arrangements adapted for a specific error detection or correction feature
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/1171—Parity-check or generator matrices with non-binary elements, e.g. for non-binary LDPC codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Error Detection And Correction (AREA)
Abstract
本发明题为“用于具有任意级的存储器单元的LDPC编码”。本公开整体涉及将LDPC编码应用于具有任意级的存储器单元。调制码被应用于用户位的第一部分。编码的用户数据存储在第一调制块中。然后为该用户位的第一部分生成奇偶校验位。然后将该奇偶校验位存储在不同于该第一调制块的第二调制块中。然后将调制码应用于存储在该第二调制块中的用户位的第二部分。然后为该用户位的第二部分生成奇偶校验位并将其存储在第三调制块中。该奇偶校验位因此嵌入在与存储该用户数据的调制块分开的调制块中。
Description
相关申请的交叉引用
本申请要求2020年10月2日提交的美国临时专利申请序列号63/086962的权益,该美国临时专利申请以引用方式并入本文。
背景技术
技术领域
本公开的实施方案整体涉及将LDPC编码应用于具有任意级的存储器单元。
相关领域的描述
存储器设备诸如NAND存储器单元是存储二进制信息的多状态对象。为了简化二进制算术,单元中的级数被选择为2的整数次幂(例如,2、4、8、16等)。已努力创建具有任何级数的单元,使得可实现2个单元级数的非整数次幂。
对于这种2的非整数次幂的情况,可通过将用户数据库从2元变为L元来对用户数据编码,其中L是单元级数。因此,用户数据易于编码。然而,LDPC奇偶校验计算是二进制的,而不是2的非整数次幂。因此,LDPC奇偶校验信息在2个单元级数的非整数次幂中存在问题。
因为LDPC奇偶校验计算是二进制的,所以存在如何在L级单元中写入二进制信息而不编码和失去数据容量的问题。针对2个单元级数的非整数次幂的LDPC奇偶校验需要超出2个单元级数的整数次幂中所需的额外存储容量。或者,LDPC奇偶校验数据可以被编码,这是不可取的。
因此,本领域需要在不编码LDPC奇偶校验数据或不使用过多存储容量的情况下存储2个单元级数的非整数次幂的LDPC奇偶校验数据的方式。
发明内容
本公开整体涉及将LDPC编码应用于具有任意级的存储器单元。调制码被应用于用户位的第一部分。编码的用户数据存储在第一调制块中。然后为所述用户位的第一部分生成奇偶校验位。然后将所述奇偶校验位存储在不同于所述第一调制块的第二调制块中。然后将调制码应用于存储在所述第二调制块中的用户位的第二部分。然后为所述用户位的第二部分生成奇偶校验位并将其存储在第三调制块中。所述奇偶校验位因此嵌入在与存储所述用户数据的调制块分开的调制块中。
在一个实施方案中,一种数据存储设备包括:一个或多个存储器设备;以及控制器,所述控制器耦接到所述一个或多个存储器设备,其中所述控制器被配置为:将调制编码应用于第一组用户数据;将所述调制的第一组用户数据写入第一调制块;为所述调制的第一组用户数据生成第一奇偶校验数据;以及将所述第一奇偶校验数据写入第二调制块。
在另一个实施方案中,一种数据存储设备包括:一个或多个存储器设备;以及控制器,所述控制器耦接到所述一个或多个存储设备,其中所述控制器被配置为:生成第一组调制用户数据的奇偶校验数据;以及用不同于所述第一组调制用户数据的第二组调制用户数据嵌入所述奇偶校验数据。
在另一个实施方案中,一种数据存储设备包括:一个或多个存储器设备;用于存储调制的第一用户数据的装置;以及用于将所述调制的第一用户数据的奇偶校验数据存储在与所述调制的第一用户数据不同的位置处的装置。
附图说明
因此,通过参考实施方案,可以获得详细理解本公开的上述特征的方式、本公开的更具体描述、上述简要概述,所述实施方案中的一些在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施方案并且因此不应视为限制其范围,因为本公开可以允许其他同等有效的实施方案。
图1是示出根据所公开实施方案的存储系统的示意性框图,其中数据存储设备可以用作主机设备的存储设备。
图2A至图2L是根据所公开实施方案的在调制块中嵌入奇偶校验的示意图。
图3是根据所公开实施方案的三角形LDPC H矩阵的示意图。
图4是根据所公开实施方案的L级存储器单元编码的示意图。
图5是示出根据所公开实施方案的将LDPC编码应用于具有任意级的存储器单元的方法的流程图。
为了有助于理解,在可能的情况下,使用相同的参考标号来表示附图中共有的相同元件。可以设想是,在一个实施方案中公开的元件可以有利地用于其他实施方案而无需具体叙述。
具体实施方式
在下文中,参考本公开的实施方案。然而,应当理解的是,本公开不限于具体描述的实施方案。相反,思考以下特征和元件的任何组合(无论是否与不同实施方案相关)以实现和实践本公开。此外,尽管本公开的实施方案可以实现优于其他可能解决方案和/或优于现有技术的优点,但是否通过给定实施方案来实现特定优点不是对本公开的限制。因此,以下方面、特征、实施方案和优点仅是说明性的,并且不被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。同样地,对“本公开”的引用不应当被解释为本文公开的任何发明主题的概括,并且不应当被认为是所附权利要求书的要素或限制,除非在权利要求书中明确地叙述。
本公开整体涉及将LDPC编码应用于具有任意级的存储器单元。调制码被应用于用户位的第一部分。编码的用户数据存储在第一调制块中。然后为所述用户位的第一部分生成奇偶校验位。然后将所述奇偶校验位存储在不同于所述第一调制块的第二调制块中。然后将调制码应用于存储在所述第二调制块中的用户位的第二部分。然后为所述用户位的第二部分生成奇偶校验位并将其存储在第三调制块中。所述奇偶校验位因此嵌入在与存储所述用户数据的调制块分开的调制块中。
图1是示出根据所公开实施方案的存储系统100的示意性框图,其中数据存储设备106可以用作主机设备104的存储设备。例如,主机设备104可以利用包括在数据存储设备106中的非易失性存储器(NVM)110来存储和检索数据。主机设备104包括主机DRAM 138。在一些示例中,存储系统100可以包括可作为存储阵列工作的多个存储设备,诸如数据存储设备106。例如,存储系统100可以包括多个数据存储设备106,其被配置作为共同用作主机设备104的大容量存储设备的廉价/独立磁盘(RAID)冗余阵列。
主机设备104可以向一个或多个存储设备(诸如数据存储设备106)存储数据和/或从其检索数据。如图1所示,主机设备104可以经由接口114与数据存储设备106通信。主机设备104可以包括多种设备中的任何一种,包括计算机服务器、网络附接存储(NAS)单元、台式计算机、笔记本(即膝上型)计算机、平板计算机、机顶盒、电话手机诸如所谓的“智能”电话、所谓的“智能”平板电脑、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备或能够从数据存储设备发送或接收数据的其他设备。
数据存储设备106包括控制器108、NVM 110、电源111、易失性存储器112、接口114和写入缓冲器116。在一些示例中,为了清楚起见,数据存储设备106可以包括图1中未示出的附加部件。例如,数据存储设备106可以包括印刷电路板(PCB),数据存储设备106的部件机械地附接到该印刷电路板,并且该印刷电路板包括电互连数据存储设备106的部件等的导电迹线。在一些示例中,数据存储设备106的物理尺寸和连接器配置可以符合一个或多个标准形状因数。一些示例性标准形状因子包括但不限于3.5”数据存储设备(例如,HDD或SSD)、2.5”数据存储设备、1.8”数据存储设备、外围部件互连(PCI)、PCI扩展(PCI-X)、PCIExpress(PCIe)(例如,PCIe x1、x4、x8、x16、PCIe Mini卡、MiniPCI等)。在一些示例中,数据存储设备106可以直接耦接(例如,直接焊接)到主机设备104的母板。
数据存储设备106的接口114可以包括用于与主机设备104交换数据的数据总线和用于与主机设备104交换命令的控制总线中的一者或两者。接口114可以根据任何合适的协议操作。例如,接口114可以根据以下协议中的一个或多个协议来操作:高级技术附件(ATA)(例如,串行ATA(SATA)和并行ATA(PATA))、光纤信道协议(FCP)、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、PCI和PCIe、非易失性存储器express(NVMe)、OpenCAPI、GenZ、高速缓存相干接口加速器(CCIX)、开放信道SSD(OCSSD)等。接口114的电连接(例如,数据总线、控制总线或两者)电连接到控制器108,从而提供主机设备104与控制器108之间的电连接,允许在主机设备104与控制器108之间交换数据。在一些示例中,接口114的电连接还可以允许数据存储设备106从主机设备104接收电力。例如,如图1所示,电源111可以经由接口114从主机设备104接收电力。
NVM 110可以包括多个存储器设备。NVM 110可以被配置为存储和/或检索数据。例如,NVM 110的存储器设备可以从控制器108接收数据和指示存储器设备存储数据的消息。类似地,NVM 110的存储器设备可以从控制器108接收指示存储器设备检索数据的消息。在一些示例中,存储器设备中的每个存储器设备可以被称为管芯。在一些示例中,单个物理芯片可以包括多个管芯(即,多个存储单元)。在一些示例中,每个存储器设备可以被配置为存储相对大量的数据(例如,128MB、256MB、512MB、1GB、2GB、4GB、8GB、16GB、32GB、64GB、128GB、256GB、512GB、1TB等)。
在一些示例中,NVM 110的每个存储器设备可以包括任何类型的非易失性存储器设备,诸如闪存存储器设备、相变存储器(PCM)设备、电阻随机存取存储器(ReRAM)设备、磁阻随机存取存储器(MRAM)设备、铁电随机存取存储器(F-RAM)、全息存储器设备、以及任何其他类型的非易失性存储器设备。
NVM 110可以包括多个闪存存储器设备。NVM闪存存储器设备可以包括基于NAND或NOR的闪存存储器设备,并且可以基于包含在用于每个闪存存储器单元的晶体管的浮栅中的电荷来存储数据。在NVM闪存存储器设备中,闪存存储器设备可被划分成多个管芯,其中多个管芯中的每个管芯包括多个块,这些块可被进一步划分成多个页面。特定存储器设备内的多个块中的每个块可以包括多个NVM单元。NVM单元的行可以使用字线来电连接以限定多个页面中的页面。多个页面中的每个页面中的相应单元可以电连接到相应位线。此外,NVM闪存存储器设备可以是2D或3D设备,并且可以是单级单元(SLC)、多级单元(MLC)、三级单元(TLC)或四级单元(QLC)。控制器108可能以页面等级向NVM闪存存储器设备写入数据以及从NVM闪存存储器设备读取数据,并且以块等级从NVM闪存存储器设备擦除数据。
数据存储设备106包括电源111,其可以向数据存储设备106的一个或多个部件提供电力。当以标准模式操作时,电源111可以使用由外部设备诸如主机设备104提供的电力向一个或多个部件供电。例如,电源111可以使用经由接口114从主机设备104接收的电力向一个或多个部件供电。在一些示例中,电源111可以包括一个或多个电力存储部件,其被配置为当以关闭模式操作时向一个或多个部件供电,诸如在停止从外部设备接收电力的情况下。以这种方式,电源111可以用作机载备用电源。一个或多个电力存储部件的一些示例包括但不限于电容器、超级电容器、电池等。在一些示例中,可由一个或多个电力存储部件存储的电量可以是一个或多个电力存储部件的成本和/或尺寸(例如,面积/体积)的函数。换句话说,随着由一个或多个电力存储部件存储的电量增加,一个或多个电力存储部件的成本和/或尺寸也增加。
数据存储设备106还包括易失性存储器112,其可以由控制器108用来存储信息。易失性存储器112可以包括一个或多个易失性存储器设备。如图1所示,易失性存储器112可以消耗从电源111接收的电力。易失性存储器112的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM)和同步动态RAM(SDRAM(例如,DDR1、DDR2、DDR3、DDR3L、LPDDR3、DDR4、LPDDR4等))。
数据存储设备106包括控制器108,其可以管理数据存储设备106的一个或多个操作。例如,控制器108可以管理从NVM 110读取数据和/或将数据写入该NVM 110。在一些实施方案中,当数据存储设备106从主机设备104接收写入命令时,控制器108可以发起数据存储命令以将数据存储到该NVM 110并且监测数据存储命令的进度。控制器108可以确定存储系统100的至少一个操作特性,并且将至少一个操作特性存储到该NVM 110。在一些实施方案中,当数据存储设备106从主机设备104接收到写入命令时,控制器108在将数据发送至NVM110之前将与写入命令相关联的数据暂时存储在内部存储器或写入缓冲器116中。
图2A至图2L是根据所公开实施方案的在调制块中嵌入奇偶校验的示意图。在图2A至图2L的例示中,“数据”一词指用户数据,而“编码数据”一词指排除奇偶校验数据的调制数据。调制数据是用调制码编码的用户数据。数据存储设备(诸如图1的数据存储设备106)可包括调制编码器引擎和调制解码器引擎,其中调制编码器引擎被配置为利用调制码对用户数据进行编码,并且调制解码器引擎被配置为对调制用户数据进行解码,使得用户数据可由主机(诸如图1的主机104)读取。
在一些实施方案中,调制编码器引擎和调制解码器引擎可以是控制器的部件。在其他实施方案中,调制编码器引擎和调制解码器引擎可以是单独的部件,其中用户数据在从控制器写入NVM时通过调制编码器引擎,并且在从NVM读取到控制器时通过调制解码器引擎。在一个实施方案中,调制编码器引擎和调制解码器引擎可以是单个单元。在其他实施方案中,调制编码器引擎和调制解码器引擎可以是单独的单元。
在图2A中,第一组用户数据由控制器诸如图1的控制器108接收。在图2B中,将调制编码应用于第一组用户数据,其中第一组用户数据是调制的第一组用户数据。将调制的第一组用户数据编程到NVM中的第一调制块,诸如图1的NVM 110。在图2C中,生成调制的第一组用户数据的第一奇偶校验数据。在将第二组用户数据存储在第二调制块中之前,将第一奇偶校验数据写入第二调制块。奇偶校验数据(诸如第一奇偶校验数据)可以包括与一组用户数据(诸如第一组用户数据)相对应的任何位数,诸如约3个奇偶校验位,使得可以在程序故障、位错误累积等的情况下恢复用户数据。
在图2D中,不同于第一组用户数据的第二组用户数据被写入第二调制块,其中第二组用户数据包括第一奇偶校验数据的间隙。此外,第二调制块包括第二组用户数据和第一奇偶校验数据,其中第二组用户数据不是调制数据,并且第一奇偶校验数据未被编码。在图2E中,第二组用户数据用调制数据进行编码,使得第二组用户数据是调制的第二组用户数据。调制的第二组用户数据不同于调制的第一组用户数据。此外,嵌入在调制的第二组数据中的第一奇偶校验数据可以是第二调制块的总数据的约30%。
在图2F中,生成调制的第二组用户数据的第二奇偶校验数据。在将第三组用户数据存储在第三调制块中之前,将第二奇偶校验数据写入第三调制块。在图2G中,不同于第二组用户数据的第三组用户数据被写入第三调制块,其中第三组用户数据包括第二奇偶校验数据的间隙。此外,第三调制块包括第三组用户数据和第二奇偶校验数据,其中第三组用户数据不是调制数据,并且第二奇偶校验数据未被编码。在图2H中,第三组用户数据用调制数据进行编码,使得第三组用户数据是调制的第三组用户数据。调制的第三组用户数据不同于调制的第二组用户数据。此外,嵌入在调制的第三组数据中的第二奇偶校验数据可以是第三调制块的总数据的约30%。
在图2I中,生成调制的第三组用户数据的第三奇偶校验数据。在将第四组用户数据存储在第四调制块中之前,将第三奇偶校验数据写入第四调制块。在图2J中,将不同于第三组用户数据的第四组用户数据写入第四调制块,其中第四组用户数据包括第三奇偶校验数据的间隙。此外,第四调制块包括第四组用户数据和第三奇偶校验数据,其中第四组用户数据不是调制数据,并且第三奇偶校验数据未被编码。在图2K中,第四组用户数据用调制数据进行编码,使得第四组用户数据是调制的第四组用户数据。调制的第四组用户数据不同于调制的第三组用户数据。此外,嵌入在调制的第四组数据中的第三奇偶校验数据可以是第四调制块的总数据的约30%。
在图2L中,生成调制的第四组用户数据的第四奇偶校验数据。将第四奇偶校验数据写入第五调制块。然而,因为没有用户数据剩余来编程到第五调制块,所以第四奇偶校验数据不嵌入在用户数据或调制数据中。第四奇偶校验数据可以是可用于写入第五调制块的数据的约1%。应当理解,虽然第五调制块被例示为最后调制块,并且虽然第四奇偶校验数据是写入最后调制块的最后奇偶校验数据,但是附加奇偶校验数据、用户数据和调制块可以在最后调制块和先前调制块之间。例如,NVM可具有n个调制块,其中“n”指整数值。此外,虽然第五调制块被例示为最后调制块,但是可以接收附加数据,其中附加奇偶校验数据和调制数据可以被写入第五调制块、第六调制块等。
图3是根据所公开实施方案的三角形低密度奇偶校验(LDPC)水平(H)矩阵302的示意图。图2A至图2L的调制块中的嵌入奇偶校验的方面可以类似于图3所示的三角形LDPC H矩阵。例如,该组调制块304可以是图2L所示的实施方案。
三角形LDPC H矩阵302构造可被实现为允许该组调制块304的调制块编码中的嵌入奇偶校验。例如,奇偶校验位(P)可以是图2A至图2L中例示的奇偶校验数据。奇偶校验位可以使用先前编程的用户数据的较大块按顺序计算。三角形LDPC H矩阵302的H矩阵构造可有助于相继生成奇偶校验位,并且在调制块中逐步嵌入生成的奇偶校验。
用户数据由三角形LDPC H矩阵302中的“D”表示。三角形LDPC H矩阵302包括一组行和一组列。每列具有奇偶校验位或用户数据位,其中每列的位数约为3。列出的每列位数并非旨在进行限制,而是提供可能的实施方案的示例。每行包括至少三个用户数据位和至少一个奇偶校验位。在一个实施方案中,每行包括最多约30个用户数据位。
三角形LDPC H矩阵302的第一区段“a”对应于调制的第一组用户数据306。三角形LDPC H矩阵的第二区段“1”对应于调制的第二组用户数据308,其中奇偶校验位是与调制的第一组用户数据306的用户数据相关联的奇偶校验带。三角形LDPC H矩阵302的第三区段“2”对应于调制的第三组用户数据310,其中奇偶校验位是与调制的第二组用户数据308的用户数据相关联的奇偶校验带。三角形LDPC H矩阵302的第四区段“3”对应于调制的第四组用户数据312,其中奇偶校验位是与调制的第三组用户数据310的用户数据相关联的奇偶校验带。
三角形LDPC H矩阵302的区段“m”包括对应于调制数据和奇偶校验数据的附加调制块的附加奇偶校验位和用户数据位。区段“n”是三角形LDPC H矩阵302的最终区段,其中最终区段包括奇偶校验位。最终区段“n”不包括任何调制用户数据,并且对应于奇偶校验数据314。因此,最终区段“n”可以包括该组调制块304的总尺寸的约1%。
图4是根据所公开实施方案的L级存储器单元编码的示意图。图3的三角形LDPC H矩阵302的方面可类似于图4的L级存储器单元编码。例如,图3的第一区段“a”可以是数据区段408,图3的第二区段“1”可以是第一嵌入式奇偶校验区段410a,图3的第三区段“2”可以是第二嵌入式奇偶校验区段410b,图3的第四区段“3”可以是第三嵌入式奇偶校验区段410c,并且图3的区段“m”可以是组合的第四嵌入式奇偶校验区段410d和第五嵌入式奇偶校验区段410e。图3的最终区段“n”可以是奇偶校验位区段412。此外,用“D”表示用户数据位,用“P”表示奇偶校验位。
数据区段408用调制码进行编码。数据区段408可以是由第一区段402表示的4位单元。嵌入式奇偶校验区段410a-410e也可以是4位单元,其中一个单元与奇偶校验位相关联,如第二区段404所示。奇偶校验位区段412可以由第三区段406表示,其中位单元的数量被约束为单元的n-1位。例如,对于4位单元,如第三区段406所示,奇偶校验位被约束为4位单元中的3位单元。此外,可以在位单元的每个页面上实施调制约束和调制编码。所列出的位单元数量并非旨在进行限制,而是提供可能实施方案的示例。
例如,存储器单元(即,位单元)可以是5位单元,诸如五级单元(PLC)架构或甚至3位单元。每个存储器单元可包括多个级。该多个级的级数可为2的非整数次幂。单元中的级数可由硬件定义,并且在几乎没有代码罚分的情况下在二进制域中由调制码支持。例如,在5位单元示例中,级数大于或等于约20并且小于或等于约21。对于包括用户数据位的20或21级单元,20级单元和21级单元的组合可以是存储在数据存储设备或存储器单元上的总数据的约70%。此外,当奇偶校验数据嵌入调制码时,诸如第二区段404中所示,存储在数据存储设备上的总数据的约30%可以存储在第二区段404中。因为奇偶校验位区段412不包括用户数据位,所以在5位单元中,位单元被约束为4位单元,其中奇偶校验位区段412的数据大小可以是数据存储设备或存储器单元的总数据的约1%。
应当理解,对应于其中没有嵌入奇偶校验数据的编码数据的第一区段402可以在香农极限下最有效地调制。对应于具有嵌入其中的奇偶校验数据的编码数据的第二区段404可以用比第一区段402更高的代码罚分来调制,但是仍然在香农极限内,并考虑到由固定奇偶校验位添加的附加约束条件。对应于未嵌入任何编码数据中的奇偶校验数据的第三区段406将具有最差的调制效率,但是因为第三区段406(即,最后区段)将非常小(即,大约1%的数据),所以可以容忍更高的调制码罚分。
图5是示出根据所公开实施方案的将LDPC编码应用于具有任意级的存储器单元的方法500的流程图。在方框502处,控制器(诸如图1的控制器108)确定要向其应用调制码的用户数据的第一区段。用户数据的第一区段不包括任何奇偶校验数据,因为奇偶校验数据是针对先前存储的数据生成的。在方框504处,将调制码应用于用户数据的第一区段,并且将第一调制用户数据存储在第一调制块中。例如,第一调制用户数据可以是图4的数据区段408。
在方框506处,为第一调制用户数据生成奇偶校验位并将其存储在第二调制块中。在方框508处,控制器确定要向其应用调制编码的用户数据的第二区段。在方框510处,将调制码应用于用户数据的第二区段,并且将第二调制数据存储在第二调制块中。将第二调制数据编程到第二调制块,使得在方框506处生成的奇偶校验数据嵌入在第二调制数据中。当前调制块中的当前调制数据的奇偶校验数据被生成并写入下一个调制块。
通过使用调制码,用户数据在第一调制块中被编码,而编码的用户数据的LDPC奇偶校验数据嵌入在不同的调制块中。LDPC奇偶校验数据未被编码,并且利用比非调制情况少得多的存储容量。因此,实现了在不编码LDPC奇偶校验数据或不使用过多存储容量的情况下存储2个单元级数的非整数次幂的LDPC奇偶校验数据的方式。
在一个实施方案中,一种数据存储设备包括:一个或多个存储器设备;以及控制器,所述控制器耦接到所述一个或多个存储器设备,其中所述控制器被配置为:将调制编码应用于第一组用户数据;将所述调制的第一组用户数据写入第一调制块;为所述调制的第一组用户数据生成第一奇偶校验数据;以及将所述第一奇偶校验数据写入第二调制块。第二调制块包含不同于调制的第一组用户数据的第二组用户数据。在将第二组用户数据存储在第二调制块中之前,将第一奇偶校验数据写入第二调制块。第二调制块不包含调制数据。第一奇偶校验数据未被编码。第一奇偶校验数据嵌入在第二调制块中,其中调制数据不对应于调制的第一组用户数据。一个或多个存储器设备包括多个级数,并且其中该多个级数的多级是2的非整数次幂。级数被配置作为具有第一级单元的第一部分,具有多于第一级单元的第二级单元的第二部分,并且其中总级数是非整数,使得可以微调存储面密度。每个单元包括5位。在调制块中嵌入有用户数据的奇偶校验数据包括所有数据的约30%,并且考虑到固定奇偶校验位约束条件在香农极限下进行调制。未嵌入有调制块中的用户数据的奇偶校验数据包括所有数据的约1%,并且被调制以适合具有嵌入的空白数据的I级单元,其中奇偶校验数据和空白数据将具有比嵌入有用户数据的奇偶校验数据更高的调制码罚分。
在另一个实施方案中,一种数据存储设备包括:一个或多个存储器设备;以及控制器,所述控制器耦接到所述一个或多个存储设备,其中所述控制器被配置为:生成第一组调制用户数据的奇偶校验数据;以及用不同于所述第一组调制用户数据的第二组调制用户数据嵌入所述奇偶校验数据。奇偶校验数据未被编码,并且其中嵌入第二组调制用户数据中的奇偶校验数据设置在与第一组调制用户数据相邻的位置。第一组调制用户数据不具有嵌入在其中的奇偶校验数据,并且在香农极限下进行调制。第二组调制用户数据的奇偶校验数据不嵌入有任何用户数据。奇偶校验数据、第一组调制用户数据和第二组调制用户数据满足三角形H矩阵构造。
在另一个实施方案中,一种数据存储设备包括:一个或多个存储器设备;用于存储调制的第一用户数据的装置;以及用于将所述调制的第一用户数据的奇偶校验数据存储在与所述调制的第一用户数据不同的位置处的装置。用于存储奇偶校验数据的装置包括用于将奇偶校验数据嵌入有不同于调制第一用户数据的调制数据的装置。用于存储调制的第一用户数据的装置包括用于存储调制的第一用户数据而不具有嵌入的奇偶校验数据的装置。用于存储奇偶校验数据的装置包括用于将奇偶校验数据存储在没有任何调制用户数据的调制块中的装置。
虽然前述内容针对本公开的实施方案,但是可以在不脱离本公开的基本范围的情况下设想本公开的其他和另外的实施方案,并且本公开的范围由所附权利要求书确定。
Claims (20)
1.一种数据存储设备,所述数据存储设备包括:
一个或多个存储器设备;和
控制器,所述控制器耦接到所述一个或多个存储器设备,其中所述控制器被配置为:
将调制编码应用于第一组用户数据;
将所述调制的第一组用户数据写入第一调制块;
为所述调制的第一组用户数据生成第一奇偶校验数据;以及
将所述第一奇偶校验数据写入第二调制块。
2.根据权利要求1所述的数据存储设备,其中所述第二调制块包含不同于所述调制的第一组用户数据的第二组用户数据。
3.根据权利要求2所述的数据存储设备,其中在将所述第二组用户数据存储在所述第二调制块中之前,将所述第一奇偶校验数据写入所述第二调制块。
4.根据权利要求1所述的数据存储设备,其中所述第二调制块不包含调制数据。
5.根据权利要求1所述的数据存储设备,其中所述第一奇偶校验数据未被编码。
6.根据权利要求1所述的数据存储设备,其中所述第一奇偶校验数据嵌入在所述第二调制块中,其中调制数据不对应于所述调制的第一组用户数据。
7.根据权利要求1所述的数据存储设备,其中所述一个或多个存储器设备包括多个级数,并且其中所述多个级数的多级为2的非整数次幂。
8.根据权利要求7所述的数据存储设备,其中所述级数被配置作为具有第一级单元的第一部分,具有多于所述第一级单元的第二级单元的第二部分,并且其中所述总级数是非整数,使得能够微调存储面密度。
9.根据权利要求8所述的数据存储设备,其中每个单元包括5位。
10.根据权利要求9所述的数据存储设备,其中嵌入有调制块中的用户数据的奇偶校验数据包括所有数据的约30%,并且考虑到固定奇偶校验位约束条件在香农极限下进行调制。
11.根据权利要求10所述的数据存储设备,其中未嵌入有调制块中的用户数据的奇偶校验数据包括所有数据的约1%,并且被调制以适合具有嵌入的空白数据的I级单元,其中所述奇偶校验数据和空白数据将具有比嵌入有用户数据的奇偶校验数据更高的调制码罚分。
12.一种数据存储设备,所述数据存储设备包括:
一个或多个存储器设备;和
控制器,所述控制器耦接到所述一个或多个存储器设备,其中所述控制器被配置为:
为第一组调制用户数据生成奇偶校验数据;以及
用不同于所述第一组调制用户数据的第二组调制用户数据嵌入所述奇偶校验数据。
13.根据权利要求12所述的数据存储设备,其中所述奇偶校验数据未被编码,并且其中嵌入所述第二组调制用户数据中的所述奇偶校验数据设置在与所述第一组调制用户数据相邻的位置。
14.根据权利要求12所述的数据存储设备,其中所述第一组调制用户数据不具有嵌入在其中的奇偶校验数据,并且在香农极限下进行调制。
15.根据权利要求12所述的数据存储设备,其中所述第二组调制用户数据的奇偶校验数据不嵌入有任何用户数据。
16.根据权利要求12所述的数据存储设备,其中所述奇偶校验数据、所述第一组调制用户数据和所述第二组调制用户数据满足三角形H矩阵构造。
17.一种数据存储设备,所述数据存储设备包括:
一个或多个存储器设备;
用于存储调制的第一用户数据的装置;以及
用于将所述调制的第一用户数据的奇偶校验数据存储在与所述调制的第一用户数据不同的位置处的装置。
18.根据权利要求17所述的数据存储设备,其中用于存储奇偶校验数据的所述装置包括用于将所述奇偶校验数据嵌入有不同于所述调制第一用户数据的调制数据的装置。
19.根据权利要求17所述的数据存储设备,其中用于存储调制的第一用户数据的所述装置包括用于存储所述调制的第一用户数据而不存储嵌入奇偶校验数据的装置。
20.根据权利要求17所述的数据存储设备,其中用于存储奇偶校验数据的所述装置包括用于将奇偶校验数据存储在没有任何调制用户数据的调制块中的装置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063086962P | 2020-10-02 | 2020-10-02 | |
US63/086,962 | 2020-10-02 | ||
US17/183,153 US11487611B2 (en) | 2020-10-02 | 2021-02-23 | LDPC encoding for memory cells with arbitrary number of levels |
US17/183,153 | 2021-02-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114385408A true CN114385408A (zh) | 2022-04-22 |
Family
ID=80738195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110657353.9A Pending CN114385408A (zh) | 2020-10-02 | 2021-06-11 | 用于具有任意级的存储器单元的ldpc编码 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11487611B2 (zh) |
CN (1) | CN114385408A (zh) |
DE (1) | DE102021114911A1 (zh) |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870412A (en) * | 1997-12-12 | 1999-02-09 | 3Com Corporation | Forward error correction system for packet based real time media |
US6829308B2 (en) * | 2002-07-03 | 2004-12-07 | Hughes Electronics Corporation | Satellite communication system utilizing low density parity check codes |
US8234545B2 (en) * | 2007-05-12 | 2012-07-31 | Apple Inc. | Data storage with incremental redundancy |
KR101602316B1 (ko) * | 2009-02-09 | 2016-03-22 | 삼성전자주식회사 | 반도체 메모리 장치 및 그것의 데이터 처리 방법 |
US9245653B2 (en) * | 2010-03-15 | 2016-01-26 | Intelligent Intellectual Property Holdings 2 Llc | Reduced level cell mode for non-volatile memory |
KR101650130B1 (ko) * | 2010-05-14 | 2016-08-24 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법 |
KR101712619B1 (ko) * | 2011-01-19 | 2017-03-06 | 삼성전자주식회사 | 에러 정정 코드의 인코딩 및 디코딩 방법 |
KR20120119779A (ko) * | 2011-04-22 | 2012-10-31 | 삼성전자주식회사 | 불휘발성 메모리 장치 |
US8448045B2 (en) * | 2011-05-26 | 2013-05-21 | Seagate Technology Llc | Outer code error correction |
US9189329B1 (en) * | 2011-10-13 | 2015-11-17 | Marvell International Ltd. | Generating error correcting code (ECC) data using an ECC corresponding to an identified ECC protection level |
US20130111294A1 (en) * | 2011-10-28 | 2013-05-02 | Lsi Corporation | Systems and Methods for Late Stage Precoding |
RU2012152710A (ru) * | 2012-12-06 | 2014-06-20 | ЭлЭсАй Корпорейшн | Модуляционное кодирование битов четности, сформированных с использованием кода с исправлением ошибок |
US9537608B2 (en) * | 2014-12-09 | 2017-01-03 | Ciena Corporation | Staggered parity |
US20170337103A1 (en) * | 2016-05-19 | 2017-11-23 | Intel Corporation | Method and apparatus to provide data redundancy in a solid-state drive |
US9971537B1 (en) * | 2016-10-26 | 2018-05-15 | Pure Storage, Inc. | Hardware support to track and transition flash LUNs into SLC mode |
CN108400831B (zh) * | 2017-02-04 | 2021-06-08 | 华为技术有限公司 | 编码方法、通信方法及装置 |
US10997019B1 (en) * | 2019-10-31 | 2021-05-04 | Alibaba Group Holding Limited | System and method for facilitating high-capacity system memory adaptive to high-error-rate and low-endurance media |
-
2021
- 2021-02-23 US US17/183,153 patent/US11487611B2/en active Active
- 2021-06-09 DE DE102021114911.8A patent/DE102021114911A1/de active Pending
- 2021-06-11 CN CN202110657353.9A patent/CN114385408A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102021114911A1 (de) | 2022-04-07 |
US20220107865A1 (en) | 2022-04-07 |
US11487611B2 (en) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10290353B2 (en) | Error mitigation for 3D NAND flash memory | |
US11861195B2 (en) | TLC data programming with hybrid parity | |
US11817883B2 (en) | Variable length ECC code according to value length in NVMe key value pair devices | |
US11537326B2 (en) | Relocation flow using CbA technology | |
CN113838510A (zh) | 快速的经由控制器复制 | |
US11537510B2 (en) | Storage devices having minimum write sizes of data | |
US11687405B2 (en) | Centralized SRAM error location detection and recovery mechanism | |
KR102479236B1 (ko) | 공유 데이터 통계치를 사용한 콘텐츠 인식 디코딩 | |
US11487611B2 (en) | LDPC encoding for memory cells with arbitrary number of levels | |
US11755407B2 (en) | Multi-rate ECC parity for fast SLC read | |
US11429522B2 (en) | Storage delta compression | |
US11733876B2 (en) | Content aware decoding in KV devices | |
US11531499B2 (en) | Data storage that controls decode performance by changing program PLC | |
US11726911B2 (en) | NVMe persistent memory region quick copy | |
US20240143337A1 (en) | Data Storage With Optimized Boot Files Loading | |
US11645009B2 (en) | Data storage with improved read parallelism | |
US11568938B2 (en) | QLC data programming | |
US20230385146A1 (en) | Variable Length ECC Code According To Data Entropy In NVMe Key Value Pair Devices | |
US20240095165A1 (en) | Efficient l2p dram for high-capacity drives | |
US20220365719A1 (en) | Storing Log And User Data In SSD With Independent Plane Operations | |
CN113468082A (zh) | 用于ssd的总线多路复用器网格的高级ce编码 |
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 |