CN106788465B - 用于涡轮乘积码的装置和方法 - Google Patents

用于涡轮乘积码的装置和方法 Download PDF

Info

Publication number
CN106788465B
CN106788465B CN201610130496.3A CN201610130496A CN106788465B CN 106788465 B CN106788465 B CN 106788465B CN 201610130496 A CN201610130496 A CN 201610130496A CN 106788465 B CN106788465 B CN 106788465B
Authority
CN
China
Prior art keywords
row
bits
column
tpc
code
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
Application number
CN201610130496.3A
Other languages
English (en)
Other versions
CN106788465A (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.)
SK Hynix Inc
Original Assignee
SK Hynix Inc
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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of CN106788465A publication Critical patent/CN106788465A/zh
Application granted granted Critical
Publication of CN106788465B publication Critical patent/CN106788465B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/2957Turbo codes and decoding
    • H03M13/296Particular turbo code structure
    • H03M13/2963Turbo-block codes, i.e. turbo codes based on block codes, e.g. turbo decoding of product 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/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/2957Turbo codes and decoding
    • H03M13/296Particular turbo code structure
    • 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
    • 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
    • H03M13/2921Coding, 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 wherein error correction coding involves a diagonal direction
    • 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/2957Turbo codes and decoding
    • H03M13/296Particular turbo code structure
    • H03M13/2966Turbo codes concatenated with another code, e.g. an outer block code
    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/098Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit using single parity bit
    • 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
    • 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
    • H03M13/2909Product 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/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/2933Coding, 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 a block and a convolutional code
    • H03M13/2936Coding, 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 a block and a convolutional code comprising an outer Reed-Solomon code and an inner convolutional code

Abstract

一种用于涡轮乘积码的装置包括码字发生器和交织器。码字发生器接收矩阵中的数据,并且产生包括数据、行奇偶校验位和列奇偶校验位的涡轮乘积码(TPC)码字。交织器通过将TPC码字的至少一个行‑列相交部分中的至少一个位分配给至少一个主码来交织TPC码字,并且输出交织后的TPC码字。

Description

