CN116954984A - Crc终止时的准确ber报告 - Google Patents

Crc终止时的准确ber报告 Download PDF

Info

Publication number
CN116954984A
CN116954984A CN202211338619.4A CN202211338619A CN116954984A CN 116954984 A CN116954984 A CN 116954984A CN 202211338619 A CN202211338619 A CN 202211338619A CN 116954984 A CN116954984 A CN 116954984A
Authority
CN
China
Prior art keywords
cyclic
matrix
parity
quasi
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211338619.4A
Other languages
English (en)
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 CN116954984A publication Critical patent/CN116954984A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/01Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/015Simulation or testing of codes, e.g. bit error rate [BER] measurements
    • 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
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • 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/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • 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
    • 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/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
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • 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
    • H03M13/1105Decoding
    • H03M13/1128Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
    • 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
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本公开涉及一种CRC终止时的准确BER报告,具体涉及一种用于LDPC解码的方法和系统。在该方法和系统中,使用准循环矩阵对LDPC码字进行解码。计算准循环矩阵的循环列中的变量节点的第一消息以及属于循环列的校验节点的第二消息。使用计算的第一消息和第二消息计算奇偶校验与校正子。计算码字的奇偶校验部分没有错误的第一模式的位错误率以及码字的奇偶校验部分有错误的第二模式的位错误率。

Description

