CN111869111B - 生成和使用可逆的缩短博斯-查德胡里-霍昆格姆码字 - Google Patents
生成和使用可逆的缩短博斯-查德胡里-霍昆格姆码字 Download PDFInfo
- Publication number
- CN111869111B CN111869111B CN201980019029.5A CN201980019029A CN111869111B CN 111869111 B CN111869111 B CN 111869111B CN 201980019029 A CN201980019029 A CN 201980019029A CN 111869111 B CN111869111 B CN 111869111B
- Authority
- CN
- China
- Prior art keywords
- bits
- user data
- bit
- codeword
- inverted
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—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 codes or arrangements adapted for a specific type of error
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/155—Shortening or extension of codes
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
描述了一种用于使用可逆的缩短码字的计算机实施的方法。所述方法包含接收将用户数据位存储在一组存储器装置中的请求;将所述用户数据位和反转位扩展到码字模板的位位置,其中所述扩展形成经过扩展的反转位和用户数据位,所述经过扩展的反转位和用户数据位共同包含表示所述用户数据位和所述反转位的另外的位;为所述经过扩展的反转位和用户数据位生成奇偶校验位以形成缩短码字,其中所述缩短码字包括所述经过扩展的反转位和用户数据位以及所述奇偶校验位;压缩所述缩短码字以形成经过压缩的缩短码字;以及将所述经过压缩的缩短码字存储在所述一组存储器装置中。
Description
相关申请的交叉引用
本申请要求于2018年6月13日提交的美国专利申请第16/007,806号以及于2018年2月9日提交的美国临时专利申请第62/628,821号的权益,所述专利申请通过引用结合在此。
技术领域
本文档中描述的各个实施例涉及对用户数据进行编码。具体地,实施例包含用于生成缩短博斯-查德胡里-霍昆格姆(Bose-Chaudhuri-Hocquenghem,BCH)码字的系统和方法,所述码字在反转时保持有效的BCH码字。
背景技术
许多新型存储器遭受印记问题,由此即使在单元已被重写后,由写入到一组存储器单元的模式引起的残留效应仍会保留或持续。例如,一组存储器单元可能最初已用第一位模式“11011”写入,并且存储器单元可能随后用第二位模式“01101”写入。当出现印记问题时,即使在写入第二位模式之后,第一位模式的残余仍可能保留。这可能导致存储器单元不正确/不准确地存储第二位模式。例如,代替在以上描述的第二写入之后存储第二位模式“01101”,存储器单元可以存储位模式“01111”。在此实例中,基于由第一位模式引起的印记问题,第二位位置错误地示出位值“1”,而不是位值“0”。
印记问题可能是存储器单元处于特定状态(例如,保持置位或保持未置位)持续很长一段时间的结果。为了解决印记问题,存储器控制器可以以由媒体指定的频率补充/反转存储器单元内的数据值,以确保存储在其中的数据的可靠性。反转单元内的编码数据值要求,在不损害用户误码率(UBER)和/或不可检测错误率(UDER)(即,误校正)的情况下,存储在存储器中的码字(包含用户数据位和奇偶校验位)必须能够被反转和可靠地解码。只有当反转的码字将继续是有效且正确的码字时才有这种可能。具体地,码字的奇偶校验位在被反转时是码字的反转用户数据位部分的有效奇偶校验位(即,校正反转用户数据位中的错误并且不提供误校正)。例如,在博斯-查德胡里-霍昆格姆(BCH)码字的情况下,为了避免反转前的昂贵解码,反转的BCH码字还必须产生有效的BCH码字。虽然全长BCH码字在反转时是有效的BCH码字,但缩短BCH码字在反转时通常不是有效的BCH码字。
附图说明
在附图中以举例而非限制性方式来说明本发明,在附图中,相似的附图标记指示类似的元件,并且在附图中:
图1A是根据一或多个实施例的包含码字模板系统和码字用户系统的码字系统的功能框图;
图1B是根据一或多个实施例的码字模板系统的功能框图;
图1C是根据一或多个实施例的包含至少一个存储器系统的计算系统的功能框图;
图2示出了根据一或多个实施例的全长博斯-查德胡里-霍昆格姆(BCH)码字;
图3示出了根据一或多个实施例的缩短BCH码字;
图4示出了根据一或多个实施例的编码和写入缩短BCH码字的实例;
图5A示出了根据一或多个实施例的反转系统的实例;
图5B示出了根据一或多个实施例的反转系统的另一个实例;
图6示出了根据一或多个实施例的可以如何解码有噪声的缩短BCH码字以满足主机系统的请求的实例;
图7A和7B示出了根据一或多个实施例的用于确定针对缩短BCH码字的BCH码字模板的方法的实例;
图8示出了根据一或多个实施例的具有一组连续一和一组连续零的矢量v的实例;
图9示出了根据一或多个实施例的具有一组示例位值的矢量v;
图10示出了根据一或多个实施例的具有一组连续一、一组连续零和一组奇偶校验位的示例矢量v;
图11示出了根据一或多个实施例的具有一组示例位值的矢量v,所述示例位值包含一组示例的奇偶校验位值;
图12示出了根据一或多个实施例的在添加另一个一和生成一组新的奇偶校验位之后生成的示例矢量v;
图13示出了根据一或多个实施例的在添加另一个一和生成一组新的奇偶校验位之后生成的示例矢量v;
图14示出了根据一或多个实施例的旋转之后使得矢量v呈系统形式的矢量v;
图15示出了根据一或多个实施例的旋转之后的示例矢量v;
图16示出了根据一或多个实施例的用于表示BCH码字的反转位、用户数据位和奇偶校验位的矢量v中的位的选择;
图17A和17B示出了根据一或多个实施例的用于使用可逆的缩短BCH码字的方法;
图18示出了根据一或多个实施例的编码系统;
图19示出了根据一或多个实施例的反转系统;
图20示出了根据一或多个实施例的解码系统;
图21示出了根据一或多个实施例的示例反转位(invBit)和用户数据位(uData);
图22示出了根据一或多个实施例的示例扩展反转和用户数据位;
图23示出了根据一或多个实施例的针对示例扩展反转和用户数据位生成的示例奇偶校验位;
图24示出了根据一或多个实施例的使用缩短BCH码字的示例压缩的缩短BCH码字;并且
图25示出了根据一或多个实施例的经过压缩的缩短BCH码字中的位反转的实例。
具体实施方式
本文描述了用于生成有效的缩短博斯-查德胡里-霍昆格姆(BCH)码字的系统、方法和装置,所述码字在被反转时保持有效的BCH码字(例如,反转的奇偶校验位对缩短BCH码字的用户数据位部分中的错误进行校正而没有误校正)。具体地,缩短BCH码字的生成包含确定BCH码字模板。BCH码字模板指示反转位、从主机系统接收的用户数据位和奇偶校验位的位置,以产生对应的缩短BCH码字,所述对应的缩短BCH码字即使在反转之后仍然是有效的BCH码字。这允许在存储器装置中反转缩短BCH码字以减少印记问题,同时仍然确保存储器装置中的码字的表示(即,在反转或正常/初始条件下)可以被BCH解码器正确解码(即,避免了误校正或不可解码的码字)。如以下将描述的,缩短BCH码字允许使用各种大小的用户数据位,而不论可用位的数量(例如,用户数据位的数量可以是二次幂,并且可以不使用为码字保留的一或多个额外位),并且当编码数据不需要更多数量的用户数据位时,避免了更多数量的用户数据位的处理开销。因此,本文描述的用于生成缩短BCH码字的系统、方法和装置利用了缩短BCH码字的益处(例如,用户数据位数量的灵活性和较低的处理开销),同时仍然允许这些码字被反转和解码以最小化/避免存储器印记问题。现在将通过举例的方式来描述用于生成和使用缩短BCH码字的若干细节。尽管关于BCH码字进行了讨论,但是相同或类似的技术可以用于任何循环码字。如果使码字集合中的码字中的每个码字向右(向右循环移位)和向左(向左循环移位)旋转产生有效码字(即,码字集合内的码字),则码字集合是循环码字。
图1A是码字系统100的功能框图。码字系统100包含码字模板系统100A和码字用户系统100B。如以下将更详细描述的,码字模板系统100A生成BCH码字模板,所述码字模板被提供到码字用户系统100B以生成缩短BCH码字。具体地,BCH码字模板指示反转位、从主机系统接收的用户数据位和奇偶校验位的位置,以产生对应的缩短BCH码字,所述对应的缩短BCH码字即使在反转之后仍然是有效的BCH码字(例如,反转的奇偶校验位对缩短BCH码字的用户数据位部分中的错误进行校正而没有误校正)。这允许在存储器装置中反转缩短BCH码字以减少印记问题,同时仍然确保存储器装置中的码字的表示(即,在反转或正常/初始条件下)可以被BCH解码器正确解码(即,避免了误校正或不可解码的码字)。
图1B是根据本公开的一或多个实施例的码字模板系统100A的功能框图。码字模板系统100A可以利用用于通过码字模板生成器118生成BCH码字模板的一或多个处理器108A和/或本地存储器/存储装置110A。如以下将更详细描述的,码字模板生成器118为码字用户系统100B所使用的可逆的缩短BCH码字生成BCH码字模板。处理器108A可以是用于读取、写入的中央处理单元、微处理器、集成电路、现场可编程门阵列或其它电路系统,并且可以维护存储器内容并且执行此文档中阐述和描述的实施例。
图1C是根据本公开的一或多个实施例的包含至少一个存储器系统102的码字用户系统100B的功能框图。通常,码字用户系统100B可以包含使用存储器系统102的主机系统112。例如,主机系统112可以向存储器系统102写入数据,并从存储器系统102读取数据。
在图1C所展示的实施例中,存储器系统102包含控制器104和一或多个存储器装置1061-106R,所述一或多个存储器装置可以对应于单独的存储器通道。在此实例中,控制器104在所述一或多个存储器装置1061-106R的外部。存储器装置1061-106R可以为存储器系统102和/或计算系统100提供存储(例如,存储器装置1061-106R可以用供计算系统100使用的特定文件系统进行格式化)。控制器104包含用于控制/管理存储器装置1061-106R的控制电路系统(例如,硬件、固件和/或软件)。在一或多个实施例中,控制器104是耦接到印刷电路板的专用集成电路(ASIC),包含到存储器装置1061-106R的物理接口。控制器104可以利用用于控制/管理存储器装置1061-106R的一或多个处理器108B和/或本地存储器/存储装置110B。处理器108B可以是用于读取、写入的中央处理单元、微处理器、集成电路、现场可编程门阵列或其它电路系统,并且可以维护存储器内容并且执行此文档中阐述的实施例。
码字用户系统100B可以是如台式计算机、膝上型计算机、网络服务器、移动装置、存储卡读取器或接口集线器等计算装置以及其它主机系统,并且可以包含存储器存取装置(例如,一个处理器(处理装置)或配置在并行处理系统中或作为协同处理器的多个处理器)。例如,在一个实施例中,码字用户系统100B是个人计算机,并且主机系统112包括中央处理单元,所述中央处理单元通过执行由指令指定的基本算术、逻辑、控制和输入/输出(I/O)操作来执行计算机程序的指令。这些指令中的一或多个指令可以包含或要求对存储在存储器装置1061-106R中的用户数据的访问(例如,读取或写入访问)。因此,主机系统112可以通过经由主机接口114传递给控制器104的命令或指令来请求对存储器装置1061-106R的访问。
存储器系统102可以包含易失性存储器装置、非易失性存储器装置或易失性存储器装置和非易失性存储器装置的组合。存储器系统102可以是有待用于计算系统100中的数据存储的存储系统(例如,固态驱动器(SSD))。作为存储系统,存储器系统102可以包含作为非易失性存储器装置的存储器装置1061-106R。例如,存储器装置1061-106R可以是与非(NAND)型闪速存储器。存储器装置1061-106R中的每个存储器装置可以包含一或多个存储器单元阵列,如单级单元(SLC)、多级单元(MLC)或四级单元(QLC)。所述存储器单元中的每个存储器单元可以存储主机系统112所使用的数据位(例如,数据块)。尽管描述了如NAND型闪速存储器等非易失性存储器装置,但是存储器装置1061-106R可以基于任何其它类型的存储器。例如,存储器装置1061-106R可以是但不限于随机存取存储器(RAM)、只读存储器(ROM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)、相变存储器(PCM)、磁随机存取存储器(MRAM)、或非(NOR)闪速存储器和电可擦除可编程只读存储器(EEPROM)。
在一个实施例中,存储器装置112A-112N是非易失性存储器单元的交叉点阵列。交叉点非易失性存储器可以基于体电阻的变化与可堆叠交叉网格数据访问阵列结合执行位存储。另外,交叉点非易失性存储器可以执行原地写入操作(与许多基于闪速的存储器相反),其中非易失性存储器单元可以在没有先前擦除的非易失性存储器单元的情况下进行编程。
主机系统112可以通过主机接口114耦接到存储器系统102。在一或多个实施例中,主机接口114是标准化物理接口。例如,当存储器系统102在计算系统100中用于数据存储时,主机接口114可以是串行高级技术附件(SATA)接口、外围组件互连快速(PCIe)接口、或通用串行总线(USB)接口、光纤通道、串行附接小型计算机系统接口(SCSI)(SAS)以及其它标准化连接器和接口。当存储器系统102通过PCIe接口与主机系统112耦接时,主机系统112可以进一步利用非易失性存储器(NVM)快速(NVMe)接口来访问存储器装置1061-106R。在一些实施例中,存储器系统102是混合存储器/存储系统。
主机接口114可以提供用于在存储器系统102与主机系统112之间传递控制、地址、数据和其它信号的接口。然而,通常,主机接口114可以包含提供用于在存储器系统102与主机系统112之间传递控制、地址、数据和其它信号的接口的任何一组电路系统和协议。
控制器104可以与存储器装置1061-106R通信,以读取或写入用户数据以及其它操作。控制器104可以具有包含一或多个集成电路、离散组件和/或用于管理/控制存储器装置1061-106R的代码/指令的电路系统。例如,本地存储器/存储装置110可以包含码字管理器116。如图1C所示,码字管理器116包含编码系统116A、反转系统116B和解码系统116C。如以下将更详细描述的,编码系统116A基于由码字模板系统100A提供的BCH码字模板对从主机系统112接收的用户数据进行编码,以产生对应的可逆的缩短BCH码字;反转系统116B使缩短BCH码字反转;并且解码系统116C对可逆的缩短BCH码字(从反转或正常状态)进行解码,以产生原始用户数据。
控制器104耦接到每个存储器装置1061-106R的连接/接口,以在适当的时间接收或发射适当的信号来执行操作(例如,读取或写入用户数据)。在一些实施例中,主机系统112与存储器系统102之间的通信协议不同于由用于访问存储器装置1061-106R的控制器104所使用的协议。在这些实施例中,控制器104将从主机系统112接收的命令/信号转换成适当的命令/信号,以实现对存储器装置1061-106R的期望访问。
每个存储器装置1061-106R可以包含存储器单元(例如,非易失性存储器单元)的一或多个阵列。存储器装置1061-106R可以各自包含可以分组的多个存储器单元。如本文所使用的,组可以包含一或多个存储器单元,如页面、块、平面、管芯、整个阵列或其它存储器单元组。例如,一些存储器阵列可以包含构成存储器单元块的多个存储器单元页面。多个块可以包含在存储器单元平面中。多个存储器单元平面可以包含在管芯上。作为实例,128GB存储器装置可以包含每页4314字节的数据、每块128个页面、每个平面2048个块以及每个装置16个平面。存储器装置1061-106R中的存储器单元组可以使用分配的地址来引用。具体地,可以将地址分配给存储器装置1061-106R中的一或多个存储器单元,使得所述地址可以用于访问对应的存储器单元(例如,读取所述一或多个存储器单元或写入到所述一或多个存储器单元)。
存储器装置1061-106R中的一组存储器单元可以用于存储用户数据(例如,码字)。例如,存储器装置1061-106R中的每个存储器单元可以用于存储单个位的用户数据。在一些实施例中,存储在存储器装置1061-106R中的用户数据可以包含奇偶校验位或者可以与奇偶校验位一起存储,所述奇偶校验位用于校正在用户数据存储在存储器装置1061-106R中时所引入的错误。例如,错误可能是由存储器装置1061-106R经历的噪声(例如,电磁辐射)引起的,所述噪声导致存储器装置1061-106R中的位翻转。在一些实施例中,用户数据还可以与一或多个反转位一起存储,所述一或多个反转位指示存储用户数据的码字在编码后是否已经被反转。如以下将描述的,码字的反转(即,反转/补充码字的每个位)可以减少由存储器单元维持单一状态持续很长一段时间(即,在延长的时间段内保持置位或未置位)引起的印记效应。
在一个实施例中,存储器装置1061-106R可以使用博斯-查德胡里-霍昆格姆(BCH)码字来存储数据。考虑到素数幂q,BCH码字是由奇偶校验矩阵定义的伽罗瓦域(GF)(或有限域)GF(q)上的线性块码字,所述奇偶校验矩阵的行包含选自解码器字母表GF(qm)的元素α的连续幂。BCH码字是循环的,其块长度等于α的阶数(即,块长度等于2m-1)。BCH码字的生成多项式是适当的α次幂的最小多项式的最小公倍数(LCM)。
对于二进制BCH码字,(N-K)≤mt。在此,N是BCH码字的长度,其中N=(2m-1),K是BCH码字的用户数据位的长度,m是伽罗瓦域的度数(例如,),并且t是校正幂(即,用户数据位和/或待使用奇偶校验位校正的反转位的位数)。为了校正单个位错误,需要m个奇偶校验位。因此,为了校正t位错误,需要m*t个奇偶校验位(即,奇偶校验位的数量p等于m*t)。BCH码字的特性是反转的全长BCH码字也是与原始BCH码字具有相同长度的有效BCH码字。图2示出了根据一个实施例的全长BCH码字200,所述全长BCH码字包含N个位,其中K个位是用户数据位202,并且p个位是奇偶校验位204,其中p=mt。在一些实施例中,反转位可以是用户数据位202的一部分,而在其它实施例中,反转位与用户位202分离。
BCH码字可能相对较长,并且码字的用户数据位部分(例如,用户数据位202)可能被无技巧地提供。例如,当伽罗瓦域的度数为七(即,m=7)时,BCH码字的长度N为127位(即,N=2m-1=27-1=128-1=127)。假设期望在码字的用户数据位部分中校正码字的两位错误(例如,t=2),则奇偶校验位的数量p等于十四位(即,mt=7*2=14),并且BCH码字的用户数据位部分被限制为113位(即,N-mt=127-14=113)。然而,通常用户数据位部分是二次幂。因此,考虑到用户数据位是二次幂(例如,27、28、29、210等),在BCH码字中,大量的位必须是未使用的。例如,在用户数据位部分被选择成长度为六十四位并且奇偶校验位的长度等于十四位(即,mt=7*2=14)而BCH码字的长度为127位的情况下,四十九位将是未使用的(例如,127-64-14=49)。如本文所使用的,使用可用位的子集或少于所有可用位的BCH码字(例如,如以上实例中所提供的,127位中的49位是未使用的)是缩短BCH码字,而使用所有可用位的BCH码字(例如,在以上实例中使用所有127位用于用户数据位和奇偶校验位)是全长BCH码字。缩短BCH码字由(N-x,K-x)或(n,k)表示,其中x是BCH码字长度的减少量(例如,在以上实例中,x将等于四十九)。图3示出了根据一个实施例的缩短BCH码字300,所述缩短BCH码字包含用户数据位302、奇偶校验位304和额外位306(即,在不读取缩短BCH码字的对应部分的情况下,BCH解码器将假定的位为零)。
在图3的缩短BCH码字(n,k)300中,其中n是缩短BCH码字300的长度(例如,n<(2m-1)),并且k是缩短BCH码字300的用户数据位302的长度,k个用户数据位302可以包含单个反转位。x个额外位306是隐含的零位(即,这些x个零位不写入到存储器,因为已知这些x个额外位306各自的值为零)。尽管用户数据位302在此被描述为包含反转位,但是出于解释和清楚的目的,反转位可以在后面被描述为与用户数据位302分离。
图4示出了根据一个实施例的编码和写入缩短BCH码字300的实例。如图4所示,BCH编码器402,其如以下更详细描述的是编码系统116A的一部分,接收k-1个用户数据位(uData)以及反转位(invBit),所述反转位是图3的用户数据位的一部分,并且生成反映缩短BCH码字300的k-1个用户数据位(uData)和反转位(invBit)的n-k个奇偶校验位(Parity),其中n-k=mt=p。组合的反转位(invBit)、用户数据位(uData)和奇偶校验位(Parity)(即,缩短BCH码字300)在其后写入到存储器装置1061-106R。奇偶校验位(Parity)使用任何循环错误校正编码方案生成,包含BCH方案。
为了避免存储器装置1061-106R的潜在印记问题,缩短BCH码字300可以被反转/补充并重写到存储器装置1061-106R,使得缩短BCH码字300的位在置位与未置位之间以及未置位与置位之间周期性地翻转(例如,零变成一,并且一变成零)。反转确保存储器装置1061-106R的任何特定存储器单元不会保持相同状态持续很长一段时间。例如,在自将缩短BCH码字300写入到存储器装置1061-106R以来的某个时间段期满之后(例如,一微秒),缩短BCH码字300可以被反转,所述缩短BCH码字可能已经基于存储在存储器装置1061-106R中时遇到的噪声而被改变。例如,如图5A所示,根据一个实施例,反转器502可以用于周期性地反转缩短BCH码字300的反转位(invBit)、用户数据位(uData)和奇偶校验位(Parity),以产生和反转的反转位(~invBit)、反转的用户数据位(~uData)和反转的奇偶校验位(~Parity)。
如图5A中使用帽符号所表示的,缩短BCH码字300的反转位(invBit)、用户数据位(uData)和奇偶校验位(Parity)在存储于存储器装置1061-106R中时可能已经遇到噪声,并且此噪声可能扩展到反转的反转位(~invBit)、反转的用户数据位(~uData)和反转的奇偶校验位(~Parity)。在由反转器502进行的一或多次反转之前或之后,所述反转器如以下更详细描述的是反转系统116B的一部分,主机系统112可能已经请求有噪声的缩短BCH码字300(例如,主机系统112的应用可以请求用户数据位(uData))。因此,有噪声的缩短BCH码字300可以根据请求而处于反转或正常状态。由于有噪声的缩短BCH码字300可能处于反转或正常状态,对缩短BCH码字300的请求必须考虑这一点,使得反转的用户数据位(~uData)不提供到主机系统112。图5B示出了根据另一个实施例的反转系统。在图5B的实施例中,缩短BCH码字300的有噪声的反转位(invBit)、用户数据位(uData)和奇偶校验位(Parity)从存储器装置1061-106R中读取并被馈送到BCH解码器504,以基于奇偶校验位(Parity)产生反转位(invBit)和用户数据位(uData)。BCH编码器402处理反转位(invBit)和用户数据位(uData)以产生奇偶校验位(Parity)。反转器502使反转位(invBit)、用户数据位(uData)和奇偶校验位(Parity)反转,以写回到存储器装置1061-106R。以这种方式,反转位(invBit)、用户数据位(uData)和奇偶校验位(Parity)被认为是正确的数据。尽管可以使用图5A和图5B的实施例中的任一个,但是出于解释的目的,在下文中将使用图5A的实施例。
图6示出了根据一个实施例的可以如何解码有噪声的缩短BCH码字300以满足主机系统112的请求的实例。如图6所示,BCH解码器504,其如以下更详细描述的是解码系统116C的一部分,基于奇偶校验位(Parity)对从存储器装置1061-106R中检索的缩短BCH码字300的有噪声的反转位(invBit)和用户数据位(uData)进行解码,以校正任何噪声引起的错误。用户数据位(uData)可以与来自反转器502的反转版本的用户数据位(~uData)一起馈送到多路复用器604。从BCH解码器504接收的反转位(invBit)可以使多路复用器604在反转位(invBit)指示用户数据位以反转状态存储在存储器装置1061-106R中(即,反转位(invBit)是置位的)时输出反转的用户数据位(~uData),并且在反转位(invBit)指示用户数据位以正常状态存储在存储器装置1061-106R中(即,反转位(invBit)是未置位的)时输出直接从BCH解码器504接收的用户数据位(uData)。
图6所示的解码假设缩短BCH码字300即使在被反转时也仍然是有效的BCH码字。具体地,由于缩短BCH码字300可以以反转或正常状态存储在存储器装置1061-106R中,所以可能需要图6所示的BCH解码器504对反转版本的缩短BCH码字300进行解码。如果反转的缩短BCH码字300不是有效的BCH码字,则BCH解码器504将不能对码字进行解码以产生用户数据位(uData),或者可能产生不准确的结果(即,误校正)。因此,重要的是仅选择在反转时也是有效的BCH码字的缩短BCH码字。
如上所述,BCH码字是线性的。由于BCH码字是线性的,因此对两个有效的BCH码字进行异或(XOR)运算产生有效的BCH码字。例如,假设八位字符串[1111 1111]是有效的BCH码字,则对所述有效的BCH码字与其自身(例如,[1111 1111]XOR[1111 1111])进行异或运算必然也产生有效的BCH码字(即,[0000 0000]),这也是初始BCH码字[11111111]的反转状态。因此,所有一的BCH码字的反转也将产生有效的BCH码字。
BCH码字可以包括包含反转位的用户数据位(uData)和奇偶校验位(Parity)。虽然缩短BCH码字300的用户数据位(uData)可以被选择成仅包含一,但是缩短BCH码字300的奇偶校验位(Parity)不能被选择,并且受到用于生成奇偶校验位(Parity)的编码方案的约束。具体地,虽然用户数据位(uData)可以被选择成仅包含一,但是奇偶校验位(Parity)可以包含一些数量的零和一(这些零是被描述为全零或未使用的额外位306之外的零)。因此,必须使用一种方法来确保缩短BCH码字300的用户数据位(uData)和缩短BCH码字300的奇偶校验位(Parity)组合以包含n个一,所述n个一是如图3所示的缩短BCH码字300的大小。
图7A和7B示出了根据本公开的一些实施例的用于确定针对缩短BCH码字300的BCH码字模板的方法700的实例。方法700可以由处理逻辑执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法700由图1A-1C所示的码字模板系统100A的码字模板生成器118执行。方法700最初可以用于生成BCH码字模板,所述码字模板被提供到一或多个用户系统(例如,码字用户系统100B)。此后,一或多个用户系统可以使用BCH码字模板来生成缩短BCH码字,以管理存储器装置1061-106R中的存储数据。
用于缩短BCH码字300的BCH码字模板指示反转位(invBit)、用户数据位(uData)和奇偶校验位(Parity)的放置,以生成缩短BCH码字300,所述缩短BCH码字在被反转时仍然是有效的BCH码字。因此,当模板被用来存储从主机系统110接收的用户数据位(uData)时,模板指示位的放置。
方法700开始于操作701,其中码字模板生成器118接收长度k,所述长度指示长度为n的缩短BCH码字中专用于反转位(invBit)和用户数据位(uData)的位的数量。缩短BCH码字的n个位可以包含p个奇偶校验位,其中,如上所述,p等于伽罗瓦域的度数(即m,其中GF(qm))和校正位的数量(即,t个校正位)的乘积。在这种情况下,长度k可以基于对校正位数t、伽罗瓦域的度数m和缩短BCH码字的大小n的选择来设置。也就是说,k可以等于n-p,其中p=m*t。长度为n的缩短BCH码字可以小于如图3所示的长度为N的全长BCH码字的长度,所述全长BCH码字具有长度为K的组合的反转位(invBit)和用户数据位(uData)部分。出于说明的目的,在操作701处,k被设置为等于十六。
在操作703处,码字模板生成器118接收指示最大位数的值Δ,如果需要,所述最大位数可以添加到缩短BCH码字的长度,以允许缩短BCH码字在反转时仍然是有效的BCH码字。例如,如上所述,缩短BCH码字旨在具有n位的长度。然而,如果需要,图7A和7B的方法将允许缩短BCH码字的长度达到n+Δ。Δ可以被设置成确保BCH码字不会变得太大,并且由此减少使用缩短BCH码字的益处。在一些实施例中,Δ可以基于正在被写入的媒体(例如,存储器装置1061-106R)的特性来设置。例如,存储器装置1061-106R的用户/设计者/管理员可以指示可以将两个位添加到码字模板(即,Δ=2)。这两个位可以取自元数据或存储在存储器装置1061-106R中的其它数据。如稍后将描述的,如果当Δ=2时不能使用方法700确定码字模板,则用户/设计者/管理员可以决定增加Δ的值。然而,这些另外的位必须取自已经专用于存储数据的存储器装置1061-106R的某个部分(例如,存储在存储器装置1061-106R中的元数据)。此外,Δ可以被设置成等于任何整数值(例如,一、二、三等)。出于解释的目的,在操作703处,Δ被设置成等于二。在一个实施例中,值k和Δ可以由计算系统100的用户/管理员设置。因此,码字模板生成器118分别在操作701和703处根据或基于来自计算系统100的用户/管理员的输入来接收值k和Δ。
在操作705处,码字模板生成器118将变量y设置成等于k值,如上所述,所述值k是缩短BCH码字的组合的反转位(invBit)和用户数据位(uData)部分的长度。例如,当缩短BCH码字的组合的反转位(invBit)和用户数据位(uData)部分的长度/大小被设置成十六位(即,k=16)时,在操作705处,y被设置成等于十六。如以下将描述的,y的值可以递增,以允许将更多的一添加到缩短BCH码字的组合的反转位(invBit)和用户数据位(uData)部分。然而,变量y可以递增不超过Δ次(即,y≤k+Δ)。如上所述,在操作701处,出于解释的目的,k被设置成等于十六。因此,基于此k值,在操作705处,y可以被设置成等于十六。
在操作707处,码字模板生成器118生成包含y个一和z个零的矢量v,其中z等于全长BCH码字的长度K与y个一之差(即,z=K-y)。如图8所示,y个一可以被写入到矢量v的最左侧,而z个零可以被写入到矢量v的最右侧。图9示出了根据一个实施例的示例矢量v。在图9的实例中,全长BCH码字的长度可以是三十一位(即,m=5,使得N=25-1=31),并且全长BCH码字的组合的反转位(invBit)和用户数据位(uData)部分可以是二十六位(即,K=26)。如上所述,将基于图9的矢量v生成的BCH码字模板最初可以用十六个组合的反转位和用户数据位(即,y=k=16)设置,使得矢量v中的零的数量等于十(即,z=K-y=26-16=10)。
在操作709处,码字模板生成器118为矢量v生成p个奇偶校验位。图10示出了添加到矢量v的p个奇偶校验位。奇偶校验位的数量p可以对应于伽罗瓦域的度数(m)和奇偶校验位的校正幂(t)(即,待校正的位数)。具体地,奇偶校验位的数量p可以等于m*t。在图9中提供的实例中,伽罗瓦域的度数m可以等于五,并且校正幂t可以等于一,使得存在五个奇偶校验位(即,p=m*t=5*1=5)。p个奇偶校验位可以具有一些数量的一和零,并且取决于用于计算奇偶校验位的算法/方案。为了确保组合的y和p个位代表有效的缩短BCH码字,即使在反转时,y和p个位也必须组合成具有n个一。图11示出了基于图9的示例位集合添加了p个奇偶校验位的矢量v。
在操作711处,码字模板生成器118确定矢量v的汉明重量(hamming weight)w(即,HW(v)=w)。汉明重量w等于矢量v中的一的数量。如图10所示,矢量v包含y个一、z个零和p个奇偶校验位(其可能是一和零的组合)。由于矢量v包含对应于反转位和用户数据位的y个一(即,y个一共同表示用户数据位(uData)和反转位(invBit),如上所述,出于由方法700生成的模板的目的,所述用户数据位和反转位可以被设置成全部为一)和奇偶校验位中的一些一,所以矢量v的汉明重量w是y和p个奇偶校验位中的一的数量的总和(即,y+(p个奇偶校验位中的一的数量))。例如,在图11所示的示例矢量v中,汉明重量w为十九(即,w=HW(v)=y+HW(奇偶校验位)=16+3=19)。
在操作713处,码字模板生成器118确定汉明重量w是否大于n(缩短BCH码字的初始大小)但小于或等于n+Δ。具体地,在操作713处,码字模板生成器118确定矢量v中的一之和是否大于缩短BCH码字的初始设置长度n但不大于缩短BCH码字的允许扩展n+Δ。响应于确定n<w≤n+Δ,码字模板生成器118指示可以使用矢量v产生有效的缩短BCH码字,所述有效的缩短BCH码字在反转时还将表示有效的BCH码字,并且方法700可以移动到操作721。
相反,当码字模板生成器118在操作713处确定矢量v的汉明重量w小于或等于n时,方法700可以移动到操作715,以便码字模板生成器118将另一个一添加到y个一的集合(即,y=y+1)(即,矢量的反转位和用户数据位部分)。另一个一的添加减少了零的数量(即z=z-1),并且允许再次生成p个奇偶校验位,其中更多的p个奇偶校验位可能等于一,使得矢量v的汉明重量w现在可能大于n。在操作715处将另一个一添加到矢量v中的数字一之后,码字模板生成器118在操作717处确定y是否小于n。具体地,在操作717处,码字模板生成器118确定用于表示组合的反转位(invBit)和用户数据位(uData)的添加的位的数量是否变得太大(即,在不考虑由p个奇偶校验位添加到码字的另外的大小的情况下,y是否等于或大于初始缩短BCH码字的长度)。当y小于或等于n时,码字模板生成器118返回到操作709以生成p个奇偶校验位。相反地,当y大于n时,码字模板生成器118移动到操作703以增加Δ的值(例如,Δ=Δ+1)。
在图11所示的示例矢量v中,汉明重量w为十九,所述值小于n,因为n等于二十一。因此,在操作713处,码字模板生成器118确定应将另一个一添加到y个一中,因为w<n(即,19<21)。图12示出了在添加另一个一(即,y=y+1)和生成一组新的奇偶校验位p之后生成的示例矢量v。图12中的矢量v的汉明重量w为二十一,这仍然没有满足操作713的不等式。因此,在操作715处,码字模板生成器118增加y以将另一个一添加到矢量v。图13示出了在添加另一个一(即,y=y+1)和生成一组新的奇偶校验位p之后生成的示例矢量v。在图13的实例中,汉明重量w现在为二十二,这满足了操作713的不等式(即,n=21,w=22,并且n+Δ=23,使得n<w≤n+Δ)。因此,在满足操作713的不等式之后,矢量v可以用于产生有效的缩短BCH码字,所述有效的缩短BCH码字在反转时还将表示有效的BCH码字,并且方法700可以移动到操作721。
在操作721处,码字模板生成器118使矢量v向左旋转y次,使得z个前导零置于矢量v的左侧,如图14所示。此旋转以适当的系统形式放置矢量v(即,在矢量v中,用户数据位和奇偶校验位是分离的和/或在其它方面是可区分的)。图15示出了旋转操作721之后图13的矢量v。使矢量v旋转y个位利用了BCH码字的循环特性(即,旋转BCH码字产生另一个BCH码字)。此外,这种系统形式确保矢量v的最高有效位(MSB)位于矢量的左侧,并且最低有效位(LSB)位于矢量的右侧,如图14所示。以这种形式,最低有效mt位具有所有的一,并且汉明重量y+mt等于汉明重量k+mt+Δ。然而,图14所示的矢量v的奇偶校验部分包含一和零两者。
在旋转矢量v之后,码字模板生成器118现在可以开始选择/映射矢量v中的位,其中将放置实际用户数据位(uData)、反转位(invBit)和奇偶校验位(Parity)。因此,图15所示的用户数据位(uData)、反转位(invBit)和奇偶校验位(Parity)的位置的初始指定可以被废弃,以有利于选择/映射稍后从主机系统112接收的用户数据位(uData)、反转位(invBit)和奇偶校验位(Parity)的位。具体地,在操作723处,码字模板生成器118选择矢量v的y-k最高有效位位置(即,从图15所示的矢量v的左侧或MSB侧开始),其中一的值表示反转位(invBit)。值y-k表示通过执行操作715添加到矢量v但不超过Δ位的位/一的数量。在图15所示的示例矢量v中,由于添加了两个位以满足操作713的不等式,因此在操作723处,码字模板生成器118选择位位置二十三和二十一来表示反转状态/位。
在操作725处,码字模板生成器118选择/映射mt最低有效位位置(即,图14所示的矢量v的mt最右边的位),以表示生成的模板中的奇偶校验位(Parity)。如上所述,矢量v的mt最低有效位位置全部具有值一。在图15所示的示例矢量v中,由于mt的值为5(即,p=m*t=5*1=5),因此在操作725处,码字模板生成器118选择/映射位位置一到五来表示奇偶校验位。
在操作727处,码字模板生成器118为剩余用户数据位(uData)选择值为一的矢量v中剩余/未选择的位。在图15所示的示例矢量v中,码字模板生成器118为用户数据位(uData)选择位六到二十。图16示出了根据操作723、725和727选择矢量v中的位。如以下将进一步详细描述的,由码字模板生成器118选择的位表示用于缩短BCH码字的BCH码字模板,所述缩短BCH码字在与其它已知的有效BCH码字进行异或运算时产生有效的BCH码字。
图17A和17B是根据本公开的一些实施例的用于使用可逆的缩短BCH码字的示例方法1700的流程图。方法1700可以由处理逻辑执行,所述处理逻辑可以包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微代码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法1700由图1的码字管理器116执行。
具体地,方法1700对从主机系统112接收以存储在存储器装置1061-106R上的用户数据位(uData)进行编码,并使用由码字模板生成器118生成的BCH码字模板使用方法700来满足对用户数据位(uData)的请求。将结合图18所示的示例编码系统116A、图19所示的反转系统116B和图20所示的解码系统116C来描述方法1700。如以上结合图5A和5B所述,在一些实施例中,除了反转器502之外,反转系统116B可以包含BCH解码器504和BCH编码器402,以确保正在处理的数据(例如,反转位(invBit)、用户数据位(uData)和奇偶校验位(Parity))是正确的/无噪声的数据。
在一个实施例中,方法1700开始于操作1701,其中编码系统116A接收如图18所示的反转位(invBit)和用户数据位(uData)。具体地,编码系统116A的扩展器1801可以从主机系统112接收用户数据位(uData),并且用户数据位(uData)可以对应于图像、视频、音频、文本或用于存储在存储器装置1161-106R上的任何其它数据。编码系统116A的扩展器1801可以从主机系统112或计算系统100的任何其它组件接收反转位(invBit)。在一个实施例中,扩展器1801可以生成/引入反转位(invBit)。总的来说,反转位(invBit)和用户数据位(uData)可以包含k个位,每个位基于所表示的数据可以表示值零或一。最初,反转位(invBit)可以是未置位的(即,反转位(invBit)的值为零),因为用户数据位(uData)没有反转(即,处于正常形式)。图21示出了出于解释的目的将在下文使用的示例反转位(invBit)和用户数据位(uData)。
在操作1703处,编码系统116A的扩展器1801根据由码字模板生成器118生成的BCH码字模板基于方法700来扩展反转位(invBit)和用户数据位(uData)。具体地,使用图16的示例选择和图21的示例反转位(invBit)和用户数据位(uData),扩展器1801可以将反转位(invBit)和用户数据位(uData)扩展/映射到如图22所示的矢量v的位位置中。在此实例中,反转位(invBit)由具有相同值的两个位位置(即,位位置二十三和二十一)表示。此外,位位置二十三和二十一被未使用的位位置二十二分离。如图22所示,尚未计算p个奇偶校验位(Parity)。
在操作1705处,BCH编码器402可以为经过扩展的反转位(invBit)和用户数据位(uData)生成p个奇偶校验位(Parity)。p个奇偶校验位(Parity)使用任何循环错误校正编码方案(例如,BCH方案)生成。图23示出了由BCH编码器402为图22的经过扩展的反转位(invBit)和用户数据位(uData)生成的p个奇偶校验位(Parity)的示例集合。经过扩展的反转位(invBit)和用户数据位(uData)与p个奇偶校验位(Parity)一起形成缩短BCH码字。
在操作1707处,编码系统116A的压缩器1803可以根据由码字模板生成器118生成的BCH码字模板并根据方法700来压缩缩短BCH码字,以形成经过压缩的缩短BCH码字。压缩缩短BCH码字可以包含用初始反转位(invBit)和用户数据位(uData)替换缩短BCH码字的经过扩展的反转位(invBit)和用户数据位(uData)。图24示出了使用图23的缩短BCH码字的示例压缩的缩短BCH码字。如图24所示,通过从经过压缩的缩短BCH码字(例如,位22)中的缩短BCH码字中消除一或多个位来实现压缩。在压缩缩短BCH码字以产生经过压缩的缩短BCH码字之后,在操作1709处,编码系统116A将经过压缩的缩短BCH码字存储在存储器装置1061-106R中。以这种压缩形式,缩短BCH码字可以被反转,同时一旦扩展就将缩短BCH码字维持为有效的BCH码字。这将允许缩短BCH码字在反转后被解码,如以下将进一步详细描述的。
经过压缩的缩短BCH码字可以保持存储在存储器装置1061-106R中,等待来自主机系统112的访问请求。如图17A和17B所示,在操作1711处,控制器104可以继续确定是否已经从主机系统112接收到对用户数据位(uData)的访问请求。在检测到没有从主机系统112接收到对用户数据位(uData)的请求时,方法1700可以移动到操作1713。在操作1713处,控制器104检测事件是否已经发生。在一个实施例中,所述事件是自经过压缩的缩短BCH码字最后一次存储在存储器装置1061-106R中以来的预定时间的经过。例如,所述事件可以是自经过压缩的缩短BCH码字被存储在存储器装置1061-106R中以来的一百毫秒的经过。在未检测到事件时,方法1700返回到操作1711,以确定是否已经接收到对用户数据位(uData)的访问请求。相反地,当在操作1713处检测到事件时,在操作1715处,反转系统116B从存储器装置1061-106R中检索经过压缩的缩短BCH码字。在操作1717处,反转系统116B的反转器502可以反转经过压缩的缩短BCH码字中的每个位,并且在操作1719处,反转系统116B可以将结果存储在存储器装置1061-106R中。图25示出了图24的经过压缩的缩短BCH码字中的位的反转的实例。通过周期性地反转经过压缩的缩短BCH码字,可以避免存储器装置1061-106R的印记问题。在操作1719之后,方法1700可以返回到操作1711,以确定是否已经接收到来自主机系统112的访问请求。
当控制器104确定在操作1711处已经从主机系统112接收到对用户数据位(uData)的访问请求时,在操作1721处,解码系统116C可以检索存储在存储器装置1061-106R中的经过压缩的缩短BCH码字。如图20所示,解码系统116C可以包含扩展器2001。在操作1721处,扩展器2001可以从存储器装置1061-106R中检索经过压缩的缩短BCH码字。在操作1723处,扩展器2001可以基于由码字模板生成器118提供的BCH码字模板将经过压缩的缩短BCH码字扩展到初始的缩短BCH码字中,使得在操作1725处,BCH解码器504可以对缩短BCH码字进行解码。例如,BCH解码器504使用缩短BCH码字的奇偶校验位(Parity)来校正在存储在存储器装置1061-106R中时引入到缩短BCH码字的任何错误。
在操作1727处,反转器502可以反转由BCH解码器504产生的用户数据位(uData)。多路复用器2003可以基于从BCH解码器504接收的反转位(invBit)来选择性地输出反转的用户数据位(~uData)或直接从BCH解码器504接收的用户数据位(uData)。具体地,当反转位(invBit)指示缩短BCH码字在存储器元件1061-106R中时以反转状态存储时,多路复用器2003可以输出反转的用户数据位(~uData)。否则,多路复用器2003可以输出直接从BCH解码器504接收的用户数据位(uData)。
如上所述,已经描述了生成可逆的缩短BCH码字的系统、装置和技术。具体地,BCH码字模板可以用于确定缩短BCH码字中的反转位、用户数据位和奇偶校验位的放置。位的放置可以用于在编码和解码码字时扩展反转位和用户数据位,并且在存储期间压缩反转位和用户数据位,使得可以执行反转。此过程确保使用BCH码字模板生成的缩短BCH码字保持有效的码字(例如,反转的奇偶校验位对缩短BCH码字的用户数据位部分中的错误进行校正而没有误校正)。
本文呈现的方法图中的操作参考其它附图的示范性实施方案来描述。然而,应当理解的是,可以通过除了参考其它附图所讨论的那些实施方案之外的实施方案来执行图中的操作,并且参考这些其它附图所讨论的实施方案可以执行不同于参考所述图所讨论的那些的操作。尽管以特定顺序描述和示出,但是本文呈现的方法的操作不限于此顺序。例如,本文呈现的方法的一或多个操作可以以不同的顺序或者在部分或完全重叠的时间段内执行。因此,对方法的描述和描绘是出于说明的目的,而不是旨在限制于特定实施方案。
从本说明书中显而易见的是,本公开的各方面可以至少部分地体现在软件或固件中。也就是说,计算机系统或其它数据处理系统、控制器104的码字管理器116可以响应于其执行包含在本地存储器/存储装置110或另一个非暂时性机器可读存储媒体中的指令序列的处理器或其它电路系统来执行计算机实施的方法700和/或1700。软件可以进一步通过网络接口在网络(未示出)上传输或接收。在各个实施例中,硬连线电路系统可以与软件指令组合使用以实施本发明的实施例。还将理解,未示出的另外的组件也可以是计算系统100的一部分,并且在一些实施例中,比图1所示的组件更少的组件也可以在计算系统100中使用。
制品可以用于存储提供上述实施例的功能中的至少一些功能的程序代码。另外,制品可以用于存储使用上述实施例的功能中的至少一些功能创建的程序代码。存储程序代码的制品可以体现为但不限于一或多个存储器(例如,一或多个闪速存储器、静态、动态或其它随机存取存储器)、光盘、CD-ROM、DVD-ROM、EPROM、EEPROM、磁卡或光卡或其它类型的适合于存储电子指令的非暂时性机器可读媒体。另外,本发明的实施例可以在但不限于利用FPGA、ASIC、处理器、计算机或包含网络的计算机系统的硬件或固件中实施。在不显著改变本发明的实施例的情况下,硬件或软件实施方案的模块和组件可以被划分或组合。
在随后的说明书和权利要求中,可以使用术语“耦接”和/或“连接”及其衍生词。应当理解的是,这些术语并不旨在作为彼此的同义词。“耦接”用于指示彼此可以直接物理接触或电接触或者可以不直接物理接触或电接触的两个或两个以上元件彼此协作或相互作用。“连接”用于指示在两个或两个以上彼此耦接的元件之间建立通信。
在前述说明书中,已经参考本发明的特定示范性实施例描述了本发明。参照此文档中所讨论的详情描述本发明的各个实施例和各方面,并且附图展示了各个实施例。以上描述和附图是对本发明的说明并且不应被解释为限制本发明。本说明书中对“一个实施例(one embodiment)”、“一个实施例(an embodiment)”、“示范性实施例”等的引用指示所描述的实施例可以包含特定的特征、结构或特性,但是并非每个实施例都一定包含特定的特征、结构或特性。而且,此些短语不一定指同一实施例。此外,当结合实施例描述特定的特征、结构或特性时,无论是否明确描述,此些特征、结构或特性都可以结合其它实施例来实施。另外,如本文档中所使用的,术语“示范性”是指仅作为实例或说明的实施例。示范性的使用不应被解释为指示优选的实例。具有虚线边界(例如,大虚线、小虚线、点划线、点)的框用于说明向本发明的实施例添加另外的特征的任选操作。然而,这种符号不应被理解为意味着这些是唯一的选项或任选操作,和/或在本发明的一些实施例中,具有实心边界的框不是任选的。描述了许多特定细节以提供对本发明的各个实施例的充分理解。然而,在某些情况下,未对熟知或常规的细节进行描述,以便提供对本发明的实施例的简明讨论。
显而易见的是,在不脱离如以下权利要求中阐述的本发明的更广泛的精神和范围的情况下,可以对本发明进行各种修改。例如,本文档中描述的方法可以用更少或更多的特征/框来执行,或者所述特征/框可以以不同的顺序来执行。另外,本文档中描述的一或多种方法可以重复或彼此并行执行,或者与相同或类似方法的不同实例并行执行。虽然实例涉及存储器和非易失性存储媒体,但是实施例还可以用其它类型的存储媒体来实施。
Claims (18)
1.一种用于使用可逆的缩短码字的计算机实施的方法,所述方法包括:
接收将用户数据位存储在一组存储器装置中的请求;
将所述用户数据位和反转位扩展到码字模板的位位置,其中所述扩展形成经过扩展的反转位和用户数据位,所述经过扩展的反转位和用户数据位共同包含表示所述用户数据位和所述反转位的另外的位,其中所述反转位指示所述用户数据位是否被反转,其中所述码字模板将对应于所述用户数据位和所述反转位的第一组位位置映射到对应于所述经过扩展的反转位和用户数据位的第二组位位置;
为所述经过扩展的反转位和用户数据位生成奇偶校验位以形成缩短码字,其中所述缩短码字包括所述经过扩展的反转位和用户数据位以及所述奇偶校验位;
压缩所述缩短码字以形成经过压缩的缩短码字,其中所述经过压缩的缩短码字的位比所述缩短码字的位少;以及
将所述经过压缩的缩短码字存储在所述一组存储器装置中。
2.根据权利要求1所述的计算机实施的方法,其中所述缩短码字包括一或多个位,在不读取所述缩短码字的对应部分的情况下,解码器确定的所述一或多个位为零。
3.根据权利要求1所述的计算机实施的方法,其进一步包括:
检测与所述经过压缩的缩短码字相关联的事件;以及
响应于检测所述事件而反转所述经过压缩的缩短码字,使得所述经过压缩的缩短码字以反转状态存储在所述一组存储器装置中。
4.根据权利要求3所述的计算机实施的方法,其中所述事件是自将所述经过压缩的缩短码字存储在所述一组存储器装置中以来的预定时间的经过。
5.根据权利要求1所述的计算机实施的方法,其进一步包括:
从主机系统接收对所述用户数据位的请求;
响应于接收到所述对所述用户数据位的请求而根据所述码字模板扩展所述经过压缩的缩短码字以形成所述缩短码字;
对所述缩短码字进行解码以生成用户数据位输出和所述反转位;以及
基于所述反转位的值向所述主机系统输出所述用户数据位输出或所述用户数据位输出的反转版本。
6.根据权利要求1所述的计算机实施的方法,其进一步包括:
确定矢量的反转位和用户数据位部分的位的长度,其中所述矢量的所述反转位和用户数据位部分包括所有位位置的“一”;
增加所述矢量的所述反转位和用户数据位部分的长度,直到所述反转位和用户数据位部分以及针对所述矢量的所述反转位和用户数据位部分生成的奇偶校验位中的“一”的数量大于所述矢量的所述反转位和用户数据位部分的选定长度;
旋转所述矢量以便以系统形式放置所述矢量,使得所述矢量的所述反转位和用户数据位部分置于所述矢量的最低有效位侧;
并且从所述矢量的最高有效位开始,选择值为一的第一组位位置来表示所述反转位;
并且从所述矢量的最低有效位开始,选择第二组位位置来表示所述奇偶校验位;以及
选择尚未被选择用于所述反转位或所述奇偶校验位的第三组位位置来表示所述用户数据位,
其中所述第一组位位置、所述第二组位位置和所述第三组位位置的选择共同表示所述码字模板。
7.一种用于使用可逆的缩短码字的系统,其包括:
存储器装置;以及
处理装置,所述处理装置可操作地与所述存储器装置耦接以:
接收将用户数据位存储到所述存储器装置的请求
将所述用户数据位和反转位扩展到码字模板的位位置,其中所述扩展形成经过扩展的反转位和用户数据位,所述经过扩展的反转位和用户数据位共同包含表示所述用户数据位和所述反转位的另外的位,其中所述反转位指示所述用户数据位是否被反转,其中所述码字模板将对应于所述用户数据位和所述反转位的第一组位位置映射到对应于所述经过扩展的反转位和用户数据位的第二组位位置,
为所述经过扩展的反转位和用户数据位生成奇偶校验位以形成缩短码字,其中所述缩短码字包括所述经过扩展的反转位和用户数据位以及所述奇偶校验位,
压缩所述缩短码字以形成经过压缩的缩短码字,其中所述经过压缩的缩短码字的位比所述缩短码字的位少,以及
将所述经过压缩的缩短码字存储在一组存储器装置中。
8.根据权利要求7所述的系统,其中所述缩短码字包括一或多个位,在不读取所述缩短码字的对应部分的情况下,解码器确定的所述一或多个位为零。
9.根据权利要求7所述的系统,其中所述处理装置进一步用于:
检测与所述经过压缩的缩短码字相关联的事件;以及
响应于检测所述事件而反转所述经过压缩的缩短码字,使得所述经过压缩的缩短码字以反转状态存储在所述一组存储器装置中。
10.根据权利要求9所述的系统,其中所述事件是自将所述经过压缩的缩短码字存储在所述一组存储器装置中以来的预定时间的经过。
11.根据权利要求7所述的系统,其中所述处理装置进一步用于:
从主机系统接收对所述用户数据位的请求;
响应于接收到所述对所述用户数据位的请求而根据所述码字模板扩展所述经过压缩的缩短码字以形成所述缩短码字;
对所述缩短码字进行解码以生成用户数据位输出和所述反转位;以及
基于所述反转位的值输出所述用户数据位输出或所述用户数据位输出的反转版本。
12.根据权利要求7所述的系统,其中所述处理装置进一步用于:
确定矢量的反转位和用户数据位部分的位的长度,其中所述矢量的所述反转位和用户数据位部分包括所有位位置的“一”;
增加所述矢量的所述反转位和用户数据位部分的长度,直到所述反转位和用户数据位部分以及针对所述矢量的所述反转位和用户数据位部分生成的奇偶校验位中的“一”的数量大于所述矢量的所述反转位和用户数据位部分的选定长度;
旋转所述矢量以便以系统形式放置所述矢量,使得所述矢量的所述反转位和用户数据位部分置于所述矢量的最低有效位侧;
从所述矢量的最高有效位开始,选择值为一的第一组位位置来表示所述反转位;
从所述矢量的最低有效位开始,选择第二组位位置来表示奇偶校验位;以及
选择尚未被选择用于所述反转位或所述奇偶校验位的第三组位位置来表示所述用户数据位,
其中所述第一组位位置、所述第二组位位置和所述第三组位位置的选择共同表示所述码字模板。
13.一种非暂时性机器可读存储介质,其存储指令,所述指令当由控制器的处理器执行时使所述控制器执行以下操作:
将用户数据位和反转位扩展到码字模板的位位置,其中所述扩展形成经过扩展的反转位和用户数据位,所述经过扩展的反转位和用户数据位共同包含表示所述用户数据位和所述反转位的另外的位,其中所述反转位指示所述用户数据位是否被反转,其中所述码字模板将对应于所述用户数据位和所述反转位的第一组位位置映射到对应于所述经过扩展的反转位和用户数据位的第二组位位置;
为所述经过扩展的反转位和用户数据位生成奇偶校验位以形成缩短码字,其中所述缩短码字包括所述经过扩展的反转位和用户数据位以及所述奇偶校验位;
压缩所述缩短码字以形成经过压缩的缩短码字,其中所述经过压缩的缩短码字的位比所述缩短码字的位少;以及
将所述经过压缩的缩短码字存储在一组存储器装置中。
14.根据权利要求13所述的非暂时性机器可读存储介质,其中所述缩短码字包括一或多个位,在不读取所述缩短码字的对应部分的情况下,解码器确定的所述一或多个位为“零”。
15.根据权利要求13所述的非暂时性机器可读存储介质,其中所述指令进一步使存储器控制器执行以下操作:
检测与所述经过压缩的缩短码字相关联的事件;以及
响应于检测所述事件而反转所述经过压缩的缩短码字,使得所述经过压缩的缩短码字以反转状态存储在所述一组存储器装置中。
16.根据权利要求15所述的非暂时性机器可读存储介质,其中所述事件是自将所述经过压缩的缩短码字存储在所述一组存储器装置中以来的预定时间的经过。
17.根据权利要求13所述的非暂时性机器可读存储介质,其中所述指令进一步使存储器控制器执行以下操作:
从主机系统接收对所述用户数据位的请求;
响应于接收到所述对所述用户数据位的请求而根据所述码字模板扩展所述经过压缩的缩短码字以形成所述缩短码字;
对所述缩短码字进行解码以生成用户数据位输出和所述反转位;以及
基于所述反转位的值向所述主机系统输出所述用户数据位输出或所述用户数据位输出的反转版本。
18.根据权利要求13所述的非暂时性机器可读存储介质,其中所述指令进一步使存储器控制器执行以下操作:
确定矢量的反转位和用户数据位部分的位的长度,其中所述矢量的所述反转位和用户数据位部分包括所有位位置的“一”;
增加所述矢量的所述反转位和用户数据位部分的长度,直到所述反转位和用户数据位部分以及针对所述矢量的所述反转位和用户数据位部分生成的奇偶校验位中的“一”的数量大于所述矢量的所述反转位和用户数据位部分的选定长度;
旋转所述矢量以便以系统形式放置所述矢量,使得所述矢量的所述反转位和用户数据位部分置于所述矢量的最低有效位侧;
从所述矢量的最高有效位开始,选择值为一的第一组位位置来表示所述反转位;
从所述矢量的最低有效位开始,选择第二组位位置来表示奇偶校验位;以及
选择尚未被选择用于所述反转位或所述奇偶校验位的第三组位位置来表示所述用户数据位,其中所述第一组位位置、所述第二组位位置和所述第三组位位置的选择共同表示所述码字模板。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862628821P | 2018-02-09 | 2018-02-09 | |
US62/628,821 | 2018-02-09 | ||
US16/007,806 US10855314B2 (en) | 2018-02-09 | 2018-06-13 | Generating and using invertible, shortened Bose-Chaudhuri-Hocquenghem codewords |
US16/007,806 | 2018-06-13 | ||
PCT/US2019/016678 WO2019156980A1 (en) | 2018-02-09 | 2019-02-05 | Generating and using invertible, shortened bose-chaudhuri-hocquenghem codewords |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111869111A CN111869111A (zh) | 2020-10-30 |
CN111869111B true CN111869111B (zh) | 2021-10-22 |
Family
ID=67540312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980019029.5A Active CN111869111B (zh) | 2018-02-09 | 2019-02-05 | 生成和使用可逆的缩短博斯-查德胡里-霍昆格姆码字 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10855314B2 (zh) |
CN (1) | CN111869111B (zh) |
WO (1) | WO2019156980A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11494264B2 (en) * | 2020-07-28 | 2022-11-08 | Micron Technology, Inc. | Generating a protected and balanced codeword |
US11237906B1 (en) * | 2020-07-28 | 2022-02-01 | Micron Technology, Inc. | Generating a balanced codeword protected by an error correction code |
US11567831B2 (en) * | 2020-07-28 | 2023-01-31 | Micron Technology, Inc. | Generating a protected and balanced codeword |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107402829A (zh) * | 2016-04-05 | 2017-11-28 | 阿里巴巴集团控股有限公司 | 用于检测和纠正位错误的设备、方法和计算机程序产品 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7266760B1 (en) * | 2004-09-30 | 2007-09-04 | Altera Corporation | Method and apparatus for calculating cyclic redundancy checks for variable length packets |
US7844877B2 (en) | 2005-11-15 | 2010-11-30 | Ramot At Tel Aviv University Ltd. | Method and device for multi phase error-correction |
CN101162449B (zh) | 2007-10-08 | 2010-06-02 | 福州瑞芯微电子有限公司 | Nand flash控制器及其与nand flash芯片的数据交互方法 |
US8351290B1 (en) | 2008-09-12 | 2013-01-08 | Marvell International Ltd. | Erased page detection |
CN101814922B (zh) * | 2009-02-23 | 2013-06-19 | 国际商业机器公司 | 基于bch码的多位错纠错方法和装置以及存储系统 |
KR20110025524A (ko) * | 2009-09-04 | 2011-03-10 | 삼성전자주식회사 | 반도체 메모리 장치 및 그것의 데이터 처리 방법 |
US8433985B2 (en) | 2010-03-29 | 2013-04-30 | Intel Corporation | Error correction mechanisms for flash memories |
KR101650130B1 (ko) * | 2010-05-14 | 2016-08-24 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법 |
US8645789B2 (en) * | 2011-12-22 | 2014-02-04 | Sandisk Technologies Inc. | Multi-phase ECC encoding using algebraic codes |
TW201416849A (zh) * | 2012-10-30 | 2014-05-01 | Jmicron Technology Corp | 錯誤檢查及校正方法以及相關錯誤檢查及校正電路 |
US9553613B2 (en) * | 2013-09-18 | 2017-01-24 | Samsung Electronics Co., Ltd. | Transmitter and puncturing method thereof |
WO2015047334A1 (en) | 2013-09-27 | 2015-04-02 | Intel Corporation | Error correction in non_volatile memory |
CN103762991B (zh) * | 2013-12-20 | 2017-05-17 | 记忆科技(深圳)有限公司 | 一种bch码译码方法及系统 |
KR102453474B1 (ko) * | 2015-02-27 | 2022-10-14 | 한국전자통신연구원 | 가변 길이 시그널링 정보 부호화를 위한 패리티 인터리빙 장치 및 이를 이용한 패리티 인터리빙 방법 |
CA3158865A1 (en) * | 2015-03-13 | 2016-09-22 | Shanghai National Engineering Research Center Of Digital Television Co., Ltd | Signalling coding and modulation method and demodulation and decoding method and device |
-
2018
- 2018-06-13 US US16/007,806 patent/US10855314B2/en active Active
-
2019
- 2019-02-05 WO PCT/US2019/016678 patent/WO2019156980A1/en active Application Filing
- 2019-02-05 CN CN201980019029.5A patent/CN111869111B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107402829A (zh) * | 2016-04-05 | 2017-11-28 | 阿里巴巴集团控股有限公司 | 用于检测和纠正位错误的设备、方法和计算机程序产品 |
Also Published As
Publication number | Publication date |
---|---|
US20190253080A1 (en) | 2019-08-15 |
CN111869111A (zh) | 2020-10-30 |
WO2019156980A1 (en) | 2019-08-15 |
US10855314B2 (en) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101588605B1 (ko) | 레이트 호환성 펑처링된 코드를 지원하는 메모리 컨트롤러 | |
US8239725B2 (en) | Data storage with an outer block code and a stream-based inner code | |
US9673840B2 (en) | Turbo product codes for NAND flash | |
US9318166B2 (en) | Systems and methods of storing data | |
JP6110953B2 (ja) | 階層化反復誤り訂正のための停止基準 | |
US9543983B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US20120096328A1 (en) | Multi-write endurance and error control coding of non-volatile memories | |
US8266495B2 (en) | Systems and methods for performing concatenated error correction | |
KR102275717B1 (ko) | 플래시 메모리 시스템 및 그의 동작 방법 | |
US9075739B2 (en) | Storage device | |
US11243838B2 (en) | Methods and apparatuses for error correction | |
WO2009074978A2 (en) | Systems and methods for error correction and decoding on multi-level physical media | |
CN111869111B (zh) | 生成和使用可逆的缩短博斯-查德胡里-霍昆格姆码字 | |
CN113064547B (zh) | 有局部顺序信息的校验矩阵的保护的数据存取方法及设备 | |
KR20170112630A (ko) | 반도체장치 및 반도체시스템 | |
TWI536749B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
TWI682399B (zh) | 操作記憶體之方法及用於錯誤率降低之設備 | |
TW202147104A (zh) | 使用藉助於先算資訊輪換的資料保護的非揮發性記憶體寫入方法和設備 | |
KR20210001927A (ko) | 국부성을 사용한 일반화된 연접 에러 정정 코딩 방법 | |
JP2020046823A (ja) | メモリシステム | |
CN105938728B (zh) | 用于近似平衡码的编码器和解码器设计 | |
US20160149592A1 (en) | Apparatus and method for turbo product codes | |
US20230231579A1 (en) | Data storage device | |
US20240063822A1 (en) | Memory controller and method of accessing flash memory | |
KR102666852B1 (ko) | 컨트롤러, 반도체 메모리 시스템 및 그의 동작 방법 |
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 |