用于涡轮乘积码的装置和方法
相关申请的交叉引用
本申请要求2015年11月20日提交的第14/948197号美国非临时申请的优先权,其全部内容通过引用合并于此。
技术领域
本公开的示例性实施例涉及一种信号处理和编码技术。
背景技术
最常使用磁储存技术来储存数据,但是对当前电子设备的更小重量和更快读取/写入操作的需求使得磁储存技术不能令人满意。基于NAND的技术能够满足对高密度数据储存设备的需求,但是该技术非常昂贵。需要降低基于NAND的技术的成本,同时保持性能水平。
发明内容
本公开的实施例针对一种信号处理和编码技术,该技术可以在较低的硬件复杂度的情况下提供高性能收益。
本公开的实施例提供一种使用涡轮乘积码(turbo product code)的装置和其操作方法以在性能和吞吐量(throughput)方面获得收益。
本公开的实施例提供一种交织器(interleaver),其可以降低主码解码的频率以及在高码率(code rate)处下移(push down)错误平层(error floor)。
根据本发明的实施例,一种装置包括码字发生器和交织器。码字发生器接收矩阵中的数据,并且产生包括数据、行奇偶校验位和列奇偶校验位的涡轮乘积码(TPC)码字。交织器通过将TPC码字的至少一个行-列相交部分中的至少一个位分配给至少一个主码来交织TPC码字,并且输出交织后的TPC码字。
根据本发明的另一个实施例,一种方法包括:产生涡轮乘积码(TPC)码字,所述TPC码字包括矩阵中的数据、行奇偶校验位和列奇偶校验位。所述方法还包括:通过将TPC码字的至少一个行-列相交部分中的至少一个位分配给至少一个主码来交织TPC码字,以及输出交织后的TPC码字。
附图说明
图1图示了包括存储系统的数据处理系统,在所述存储系统中应用本发明的实施例。
图2是根据本发明的实施例的包括编码器和解码器的存储系统的框图。
图3A是表示针对不同码率的涡轮乘积码(TPC)的性能的图表。
图3B是表示针对不同码率的主码解码的概率的图表。
图4A和图4B是图示根据本发明的实施例的TPC码字的生成过程的示图。
图5是图示根据本发明的实施例的可解码的具有被困错误图样的TPC结构的示图。
图6是图示根据本发明的实施例的交织器的操作的示图。
图7是图示根据本发明的另一个实施例的交织器的操作的示图。
图8A是图示根据本发明的实施例的使用交织器后主码的瀑布区中的性能的示图。
图8B是图示根据本发明的另一个实施例的使用交织器后主码的瀑布区中的性能的示图。
图9A是图示根据本发明的实施例的使用交织器后主码的错误平层区中的性能的示图。
图9B是图示根据本发明的另一个实施例的使用交织器后主码的错误平层区中的性能的示图。
图10是图示根据本发明的实施例的主码的性能的图表。
具体实施方式
以下将参照附图更详细地描述各种实施例。然而,本发明可以以不同的形式来实现,并且不应当被解释为局限于本文中所阐述的实施例。更确切地说,这些实施例被提供使得本公开将是彻底和完整的,并且将把本发明的范围充分地传达给本领域技术人员。贯穿本公开,相同的附图标记在本发明的各种附图和实施例中始终指代相同的部分。
本发明可以以若干方式实现,包括作为:过程;装置;系统;组合物;在计算机可读储存介质上实施的计算机程序产品;和/或处理器(诸如被配置为运行储存在耦接至处理器的存储器上和/或通过耦接至处理器的存储器提供的指令的处理器)。在该说明书中,这些实施方式或本发明可采取的任何其他形式可以被称为技术。一般而言,可以在本发明的范围内改变所公开的过程的步骤的顺序。除非另有说明,否则描述为被配置来执行任务的组件(诸如处理器或存储器)可以实现为被临时配置为在给定时间执行该任务的常规组件,或实现为被制造来执行该任务的特定组件。如在本文中所用,术语“处理器”指被配置为处理数据(诸如计算机程序指令)的一种或更多种器件、电路和/或处理核。
降低基于NAND的技术的成本的一种方法包括缩减工艺,但是缩减工艺会降低性能。可以通过使用高级信号处理和编码技术来补偿这种性能损失。已经使用了博斯-乔赫里-霍克文黑姆(BCH,Bose-Chaudhuri-Hocquenghem)码和低密度奇偶校验(LDPC,lowdensity parity check)码来确保数据完整性。对于BCH码,主要缺点在于其不能用于软判决解码,这使得这些编码不理想。LDPC码提供良好的硬判决解码性能和软判决解码性能。然而,LDPC解码器的复杂度相当高,这使得对于硬件实现来说该解决方案过于昂贵。下面公开和描述了一种高级编码技术,其可以利用较低的硬件复杂度来提供高性能收益。
涡轮乘积码(TPC)被认为是能够以比LDPC码低得多的硬件复杂度来提供显著收益的高级编码技术。在硬判决解码中,与BCH码和LDPC码相比,TPC给出显著的性能收益。在软判决解码中,TPC取得接近于LDPC码的性能收益。
TPC被认为是能够以比LDPC码低得多的硬件复杂度来提供显著收益的高级编码技术。在硬判决解码中,与BCH码和LDPC码相比,TPC给出显著的性能收益。在软判决解码中,TPC取得接近于LDPC码的性能收益。
TPC码可能在高码率处的性能损失和吞吐量损失方面具有缺点。TPC码策略可以在高码率处给出错误平层(error floor)。可以通过增加主码的校正容量来降低这种错误平层。但是这显著地降低了瀑布区性能(见图3A)。如果在以行/列码为代价的情况下增加主码的校正容量,则当对具有最高码率(最高码率见图3B)的数据(例如,4K数据)解码时,转入主码解码的概率相当高。例如,这意味着为了对4K数据解码,长度为16K的全部页将用于解码。这种频繁的页读取将影响吞吐量,这使得对于提供高吞吐量来说,该解决方案是不可接受的。
结果,在使用涡轮乘积码的系统中,需要高级编码技术来提供性能和吞吐量方面的收益。在本公开中,提出了新型技术来设计主交织器,该主交织器减小主码解码的频率以及将错误平层下移至期望水平(desired regime)。
在一些实施例中,本发明将被应用至图1中所示的数据处理系统。
图1图示包括存储系统的数据处理系统100,在该存储系统中应用了本发明的实施例。图1中所示的数据处理系统100仅用于说明。在不脱离本公开的范围的情况下,可以使用数据处理系统100的其他结构。虽然图1图示了数据处理系统100的一个示例,但是可以对图1做出各种改变。例如,数据处理系统100可以以任何适当的布置而包括任意元件,或者可以不包括任意元件。
参照图1,数据处理系统100可以包括主机102和存储系统110。
例如,主机102可以包括诸如移动电话、MP3播放器和膝上计算机的便携式电子设备或者诸如台式计算机、游戏机、TV和投影仪的电子设备。
存储系统110可以响应于来自主机102的请求而操作,具体地,储存要被主机102访问的数据。换句话说,存储系统110可以用作主机102的主存储系统或辅助存储系统。存储系统110可以根据要与主机102电耦接的主机接口的协议而用各种类型的储存设备中的任意一种来实施。存储系统110可以用诸如固态驱动器(SSD)、多媒体卡(MMC)、嵌入式MMC(eMMC)、缩小尺寸MMC(RS-MMC)和微型MMC、安全数字(SD)卡、迷你SD和微型SD、通用串行总线(USB)储存设备、通用快闪储存(UFS)设备、紧凑型闪存(CF)卡、智能媒体(SM)卡和记忆棒等的各种类型的储存设备中的任意一种来实施。
用于存储系统110的储存设备可以用易失性存储器件(诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM))或非易失性存储器件(诸如只读存储器(ROM)、掩模ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电随机存取存储器(FRAM)、相变RAM(PRAM)、磁阻RAM(MRAM)和电阻式RAM(RRAM))来实施。
存储系统110可以包括储存要被主机102访问的数据的存储器件150以及可以控制将数据储存在存储器件150中的控制器130。
控制器130和存储器件150可以被集成至一个半导体器件中。例如,控制器130和存储器件150可以被集成至一个半导体器件中并且配置固态驱动器(SSD)。当存储系统110用作SSD时,可以显著地提高与存储系统110电耦接的主机102的操作速度。
控制器130和存储器件150可以被集成至一个半导体器件中并且配置存储卡。控制器130和存储卡150可以被集成至一个半导体器件中,并且配置诸如个人计算机存储卡国际协会(PCMCIA)卡、紧凑型闪存(CF)卡、智能媒体(SM)卡(SMC)、记忆棒、多媒体卡(MMC)、RS-MMC和微型MMC、安全数字(SD)卡、迷你SD、微型SD和SDHC以及通用快闪储存(UFS)设备的存储卡。
再例如,存储系统110可以配置计算机、超移动PC(UMPC)、工作站、上网本、个人数字助理(PDA)、便携式计算机、网络平板、平板电脑、无线电话、移动电话、智能电话、电子书、便携式多媒体播放器(PMP)、便携式游戏机、导航仪、黑匣子、数字照相机、数字多媒体广播(DMB)播放器、三维(3D)电视、智能电视、数字录音机、数字音频播放器、数字图片记录器、数字图片播放器、数字录像机、数字视频播放器、配置数据中心的储存器、能够在无线环境下收发信息的设备、配置家庭网络的各种电子设备中的一种、配置计算机网络的各种电子设备中的一种、配置远程信息处理网络的各种电子设备中的一种、RFID设备或者配置计算系统的各种组成元件中的一种。
存储系统110的存储器件150可以在电源被中断时保持储存的数据,具体地,在写入操作期间储存从主机102提供的数据,以及在读取操作期间将储存的数据提供至主机102。存储器件150可以包括多个存储块152、154和156。存储块152、154和156中的每个可以包括多个页。每个页可以包括多个存储单元,多个字线(WL)电耦接至所述多个存储单元。存储器件150可以是非易失性存储器件,例如,快闪存储器。快闪存储器可以具有三维(3D)层叠结构。
存储系统110的控制器130可以响应于来自主机102的请求来控制存储器件150。控制器130可以将从存储器件150读取的数据提供给主机102,以及将从主机102提供的数据储存在存储器件150中。为此,控制器130可以控制存储器件150的总体操作(诸如读取操作、写入操作、编程操作和擦除操作)。
详细地,控制器130可以包括主机接口单元132、处理器134、错误校正码(ECC)单元138、电源管理单元(PMU)140、存储器控制器(MC)142和存储器144。
主机接口单元132可以处理从主机102提供的命令和数据,以及可以通过诸如通用串行总线(USB)、多媒体卡(MMC)、外围组件互连快速(PCI-E)、串行连接SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、小型计算机系统接口(SCSI)、增强型小盘接口(ESDI)和集成驱动电路(IDE)的各种接口协议中的至少一种来与主机102通信。
ECC单元138可以检测并校正在读取操作期间从存储器件150读取的数据中的错误。当错误位的数量大于或等于可校正错误位的阈值数量时,ECC单元138不能校正错误位,并且可以输出指示校正错误位失败的错误校正失败信号。
ECC单元138可以基于诸如低密度奇偶校验(LDPC)码、博斯-乔赫里-霍克文黑姆(BCH,Bose-Chaudhuri-Hocquenghem)码、涡轮码(turbo code)、涡轮乘积码(TPC)、里德-所罗门(RS,Reed-Solomon)码、卷积码、递归系统码(RSC)、格形编码调制(TCM)和块编码调制(BCM)等的编码调制来执行错误校正操作。ECC单元138可以包括用于错误校正操作的所有电路、系统或设备。
PMU 140可以提供和管理用于控制器130的电源,即,用于包括在控制器130中的组成元件的电源。
MC 142可以用作控制器130与存储器件150之间的存储器接口,以允许控制器130响应于来自主机102的请求来控制存储器件150。MC 142可以产生用于存储器件150的控制信号并在处理器134的控制下处理数据。当存储器件150是快闪存储器(诸如NAND快闪存储器)时,MC 142可以产生用于NAND快闪存储器150的控制信号并在处理器134的控制下处理数据。
存储器144可以用作存储系统110和控制器130的工作存储器,并且储存用于驱动存储系统110和控制器130的数据。控制器130可以响应于来自主机102的请求来控制存储器件150。例如,控制器130可以将从存储器件150读取的数据提供给主机102,以及将从主机102提供的数据储存在存储器件150中。当控制器130控制存储器件150的操作时,存储器144可以储存由控制器130和存储器件150使用以用于诸如读取操作、写入操作、编程操作和擦除操作的操作的数据。
存储器144可以利用易失性存储器来实施。存储器144可以利用静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)来实施。如上所述,存储器144可以储存由主机102和存储器件150使用以用于读取操作和写入操作的数据。为了储存该数据,存储器144可以包括程序存储器、数据存储器、写入缓冲器、读取缓冲器和映射缓冲器等。
处理器134可以控制存储系统110的常规操作,以及响应于来自主机102的写入请求或读取请求来控制针对存储器件150的写入操作或读取操作。处理器134可以驱动被称作闪存转换层(FTL)的固件来控制存储系统110的常规操作。处理器134可以利用微处理器或中央处理单元(CPU)来实施。
管理单元(未示出)可以被包括在处理器134中,并且可以执行对存储器件150的坏块管理。管理单元可以找到包括在存储器件150中的坏存储块(其不满足进一步使用的条件)并且对该坏存储块执行坏块管理。当存储器件150是快闪存储器(例如,NAND快闪存储器)时,在写入操作期间(例如,在编程操作期间),可能因NAND逻辑功能的特性而发生编程失败。在坏块管理期间,编程失败的存储块或坏存储块的数据可以被编程至新存储块中。此外,因编程失败导致的坏块严重地降低了具有3D层叠结构的存储器件150的利用效率以及存储系统100的可靠性,从而需要可靠的坏块管理。
图2是根据本发明的实施例的包括编码器和解码器的存储系统200的框图。例如,存储系统200对应于图1中所示的存储系统110。为了清楚,此处未示出图1的与本发明的实施例直接相关的组件。
参照图2,存储系统200包括储存器210、写入控制器220和读取控制器230。例如,储存器210对应于图1中所示的存储器件150,而写入控制器220和读取控制器230对应于图1中所示的ECC单元138。
储存器210可以包括诸如NAND闪存的固态储存器。写入控制器220接收来自图1中的主机102的数据,并且处理该数据以将码字储存在储存器210上。读取控制器230读取储存器210上的码字,并且处理该码字。例如,TPC码字被储存在储存器210上。分别地,写入控制器220包括TPC编码器222作为用于TPC码字的组件,而读取控制器230包括TPC解码器232作为用于TPC码字的组件。
如本文中所述,TPC码包括Nr行码和Nc列码。它们全都是具有以下参数的BCH码:
行码:(nr,kr,Tr,mr);
列码:(nc,kc,Tc,mc);
其中,n表示编码的长度,k表示编码的维度,T表示编码的错误校正容量,以及m表示编码的有限域(finite field)大小。被组合来产生一个列码字的列数由C#来指定,其中,C#是被组合的列数。
图4A是图示根据本发明的实施例的TPC码字的生成过程410的流程图。
参照图4A,通过生成过程410产生的TPC结构可以具有串行级联结构。在串行级联结构中,从数据412中产生行奇偶校验位414,以及组合列来产生列奇偶校验位416。
在一些实施例中,由码字发生器401来执行生成过程410。码字发生器401接收矩阵中的数据412,并且产生包括数据412、行奇偶校验位414和列奇偶校验位416的TPC码字。码字发生器401从矩阵的行数据产生行奇偶校验位414,通过组合行奇偶校验位414和列数据来产生列奇偶校验位416,以及产生包括数据412、行奇偶校验位414和列奇偶校验位416的TPC码字。
图4B是图示根据本发明的另一个实施例的TPC码字的生成过程420的图。该实施例考虑使用串行级联(而非并行级联)的异或(XOR)奇偶校验位概念。
参照图4B,通过生成过程420而产生的TPC结构可以具有异或奇偶校验位的串行级联结构(serial concatenation structure)。在该结构中,从行数据422产生行奇偶校验位424。组合列来产生列奇偶校验位426。通过对所有行-列相交部分的数据进行异或运算来计算异或奇偶校验位428。
在一些实施例中,通过码字发生器402和交织器403来执行生成过程420。码字发生器402接收矩阵中的数据422,并产生包括数据、行奇偶校验位和列奇偶校验位的TPC码字。码字发生器402从矩阵的行数据产生行奇偶校验位424,通过组合行奇偶校验位和列数据来产生列奇偶校验位426,以及产生包括数据、行奇偶校验位和列奇偶校验位的TPC码字。
交织器403通过将TPC码字的至少一个行-列相交部分中的至少一个位分配给至少一个主码来交织(428)TPC码字,并输出交织后的TPC码字。交织器403将TPC码字的至少一个行-列相交部分中的位分配给多个主码。
图5是图示根据本发明的实施例的具有可解码的被困错误图样的TPC结构的图。
参照图5,示出了被困错误图样。错误图样包括错误位B51-B55。错误图样不能通过基本TPC码结构(诸如,异或XOR奇偶校验位的并行级联结构)来解码。假设行码和列码的校正容量等于1。在该情形下,需要页数据(16K)来对4K用户数据解码。然而,在图4B中公开的编码结构能够在不使用16K页数据的情况下对图5中描述的4K数据的错误图样解码。
将描述根据本发明的各种实施例的主码交织器设计策略,所述主码交织器可以用于用最小的主码奇偶校验开销来将错误平层下移至期望水平。
一般而言,在设计合理的编码的性能曲线中,瀑布与错误平层之间总存在折衷。错误平层的降低导致瀑布区的损失,而瀑布区的增加则导致错误平层的增加。面临的挑战是找到最小的奇偶校验开销方案,该方案将利用最小的瀑布性能损失来把错误平层下移至期望水平。应当注意的是,在图5的仿真中观察到的最显著的错误图样包含一个行-列相交部分中的错误。本发明提出两种方案来解决这种错误图样,如图6和图7中所示。
根据本发明的实施例,重新参照图4B,本文中公开了两种方案以用于主交织器的设计。在第一个方案中,一个行-列相交部分中的位的数量等于多个主码的数量。交织器403将TPC码字的一个行-列相交部分中的每个位分配给不同的主码。
在第二个方案中,一个行-列相交部分中的位的数量与多个主码的数量不同。例如,位的数量大于多个主码的数量。交织器403将TPC码字的一个行-列相交部分中的预定数量的位(例如,两个位)分配给同一主码。
图6是图示根据本发明的实施例的第一个方案的交织器的操作的示图。
参照图6,TPC码字的行-列相交部分中的位被分配给多个主码。行-列相交部分中的位的数量(例如,4个位)与多个主码的数量(例如,4个主码)相同。TPC码字的行-列相交部分中的位中的每个被分配给不同的主码。行-列相交部分中(例如,在一个行-列相交部分中)的位D11-D14被分配给不同的主码MC1-MC4,这允许在主解码过程中打破错误图样。位D11被分配给第一主码MC1以产生奇偶校验位P11。位D12被分配给第二主码MC2以产生奇偶校验位P12。位D13被分配给第三主码MC3以产生奇偶校验位P13。位D14被分配给第四主码MC4以产生奇偶校验位P14。因此,对于主码MC1-MC4中的每个,产生了主码奇偶校验位621-624。
图7是图示根据本发明的另一个实施例的第二个方案的交织器的操作的图。
参照图7,TPC码字的行-列相交部分中的位被分配给多个主码。行-列相交部分中的位的数量与多个主码的数量不同。例如,行-列相交部分中的位的数量(例如,4个位)大于多个主码的数量(例如,2个主码)。允许行-列相交部分中的有限数量的位或预定数量的位属于同一主码。例如,一个行-列相交部分710中的2个位D21和D23被分配给主码MC11。一个行-列相交部分710中的两个位D22和D24被分配给主码MC12。因此,对于主码MC11-MC12中的每个,产生了主码奇偶校验位721-722。
使用所公开方案的额外好处在于:与使用随机交织器相比,简化了编码器和解码器的硬件实现。在编码期间可以按照单个数据块来读取行-列相交部分中的全部位以用于计算行码字、列码字和主码字的奇偶校验位,以及在解码期间计算校正子(syndrome)。
图8A至图9B是图示根据本发明的实施例的使用交织器后的主码的性能的示图。图8A和图8B分别图示了在第一方案和第二方案中使用交织器后主码的瀑布区中的解码操作。图9A和图9B分别图示了在第一方案和第二方案中使用交织器后主码的错误平层区中的解码操作。
在图8A至图9B中,对于第一方案,对于第一方案中的编码假设参数(m,t)等于(13,1),假设相交部分中的位的数量是4,假设主码的数量是4,以及奇偶校验位将是52(4*13)。对于第二方案,对于第二方案中的编码假设参数(m,t)等于(14,2),假设相交部分中的位的数量是4,假设主码的数量是2,以及奇偶校验位将是56(2*28)。
尽管在第一方案和第二方案中用于这些主码的奇偶校验位的量几乎相同,但是对这些主码的执行可能相当不同。参照图8A和图8B,在瀑布区,数据中将存在很多错误(例如,6个位)。第一方案可以校正输入数据810中的错误并输出具有4个位的错误的数据820。第二方案不校正输入数据815中的任何错误,并输出具有6个位的错误的数据825。从图8A和图8B中能够观察到,第一方案可以校正错误,而第二方案不校正任何位。这意味着与第二方案相比,第一方案将具有更好的瀑布性能。
参照图9A和图9B,在错误平层区中,将存在较少的错误(例如,4个位),并且大多数主码将是可解码的。示出了其中大多数主码是可解码的错误图样。能够看出,第二方案能够校正错误(图9B),而第一方案不校正任何错误(图9A)。这意味着与第一方案相比,第二方案具有更好的错误平层。因为在第二方案中提出的交织器显著地改善了错误平层,因此其更适合数据储存目的。
图10是图示根据本发明的实施例的主码的性能的图表。在图10中,示出了:与BCH(2K)码和基本TPC码相比,利用所提出的交织器的主码(16K主TPC)的性能。在该仿真中,使用了具有以下参数的主码:
●行码:(nr,kr,Tr,mr)=(919,889,3,10)
●列码:(nc,kc,Tc,mc)=(881,851,3,10)
●主码:(nm,km,Tm,mm)=(7066,7040,2,13)
●主码的数量=20
●被组合的列的数量C#是23。
参照图10,示出了基本TPC码的性能。错误平层被下移至1e-4(10-4)附近。但是这种错误平层不足以使该方案对于商业应用来说是实用的。在某些情况下,对于全部页数据(16K),主码被编码。如果存在4K故障,则可以读取全部页数据以用于对4K数据解码。在高码率处,如果本发明的主码(16K主TPC)交织器未被适当地设计,则存在显著的性能损失。
在仿真中,对于所公开的主码(16K主TPC),在4kB故障等于1e-9(10-9)之前都未观察到错误平层。进行仿真以收集在解码期间出故障的错误图样。从错误图样,判断需要将多少个相交部分散布至主码,使得这些图样在主码解码中被解码。错误平层需求将确定如下参数:如主码的校正容量以及在单个主码中允许的来自相交部分中的位的数量。
应当注意的是,与2K BCH码和基本TPC码相比,本发明的主码交织器设计策略给出了显著的瀑布和错误平层收益。本发明的方案的另一个重要优点是:硬件实现简单。如果选择随机交织器,则需要随机地读取位来创建主码奇偶校验位。由于本发明从相交部分中选择位,因此主码奇偶校验位的结构可以通过沿相交部分位顺序地读取来实现。这显著地简化了硬件设计,并且节约大量内存读取开销。
虽然已经参照本发明的示例性实施例来具体地示出和描述了本发明,但是本领域技术人员将理解的是,在不脱离由所附权利要求限定的本发明的精神和范围的情况下,可以在形式和细节上做出各种变化。因此,前述内容仅作为示例而非意在进行限制。例如,在本文中图示和描述元件的任何数量仅作为示例。本发明仅受到所附权利要求及其等同物所限定的限制。