CRC终止时的准确BER报告
技术领域
本公开的实施例涉及一种用于错误位报告的方案。
背景技术
计算机环境范例已经转变为可以随时随地使用的普适计算系统。因此,诸如移动电话、数码相机和笔记本电脑的便携式电子装置的使用迅速增加。这些便携式电子装置通常使用具有存储器装置,即数据存储装置的存储器系统。数据存储装置用作便携式电子装置的主存储器装置或辅助存储器装置。
通常,由于存储器装置没有移动部件,因此使用存储器装置的存储器系统具有优异的稳定性、耐久性、高信息访问速度和低功耗。具有这些优点的存储器系统的示例包括通用串行总线(USB)存储器装置、诸如通用闪存(UFS)的具有各种接口的存储卡以及固态驱动器(SSD)。数据完整性对于数据存储装置和数据传输非常重要。在固态存储器存储(例如,NAND闪存)装置中,信息通过单元中的不同电荷电平存储在单元中。在写入和读取过程中,编程干扰错误和单元间干扰电荷泄漏会引入噪声,导致电压分布和电平随时间下降。生成准确的读取电压可以提高存储器装置的可靠性和寿命。
在数据存储系统中,利用合适的错误恢复系统来保证原始存储数据的几乎完美的恢复是很重要的。错误恢复系统是一套错误校正和检测技术,其不仅用于完美地恢复原始数据,而且还决定了使用哪种技术来满足系统要求,例如吞吐量和服务质量(QoS)。
事实上,固态驱动器(SSD)使用多层NAND闪存装置进行持久存储。然而,多层NAND闪存装置可能本质上不可靠并且通常需要使用错误校正码(ECC)来提高数据可靠性,但却以ECC奇偶校验位的额外存储空间为代价。需要可以提供具有改进的解码性能的数据保护的错误校正。
发明内容
本发明的方面包括一种用于LDPC解码的方法和系统。
在一个方面,提供了一种LDPC解码方法,包括:使用包括多个循环列的准循环矩阵将LDPC码字解码为用户部分和奇偶校验部分。在多个循环列中的循环列的解码包括:a)计算循环列中的变量节点的消息以及属于循环列的校验节点的消息;b)使用计算的消息计算循环冗余校验CRC奇偶校验和校正子;c)基于CRC奇偶校验和校正子,确定LDPC码字的用户部分是否已被正确解码以及LDPC码字的奇偶校验部分是否有错误;以及d)计算第一模式下的位错误率(BER)和第二模式下的位错误率(BER)。第一模式对应于LDPC码字的用户部分已经被正确解码,并且LDPC码字的奇偶校验部分没有错误,第二模式对应于LDPC码字的用户部分已经被正确解码,并且LDPC码字的奇偶校验部分有错误。
在另一方面,提供了一种用于LDPC解码的系统。系统包括数据源;以及控制器,被配置为对来自数据源的数据位信息执行LDPC解码。控制器被配置为:使用准循环矩阵将LDPC码字解码为用户部分和奇偶校验部分;计算准循环矩阵的循环列中的变量节点的第一消息以及属于循环列的校验节点的第二消息;使用计算的第一消息和第二消息计算奇偶校验与校正子;并且计算LDPC码字的奇偶校验部分没有错误的第一模式的位错误率以及LDPC码字的奇偶校验部分有错误的第二模式的位错误率。
通过以下描述,本发明的其它方面将变得显而易见。
附图说明
图1是示出数据处理系统的框图。
图2是示出存储器系统的框图。
图3是示出存储器装置的存储块的电路图。
图4是示出存储器装置的不同类型的单元的状态分布的示图。
图5A是示出多层单元(MLC)的格雷编码(Gray coding)的示例的示图。
图5B是示出多层单元(MLC)的页面的状态分布的示图。
图6A是示出三层单元(TLC)的格雷编码的一个示例的示图。
图6B是示出三层单元(TLC)的页面的状态分布的示图。
图7是示出存储器系统中的错误恢复算法的流程的示图。
图8是示出根据本发明的一个实施例的存储器系统的示图。
图9A示意性地描绘SSD写入数据路径。
图9B描绘示出用户或数据部分以及与用户部分相关联的奇偶校验部分的矩阵。
图10示意性地描绘编码器计算图。
图11描绘根据本发明的一个实施例的准循环矩阵。
图12描绘根据本发明的一个实施例的循环矩阵。
图13是示出根据本发明的一个实施例的位错误率模块的操作的流程图。
具体实施方式
下面参照附图更详细地描述本发明的多种实施例。然而,本发明可以以不同的形式实施并且不应被解释为限于本文阐述的实施例。相反,提供这些实施例是为了使本公开将本发明的范围传达给本领域技术人员。此外,本文对“实施例”、“另一实施例”等的引用不一定仅针对一个实施例,并且对任何这种短语的不同引用不一定针对相同的实施例。如本文所用的术语“实施例”不一定指所有实施例。在整个公开中,相同的附图标记指代本发明的附图和实施例中的相同部件。
本发明可以以多种方式实施,例如包括进程;设备;系统;实现在计算机可读存储介质上的计算机程序产品;和/或处理器,例如适用于运行存储在和/或由联接到处理器的存储器提供的指令的处理器。在本说明书,这些实施方案或本发明可以采取的任何其他形式可以被称为技术。通常,可以在本发明的范围内改变公开进程的操作顺序。除非另有说明,否则被描述为适用于执行任务的、诸如处理器或存储器的组件可以被配置为或以其他方式编程为在给定时间内执行任务的通用装置或电路组件,或者特定装置,或者被制造或被预配置或被预编程为执行任务的电路组件。如本文所使用的,术语“处理器”等是指适用于处理诸如计算机程序指令的数据的一个或多个装置、电路和/或处理内核。
本文所述的方法、进程和/或操作可以通过例如由计算机、处理器、控制器或其他信号处理装置执行的代码或指令来执行。计算机、处理器、控制器或其他信号处理装置可以是本文描述的那些或者可以是除了本文描述的元件之外的计算机、处理器、控制器或其他信号处理装置。因为本文描述了形成该方法(或计算机、处理器、控制器或其他信号处理装置的操作)的基础的算法,所以用于实施该方法的实施例的操作的代码或指令可以将计算机、处理器、控制器或其他信号处理装置转换为用于执行本文中的方法中的任意一个的专用处理器。
如果至少部分以软件实施,则控制器、处理器、装置、模块、单元、多工器、生成器、逻辑、接口、解码器、驱动器和其他信号生成和信号处理设备可以包括例如用于存储待由例如计算机、处理器、微处理器、控制器或其他信号处理装置运行的代码或指令的存储器或其他存储装置。
下面结合示出本发明的方面的附图提供对本发明的多个实施例的具体实施方式。结合这些实施例描述了本发明,但本发明不限于任何特定实施例。本发明包括许多替代方案、修改方案和等效方案。为了提供对本发明的透彻理解,在以下描述中阐述了许多具体细节。提供这些细节是出于示例的目的;可以在没有这些具体细节中的一些或全部的情况下实践本发明。为了清楚,未详细描述与本发明相关的技术领域中已知的技术材料,从而不会不必要地模糊本发明。
半导体存储器装置可以是易失性的或非易失性的。易失性半导体存储器装置以高速执行读取和写入操作,而其中所存储的内容在断电时可能会丢失。非易失性半导体存储器装置即使在断电时也可以保留其中所存储的内容。非易失性半导体存储器装置可以用于存储无论是否通电也必须保留的内容。
随着对大容量存储器装置的需求增加,每单元存储多位数据的多层单元(MLC)或多位存储器装置正变得越来越普遍。然而,MLC非易失性存储器装置中的存储器单元必须具有与有限电压窗口中的四个或更多个可区分数据状态相对应的阈值电压。为了提高非易失性存储器装置中的数据完整性,可以在存储器装置的整个寿命期间调整用于区分数据状态的读取电压的电平和分布,以在读取操作和/或读取尝试期间具有最佳值。
图1是示出根据本发明的一个实施例的数据处理系统2的框图。
参照图1,数据处理系统2可以包括主机装置5和存储器系统10。存储器系统10可以从主机装置5接收请求并响应于接收到的请求而操作。例如,存储器系统10可以存储待由主机装置5访问的数据。
主机装置5可以利用各种类型的电子装置中的任意一种来实施。在多种实施例中,例如,主机装置5可以是诸如以下的电子装置:台式计算机、工作站、三维(3D)电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器和/或数字视频记录器以及数字视频播放器。在多种实施例中,例如,主机装置5可以是诸如以下的便携式电子装置:移动电话、智能电话、电子书、MP3播放器、便携式多媒体播放器(PMP)和/或便携式游戏机。
存储器系统10可以利用诸如固态驱动器(SSD)和存储卡的各种类型的存储装置中的任意一种来实施。在多种实施例中,例如,存储器系统10可以被设置为诸如以下的电子装置中的各种组件中的一种:计算机、超移动个人计算机(UMPC)、工作站、上网本、个人数字助理(PDA)、便携式计算机、网络平板电脑、无线电话、移动电话、智能电话、电子书阅读器、便携式多媒体播放器(PMP)、便携式游戏装置、导航装置、黑盒、数码相机、数字多媒体广播(DMB)播放器、三维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、数据中心的存储装置、能够在无线环境下接收和发送信息的装置、射频识别(RFID)装置以及家庭网络的各种电子装置中的一种、计算机网络的各种电子装置中的一种、远程信息处理网络的各种电子装置中的一种或者计算系统的各种组件中的一种。
存储器系统10可以包括存储器存储器控制器100和半导体存储器装置200。存储器控制器100可以控制半导体存储器装置200的整体操作,包括如下详述的位错误率报告的操作。
半导体存储器装置200可以在存储器控制器100的控制下执行一个或多个擦除操作、编程操作和读取操作。半导体存储器装置200可以通过输入/输出线接收命令CMD、地址ADDR和数据DATA。半导体存储器装置200可以通过电力线接收电力PWR,并且通过控制线接收控制信号CTRL。根据存储器系统10的设计和配置,控制信号CTRL可以包括例如命令锁存使能信号、地址锁存使能信号、芯片使能信号、写入使能信号、读取使能信号以及其它操作信号。
存储器控制器100和半导体存储器装置200可以被集成在诸如固态驱动器(SSD)的单个半导体装置中。SSD可以包括用于将数据存储在其中的存储装置。
存储器控制器100和半导体存储器装置200可以被集成在诸如存储卡的单个半导体装置中。例如,存储器控制器100和半导体存储器装置200可以被集成以配置个人计算机存储卡国际协会(PCMCIA)的个人计算机(PC)卡、紧凑型闪存(CF)卡、智能媒体(SM)卡、记忆棒、多媒体卡(MMC)、减小尺寸的多媒体卡(RS-MMC)、微型尺寸版本的MMC(微型MMC)、安全数字(SD)卡、迷你安全数字(迷你SD)卡、微型安全数字(微型SD)卡、安全数字高容量(SDHC)和/或通用闪存(UFS)。
图2是示出根据本发明的一个实施例的存储器系统的框图。例如,图2的存储器系统可以描绘图1所示的存储器系统10。
参照图2,存储器系统10可以包括存储器控制器100和半导体存储器装置200。存储器系统10可以响应于来自主机装置的请求(例如,来自图1的主机装置5的请求)而操作,并且特别地,存储待由主机装置访问的数据。
半导体存储器装置200可以存储待由主机装置访问的数据。
半导体存储器装置200可以利用诸如动态随机存取存储器(DRAM)和/或静态随机存取存储器(SRAM)的易失性存储器装置或诸如只读存储器(ROM)、掩膜ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、铁电随机存取存储器(FRAM)、相变RAM(PRAM)、磁阻RAM(MRAM)和/或电阻式RAM(RRAM)的非易失性存储器装置来实施。
存储器控制器100可以控制数据在半导体存储器装置200中的存储。例如,存储器控制器100可以响应于来自主机装置的请求而控制半导体存储器装置200。存储器控制器100可以将从半导体存储器装置200读取的数据提供到主机装置,并且可以将从主机装置提供的数据存储到半导体存储器装置200中。
存储器控制器100可以包括通过总线160联接的存储装置110、控制组件120(其可以被实施为诸如中间处理单元(CPU)的处理器)、错误校正码(ECC)组件130、主机接口(I/F)140和存储器接口(I/F)150。
存储装置110可以用作存储器系统10和存储器控制器100的工作存储器,并且存储装置110可以存储用于驱动存储器系统10和存储器控制器100的数据。存储装置10可以存储用于对正在被发送/接收的数据位信息进行编码和/或解码的数据。例如,当存储器控制器100控制半导体存储器装置200的操作时,存储装置110可以存储存储器控制器100和半导体存储器装置200用于进行诸如读取操作、写入操作、编程操作和擦除操作,包括编码和解码的操作的数据。
存储装置110可以利用诸如静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM)的易失性存储器来实施。如上所述,存储装置110可以将主机装置用于读取操作和写入操作的数据存储在半导体存储器装置200中。为了存储数据,存储装置110可以包括程序存储器、数据存储器、写入缓冲器、读取缓冲器、映射缓冲器等。
控制组件120可以响应于来自主机装置的写入请求或读取请求而控制存储器系统10的一般操作,并且控制半导体存储器装置200的写入操作或读取操作。控制组件120可以驱动可以被称为闪存转换层(FTL)的固件或其它程序指令,以控制存储器系统10的一般操作。例如,FTL可以执行诸如逻辑-物理(L2P)映射、损耗均衡、垃圾收集和/或坏块处置的操作。L2P映射被称为逻辑块寻址(LBA)。
在读取操作期间,ECC组件130可以对从半导体存储器装置200读取的数据中的错误进行检测和校正,如下详述。在一个实施例中,当错误位的数量大于或等于可校正错误位的阈值数量时,ECC组件130可以不校正错误位,而是可以输出指示校正错误位失败的错误校正失败信号。
在多种实施例中,ECC组件130可以基于诸如以下的编码调制来执行错误校正操作:低密度奇偶校验(LDPC)码、博斯-查德胡里-霍坤格姆(Bose-Chaudhuri-Hocquenghem,BCH)码、turbo码、turbo乘积码(TPC)、里德-所罗门(RS)码、卷积码、递归系统码(RSC)、网格编码调制(TCM)或分组编码调制(BCM)。因此,ECC组件130可以包括适用于错误校正操作的任何和所有电路、系统或装置。在本发明的一个实施例中,使用准循环LDPC矩阵(以下详述)来进行数据恢复和位错误报告。
主机接口140可以通过诸如以下的各种通信标准或接口中的一种或多种与主机装置通信:通用串行总线(USB)、多媒体卡(MMC)、高速外围组件互连(PCI-e或PCIe)、小型计算机系统接口(SCSI)、串列SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、增强型小磁盘接口(ESDI)和电子集成驱动器(IDE)。
存储器接口150可以提供存储器控制器100和半导体存储器装置200之间的接口,以允许存储器控制器100响应于来自主机装置的请求而控制半导体存储器装置200。存储器接口150可以在控制组件120的控制下生成针对半导体存储器装置200的控制信号并处理数据。在一个实施例中,当半导体存储器装置200是闪速存储器时,例如,是NAND闪速存储器时,存储器接口150可以在控制组件120的控制下生成针对该闪速存储器的控制信号并处理数据。
例如图2所示的半导体存储器装置200可以包括存储器单元阵列210、控制电路220、电压生成电路230、行解码器240、页面缓冲器阵列250(其可以是以页面缓冲器的阵列的形式)、列解码器260以及输入和输出(输入/输出)电路270。存储器单元阵列210可以包括可以存储数据的多个存储块211。电压生成电路230、行解码器240、页面缓冲器阵列250、列解码器260和输入/输出电路270可以形成存储器单元阵列210的外围电路。外围电路可以对存储器单元阵列210执行编程操作、读取操作或擦除操作。控制电路220可以控制外围电路。
电压生成电路230可以生成各种电平的操作电压。例如,在擦除操作中,电压生成电路230可以生成各种电平的操作电压,诸如擦除电压和通过电压。
行解码器240可以与电压生成电路230和多个存储块211电通信。行解码器240可以响应于控制电路220生成的行地址,在多个存储块211之中选择至少一个存储块,并且将从电压生成电路230供应的操作电压传输到所选择的存储块。
页面缓冲器阵列250可以通过位线BL(图3所示)与存储器单元阵列210联接。页面缓冲器阵列250可以响应于控制电路220生成的页面缓冲器控制信号,在编程和读取操作中利用正电压对位线BL进行预充电,将数据传输到所选择的存储块以及从所选择的存储块接收数据,或者临时存储所传输的数据。
列解码器260可以向页面缓冲器阵列250传输数据以及从页面缓冲器阵列250接收数据,或者可以向输入/输出电路270传输数据以及从输入/输出电路270接收数据。
输入/输出电路270可以将从外部装置(例如,图1的存储器控制器100)接收的命令和地址传输到控制电路220,将数据从外部装置传输到列解码器260,或者将数据从列解码器260输出到外部装置。
控制电路220可以响应于命令和地址而控制外围电路。
图3是示出根据本发明的一个实施例的半导体存储器装置的存储块的电路图。例如,图3的存储块可以是图2所示的存储器单元阵列210的存储块211中的任意一个。
参照图3,存储块211可以包括联接到行解码器240的多条字线WL0至WLn-1、漏极选择线DSL和源极选择线SSL。这些线可以平行布置,并且在DSL和SSL之间具有多条字线。
存储块211可以进一步包括分别联接到位线BL0至BLm-1的多个单元串221。每列的单元串可以包括一个或多个漏极选择晶体管DST以及一个或多个源极选择晶体管SST。在所示的实施例中,每个单元串具有一个DST和一个SST。在单元串中,多个存储器单元或存储器单元晶体管MC0至MCn-1可以串联联接在选择晶体管DST和SST之间。存储器单元中的每一个可以形成为多层单元。例如,存储器单元中的每一个可以形成为存储1位数据的单层单元(SLC)。存储器单元中的每一个可以形成为存储2位数据的多层单元(MLC)。存储器单元中的每一个可以形成为存储3位数据的三层单元(TLC)。存储器单元中的每一个可以形成为存储4位数据的四层单元(QLC)。
每个单元串中的SST的源极可以联接到公共源极线CSL,每个DST的漏极可以联接到相应的位线。单元串中的SST的栅极可以联接到SSL,单元串中的DST的栅极可以联接到DSL。不同单元串的存储器单元的栅极可以联接到相应的字线。也就是说,存储器单元MC0的栅极联接到相应的字线WL0,存储器单元MC1的栅极联接到相应的字线WL1,以此类推。联接到特定字线的一组存储器单元可以被称为物理页面。因此,存储块211中的物理页面的数量可以对应于字线的数量。
页面缓冲器阵列250可以包括联接到位线BL0至BLm-1的多个页面缓冲器251。页面缓冲器251可以响应于页面缓冲器控制信号而操作。例如,页面缓冲器251可以在读取或验证操作期间临时存储通过位线BL0至BLm-1接收的数据或感测位线的电压或电流。
在本发明的多种实施例中,存储块211可以包括NAND型闪速存储器单元。然而,存储块211不限于这种单元类型,而是可以包括NOR型闪速存储器单元。存储器单元阵列210可以被实施为组合两种或更多种类型的存储器单元的混合闪速存储器,或者被实施为控制器嵌入在存储器芯片内部的1-NAND闪速存储器。
图4是示出存储器装置的不同类型的单元的状态或编程电压(PV)电平分布的示图。
参照图4,存储器单元中的每一个可以利用诸如以下的特定类型的单元来实施:存储1位数据的单层单元(SLC)、存储2位数据的多层单元(MLC)、存储3位数据的三层单元(TLC)或存储4位数据的四层单元(QLC)。通常,特定存储器装置中的所有存储器单元属于同一类型,但这不是必需的。
SLC可以包括两种状态P0和P1。P0可以表示擦除状态,P1可以表示编程状态。由于SLC可以被设置为两种不同状态中的一种,因此每个SLC可以根据设定的编码方法编程或存储1位。MLC可以包括四种状态P0、P1、P2和P3。在这些状态之中,P0可以表示擦除状态,P1至P3可以表示编程状态。由于MLC可以被设置为四种不同状态中的一种,因此每个MLC可以根据设定的编码方法编程或存储两位。TLC可以包括八种状态P0至P7。在这些状态之中,P0可以表示擦除状态,P1至P7可以表示编程状态。由于TLC可以被设置为八种不同状态中的一种,因此每个TLC可以根据设定的编码方法编程或存储三位。QLC可以包括十六种状态P0至P15。在这些状态之中,P0可以表示擦除状态,P1至P15可以表示编程状态。由于QLC可以被设置为十六种不同状态中的一种,因此每个QLC可以根据设定的编码方法编程或存储四位。
返回参照图2和图3,半导体存储器装置200可以包括多个存储器单元(例如,NAND闪速存储器单元)。存储器单元以行和列的阵列形式布置,如图3所示。每行中的单元连接到字线(例如,WL0),每列中的单元联接到位线(例如,BL0)。这些字线和位线用于读取操作和写入操作。在写入操作期间,在字线被寻址时,在位线提供待写入的数据(“1”或“0”)。在读取操作期间,字线再次被寻址,然后可以从位线获取每个单元的阈值电压。多个页面可以共享属于(即,联接到)同一字线的存储器单元。当存储器单元利用MLC实施时,多个页面包括最高有效位(MSB)页面和最低有效位(LSB)页面。当存储器单元利用TLC实施时,多个页面包括MSB页面、中间有效位(CSB)页面和LSB页面。当存储器单元利用QLC实施时,多个页面包括MSB页面、中间最高有效位(CMSB)页面、中间最低有效位(CLSB)页面和LSB页面。例如,可以使用编码方案(例如,格雷编码)对存储器单元进行编程,以增加诸如SSD的存储器系统10的容量。
图5A是示出多层单元(MLC)的编码的示例的示图。
参照图5A,可以使用设定类型的编码对MLC进行编程。MLC可以具有4种编程状态,包括擦除状态E(或PV0)和第一编程状态PV1至第三编程状态PV3。擦除状态E(或PV0)可以对应于“11”。第一编程状态PV1可以对应于“10”。第二编程状态PV2可以对应于“00”。第三编程状态PV3可以对应于“01”。
在MLC中,如图5B所示,存在2种类型的页面,包括LSB页面和MSB页面。可以应用1或2个阈值以从MLC检索数据。对于MSB页面,单个阈值是VT1。VT1区分第一编程状态PV1和第二编程状态PV2。对于LSB页面,2个阈值包括阈值VT0和阈值VT2。VT0区分擦除状态E和第一编程状态PV1。VT2区分第二编程状态PV2和第三编程状态PV3。
图6A是示出三层单元(TLC)的格雷编码的示例的示图。
参照图6A,可以使用格雷编码对TLC进行编程。TLC可以具有8种编程状态,包括擦除状态E(或PV0)和第一编程状态PV1至第七编程状态PV7。擦除状态E(或PV0)可以对应于“111”。第一编程状态PV1可以对应于“011”。第二编程状态PV2可以对应于“001”。第三编程状态PV3可以对应于“000”。第四编程状态PV4可以对应于“010”。第五编程状态PV5可以对应于“110”。第六编程状态PV6可以对应于“100”。第七编程状态PV7可以对应于“101”。
在TLC中,如图6B所示,存在3种类型的页面,包括LSB页面、CSB页面和MSB页面。可以应用2或3个阈值以从TLC检索数据。对于MSB页面,2个阈值包括区分擦除状态E和第一编程状态PV1的阈值VT0,以及区分第四编程状态PV4和第五编程状态PV5的阈值VT4。对于CSB页面,3个阈值包括VT1、VT3和VT5。VT1区分第一编程状态PV1和第二编程状态PV2。VT3区分第三编程状态PV3和第四编程状态PV4。VT5区分第五编程状态PV5和第六编程状态PV6。对于LSB页面,2个阈值包括VT2和VT6。VT2区分第二编程状态PV2和第三编程状态PV3。VT6区分第六编程状态PV6和第七编程状态PV7。
在如图5A和图6A所述对包括多个存储器单元的存储器阵列进行编程之后,当使用诸如读取阈值电压(也被称为“读取电压电平”或“读取阈值”)的参考电压对存储器阵列执行读取操作时,将存储器单元的电荷电平(例如,存储器单元的晶体管的阈值电压电平)与一个或多个参考电压进行比较以确定各个存储器单元的状态。例如,当将特定的读取阈值施加到存储器阵列时,那些阈值电压电平高于参考电压的存储器单元被导通并被检测为“导通”单元,而那些阈值电压电平低于参考电压的存储器单元被关断并被检测为“关断”单元。因此,每个读取阈值设置在对应于不同编程状态的相邻阈值电压分布窗口之间,使得每个读取阈值可以通过导通或关断存储器单元晶体管来区分这些编程状态。
当使用MLC技术对数据存储装置中的存储器单元执行读取操作时,将存储器单元的阈值电压电平与一个以上的读取阈值电平进行比较,以确定各个存储器单元的状态。失真或重叠的阈值电压分布可能导致读取错误。理想存储器单元阈值电压分布可能会由于例如编程和擦除(P/E)循环、单元间干扰和/或数据保留错误而严重失真或重叠。例如,随着编程/擦除循环增加,不同编程状态的相邻阈值电压分布之间的裕量减小,最终分布重叠。因此,阈值电压落入相邻分布的重叠区域内的存储器单元可能被读取为被编程为不同于原始目标值的值,并因此导致读取错误。在许多情况下,可以通过使用错误校正码(ECC)来管理这种读取错误。当读取操作时位错误数量超过数据存储装置的ECC错误校正能力时,使用设定的读取阈值电压的读取操作失败。设定的读取阈值电压可以是先前使用的读取阈值电压(即,历史读取阈值电压)。历史读取阈值电压可以是上次成功解码中使用的读取阈值电压,即,在读取重试操作之前执行的、读取通过的读取操作中使用的读取电压。当使用设定的读取阈值电压的读取操作失败时,控制组件120可以控制错误恢复算法,例如图7所示的算法。
参照图7,控制组件120可以使用以设定的顺序施加的一个或多个读取阈值电压对存储器单元执行一个或多个读取重试操作(S100)。例如,读取阈值电压可以包括N(例如,N是5或10)个读取阈值电压(或读取电压电平),其包括第一读取阈值电压至第N读取阈值电压。第一读取阈值电压可以是先前使用的读取阈值电压(即,历史读取阈值电压)。历史读取阈值电压可以是上次成功解码中使用的读取阈值电压,即,在读取重试操作之前执行的、读取通过的读取操作中使用的读取电压。控制组件120可以执行读取重试操作,直到确定与相应的读取重试操作相关联的解码成功。
当使用读取阈值电压进行的所有读取重试操作失败时,控制组件120可以执行附加的恢复操作。例如,附加的恢复操作可以包括最佳读取阈值电压搜索(S200)、使用错误校正码(ECC)的软解码(S300)和/或独立磁盘冗余阵列(RAID)恢复(S400)。
如上所述,从数据存储装置(例如,固态驱动器(SSD))中的存储器装置(例如,NAND闪速存储器装置)检索的数据通常包含由于各种噪声源而导致的许多位错误。为了保护数据,在数据被写入存储器装置之前(即,在被写入存储介质之前),通过错误校正码对其进行编码。解码器可以通过使用该错误校正码来校正所有位错误。如图7中的“读取重试”所示,在本发明的一个实施例中,当位错误的数量超过错误校正码的能力时,数据存储装置可以调用特定的防御算法(例如,读取重试操作),以比原始读取操作更好的参数多次读取存储介质,直到数据可以通过错误校正码恢复。在本发明的一个实施例中,如下详述,可以使用不同的读取阈值来更好地读取数据页面。
对于固态驱动器,位错误增加的一个来源是在读取操作期间使用次优读取阈值。估计最佳读取阈值的一种方法(例如,eBoost算法)对同一页面使用不同的读取阈值执行多次附加读取操作,并估计使检索数据中的位错误最小化的最佳读取阈值。这些附加的读取操作可能会增加读取操作的延迟并且可能会降低数据存储装置(或存储器系统)的服务质量(QoS)。
图8是示出根据本发明的一个实施例的存储器系统10的示图。
参照图8,存储器系统10可以包括存储器控制器100和半导体存储器装置200。半导体存储器装置200可以包括多个存储器单元(例如,NAND闪速存储器单元)210。存储器单元如图3所示以行和列的阵列形式布置。每行中的单元连接到字线(例如,WL0),而每列中的单元联接到位线(例如,BL0)。这些字线和位线用于读取操作和写入操作。在写入操作期间,在字线被寻址时,将待写入的数据(“1”或“0”)提供到位线。在读取操作期间,字线再次被寻址,然后可以从位线获取每个单元的阈值电压。多个页面可以共享属于(即,联接到)同一字线的存储器单元。当存储器单元利用MLC实施时,多个页面包括最高有效位(MSB)页面和最低有效位(LSB)页面。当存储器单元利用TLC实施时,多个页面包括MSB页面、中间有效位(CSB)页面和LSB页面。当存储器单元利用QLC实施时,多个页面包括MSB页面、中间最高有效位(CMSB)页面、中间最低有效位(CLSB)页面和LSB页面。可以使用编码方案(例如,格雷编码)对存储器单元进行编程,以增加诸如SSD的存储器系统10的容量。
存储器控制器100可以包括读取处理器810、解码器820和最佳读取阈值确定器830。尽管示出了存储器控制器100的组件是单独实施的,但是这些组件还可以用图2中的控制组件120的内部组件(即,固件(FW))来实施。存储器控制器100和半导体存储器装置200可以包括各种其他组件,例如图2所示的那些组件。
编码和解码数据
直接从存储装置(例如,SSD)中的数据存储介质(例如,NAND闪存)检索的数据通常包含噪声。为了保护数据,在数据被写入另一介质之前,通过错误校正码对其进行编码。编码器的设计对于SSD的读取/写入性能很重要,并且对于将数据读取/写入到其他存储器装置也很重要。在本发明的一个实施例中,ECC模块向固件(FW)提供位错误率(接收序列中的位错误的数量)的反馈,作为NAND闪存质量的衡量标准。
在本发明的一个实施例中,提供了一种用于报告位错误率(BER)的创造性技术,该技术不会导致额外的延迟,并且可以以非常低的成本在硬件上实施(具有少量的额外门数(gate-count))。
在数据存储系统(例如,SSD)中,ECC技术已被用于从存储介质(例如,NAND闪存)上存储的噪声数据中检索和校正数据。当在读取过程中检索存储的数据时,它通常与原始码字不同,不同之处在于它是原始码字的噪声版本。在解码过程中,对噪声的码字进行校正,并将校正后的数据返回给主机装置5。
图9A示出了SSD中的写入数据路径。循环冗余校验(CRC)是一种错误检测代码,通常用于数字网络和存储装置,以检测对原始数据的意外改变。在存储数据之前,主机数据(uh)附加其CRC奇偶校验(u=uh+uCRC)。在附加了CRC奇偶校验之后,使用LDPC编码对数据进行编码,同时也附加了LDPC奇偶校验。如果解码过程中出现意外错误,额外附加的奇偶校验位有助于解码。编码序列(c),被称为码字,如图9A所示,存储在诸如存储器单元阵列210的存储介质中。
如专利号为9,256,487的美国专利(其全部内容通过引用并入本文)中所述,低密度奇偶校验(LDPC)编码于1960年代首次提出,但直到1990年代研究人员开始研究迭代编码和解码技术才被普遍使用。如'487专利中所述,LDPC码是少数已知的能够以接近Shannon极限或信道容量的速率传输信息的错误控制编码技术中的一种。
如′487专利中所述,迭代解码器可以使用迭代消息传递算法,例如,最小和解码算法,对LDPC码进行解码。这些算法可以使用迭代过程对接收到的码字进行解码,其中每个迭代包括两个更新步骤。在第一个更新步骤中,消息可以从一些(或所有)校验节点传递到一些(或所有)变量节点,在第二个更新步骤中,消息可以从一些(或所有)变量节点传递到一些(或所有)校验节点。变量节点可以表示码字u中的每个位置。校验节点可以表示每个校正子(奇偶校验方程)。
如图9A所示,令c为LDPC码字,令u为LDPC码字的用户或数据部分(u=uh+uCRC),令p为用户部分附加的LDPC奇偶校验部分,即c=[u p],令H为LDPC奇偶校验矩阵。
理论上,任何码字c都应该满足LDPC码的所有奇偶校验方程。即:
c·HT=0 (1)
如果LDPC码是系统的,则码字和奇偶校验矩阵的用户部分和奇偶校验部分都可以拆分:
[u p]×[Hu Hp]T=0
因此,LDPC奇偶校验(p)可以计算为:
并令s为来自用户部分的部分校正子/>如图10所示,编码器中的计算可以分为两个阶段。第一阶段计算部分校正子/>第二阶段计算LDPC码字的奇偶校验部分p=sGT。校正子和LDPC奇偶校验的值被存储用于解码。
准循环LDPC码
在本发明的一个实施例中,用于计算奇偶校验部分的矩阵GT是如图11所示的准循环矩阵1100。更具体地,图11是描绘准循环矩阵矩阵GT1100的结构的示意图。GT是由大小为n×n的循环矩阵(此处称为循环列)组成的m×m方阵。时隙是矩阵GT1100的一个区域,可以由循环矩阵1102填充。图11中的模糊区域1104表示矩阵1100中具有全零值的区域。是准循环矩阵GT1100中可以被循环矩阵1102填充的水平时隙数和垂直时隙数。在准循环矩阵GT中总共有/>个时隙。并非所有时隙都被循环矩阵1002占据。
图11所示的矩阵GT1100具有在共享一个行时隙的相邻列中存在连续循环列1102的特殊性质。令Rp定义对应于行权重等于1的行时隙,然后是连续共享行集。例如,在图11中,Rp=[4,0,2,1,3]。集rp表示图11中黑色箭头所示的路径(即,行时隙路径),其中第一个条目“4”表示循环列1102“行4”,它是只有一个循环矩阵的行时隙,因此行权重为1。
循环矩阵表示单位矩阵的循环移位。在循环矩阵/>中,i代表水平时隙索引,j代表垂直时隙索引,k代表循环右移量。例如,如果k=0,则C0是单位矩阵。如果C的大小是3×3矩阵,则C1如图12所示。
DPC解码算法
在本发明的一个实施例中,在硬件中(例如,通过专用集成电路系统),使用在变量节点和校验节点之间传递消息的各种消息传递算法迭代地完成准循环码的LDPC解码。这里,如前所述,变量节点可以表示码字u中的每个位置,校验节点可以表示每个校正子(奇偶校验方程)。在消息传递算法的一个示例中,从变量节点VN传递到校验节点CN的消息可以表示如下的一种概率:给定变量节点的观察值以及在前一轮中从校验节点到接收消息的变量节点传达给VN的所有值的情况下,接收消息的VN具有一定值。另一方面,从校验节点CN传递到变量节点VN的消息可以是如下的一种概率:给定前一轮从接收消息的变量节点VN以外的变量节点传递到校验节点CN的所有消息的情况下,接收消息的变量节点VN具有一定值。例如,假设循环矩阵的大小为m×m,则每个循环列包含m个VN,并且每个循环行包含m个CN。
在本发明的一个实施例中,为了改善解码延迟,在每次迭代中,属于同一循环列的所有变量节点VN的消息被计算并且被并行发送。消息在VN和CN之间传递。即,属于同一循环列的所有变量节点VN的消息被计算并发送到相应的CN。类似地,属于同一循环列的所有校验节点CN的消息是并行处理的。在变量节点和校验节点之间传递的消息通常是实数,其表示这些节点应该是什么值的概率,从而提供了一种校正噪声码字的方法。如果码字改变是正确的,则将校正码字乘以奇偶校验矩阵应该产生先前存储的校正子s=0。
在下面的实施例中,i(0≤i≤imax)表示迭代次数,表示变量节点j在第i次迭代时决定改变它的值并且/>。假设其中y可以是从存储器中检索的数据位值的接收到的噪声通道输入序列。令/>表示迭代i处的校正子,令计算出的d(i)校正子为cs(i)=||s(i)||.,令diffh(x,y)表示序列x,y之间的汉明距离。汉明距离定义了为了产生另一个值而需要改变二进制值的位数。传统的消息传递解码算法的工作原理如下:
步骤0:令i=0,计算s(-1)并计算循环冗余校验CRC奇偶校验进行步骤1;
步骤1:i=i+1,如果达到最大迭代,则停止解码。否则,进行步骤2;
步骤2:如果解码成功,则停止解码。否则,进行步骤3;
步骤3:令ber=0.
步骤4:对于1≤j≤ncirc,其中ncirc是总循环列,
并行计算循环列j中VN的消息
计算与循环列j相对应的CN的消息(QC LDPC的并行消息传递是标准消息传递,CN消息被改变。)
○基于计算消息产生的码字的用户部分中的变化值计算和更新CRC奇偶校验
○计算和更新校正子s(i)
更新位错误率
进行步骤1;
解码在以下模式之一中停止:
模式0:解码失败:LDPC奇偶校验部分无效
第一模式:解码成功:LDPC奇偶校验部分csi=0&CRC有效
第二模式:用CRC解码成功:0<csi&CRC有效
在上述解码算法的步骤3计算的BER等于第一模式中的实际BER。
先前的BER计算方案(如上文所述)只能在第一模式中准确计算BER。换言之,如果解码器能够使用cs(i)=0,有效CRC成功解码码字,则解码器可以将经解码的码字y1和例如从NAND存储装置中检索的噪声通道输入序列y之间的不同位数确定为BER。
本发明的BER伪代码
为第i次解码迭代处理第j循环列之后更新的校正子。令jp为第一奇偶校验循环列的索引,如图9B所示,图9B示出了矩阵中奇偶校验部分的jp第一循环列。
令y为从通道(例如,从NAND存储装置)接收到的噪声序列,令yu为y的用户或数据部分,例如图9B的矩阵中所示的用户部分。令ss=[s1′,s2′]为两个循环大小的校正子快照(snapshot)。即,ss为原始校正子的两个循环行的副本。使用本发明的BER模块的解码算法更新如下:
步骤0:令i=0,计算s(-1)并计算CRC奇偶校验进行步骤1;
步骤1:i=i+1,如果达到最大迭代,则停止解码。否则,进行步骤2;
步骤2:如果解码成功,则停止解码。否则,进行步骤3;
步骤3:令ber=0.
步骤4:对于1≤j≤ncirc,其中ncirc是循环列j中的列数,并行计算循环列j中的VN的消息
○计算对应于循环列j的CN的消息
○基于计算消息产生的码字的用户部分中的变化值计算和更新CRC奇偶校验
○计算和更新校正子s(i)
○如果j<jp
○否则,如果j>jp
■令奇偶校验索引pj=(j-jp-1)
■rj (1) 表示对应于循环列j的校正子快照的两个循环行的索引。例如,对于第一奇偶校验循环列(pj=0),校正子快照为s1′=S4,s2′=S0(校正子的第四循环行和第一循环行为奇偶校验的第一列的校正子快照)
■kj (1),kj (2)=奇偶循环列pj中的行时隙rj (1),rj (2)的循环移位
■如果pj=0,则否则/>
■更新硬决策(s1′的/>循环移位)。在每个变量节点j中,每次迭代中的硬决策为第j位的值的变量节点猜测(决策)。该值通常是使用VN的所有传入消息(包括通道LLR和所有CN消息)的总和来获得。
■更新校正子快照(s1′的/>循环移位))。校正子快照s2′是每次迭代时对应于当前奇偶校验列的校正子的第二行。
■复制s1′=s2′。
■更新进行步骤1;
BER性能
即使解码器处于第二模式意味着用户部分已被正确解码(有效的CRC确认),但码字的奇偶校验部分仍然存在一些错误(csi≠0),本发明的BER模块也能够精确计算BER(解码的码字和噪声通道输入序列之间的不同位数)。在CRC有效确认的情况下,本发明的BER模块可以重新计算正确的奇偶校验,而无需使用复杂的编码器。实际上,由于本发明的BER模块不需要编码器通常需要的附加存储器(寄存器),因此本发明的BER模块不会像没有BER算法的编码器处理所需的那样增加硅门数。此外,由于本发明的BER模块可以与解码并行地计算奇偶校验,因此不会增加额外的延迟。
图13是示出本发明的BER模块的操作的流程图。在1301中,使用准循环矩阵对LDPC码字进行解码。在1303中,计算准循环矩阵的循环列中的变量节点的第一消息以及属于循环列的校验节点的第二消息。在1305中,使用计算的第一消息和第二消息计算奇偶校验和校正子。在1307中,计算码字的奇偶校验部分没有错误的第一模式的位错误率和码字的奇偶校验部分有错误的第二模式的位错误率。
图13中详述的本发明的BER模块的操作提供了一种LDPC解码方法,包括:使用包括多个循环列的准循环矩阵将LDPC码字解码为用户部分和奇偶校验部分。在多个循环列中的特定循环列的解码包括:a)计算循环列中的变量节点的消息以及属于循环列的校验节点的消息;b)使用计算的消息计算循环冗余校验CRC奇偶校验和校正子;c)基于CRC奇偶校验和校正子,确定码字的用户部分是否已正确解码以及码字的奇偶校验部分是否有错误;以及d)计算第一模式和第二模式下的位错误率(BER)。第一模式对应于码字的用户部分已经被正确解码,并且码字的奇偶校验部分没有错误。第二模式对应于码字的用户部分已经被正确解码,并且码字的奇偶校验部分有错误。
在该方法中,准循环矩阵包括大小为m×m的方阵,该方阵包括大小为n×n的方形循环矩阵,该方形循环矩阵部分填充准循环矩阵中的行时隙,其中方形循环矩阵包括循环列。
在该方法中,将至少两个大小为n×n的方形循环矩阵作为连续循环列布置在准循环矩阵的同一行时隙上。
在该方法中,包括准循环矩阵中的连续循环列的方形循环矩阵定义通过准循环矩阵的行路径,其中行路径由与行路径中的每个循环矩阵相关联的行索引ri进行量化。
第二模式下的位错误率(BER)的计算可以包括对准循环矩阵中的循环列进行迭代处理。迭代处理可以包括对两个连续循环列中的两个循环大小校正子快照中的行时隙的循环移位。
该方法可以进一步在迭代处理开始时确定位错误率,并且可以在LDPC码字的用户部分中条目改变为位之后更新位错误率。该方法可以进一步在条目改变之后生成校正子。该方法可以进一步通过计算用户部分和奇偶校验部分的奇偶校验的循环冗余校验CRC来确定用户部分和奇偶校验部分的成功解码。该方法可以进一步在用户部分和奇偶校验部分的成功解码之后,将校正后的数据位信息传输到主机装置。
在本发明的一个实施例中,BER算法可以结合到图2所示的错误校正码(ECC)组件130中。BER算法可以结合到控制电路220中。
在本发明的一个实施例中,提供了一种用于LDPC解码的系统,包括:
数据源(例如,存储器单元阵列210);以及
控制器(例如,控制电路220),被配置为对来自数据源的数据位信息执行LDPC解码,
其中控制器被编程为:
使用准循环矩阵将LDPC码字解码为用户部分和奇偶校验部分;
计算准循环矩阵的循环列中的变量节点的第一消息以及属于循环列的校验节点的第二消息;
使用计算的第一消息和第二消息计算奇偶校验和校正子;以及
计算LDPC码字的奇偶校验部分没有错误的第一模式的位错误率以及LDPC码字的奇偶校验部分有错误的第二模式的位错误率。
此处,在该用于LDPC编码的系统中,准循环矩阵可以包括大小为m×m的方阵,该方阵包括大小为n×n的方形循环矩阵,该方形循环矩阵部分填充准循环矩阵中的行时隙,其中方形循环矩阵包括循环列。在一个实施例中,将至少两个大小为n×n的方形循环矩阵作为连续循环列布置在准循环矩阵的同一行时隙上(例如,如图11所示)。在一个实施例中,包括准循环矩阵中的连续循环列的方形循环矩阵定义通过准循环矩阵的行路径,其中行路径由与行路径中的每个循环矩阵相关联的行索引ri进行量化。
此处,在该用于LDPC编码的系统中,控制器可以被编程为对准循环矩阵中的循环列执行迭代处理。在一个实施例中,迭代处理包括对两个连续循环列的两个循环大小校正子快照中的行时隙的循环移位。
此处,在该用于LDPC编码的系统中,控制器可被编程为在迭代处理开始时确定位错误率,并且在LDPC码字的用户部分中的条目改变为位之后更新位错误率。
此处,在该用于LDPC编码的系统中,控制器可以被编程为在条目改变之后生成校正子。
此处,在该用于LDPC编码的系统中,控制器可以被编程为通过计算用户部分和奇偶校验部分的奇偶校验的循环冗余校验CRC来确定用户部分和奇偶校验部分的成功解码。在一个实施例中,控制器被编程为在用户部分和奇偶校验部分的成功解码之后,将校正后的数据位信息传输到主机装置。
尽管为了清楚和理解的目的已经详细地示出和描述了前述实施例,但是本发明不限于所提供的细节。如本领域技术人员根据前述公开内容将理解的,存在许多实施本发明的替代方式。因此,所公开的实施例是示例性的,而非限制性的。本发明旨在涵盖所公开实施例的所有修改和替代。此外,所公开的实施例可以组合以形成另外的实施例。
实际上,本专利申请文件中描述的主题的实施方案和功能操作可以以包括本说明书中公开的结构及它们的等效结构或者它们中的一个或多个的组合的各种系统、数字电子电路实施,或者以计算机软件、固件或硬件实施。本说明书中描述的主题的实施方案可以被实施为一个或多个计算机程序产品,即,在有形和非暂时性计算机可读介质上编码的计算机程序指令的一个或多个模块由数据处理设备运行或控制数据处理设备的操作。计算机可读介质可以是机器可读存储装置、机器可读存储衬底、存储器装置、影响机器可读传播信号的物质组成或者它们中的一个或多个的组合。术语“数据处理单元”或“数据处理设备”涵盖用于处理数据的所有设备、装置和机器(例如,包括可编程处理器、计算机或者多个处理器或计算机)。除了硬件之外,设备还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一个或多个的组合的代码。
计算机程序(也称为程序、软件、软件应用程序、脚本或代码)可以以任何形式的编程语言(包括编译或解释语言)写入,并且可以以任何形式进行部署,包括被部署为适用于在计算环境中使用的独立程序,或者模块、组件、子例程或其它单元。计算机程序不必与文件系统中的文件相对应。程序可以存储在保存其它程序或数据的文件的一部分(例如,标记语言文档中存储的一个或多个脚本)、专用于所讨论的程序的单个文件或者多个协调文件(例如,存储一个或多个模块、子程序或代码的一部分的文件)中。计算机程序可以被部署为在一台计算机或者在位于一个站点或跨多站点分布并通过通信网络互连的多台计算机上运行。
本说明书中描述的过程和逻辑流程可以由一个或多个可编程处理器执行,该一个或多个可编程处理器运行一个或多个计算机程序,通过对输入数据进行操作并生成数据来执行功能。过程和逻辑流程也可以由专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))执行,并且设备也可以被实施为专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))。
适用于运行计算机程序的处理器,例如,包括通用微处理器和专用微处理器两者,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读取存储器或随机存取存储器或两者接收指令和数据。计算机的基本构件是用于执行指令的处理器以及用于存储指令和数据的一个或多个存储器装置。通常,计算机还将包括用于存储数据的一个或多个大容量存储装置(例如,磁性、磁光盘或光盘),或者可操作地联接以从用于存储数据的一个或多个大容量存储装置(例如,磁性、磁光盘或光盘)接收数据或向其传送数据。然而,计算机不必具有这种装置。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器装置,例如,包括半导体存储器装置(例如,EPROM、EEPROM和闪速存储器装置)。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路。
虽然本专利申请文件包含许多细节,但是这些细节不应被解释为对任何发明或可以要求保护的任何发明的范围的限制,而应被解释为对特定发明的特定实施例可以进行的特定的特征描述。本专利申请文件中单独的实施例的上下文中描述的某些特征也可以以单个实施例的组合来实施。相反,在单个实施例的上下文中描述的各种特征也可以单独地在多个实施例中实施,或者以任何适用的子组合来实施。此外,尽管以上可以将特征描述为以某些组合而起作用,但是在一些情况下,可以从组合中排除组合的一个或多个特征,并且组合可以针对子组合或子组合的变体。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为为了实现理想的效果需要以所示的特定顺序或以连续的顺序执行这些操作,或者需要执行所有示出的操作。此外,本专利申请文件中描述的实施例中的各种系统组件的分离不应被理解为在所有实施例中都需要这种分离。
本专利申请文件只描述了少量的实施方案和示例,并且可以基于本专利申请文件中描述和示出的内容进行其它实施方案、改进和变型。

