CN115794482A - 用历史解码信息对同一页中的码字进行解码的系统和方法 - Google Patents
用历史解码信息对同一页中的码字进行解码的系统和方法 Download PDFInfo
- Publication number
- CN115794482A CN115794482A CN202211214838.1A CN202211214838A CN115794482A CN 115794482 A CN115794482 A CN 115794482A CN 202211214838 A CN202211214838 A CN 202211214838A CN 115794482 A CN115794482 A CN 115794482A
- Authority
- CN
- China
- Prior art keywords
- soft information
- decoder
- codeword
- storage location
- decoding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 238000012937 correction Methods 0.000 claims description 11
- 230000000694 effects Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
- H03M13/3715—Adaptation to the number of estimated errors or to the channel state
-
- 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/65—Purpose and implementation aspects
- H03M13/6561—Parallelized implementations
-
- 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
-
- 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/25—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
- H03M13/253—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with concatenated 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/63—Joint error correction and other techniques
- H03M13/6325—Error control coding in combination with demodulation
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/45—Soft decoding, i.e. using symbol reliability information
-
- 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/45—Soft decoding, i.e. using symbol reliability information
- H03M13/451—Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
-
- 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/65—Purpose and implementation aspects
- H03M13/6575—Implementations based on combinatorial logic, e.g. Boolean circuits
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供了用于对从非易失性存储设备读取的数据进行解码的系统和方法。一种方法可以包括:使用第一解码器在没有软信息的情况下对从非易失性存储设备的一个存储位置读取的第一码字进行解码,确定所述第一解码器未能解码所述第一码字,使用第二解码器在没有软信息的情况下对所述第一码字进行解码,确定所述第二解码器已成功解码所述第一码字,使用由所述第二解码器生成的解码信息来生成与所述存储位置相关联的软信息,并使用与所述存储位置相关联的所述软信息对来自所述存储位置的后续码字进行解码。所述第二解码器可以比所述第一解码器更强大。
Description
技术领域
本公开涉及对用奇偶校验数据编码的数据进行解码,尤其涉及使用从先前的解码操作生成的软信息对编码的数据进行解码。
背景技术
许多数据通信或存储系统共同的一个问题是数据损坏,例如,由于通信通道或存储系统中的写入/读取过程中的噪声。一种解决数据损坏的技术是使用纠错码(ECC)或前向纠错(FEC)码。ECC和FEC将冗余数据或奇偶校验数据添加到用户数据,以便即使例如在传输过程中引入了许多错误或者存储数据损坏(在所使用的代码的纠错能力范围内),也可以由接收器或读取器恢复用户数据。
多年来,已经开发了许多不同的编码方案,例如汉明码、里德-所罗门码、Turbo码等。目前,低密度奇偶校验(LDPC)码已被广泛使用。但是,所有这些代码都涉及到复杂的计算,使用这些代码的技术仍然需要改进。
发明内容
本公开可以包括一种方法,该方法可以包括:使用第一解码器在没有软信息的情况下对从非易失性存储设备的一个存储位置读取的第一码字进行解码,确定所述第一解码器未能解码所述第一码字,使用第二解码器在没有软信息的情况下对所述第一码字进行解码,确定所述第二解码器已成功解码所述第一码字,使用由所述第二解码器生成的解码信息来生成与所述存储位置相关联的软信息,以及使用与所述存储位置相关联的所述软信息对来自所述存储位置的后续码字进行解码。所述第二解码器可以比所述第一解码器更强大。
在另一个实施例中,提供了一种存储系统控制器,其可以包括:包括第一解码器和第二解码器的多个纠错码(ECC)解码器、ECC解码器控制器和软信息生成器。所述第二解码器可以比所述第一解码器更强大。所述ECC解码器控制器可以被配置为:将从非易失性存储设备的一个存储位置读取的第一码字传送到所述第一解码器,以使所述第一解码器在没有软信息的情况下解码所述第一码字,确定所述第一解码器未能解码所述第一码字,将所述第一码字传送至所述第二解码器,以使所述第二解码器在没有软信息的情况下解码所述第一码字,并确定所述第二解码器已成功解码所述第一码字。所述软信息生成器可以被配置为使用由所述第二解码器生成的解码信息来生成与所述存储位置相关联的软信息。所述多个解码器中的一个解码器可以被配置为使用由所述软信息生成器生成的与所述存储位置相关联的所述软信息来对来自所述存储位置的后续码字进行解码。
在又一个示例性实施例中,本公开还可以包括具有可执行指令的非暂时性机器可读介质。所述可执行指令在被存储控制器执行时,可以使得所述存储控制器:使用第一解码器在没有软信息的情况下对从非易失性存储设备的一个存储位置读取的第一码字进行解码,确定所述第一解码器未能解码所述第一码字,使用第二解码器在没有软信息的情况下对所述第一码字进行解码,确定所述第二解码器已成功解码所述第一码字,使用由所述第二解码器生成的解码信息来生成与所述存储位置相关联的软信息,以及使用与所述存储位置相关联的所述软信息对来自所述存储位置的后续码字进行解码。所述第二解码器可以比所述第一解码器更强大。
附图说明
图1示意性地示出了根据本公开的一个实施例的非易失性存储系统的存储控制器。
图2A、图2B和图2C示意性地示出了根据本公开的一个实施例的NAND闪存单元的阈值电压值的偏移的影响。
图3示意性地示出了根据本公开的一个实施例的非易失性存储设备中的数据存储。
图4示意性地示出了根据本公开的一个实施例的软信息如何存储在内存中。
图5是根据本公开的一个实施例的对从存储位置读取的码字进行解码的过程的流程图。
具体实施方式
现在将参考附图详细描述根据本申请的具体实施例。为了一致性,各个图中的相同元件由相同的附图标记表示。
本公开提供用于对存储在非易失性存储器(NVM)存储设备中的数据进行解码的装置、系统和方法,其中,所述数据被纠错码(ECC)编码。图1示意性地示出了根据本公开的一个实施例的非易失性存储系统的控制器100。存储控制器100可以包括ECC解码器控制器102、多个ECC解码器104.1至104.K、原始数据缓冲器106、解复用器108、复用器110、内存112、软信息获取器114和软信息生成器116。存储控制器100可以用于具有一个或多个非易失性存储设备(例如,NAND设备)的非易失性存储系统中。从非易失性存储设备读取的数据可以接收在原始数据缓冲器106中并且经由解复用器108发送到多个解码器104.1至104.K。原始数据缓冲器106可以包括一个或多个缓冲器模块,并且内存112可以包括一个或多个内存模块。
ECC解码器控制器102可以在硬件电路模块中通过硬件方式实现,或者在中央处理单元(CPU)或图形处理单元(GPU)中通过软件方式实现,或者在软件和硬件的组合中实现。在一些实施例中,当执行读取操作时,ECC解码器控制器102可以接收具有一个或多个参数的ECC任务开始信号。ECC解码器控制器102可以向解复用器108发送信号,以使解复用器108将原始数据缓冲器106中的数据发送到多个ECC解码器104.1至104.K中的一个或多个ECC解码器。
在各种实施例中,多个ECC解码器104中的至少一些可以具有不同的解码能力。例如,功能更强大的解码器可以比功能不强大的解码器纠正更多的错误。为了说明的目的,具有较高索引值的解码器可以比具有较低索引值的解码器功能更强大。例如,解码器104.2可以比解码器104.1更强大,但没有解码器104.3强大,并且解码器104.K可以是多个ECC解码器104.1至104.K中最强大的解码器,其中K是正整数。
多个ECC解码器104.1至104.K可以解码从原始数据缓冲器106接收的数据,且解码后的数据可以经由复用器110输出。在各种实施例中,多个ECC解码器104.1至104.K中的每一个可以被配置为单独地对码字执行解码操作。在对码字的解码操作期间或之后,可以生成解码信息。例如,在对码字成功解码操作结束时,码字的一些位可能从逻辑一(1)翻转到逻辑零(0)(表示为1到0的错误翻转计数或EFC1->0),码字的其他一些位可能从逻辑0翻转到逻辑1(表示为0到1的错误翻转计数或EFC0->1)。这两个错误翻转计数可以是由解码器收集并发送到软信息生成器116的有用的解码信息。
软信息生成器116可以耦合到多个解码器104.1至104.K中的每一个解码器,以接收由解码器在解码操作中生成的解码信息。例如,软信息生成器116可以从ECC解码器控制器102接收指示针对码字的ECC解码任务已成功完成的信号,并且从解码信息生成软信息。在一个实施例中,所生成的软信息可以是错误翻转计数之间的差,其可以由EFC1->0减去EFC0->1(例如,EFC1->0-EFC0->1)表示。所生成的软信息可以被发送到内存112。
从相同存储位置读取的码字可以共享相同的错误特性(例如,非易失性存储设备的存储单元的可靠性随着编程/擦除周期的增加而降低)。例如,非易失性存储设备的页(page)可以是可以被编程(例如,写入)和读取的最小尺寸单元,并且从同一页读取的码字可以共享相同的特性。在软信息生成器116处生成的软信息可以指示从一个存储位置读取的数据是状态1还是状态0更可靠。每个存储位置可以具有相关联的唯一标识符,例如,对于页,该唯一标识符可以是物理页地址(PPA)。所生成的软信息可以与唯一标识符相关联并且用于解码来自相同存储位置的其他码字。
在一些实施例中,每当多个ECC解码器104中的任何一个成功地解码从存储位置读取的码字时,解码信息可以被生成并被发送到软信息生成器116。软信息生成器116可以通过与存储位置相关联的唯一标识符搜索内存112,读取与唯一标识符相关联的现有软信息,使用新生成的解码信息来更新软信息,并且将更新的软信息保存到内存112。
在一个实施例中,可以通过计算错误翻转计数的差的平均值(例如,)来执行软信息的更新,并且两个错误翻转计数的差的平均值可以保存在内存112中。例如,软信息生成器116可以从内存112读取现有的并且使用来自相同存储位置的码字的最近解码的新生成的解码信息来更新该平均值,新 需要说明的是,对第一码字进行解码后,
应当注意,软信息可以由硬件或软件生成。在各种实施例中,软信息生成器116可以以硬件或软件来实现。例如,在一个实施例中,软信息生成器116可以被实现为在处理器中执行的软件。但是在另一个实施例中,软信息生成器116可以以硬件电路来实现。
如果相关的软信息可用,则多个解码器104.1至104.K中的每一个解码器可以使用软信息进行软判决解码。因此,多个解码器104.1至104.K中的每一个解码器也可以耦合到软信息获取器114。当从一个存储位置读取的数据需要被解码时,软信息获取器114可以通过与存储位置相关联的唯一标识符在内存112中搜索软信息,并且如果找到了存储位置的软信息,则从内存112中获取该页的软信息。
应当注意,在一些实施例中,不是由软信息生成器116生成的软信息,例如通过多次从非易失性存储设备读取相同数据而获得的常规软信息,也可以从非易失性存储设备获取并用于软判决解码。例如,在一个实施例中,如果不能从内存112获取软信息,则可以从非易失性存储设备获得常规软信息,并由ECC解码器104.1至104.K中的一个来使用。
存储控制器100可以实现多级和多轮纠错方案。例如,当来自存储位置的多个码字被读入原始数据缓冲器106时,ECC解码器控制器102可以尝试让第一解码器(例如,ECC解码器104.1)对多个码字中的第一码字进行解码。软信息获取器114可以通过与存储位置相关联的唯一标识符来搜索内存112。此时,内存112中可能不存在与存储位置相关联的软信息,并且软信息获取器114可能无法获取用于该存储位置的任何软信息。第一解码器可以在第一解码操作中尝试在没有任何软信息的情况下对第一码字进行解码。
第一解码操作可能失败,并且该失败可以触发第二解码器,该第二解码器可以是下一个更高级别的解码器(例如,ECC解码器104.2)。在一个实施例中,但不是在所有实施例中,软信息获取器114可以再次尝试获取该存储位置的软信息,但是失败。下一个更高级别的解码器可以尝试在没有任何软信息的情况下对第一码字进行解码。如果第二解码器也解码第一码字失败,则可以触发第三解码器以尝试解码第一码字。并且,可以继续触发下一个更高级别的解码器,直到尝试使用最高级别的解码器为止。因此,第一码字可以通过不同级别的解码器尝试进行多轮解码操作。
如果更高级别的解码器中的任何一个成功地解码了该码字,则可以由从该更高级别的解码器收集的解码信息生成软信息。例如,如果第二解码器成功地解码了第一码字,则解码信息(例如,EFC1->0和EFC0->1)可以由第二解码器收集并发送到软信息生成器116。软信息生成器116可以生成与存储位置相关联的软信息并将其发送到内存112。
在一些实施例中,虽然第一码字可以升级到第二解码器(或者如果第二解码器也失败,甚至可以是更高级别的解码器),但是ECC解码器控制器102可以让第一解码器尝试解码多个码字的后续码字(例如,来自同一页的第二码字、第三码字等)。如果第二(或甚至更高级别)解码器通过使用成功地解码了第一码字产生的解码信息生成了软信息,则每当所生成的软信息变得可用时该软信息可以由任何解码器使用以帮助解码后续码字。
例如,如果当第一解码器尝试解码后续码字时,软信息已经生成并且可以从内存112获得,则第一解码器可以使用软信息成功地解码后续码字。然而,如果软信息仍然不能从内存112获得,则第一解码器可能无法解码后续码字,并且后续码字可能被升级到第二解码器。此时,与存储位置相关联的软信息可以已经生成并保存在内存112中,并且软信息获取器114可以成功地获取软信息。第二解码器现在可以利用与存储位置相关联的软信息成功地对后续码字进行解码。
如果在软信息可用之后,解码器仍然解码后续码字失败,该失败可以触发下一个更高级别的解码器尝试用软信息对后续码字进行解码,并且这种升级到下一个更高级别的解码器可继续,直到解码器可用软信息对后续码字进行解码。
每当解码器成功解码后续码字时,解码信息可由该解码器收集并发送到软信息生成器116。软信息生成器116可以从内存112读取在解码后续码字中使用的软信息并更新该软信息,例如通过使用最近成功的解码操作中的错误翻转计数的新值来计算或更新错误翻转计数的差的平均值的方式(例如,)。通过使用与存储位置相关联的软信息来解码(一个或多个)后续码字,可以更快地解码(一个或多个)后续码字。
在一个实施例中,存储控制器100可以是非易失性存储系统(例如但不限于固态驱动器(SSD))100的控制器。此外,在一个实施例中,ECC解码器控制器102、多个ECC解码器104、原始数据缓冲器106、解复用器108、复用器110、软信息获取器114和软信息生成器116可以集成在一个存储系统控制器芯片(例如,集成电路(IC)芯片),而内存112可以耦合到存储系统控制器芯片。在另一个实施例中,内存112也可以集成到存储控制器芯片100中。
用于存储软信息的内存112可以是静态随机存取存储器(SRAM),双倍数据速率RAM,或MRAM,或者可以是读取延迟比NAND设备短得多的任何存储器。因此,相较于从NAND设备获得软信息的常规方法,例如,通过从NAND设备重新读取数据,实施例中可以更快地从内存112获得软信息。此外,在至少一个实施例中,从内存112中获取软信息和从NAND设备读取原始数据可以被同时执行,因为它们来自不同的路径而且这些操作可以并行。例如,当页中的数据被读入原始数据缓冲器106时,ECC解码器控制器102可以向软信息获取器114发送信号以开始搜索和读取与页相关联的软信息。并行性可以帮助避免从NAND设备读取任何软信息的开销。
图2A、图2B和图2C示意性地示出了根据本公开的一个实施例的NAND闪存单元的阈值电压值的偏移效果以及来自一个码字的软信息可以如何应用于同一页的其他码字。图2A、图2B和图2C中的横轴可以是NAND设备中的存储单元的阈值电压。图2A、图2B和图2C中的纵轴可以是存储单元的阈值电压的概率分布函数。
图2A中的曲线202可以指示第一逻辑状态(例如,逻辑一)的读出。图2A中的曲线204可以指示第二逻辑状态(例如,逻辑零)的读出。本文中使用的读出可以指代任何给定的单元的读出电压,并且可以通过将该读出电压与参考电压Vref进行比较来给任何给定的位分配逻辑状态。
如在图2A中所示,曲线202可以具有延伸超过参考电压Vref的尾部208进入可以被视为处于第二逻辑状态的区域,并且曲线204可以具有延伸超过参考电压Vref的尾部206进入可以被认为处于第一逻辑状态的区域。即,对于读出在尾部206中的位的正确逻辑状态可以是第二逻辑状态,但是因为这些位阈值电压小于参考电压Vref,所以它们可以被认为是第一逻辑状态。同时,对于读出在尾部208中的位的正确逻辑状态可以是第一逻辑状态,但是因为这些位阈值电压大于参考电压Vref,所以它们可以被视为第二逻辑状态。
在实施例中,在解码操作期间,可以校正被错误标记的位。也就是说,读出位于206部分的位可能被错误的标记为逻辑状态一并且在解码操作中被翻转为逻辑状态二,读出位于208部分的位可能被错误的标记为逻辑状态二并且在解码操作中被翻转为逻辑状态一。当阈值电压不偏移时,如在图2A中一样,尾部206和208的大小可以接近,并且从逻辑状态一到逻辑状态二的校正次数可以接近从逻辑状态二到逻辑状态一校正次数。
在各种实施例中,单元的阈值电压可以偏移。例如,随着使用的增加(例如,增加的P/E周期),单元的阈值电压可能趋于向右偏移。也就是说,参考电压Vref可能不在尾部206和208的大小接近的良好位置。图2B示出了逻辑状态一的阈值电压可以向右稍微偏移,因此,图2A的曲线202变为图2B中的曲线202A。逻辑状态一的阈值电压的右移可导致图2A的尾部208变为图2B中的尾部208A。因为曲线202A的偏移是向右的,所以在图2B中,尾部208A可以大于尾部208,因此尾部208A可以大于尾部206。也就是说,在图2B中,读出电压在尾部208A中的位可以比读出电压在尾部206中的位更多。
阈值电压偏移的影响是两个逻辑状态之间可能存在不平衡的校正。在至少一个实施例中,可以使用两个翻转计数。一个码字的一个解码操作过程中,一个翻转计数可以记录从第一逻辑状态翻转到第二逻辑状态(例如,“1”到“0”)有多少位,而另一个翻转计数可以记录从第二逻辑状态翻转到第一逻辑状态(例如,“0”至“1”)有多少位。两个翻转计数的计数之间的差可以提供关于NAND设备的额外信息,其可以用于改善ECC解码性能。
例如,在图2B中,逻辑状态一的阈值电压可以被偏移到更高,并且逻辑状态二(例如,逻辑0)到逻辑状态一(例如,逻辑1)的翻转计数可以大于从逻辑状态一(例如,逻辑1)到逻辑状态二(例如,逻辑0)的翻转计数。基于翻转计数之间的差,可以将具有读出值为逻辑状态一的位和具有读出值为逻辑状态二的位赋予不同的可靠级别。例如,对于来自物理位置的数据,如果软信息指示从逻辑状态二到逻辑状态一(例如,逻辑0到1翻转)的翻转比从逻辑状态一到逻辑状态二(例如,逻辑1到0翻转)的翻转多,那么逻辑状态一可以是可靠的,并且具有逻辑状态一的读出值的位(例如,逻辑1)可以比具有逻辑状态二的读出值的位(例如,逻辑0)更加可靠。
应当注意,图2B示出了一个逻辑状态的阈值电压被偏移到较大的示例。图2C示出了逻辑状态的阈值电压向左偏移(例如变小)的另一示例,因此,图2A的曲线202变为图2C中的曲线202B。逻辑状态一的阈值电压的左移可能导致图2A的尾部208变为图2C中的尾部208B。因为曲线202B的偏移是向左的,所以在图2C中,尾部208B可以小于尾部208,因此尾部208B可以小于尾部206。即,在图2C中,读出电压在尾部208B中的位可以比读出电压在尾部206的位的数量更少。
因为图2C中,逻辑状态一的阈值电压可以被偏移到更低,逻辑状态二翻转到逻辑状态一(例如,逻辑0到逻辑1翻转)的翻转计数可以小于从逻辑状态一翻转到逻辑状态二(例如,逻辑1到逻辑0翻转)的翻转计数。在图2C的示例中,读出值处于逻辑状态二的位(例如,逻辑0)可能比读出值处于逻辑状态一的位(例如,逻辑1)更可靠。
在一些实施例中,可以为选择一个预定参考值。通过将与预定参考值进行比较,可以对位值0和位值1给出不同的可靠级别。如果则位值0比位值1更可靠,并且差的大小可以指示位值0比位值1更可靠的程度。如果则位值1比位值0更可靠,并且差的大小可以指示位值1比位值0更可靠的程度。
应当注意,图2B和图2C中的阈值电压偏移仅是示例性的示例。在一些其他实施例中,逻辑状态二的阈值电压也可以向左或向右偏移。此外,曲线202和204的形状可以在偏移期间改变,例如,曲线202和/或204可以变得更低、更宽或两者皆有。
图3示意性地示出了根据本公开的一个实施例的非易失性存储设备300中的数据存储。典型的非易失性存储设备可以包括一个或多个颗粒(die),并且每个颗粒可以包括多个平面(plane)。非易失性存储设备300可以包括两个颗粒302.1和302.2,并且颗粒302.1和302.2中的每一个可以包括多个平面304.1至304.N,其中N是正整数。平面(例如,304.1)可以包括寄存器306和多个块(block)(例如,308.1至308.M)。每个块可以包括多个页(page)310。作为示例,一个颗粒可以包括4个平面(例如,N为4),每个平面可以包括2048块(例如,M为2048),并且每个块可以包括64页。一页可以包括多个码字,通常为4或8,但可以是另一个正整数。
图3中的示例示出了包含四个码字(例如,码字0(CW0)、码字1(CW1)、码字2(CW2)和码字3(CW3))的页310。每个码字可以包括用户数据和ECC数据(例如,阴影部分)。在一个实施例中,16KB的NAND页可以具有四个ECC码字,并且每个码字可以包含4KB的用户数据。由于NAND设备的页是可以被编程的最小尺寸单元,因此相同NAND页中的码字可以共享相同的错误特性(例如,随着PE周期的增加,底层NAND闪存单元的可靠性降低)。因此,从解码一个码字获得的可靠性软信息可用于解码同一页的其他码字。
图4示意性地示出了根据本公开的一个实施例中的如何将软信息存储在内存112中。在各种实施例中,内存112可以使用与每个存储位置相关联的唯一标识符作为索引保存不同的存储位置的软信息(例如,)。在存储位置是页的实施例中,物理页地址(PPA)可以用作唯一标识符。
在一些实施例中,由于尺寸限制,内存112可能不能够保持非易失性存储系统的非易失性存储设备的所有存储位置的软信息。也就是说,如果需要保存许多物理位置的软信息,则所需的内存大小可能会超过内存112的大小。在一些实施例中,可以使用缓存方法。例如,相比于保存用于所有NAND存储位置的软信息,可以将用于NAND存储位置的子集(例如,T页)的软信息保存在内存112中。有多种选择T个存储位置的方法。可以使用任何现有或将来开发的缓存算法。例如,这些T个存储位置可以是最近读取或最近有错误的存储位置。或者最近最少使用(LRU)的条目可以会被刷新。在一些实施例中,内存112还可以一起存储这些存储位置的唯一标识符和软信息。。
图5是根据本公开的一个实施例的对从存储位置读取的码字进行解码的过程500的流程图。在框502中,从非易失性存储设备的存储位置读取的第一码字可以使用第一解码器在没有软信息的情况下解码。例如,ECC解码器控制器102可以指示将第一码字发送到第一解码器(例如,ECC解码器104.1)以使得第一码字被第一解码器解码。软信息获取器114可以在内存112中搜索软信息,该软信息可以帮助解码来自该存储位置的码字,但是没有找到与该存储位置相关联的任何软信息。第一解码器可以尝试在没有软信息的情况下对第一码字进行解码。
在框504中,可以确定第一解码器解码第一码字失败,并且在框506中,可以使用第二解码器在没有软信息情况下解码第一码字。例如,第一解码器可以解码第一码字失败,并且该失败可以使第一码字被发送到第二解码器(例如,ECC解码器104.2),该第二解码器可以比第一解码器更强大。此时,内存112仍然没有与存储位置相关联的软信息。第二解码器可以尝试在没有软信息的情况下对第一码字进行解码。
在框508中,可以确定第二解码器已经成功地解码第一码字,并且在框510中,可以使用由第二解码器生成的解码信息来生成与存储位置相关联的软信息。例如,第二解码器可以在第二解码操作中成功地对第一码字进行解码,并生成解码信息,例如,0到1的错误翻转计数和1到0的错误翻转计数。解码信息可以被发送到软信息生成器116。软信息生成器116可以生成软信息,例如EFC1->0减去EFC0->1(例如,EFC1->0-EFC0->1),以指示一种状态是否可能比另一种状态更可靠以及可靠的程度。
在框512中,可以使用与存储位置相关联的软信息来解码来自存储位置的后续码字。每当与存储位置相关联的软信息被生成并且被保存到内存112时,它变得可用于解码来自相同物理位置的任何后续码字。例如,如果在软信息变得可用之后第一解码器尝试解码后续码字,则软信息获取器114可以获取软信息并将其馈送到第一解码器,并且第一解码器可以使用软信息成功地解码后续码字。因为从相同的存储位置(例如,相同的页)读取的码字可以共享相同的错误特性,所以第一解码器(例如,功能较弱的解码器)可以用软信息来解码从相同位置读取的后续码字。然而,如果当软信息变得可用时,后续码字已经从第一解码器升级到较高级解码器,则软信息获取器114可以获取软信息并将其馈送到更高级别的解码器,更高级别的解码器可以使用软信息来成功地解码后续码字。
实施例中公开的上述方法(包括方法500)可以通过软件(例如,可执行计算机处理器(例如,中央处理器单元(CPU)、图形处理器单元(GPU)或两者))、硬件(例如,现场可编程门阵列(FPGA)或专用IC(ASIC))、固件或三者的任何合适组合来实现。
在另一个实施例中,例如,所公开的方法和操作中的一些或全部可以在包括存储在一个或多个计算机可读存储介质上的计算机可执行指令的软件中实现。一个或多个计算机可读存储介质可以包括非暂时性计算机可读介质(例如可移动或不可移动磁盘、磁带或盒式磁带、固态驱动器(SSD)、混合硬盘驱动器、CD-ROM、CD-RW、DVD或任何其他有形存储介质)、易失性存储组件(例如DRAM或SRAM)或非易失性存储组件(例如硬盘))。可以通过计算机处理器(例如,CPU、GPU或两者)在计算机(例如,任何商用计算机,包括智能电话或包括计算机硬件的其他移动设备)上执行计算机可执行指令。
在一个示例性实施例中,提供了一种方法,该方法可以包括:使用第一解码器在没有软信息的情况下对从非易失性存储设备的一个存储位置读取的第一码字进行解码,确定所述第一解码器未能解码所述第一码字,使用第二解码器在没有软信息的情况下对所述第一码字进行解码,确定所述第二解码器已成功解码所述第一码字,使用由所述第二解码器生成的解码信息来生成与所述存储位置相关联的软信息,以及使用与所述存储位置相关联的所述软信息对来自所述存储位置的后续码字进行解码。所述第二解码器可以比所述第一解码器更强大。
在一个实施例中,所述方法还可以包括在内存中搜索软信息,并且,确定不存在软信息可供所述第一解码器用于解码所述第一码字。
在一个实施例中,所述方法还可以包括使用所述存储位置的唯一标识符作为索引将与所述存储位置相关联的软信息存储到内存中,以及读取与所述存储位置相关联的软信息,以用于解码所述后续码字。
在一个实施例中,所述方法还可以包括使用通过解码所述后续码字而生成的解码信息来更新与所述存储位置相关联的所述软信息。
在一个实施例中,所述存储位置可以是页,所述唯一标识符可以是物理页地址(PPA)。
在一个实施例中,所述软信息可以指示一个逻辑状态是否比另一逻辑状态更可靠,并且被呈现为状态1到状态0的错误翻转计数与状态0到状态1的错误翻转计数之间的差。
在一个实施例中,所述方法还可以包括利用缓存算法将与所述存储位置相关联的所述软信息缓存在内存中。
在另一个实施例中,提供了一种存储系统控制器,其可以包括:包括第一解码器和第二解码器的多个纠错码(ECC)解码器、ECC解码器控制器和软信息生成器。所述第二解码器可以比所述第一解码器更强大。所述ECC解码器控制器可以被配置为:将从非易失性存储设备的一个存储位置读取的第一码字传送到所述第一解码器,以使所述第一解码器在没有软信息的情况下解码所述第一码字,确定所述第一解码器未能解码所述第一码字,将所述第一码字传送至所述第二解码器,以使所述第二解码器在没有软信息的情况下解码所述第一码字,并确定所述第二解码器已成功解码所述第一码字。所述软信息生成器可以被配置为使用由所述第二解码器生成的解码信息来生成与所述存储位置相关联的软信息。所述多个解码器中的一个解码器可以被配置为使用由所述软信息生成器生成的与所述存储位置相关联的所述软信息来对来自所述存储位置的后续码字进行解码。
在一个实施例中,所述存储系统控制器还可以包括软信息获取器,所述软信息获取器被配置为在内存中搜索软信息并且确定不存在软信息可供所述第一解码器用于解码所述第一码字。
在一个实施例中,所述存储系统控制器还可以包括软信息获取器。所述软信息生成器还可以被配置为使用所述存储位置的唯一标识符作为索引将与所述存储位置相关联的所述软信息存储到内存,并且其中,所述软信息获取器被配置为读取与所述存储位置相关联的所述软信息,以用于解码所述后续码字。
在一个实施例中,所述软信息生成器还可以被配置为使用通过对所述后续码字进行解码而生成的解码信息来更新与所述存储位置相关联的所述软信息。
在一个实施例中,所述存储位置可以是页,所述唯一标识符可以是物理页地址(PPA)。
在一个实施例中,与存储位置相关联的软信息可以指示一个逻辑状态是否比另一个逻辑状态更可靠,并且被呈现为状态1到状态0的错误翻转计数与状态0到状态1的错误翻转计数之间的差。
在一个实施例中,所述存储系统控制器还可以为内存,所述内存被配置为利用缓存算法对与所述存储位置相关联的所述软信息进行缓存。
在又一示例性实施例中,本公开还可以包括具有可执行指令的非暂时性机器可读介质。所述可执行指令在被存储控制器执行时,可以使得所述存储控制器:使用第一解码器在没有软信息的情况下对从非易失性存储设备的一个存储位置读取的第一码字进行解码,确定所述第一解码器未能解码所述第一码字,使用第二解码器在没有软信息的情况下对所述第一码字进行解码,确定所述第二解码器已成功解码所述第一码字,使用由所述第二解码器生成的解码信息来生成与所述存储位置相关联的软信息,以及使用与所述存储位置相关联的所述软信息对来自所述存储位置的后续码字进行解码。所述第二解码器可以比所述第一解码器更强大,
在一个实施例中,所述可执行指令在由所述存储控制器执行时,还可以使得所述存储控制器在内存中搜索软信息并且确定不存在软信息可供所述第一解码器用于解码所述第一码字。
在一个实施例中,所述可执行指令在由存储控制器执行时,还可以使得存储控制器使用所述存储位置的唯一标识符作为索引将与所述存储位置相关联的软信息存储到内存中,并且读取与所述存储位置相关联的软信息,以用于解码所述后续码字。
在一个实施例中,所述可执行指令在由所述存储控制器执行时,还可以使得所述存储控制器使用通过对所述后续码字进行解码而生成的解码信息来更新与所述存储位置相关联的所述软信息。
在一个实施例中,所述存储位置可以是页,所述唯一标识符可以是物理页地址(PPA)。
在一个实施例中,所述软信息可以指示一个逻辑状态是否比另一逻辑状态更可靠,并且被呈现为状态1到状态0的错误翻转计数与状态0到状态1的错误翻转计数之间的差。
可以针对任何类型的ECC码来实现根据本公开的实施例,例如但不限于,矩形奇偶校验、LDPC和汉明码。
尽管本文已经公开了各个方面和实施例,但是其他方面和实施例对于本领域技术人员将是显而易见的。本文所公开的各个方面和实施例是出于说明的目的,而不是旨在进行限制,真实的范围和精神由所附权利要求书指示。
Claims (20)
1.一种方法,其特征在于,包括:
使用第一解码器在没有软信息的情况下对从非易失性存储设备的一个存储位置读取的第一码字进行解码;
确定所述第一解码器未能解码所述第一码字;
使用第二解码器在没有软信息的情况下对所述第一码字进行解码,所述第二解码器比所述第一解码器更强大;
确定所述第二解码器已成功解码所述第一码字;
使用由所述第二解码器生成的解码信息来生成与所述存储位置相关联的软信息;以及
使用与所述存储位置相关联的所述软信息对来自所述存储位置的后续码字进行解码。
2.如权利要求1所述的方法,其特征在于,还包括在内存中搜索软信息,并且,确定不存在软信息可供所述第一解码器用于解码所述第一码字。
3.如权利要求1所述的方法,其特征在于,还包括:
使用所述存储位置的唯一标识符作为索引将与所述存储位置相关联的软信息存储到内存中;以及
读取与所述存储位置相关联的软信息,以用于解码所述后续码字。
4.如权利要求3所述的方法,其特征在于,还包括使用通过解码所述后续码字而生成的解码信息来更新与所述存储位置相关联的所述软信息。
5.如权利要求3所述的方法,其特征在于,所述存储位置是页,并且所述唯一标识符是物理页地址(PPA)。
6.如权利要求1所述的方法,其特征在于,所述软信息指示一个逻辑状态是否比另一逻辑状态更可靠,并且被呈现为状态1到状态0的错误翻转计数与状态0到状态1的错误翻转计数之间的差。
7.如权利要求1所述的方法,其特征在于,还包括利用缓存算法将与所述存储位置相关联的所述软信息缓存在内存中。
8.一种存储系统控制器,其特征在于,包括:
多个纠错码(ECC)解码器,所述多个ECC解码器包括第一解码器和第二解码器,所述第二解码器比所述第一解码器更强大;
ECC解码器控制器,所述ECC解码器控制器被配置为:
将从非易失性存储设备的一个存储位置读取的第一码字传送到所述第一解码器,以使所述第一解码器在没有软信息的情况下解码所述第一码字,
确定所述第一解码器未能解码所述第一码字;
将所述第一码字传送至所述第二解码器,以使所述第二解码器在没有软信息的情况下解码所述第一码字;以及
确定所述第二解码器已成功解码所述第一码字;以及
软信息生成器,所述软信息生成器被配置为使用由所述第二解码器生成的解码信息来生成与所述存储位置相关联的软信息,其中所述多个解码器中的一个解码器被配置为使用与所述存储位置相关联的所述软信息来对来自所述存储位置的后续码字进行解码。
9.如权利要求8所述的存储系统控制器,其特征在于,还包括软信息获取器,所述软信息获取器被配置为在内存中搜索软信息并且确定不存在软信息可供所述第一解码器用于解码所述第一码字。
10.如权利要求8所述的存储系统控制器,其特征在于,还包括软信息获取器,其中,所述软信息生成器还被配置为使用所述存储位置的唯一标识符作为索引将与所述存储位置相关联的所述软信息存储到内存,并且其中,所述软信息获取器被配置为读取与所述存储位置相关联的所述软信息,以用于解码所述后续码字。
11.如权利要求10所述的存储系统控制器,其特征在于,所述软信息生成器还被配置为使用通过对所述后续码字进行解码而生成的解码信息来更新与所述存储位置相关联的所述软信息。
12.如权利要求10所述的存储系统控制器,其特征在于,所述存储位置是页,并且所述唯一标识符是物理页地址(PPA)。
13.如权利要求8所述的存储系统控制器,其特征在于,与所述存储位置相关联的所述软信息指示一个逻辑状态是否比另一个逻辑状态更可靠,并且被呈现为状态1到状态0的错误翻转计数与状态0到状态1的错误翻转计数之间的差。
14.如权利要求8所述的存储系统控制器,其特征在于,还包括内存,所述内存被配置为利用缓存算法对与所述存储位置相关联的所述软信息进行缓存。
15.一种具有可执行指令的非暂时性机器可读介质,其特征在于,所述可执行指令在由存储控制器执行时使得所述存储控制器执行以下操作:
使用第一解码器在没有软信息的情况下对从非易失性存储设备的一个存储位置读取的第一码字进行解码;
确定所述第一解码器未能解码所述第一码字;
使用第二解码器在没有软信息的情况下对所述第一码字进行解码,所述第二解码器比所述第一解码器更强大;
确定所述第二解码器已成功解码所述第一码字;
使用由所述第二解码器生成的解码信息来生成与所述存储位置相关联的软信息;以及
使用与所述存储位置相关联的所述软信息对来自所述存储位置的后续码字进行解码。
16.如权利要求15所述的非暂时性机器可读介质,其特征在于,所述可执行指令在由所述存储控制器执行时还使得所述存储控制器在内存中搜索软信息并且确定不存在软信息可供所述第一解码器用于解码所述第一码字。
17.根据权利要求15所述的非暂时性机器可读介质,其特征在于,所述可执行指令在由存储控制器执行时还使得所述存储控制器执行以下操作:
使用所述存储位置的唯一标识符作为索引将与所述存储位置相关联的软信息存储到内存中;以及
读取与所述存储位置相关联的软信息,以用于解码所述后续码字。
18.如权利要求17所述的非暂时性机器可读介质,其特征在于,所述可执行指令在由所述存储控制器执行时还使得所述存储控制器使用通过对所述后续码字进行解码而生成的解码信息来更新与所述存储位置相关联的所述软信息。
19.如权利要求17所述的非暂时性机器可读介质,其特征在于,所述存储位置是页,并且所述唯一标识符是物理页地址(PPA)。
20.如权利要求15所述的非暂时性机器可读介质,其特征在于,所述软信息指示一个逻辑状态是否比另一逻辑状态更可靠,并且被呈现为状态1到状态0的错误翻转计数与状态0到状态1的错误翻转计数之间的差。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/492,730 US11569847B1 (en) | 2021-10-04 | 2021-10-04 | Systems and methods for decoding codewords in a same page with historical decoding information |
US17/492,730 | 2021-10-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794482A true CN115794482A (zh) | 2023-03-14 |
Family
ID=85040591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211214838.1A Pending CN115794482A (zh) | 2021-10-04 | 2022-09-30 | 用历史解码信息对同一页中的码字进行解码的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11569847B1 (zh) |
CN (1) | CN115794482A (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6526531B1 (en) * | 2000-03-22 | 2003-02-25 | Agere Systems Inc. | Threshold detection for early termination of iterative decoding |
US8255763B1 (en) * | 2006-11-08 | 2012-08-28 | Marvell International Ltd. | Error correction system using an iterative product code |
US8429498B1 (en) * | 2009-03-25 | 2013-04-23 | Apple Inc. | Dual ECC decoder |
US8443267B2 (en) * | 2009-04-28 | 2013-05-14 | Lsi Corporation | Systems and methods for hard decision assisted decoding |
US8627175B2 (en) * | 2010-09-27 | 2014-01-07 | Seagate Technology Llc | Opportunistic decoding in memory systems |
US8826096B2 (en) * | 2011-12-29 | 2014-09-02 | Korea Advanced Institute Of Science And Technology | Method of decoding LDPC code for producing several different decoders using parity-check matrix of LDPC code and LDPC code system including the same |
US9214964B1 (en) * | 2012-09-24 | 2015-12-15 | Marvell International Ltd. | Systems and methods for configuring product codes for error correction in a hard disk drive |
US11515897B2 (en) * | 2015-05-29 | 2022-11-29 | SK Hynix Inc. | Data storage device |
US20200127685A1 (en) * | 2018-10-19 | 2020-04-23 | Nyquist Semiconductor Limited | Systems and methods for a hybrid non-volatile storage system |
-
2021
- 2021-10-04 US US17/492,730 patent/US11569847B1/en active Active
-
2022
- 2022-09-30 CN CN202211214838.1A patent/CN115794482A/zh active Pending
- 2022-12-12 US US18/079,738 patent/US11936403B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11569847B1 (en) | 2023-01-31 |
US11936403B2 (en) | 2024-03-19 |
US20230107784A1 (en) | 2023-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10437668B2 (en) | Memory controller, memory system, and method for controlling memory system | |
US9214965B2 (en) | Method and system for improving data integrity in non-volatile storage | |
US9329928B2 (en) | Bandwidth optimization in a non-volatile memory system | |
US8464134B2 (en) | Method and apparatus for error correction according to erase counts of a solid-state memory | |
KR101990971B1 (ko) | 메모리, 메모리 시스템, 및 메모리에 대한 에러 검출/정정 방법 | |
US10574272B2 (en) | Memory system | |
US20110167318A1 (en) | Reading method of a memory device with embedded error-correcting code and memory device with embedded error-correcting code | |
KR20220080589A (ko) | Ecc 디코딩을 수행하는 ecc 엔진, 이의 동작 방법 및 ecc 엔진을 포함하는 스토리지 장치 | |
US11695434B2 (en) | Systems and methods for decoding error correcting codes with historical decoding information | |
US11843393B2 (en) | Method and apparatus for decoding with trapped-block management | |
CN112346902A (zh) | 存储器子系统处的错误控制操作的优先级排序 | |
US10713113B2 (en) | Solid state drive implementing polar encoding and successive cancellation list decoding | |
CN115794482A (zh) | 用历史解码信息对同一页中的码字进行解码的系统和方法 | |
US9170881B2 (en) | Solid state device coding architecture for chipkill and endurance improvement | |
CN109714062B (zh) | 执行迭代解码的解码器和使用该解码器的存储设备 | |
CN107301873B (zh) | 译码方法、存储器储存装置及存储器控制电路单元 | |
US11735286B2 (en) | Selecting read reference voltage using historical decoding information | |
US12009840B2 (en) | Systems and methods of decoding error correction code of a memory device with dynamic bit error estimation | |
US11204831B2 (en) | Memory system | |
CN113496752B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
CN111324478B (zh) | 解码方法、存储器控制电路单元以及存储器存储装置 | |
US10673465B2 (en) | Memory controller, memory system, and control method | |
CN113138947A (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
CN116798501A (zh) | 存储器系统和对从多个存储器基元读取的数据执行错误纠正的方法 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 601-606, No. 40, Lane 565, Shengxia Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, 201210 (nominal floor 6, actual floor 5) Applicant after: Yingren Technology Co.,Ltd. Address before: 201210 rooms 601, 602, 603, 604, 605 and 606, No. 40, Lane 565, shengxia Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai (6 floors of nominal floor, 5 floors of actual floor) Applicant before: Yingren Technology (Shanghai) Co.,Ltd. |