Claims (14)

1.一种用于涡轮乘积码的装置,包括:
码字发生器,适用于接收矩阵中的数据,并且产生包括数据、行奇偶校验位和列奇偶校验位的涡轮乘积码TPC码字;以及
交织器,适用于通过将TPC码字的至少一个行-列相交部分中的位分配给主码来交织TPC码字,其中所述至少一个行-列相交部分中的位的数量与多个主码的数量不同,所述多个主码中的每个对应于所述至少一个行-列相交部分中的多于一个的位,并且输出交织后的TPC码字。
2.如权利要求1所述的装置,其中,码字发生器适用于:
从矩阵的行数据产生行奇偶校验位;
通过组合行奇偶校验位和列数据来产生列奇偶校验位;以及
产生包括数据、行奇偶校验位和列奇偶校验位的TPC码字。
3.如权利要求1所述的装置,其中,交织器适用于将所述至少一个行-列相交部分的位中的每个位分配给不同的主码。
4.如权利要求1所述的装置,其中,至少一个行-列相交部分的位的数量大于所述多个主码的数量。
5.如权利要求1所述的装置,其中,交织器适用于将至少一个行-列相交部分的预定数量的位分配给同一主码。
6.如权利要求5所述的装置,其中,所述至少一个行-列相交部分的所述预定数量的位包括所述至少一个行-列相交部分中的两个位。
7.如权利要求1所述的装置,其中,所述行奇偶校验位具有串行级联结构。
8.一种用于涡轮乘积码的方法,包括:
产生涡轮乘积码TPC码字,所述TPC码字包括矩阵中的数据、行奇偶校验位和列奇偶校验位;
通过将TPC码字的至少一个行-列相交部分中的位分配给多个主码来交织TPC码字,其中所述至少一个行-列相交部分的位的数量与多个主码的数量不同,所述多个主码中的每个对应于至少一个行-列相交部分的多于一个的位;以及
输出交织后的TPC码字。
9.如权利要求8所述的方法,其中,产生TPC码字的步骤包括:
从矩阵的行数据产生行奇偶校验位;
通过组合行奇偶校验位和列数据来产生列奇偶校验位;以及
产生包括数据、行奇偶校验位和列奇偶校验位的TPC码字。
10.如权利要求8所述的方法,其中,交织TPC码字的步骤包括:
将至少一个行-列相交部分的位中的每个位分配给不同的主码。
11.如权利要求8所述的方法,其中,所述至少一个行-列相交部分的位的数量大于所述多个主码的数量。
12.如权利要求8所述的方法,其中,交织TPC码字的步骤包括:
将所述至少一个行-列相交部分中的预定数量的位分配给同一主码。
13.如权利要求12所述的方法,其中,所述至少一个行-列相交部分的所述预定数量的位包括所述至少一个行-列相交部分中的两个位。
14.如权利要求8所述的方法,其中,所述行奇偶校验位具有串行级联结构。
CN201610130496.3A 2014-11-20 2016-03-08 用于涡轮乘积码的装置和方法 Active CN106788465B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462082455P 2014-11-20 2014-11-20
US14/948,197 2015-11-20
US14/948,197 US9906241B2 (en) 2014-11-20 2015-11-20 Apparatus and method for turbo product codes