Claims (20)

1.一种LDPC解码方法,包括:
使用包括多个循环列的准循环矩阵将LDPC码字解码为用户部分和奇偶校验部分;
其中,对所述多个循环列中的循环列的解码包括:
计算所述循环列中的变量节点的消息以及属于所述循环列的校验节点的消息;
使用计算的消息计算循环冗余校验奇偶校验即CRC奇偶校验和校正子;
基于所述CRC奇偶校验和所述校正子,确定所述LDPC码字的用户部分是否已被正确解码以及所述LDPC码字的奇偶校验部分是否有错误;以及
计算第一模式的位错误率即BER和第二模式的BER,
所述第一模式对应于所述LDPC码字的用户部分已经被正确解码,并且所述LDPC码字的奇偶校验部分没有错误,以及
所述第二模式对应于所述LDPC码字的用户部分已经被正确解码,而所述LDPC码字的奇偶校验部分有错误。
2.根据权利要求1所述的方法,其中,所述准循环矩阵包括大小为m×m的方阵,所述方阵包括大小为n×n的方形循环矩阵,所述方形循环矩阵部分填充所述准循环矩阵中的行时隙,所述方形循环矩阵包括所述循环列。
3.根据权利要求2所述的方法,其中,将至少两个大小为n×n的方形循环矩阵作为连续循环列布置在所述准循环矩阵的同一行时隙上。
4.根据权利要求3所述的方法,其中,包括所述准循环矩阵中的连续循环列的所述方形循环矩阵定义通过所述准循环矩阵的行路径,所述行路径由与所述行路径中的每个循环矩阵相关联的行索引ri进行量化。
5.根据权利要求3所述的方法,其中,所述第二模式下的所述位错误率的计算包括对所述准循环矩阵中的循环列进行迭代处理。
6.根据权利要求5所述的方法,其中,所述迭代处理包括对两个所述连续循环列中的两个循环大小校正子快照中的行时隙的循环移位。
7.根据权利要求5所述的方法,进一步包括:
在所述迭代处理开始时确定所述位错误率;以及
在所述LDPC码字的用户部分中条目改变为位之后更新所述位错误率。
8.根据权利要求7所述的方法,进一步包括在所述条目改变之后生成校正子。
9.根据权利要求1所述的方法,进一步包括通过计算所述用户部分和所述奇偶校验部分的奇偶校验的循环冗余校验来确定所述用户部分和所述奇偶校验部分的成功解码。
10.根据权利要求9所述的方法,其中,在所述用户部分和所述奇偶校验部分的成功解码之后,将校正后的数据位信息传输到主机装置。
11.一种用于LDPC解码的系统,包括:
数据源;以及
控制器,对来自所述数据源的数据位信息执行LDPC解码,
其中所述控制器:
使用准循环矩阵将LDPC码字解码为用户部分和奇偶校验部分;
计算准循环矩阵的循环列中的变量节点的第一消息以及属于所述循环列的校验节点的第二消息;
使用计算的第一消息和计算的第二消息计算奇偶校验和校正子;以及
计算所述LDPC码字的奇偶校验部分没有错误的第一模式的位错误率以及计算所述LDPC码字的奇偶校验部分有错误的第二模式的位错误率。
12.根据权利要求11所述的系统,其中所述准循环矩阵包括大小为m×m的方阵,所述方阵包括大小为n×n的方形循环矩阵,所述方形循环矩阵部分填充所述准循环矩阵中的行时隙,其中所述方形循环矩阵包括所述循环列。
13.根据权利要求12所述的系统,其中,将至少两个大小为n×n的方形循环矩阵作为连续循环列布置在所述准循环矩阵的同一行时隙上。
14.根据权利要求13所述的系统,其中,包括所述准循环矩阵中的连续循环列的所述方形循环矩阵定义通过所述准循环矩阵的行路径,其中所述行路径由与所述行路径中的每个循环矩阵相关联的行索引ri进行量化。
15.根据权利要求13所述的系统,其中,所述控制器被编程为对所述准循环矩阵中的循环列执行迭代处理。
16.根据权利要求15所述的系统,其中,所述迭代处理包括对两个所述连续循环列中的两个循环大小校正子快照中的行时隙的循环移位。
17.根据权利要求15所述的系统,其中,所述控制器被编程为:
在所述迭代处理开始时确定所述位错误率;以及
在所述LDPC码字的用户部分中条目改变为位之后更新所述位错误率。
18.根据权利要求17所述的系统,其中,所述控制器被编程为在所述条目改变之后生成校正子。
19.根据权利要求11所述的系统,其中,所述控制器被编程为通过计算所述用户部分和所述奇偶校验部分的奇偶校验的循环冗余校验来确定所述用户部分和所述奇偶校验部分的成功解码。
20.根据权利要求19所述的系统,其中,所述控制器被编程为在所述用户部分和所述奇偶校验部分的成功解码之后,将校正后的数据位信息传输到主机装置。
CN202211338619.4A 2022-04-20 2022-10-28 Crc终止时的准确ber报告 Pending CN116954984A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/724,489 US11770133B1 (en) 2022-04-20 2022-04-20 Exact ber reporting in the presence of CRC termination
US17/724,489 2022-04-20