Publications (2)

Publication Number Publication Date
CN106788465A CN106788465A (zh) 2017-05-31
CN106788465B true CN106788465B (zh) 2021-02-26

Family

ID=56011249

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610130496.3A Active CN106788465B (zh) 2014-11-20 2016-03-08 用于涡轮乘积码的装置和方法

Country Status (3)

Country Link
US (1) US9906241B2 (zh)
CN (1) CN106788465B (zh)
TW (1) TWI676362B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10177794B1 (en) * 2016-12-07 2019-01-08 Xilinx, Inc. Method and apparatus for error detection and correction

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6526538B1 (en) * 1998-09-28 2003-02-25 Comtech Telecommunications Corp. Turbo product code decoder
CN1638475A (zh) * 2004-03-22 2005-07-13 上海奇普科技有限公司 一种针对tpc码与nr码级联编码的迭代译码方法
US20050204256A1 (en) * 2004-03-12 2005-09-15 Nan-Hsiung Yeh Turbo Product Code implementation and decoding termination method and apparatus
CN1756140A (zh) * 2004-09-29 2006-04-05 上海贝尔阿尔卡特股份有限公司 基于turbo乘积码的混合自动重发请求的方法和装置
US7100101B1 (en) * 2002-11-08 2006-08-29 Xilinx, Inc. Method and apparatus for concatenated and interleaved turbo product code encoding and decoding
CN101248596A (zh) * 2005-07-19 2008-08-20 日本电气株式会社 turbo解码系统、发送功率控制方法和CDMA移动通信终端
CN101483443A (zh) * 2008-12-26 2009-07-15 中国航空无线电电子研究所 Turbo乘积码优化编译码算法的FPGA实现方法
CN103812512A (zh) * 2012-11-08 2014-05-21 Sk海尼克斯存储技术公司 具有交织的turbo乘积码(tpc)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6628723B1 (en) * 1999-10-15 2003-09-30 Cisco Technology Coding rate reduction for turbo codes
US7356752B2 (en) * 2000-03-14 2008-04-08 Comtech Telecommunications Corp. Enhanced turbo product codes
US7383484B2 (en) * 2004-03-12 2008-06-03 Seagate Technology Llc Cyclic redundancy check based message passing in turbo product code decoding
US7415651B2 (en) * 2004-06-02 2008-08-19 Seagate Technology Data communication system with multi-dimensional error-correction product codes
US7502982B2 (en) * 2005-05-18 2009-03-10 Seagate Technology Llc Iterative detector with ECC in channel domain
US8028216B1 (en) 2006-06-02 2011-09-27 Marvell International Ltd. Embedded parity coding for data storage
US7779331B2 (en) * 2006-07-31 2010-08-17 Agere Systems Inc. Systems and methods for tri-column code based error reduction
US8209582B1 (en) * 2006-11-07 2012-06-26 Marvell International Ltd. Systems and methods for optimizing a product code structure
CN101494462B (zh) * 2009-03-03 2012-02-22 东南大学 Rs乘积码级联卷积码系统的迭代译码方法
CN102223204B (zh) * 2011-06-02 2013-06-26 西安电子科技大学 基于全响应CPM和Turbo乘积码的编码调制方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6526538B1 (en) * 1998-09-28 2003-02-25 Comtech Telecommunications Corp. Turbo product code decoder
US7100101B1 (en) * 2002-11-08 2006-08-29 Xilinx, Inc. Method and apparatus for concatenated and interleaved turbo product code encoding and decoding
US20050204256A1 (en) * 2004-03-12 2005-09-15 Nan-Hsiung Yeh Turbo Product Code implementation and decoding termination method and apparatus
CN1638475A (zh) * 2004-03-22 2005-07-13 上海奇普科技有限公司 一种针对tpc码与nr码级联编码的迭代译码方法
CN1756140A (zh) * 2004-09-29 2006-04-05 上海贝尔阿尔卡特股份有限公司 基于turbo乘积码的混合自动重发请求的方法和装置
CN101248596A (zh) * 2005-07-19 2008-08-20 日本电气株式会社 turbo解码系统、发送功率控制方法和CDMA移动通信终端
CN101483443A (zh) * 2008-12-26 2009-07-15 中国航空无线电电子研究所 Turbo乘积码优化编译码算法的FPGA实现方法
CN103812512A (zh) * 2012-11-08 2014-05-21 Sk海尼克斯存储技术公司 具有交织的turbo乘积码(tpc)