Publications (1)

Publication Number Publication Date
CN116954984A true CN116954984A (zh) 2023-10-27

Family

ID=88097275

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211338619.4A Pending CN116954984A (zh) 2022-04-20 2022-10-28 Crc终止时的准确ber报告

Country Status (2)

Country Link
US (1) US11770133B1 (zh)
CN (1) CN116954984A (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100907218B1 (ko) * 2007-03-28 2009-07-10 삼성전자주식회사 읽기 레벨 제어 장치 및 그 방법
US8291292B1 (en) 2008-01-09 2012-10-16 Marvell International Ltd. Optimizing error floor performance of finite-precision layered decoders of low-density parity-check (LDPC) codes
JP2011065599A (ja) * 2009-09-18 2011-03-31 Toshiba Corp メモリシステムおよびメモリシステムの制御方法
US10063258B2 (en) * 2016-03-04 2018-08-28 Sandisk Technologies Llc Method and data storage device to estimate a number of errors using convolutional low-density parity-check coding
CN111104044B (zh) * 2018-10-25 2024-04-30 上海宝存信息科技有限公司 数据储存装置及其适应性数据读取方法
US11177830B2 (en) * 2019-09-10 2021-11-16 Samsung Electronics Co., Ltd. Method and apparatus for data decoding in communication or broadcasting system

Also Published As

Publication number Publication date
US11770133B1 (en) 2023-09-26

Similar Documents

Publication Publication Date Title
CN109616148B (zh) 具有解码器的存储器系统、其操作方法和解码器
CN110444246B (zh) 用于存储器系统的相邻辅助校正错误恢复及其方法
CN108073467B (zh) 具有硬信道信息的位翻转ldpc解码算法
CN109428606B (zh) 具有ldpc解码器的存储器系统及其操作方法
KR102257050B1 (ko) 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
CN110275796B (zh) 具有混合解码方案的存储器系统及其操作方法
KR102631407B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
US11481155B2 (en) Controller and operating method thereof
KR102617832B1 (ko) 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
KR20210115961A (ko) Ldpc 디코더 및 그것의 동작 방법
CN111540393B (zh) 用于基于字线分组的读取操作的存储器系统和方法
US11854629B2 (en) System and method for non-parametric optimal read threshold estimation using deep neural network
KR20180123393A (ko) Siso 복호 방법, 디코더 및 반도체 메모리 시스템
CN113936715A (zh) 使用域变换的读取阈值优化系统和方法
CN110569143B (zh) 用于存储器系统的解码器及其方法
CN110277999B (zh) Ldpc解码装置、包括其的存储器系统及其方法
CN112687323A (zh) 具有用于解码的错误减少方案的存储器系统及其操作方法
US11966589B2 (en) Controller and operating method thereof
US11265021B2 (en) Apparatus and method for error recovery in memory system
CN110275844B (zh) 利用自适应阈值解码的存储器系统及其操作方法
CN114255807A (zh) 以先前读取为条件的读取重试阈值优化系统和方法
CN114550785A (zh) 使用元信息自适应地确定读取阈值电压的系统
CN110444245B (zh) 具有混合迭代解码能力的存储器系统及其操作方法
CN114664359A (zh) 用于无附加读取的软解码的系统和方法
US11770133B1 (en) Exact ber reporting in the presence of CRC termination

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