Also Published As

Publication number Publication date
TW201720064A (zh) 2017-06-01
TWI676362B (zh) 2019-11-01
US9906241B2 (en) 2018-02-27
US20160149592A1 (en) 2016-05-26
CN106788465A (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
CN106856103B (zh) 用于与非闪存的涡轮乘积码
US10388400B2 (en) Generalized product codes for flash storage
CN108062258B (zh) 用于错误恢复的循环交错的xor阵列
US9710327B2 (en) Flash memory system and operating method thereof
US11016844B2 (en) Error correction code structure
US10484014B2 (en) Controller, semiconductor memory system and operating method thereof
US20170070240A1 (en) Memory system including error corrector and operating method thereof
US10141952B2 (en) Memory system and operating method thereof
US10855314B2 (en) Generating and using invertible, shortened Bose-Chaudhuri-Hocquenghem codewords
JP6491482B2 (ja) 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置
CN106158046B (zh) 用于turbo乘积码的误校正避免
CN106788465B (zh) 用于涡轮乘积码的装置和方法
CN105915234B (zh) 避免对涡轮乘积码误校正的方案
CN106708649B (zh) 解码方法、存储器储存装置及存储器控制电路单元
KR102513782B1 (ko) 컨트롤러 및 그것의 동작 방법
US10528496B2 (en) Controller and operating method thereof
CN106980464B (zh) 利用过采样读取的系统最优化方法
CN108170554B (zh) 一种nand的数据编码方法和装置
KR20170067656A (ko) Nand 플래시용 터보 프로덕트 코드

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