CN113496753A - 利用历史解码信息对纠错码进行解码的系统和方法 - Google Patents
利用历史解码信息对纠错码进行解码的系统和方法 Download PDFInfo
- Publication number
- CN113496753A CN113496753A CN202010824563.8A CN202010824563A CN113496753A CN 113496753 A CN113496753 A CN 113496753A CN 202010824563 A CN202010824563 A CN 202010824563A CN 113496753 A CN113496753 A CN 113496753A
- Authority
- CN
- China
- Prior art keywords
- data
- soft information
- physical location
- information
- 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 50
- 238000012937 correction Methods 0.000 title description 10
- 230000008569 process Effects 0.000 claims abstract description 28
- 239000013598 vector Substances 0.000 description 11
- 230000008859 change Effects 0.000 description 3
- 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
- 238000010586 diagram Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000001228 spectrum 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/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
-
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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
- G06F11/1016—Error in accessing a memory location, i.e. addressing 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- 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/3784—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 for soft-output decoding of block codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- 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/19—Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
提供了用于对从非易失性存储设备读取的数据进行解码的系统和方法。一种方法可以包括:接收从非易失性存储设备的物理位置读取的数据组块;以及使用与所述物理位置相关联的唯一标识符搜索用于存放与所述物理位置相关联的软信息的内存。所述软信息可以是根据对来自所述物理位置的先前数据的一个或多个先前解码过程生成的。该方法可以进一步包括:从所述内存中获取由与所述物理位置相关联的所述唯一标识符标识的所述软信息;用指示所述数据组块中的位的可靠性的所述软信息对所述数据组块进行解码;以及使用在所述解码过程中生成的解码信息来更新所述软信息。
Description
技术领域
本公开涉及对用奇偶校验数据编码的数据进行解码,尤其涉及使用从先前的解码操作收集的历史信息对编码的数据进行解码。
背景技术
许多数据通信或存储系统共同的一个问题是数据损坏,例如,由于通信通道或存储系统中的写入/读取过程中的噪声。一种解决数据损坏的技术是使用纠错码(ECC)或前向纠错(FEC)码。ECC和FEC将冗余数据或奇偶校验数据添加到用户数据,以便即使引入了许多错误(取决于所使用的纠错码的能力),例如在存储器上传输或损坏过程中,也可以由接收器或读取器恢复用户数据。
多年来,已经开发了许多不同的编码方案,例如汉明码、里德-所罗门码、Turbo码等。目前,低密度奇偶校验(LDPC)码已被广泛使用。但是,所有这些纠错码都是计算复杂的,使用这些纠错码的技术仍然需要改进。
发明内容
本文公开的方法可以包括一种方法,该方法可以包括:接收从非易失性存储设备的物理位置读取的数据组块(chunk);以及使用与所述物理位置相关联的唯一标识符在内存中搜索与所述物理位置相关联的软信息。所述软信息可以是根据对来自所述物理位置的先前数据的一个或多个先前解码过程生成的。该方法可以进一步包括:从所述内存中获取由与所述物理位置相关联的所述唯一标识符标识的所述软信息;用指示所述数据组块中的位的可靠性的所述软信息对所述数据组块进行解码;以及使用在所述解码过程中生成的解码信息来更新所述软信息。
根据一个实施例,所述数据组块可以是数据块(block),并且与所述物理位置相关联的所述唯一标识符可以是所述块的物理数据块地址(PDA)。
根据一个实施例,所述软信息可以包括每个位相应的可靠性信息,所述可靠性信息是可以基于在所述一个或多个先前解码过程中相应位是否翻转和翻转频率而生成的。
根据一个实施例,所述软信息可以包括整个所述数据组块的可靠性信息。
根据一个实施例,整个所述数据组块的可靠性信息可以包括一个逻辑状态比另一个逻辑状态更可靠的信息。
根据一个实施例,所述内存可以使用与所述物理位置相关联的唯一标识符作为索引来存储所述软信息。
根据一个实施例,该方法可以进一步包括使用缓存算法来缓存所述软信息。
实施例还可以包括存储系统控制器,该存储系统控制器可以包括:解码器、软信息获取器和软信息生成器。解码器可以被配置为接收从非易失性存储设备的物理位置读取的数据组块(chunk)并解码所述数据组块,并对所述数据组块进行解码。所述软信息获取器可以被配置为使用与所述物理位置相关联的唯一标识符在内存中搜索与所述物理位置相关联的软信息,并从所述内存中获取由与所述物理位置相关联的所述唯一标识符标识的所述软信息。所述软信息可以是根据对来自所述物理位置的先前数据的一个或多个先前解码过程生成的,并且所述解码器可以进一步被配置为用指示所述数据组块中的位的可靠性的所述软信息对所述数据组块进行解码。所述软信息生成器可以被配置为使用在所述解码器解码所述数据组块过程中生成的解码信息来更新所述软信息。
本公开还可以包括具有可执行指令的非易失性机器可读介质,其中,在由存储控制器执行所述可执行指令时使所述存储控制器接收从非易失性存储设备的物理位置读取的数据组块(chunk),使用与所述物理位置相关联的唯一标识符在内存中搜索与所述物理位置相关联的软信息,从所述内存中获取由与所述物理位置相关联的所述唯一标识符标识的所述软信息,用指示所述数据组块中的位的可靠性的所述软信息对所述数据组块进行解码,并使用在所述解码过程中生成的解码信息来更新所述软信息。所述软信息可以是根据对来自所述物理位置的先前数据的一个或多个先前解码过程生成的。
附图简要说明
图1示意性地示出了根据本公开一个实施例中的非易失性存储系统。
图2A,图2B和图2C示意性地示出了根据本公开的一个实施例中的NAND闪存单元的阈值电压值的偏移的影响。
图3示意性地示出了根据本公开一个实施例中的关于各个位的历史信息。
图4示意性地示出了根据本公开一个实施例中的历史信息如何被存储在内存中。
图5是根据本公开一个实施例中的用于解码数据组块的过程的流程图。
具体实施方式
现在将参考附图详细描述根据本申请的具体实施例。为了一致性,各个图中的相同元件由相同的附图标记表示。
本公开提供用于对存储在非易失性存储器(NVM)存储设备中的被纠错码(ECC)编码的数据进行解码的装置、系统和方法。图1示意性地示出了根据本公开的一个实施例的非易失性存储系统100。非易失性存储系统100可以包括ECC解码控制器102、一个或多个ECC解码器104、原始数据缓冲器106、ECC数据接口108、NAND接口控制器110、多个NAND设备112、软信息管理器114、软信息生成器116、软信息获取器118和内存120。多个NAND设备112可以经由一个或多个通道耦合到NAND接口控制器110。在一个实施例中,一个通道可以包括一个以上的NAND设备。原始数据缓冲器106可以包括一个或多个缓冲器模块,并且内存120也可以包括一个或多个内存模块。
在各种实施例中,一个或多个ECC解码器104可包括用于硬判决解码和软判决解码的解码器电路。例如,ECC解码器104可以包括一个或多个硬判决解码器和一个或多个软判决解码器。用于硬判决解码的解码器电路可以是实现硬判决算法的任何合适的硬判决解码器,包括但不限于位翻转算法或任何其他尚待开发的硬判决技术。并且用于软判决解码的解码器电路可以是实现软判决算法的任何合适的软判决解码器,包括但不限于基于行业已知的置信度传播的任何常规软判决算法(例如,求和积算法(“SPA”),最小和算法,随机解码算法,或它们的变体)或任何其他尚待开发的软判决算法。例如,在一个实施例中,一个或多个ECC解码器104可以包括最小和解码器,其可以以单位硬判决(HD)模式和多位信息软判决(SD)模式操作。在一个实施例中,从内存120获取的软信息可以在一个或多个ECC解码器104处被解码器电路用来进行软判决解码。
应当注意,在一些实施例中,其他软信息也可以从NAND设备获得并用于软判决解码,例如,通过多次从NAND设备读取相同数据而获得的常规软信息。例如,在一个实施例中,如果不能从内存120中获取软信息,则可以从NAND设备获得常规的软信息,并将其发送到软信息管理器114。软信息管理器114可以将常规软信息转发到解码器电路,以在一个或多个ECC解码器104处进行软判决解码。
在一个实施例中,非易失性存储系统100可以是固态驱动器(SSD)。此外,在一个实施例中,ECC解码控制器102、一个或多个ECC解码器104、原始数据缓冲器106、ECC数据接口108、软信息管理器114、软信息生成器116、软信息获取器118和NAND接口控制器110可以被集成在一个存储系统控制器芯片(例如,集成电路(IC)芯片)中,而内存120和多个NAND设备112可以被耦合到存储系统控制器芯片。在另一个实施例中,内存120也可以集成到存储系统控制器的芯片中。
ECC解码控制器102可以是中央处理单元(CPU)、图形处理单元(GPU)、现场可编程门阵列(FPGA)或专用IC(ASIC)。在一些实施例中,当执行读取操作时,ECC解码控制器102可以接收具有一个或多个参数的ECC任务开始信号。ECC解码控制器102可以向ECC数据接口108发送信号,以使ECC数据接口108将从NAND设备112接收的一个或多个数据组块(chunk)放入原始数据缓冲器106中。应当注意的是,本文所使用的术语“块(chunk)”可以指的是具有一定大小并且存储在存储系统100中的数据,使得该数据在存储系统100中的物理位置可以被唯一的标识符关联。在一个实施例中,块可以是数据块(block),其可以包括一个或多个ECC码字,并且块的物理位置可以由其物理数据块地址(PDA)唯一地标识。
一个或多个ECC解码器104可以解码从NAND设备112获得的每个数据组块。在解码操作期间或之后,可以生成解码信息并将其发送到软信息生成器116。例如,在解码操作期间,某些位可能被翻转而有些位则没有。这可以是有用的解码信息。软信息生成器116可以从ECC解码控制器102接收指示完成了ECC解码任务的信号,并且可以从解码信息生成用于相应块的软信息。所生成的软信息可以被保存在内存120中。在一些实施例中,在软信息生成器116中生成的软信息可以指示相应块中的每个位的可靠性。例如,一个数据组块可以包含许多位,并且解码操作可能会更改某些位而非所有位的值。可以假设在ECC解码操作期间具有更改的值的那些位可能易于出错,因此,与在解码操作期间未更改其值的其他位相比,它们可能被标记为可靠性较差。
每当一个或多个ECC解码器104解码来自NAND设备112特定位置的数据组块时,可在该一个或多个ECC解码器104中生成解码信息。在一些实施例中,每次一个或多个来自NAND设备112的特定位置的数据组块被一个或多个ECC解码器104解码时,软信息生成器116可从内存120中获取已生成的软信息并使用新生成的解码信息来更新软信息。因此,存储在内存120中的软信息可以是累积的,并且被称为历史信息。例如,在对来自一个物理位置的数据执行一些解码操作之后,软信息可能显示,从历史上看,某些位的值可能比其他位的更改频率更高,而某些位可能永远不会更改其值。因此,软信息可以在频谱中相应地指示来自该物理位置的位的可靠性,以使得具有最频繁更改的值的那些位为最不可靠,而具有从未更改的值的那些位为最可靠。
当来自NAND设备112的相同物理位置的数据组块被使用相同位置的数据的每个未来解码过程读取和更新时,软信息可以用于未来的解码过程。应当注意,软信息可以由硬件或软件生成。在各种实施例中,软信息生成器116可以以硬件或软件来实现。例如,在一个实施例中,软信息生成器116可以被实现为在处理器中执行的软件。
用于存储软信息的内存120可以是静态随机存取存储器(SRAM),双倍数据速率RAM,或MRAM,或者是可以具有比NAND设备短得多的读取延迟的任何存储器。因此,与从NAND设备获得软信息的常规方法相比,例如,通过重新读取来自NAND设备的数据组块,实施例中可以更快地从内存120获得软信息。此外,在至少一个实施例中,因为它们来自不同的路径并且可以并行执行这些动作,所以可以同时执行从内存120中获取软信息并读取来自NAND设备的原始数据。例如,当NAND接口控制器110接收信号以开始读取来自NAND设备112的物理位置的数据时,ECC解码控制器102可以向软信息获取器118发送信号以开始搜索并获取与物理位置相关的软信息。并行性可以帮助避免读取来自NAND设备的任何软信息的开销。
在各种实施例中,从历史解码信息生成的软信息可以在未来的解码过程中分别应用于整个数据组块或数据组块的每个位。图2A、图2B和图2C示意性地示出了NAND闪存单元的阈值电压值偏移造成的效果以及根据本公开实施例来自历史解码信息的软信息可以如何应用于整个数据组块。图2A、图2B和图2C中的水平轴可以是NAND设备中存储单元的阈值电压。图2A、图2B和图2C中的垂直轴可以是存储单元的阈值电压的概率分布函数。
图2A中的曲线202可以指示第一逻辑状态的读出,例如逻辑1。图2A中的曲线204可以指示第二逻辑状态的读出,例如逻辑0。本文中使用的读出可以指代任何给定的存储单元的读出电压,并且可以通过将该读出电压与参考电压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)的翻转计数。基于翻转计数之间的差,可以将具有读出值为逻辑状态一的位和具有读出值为逻辑状态二的位赋予不同的可靠级别。例如,对于来自物理位置的数据,如果软信息指示从逻辑状态一到逻辑状态二(例如,逻辑1到0翻转)的翻转比从逻辑状态二到逻辑状态一(例如,逻辑0到1翻转)的翻转多,那么逻辑状态二可能是可靠的,并且具有处于逻辑状态二的读出值的位(例如,逻辑0)可能比具有处于逻辑状态一的读出值的位(例如,逻辑1)更加可靠。
应当注意,图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)更可靠。
应当注意,图2B和图2C中的阈值电压偏移仅是示例性的示例。在一些其他实施例中,逻辑状态二的阈值电压也可以向左或向右偏移。此外,曲线202和204的形状可以在偏移期间改变,例如,曲线202和/或204可以变得更低,更宽或同时包括该两者。
图3示意性地示出了根据本公开一个实施例中的关于各个位的历史信息。在时间t,可以对来自NAND设备112的物理位置的数据组块302进行解码。可以在解码过程中校正多个错误,并且可以用显示数据组块302的哪个(些)位被翻转的标记来生成向量304。在一个实施例中,向量304可以具有与数据302的块相同的大小,并且在向量304的位置306.1和306.2中的标记可以是“1”,其对应于数据302中被翻转的位的位置。
在时间t+k,可以对来自NAND设备112的相同位置的数据组块308进行解码。可以使用来自在时间t的先前解码的信息,这可以表明位置306.1和306.2的位可能不如其他位可靠。解码过程中在时间t+k处可以校正多个错误,并可以用显示数据组块308的哪个(些)位被翻转的标记来生成向量310。向量310可以在向量310中的位置316.1中具有“1”,该“1”的位置可以与数据组块308中已经被翻转的位的位置匹配。在一个实施例中,向量310可以是用在时间t+k的新解码操作更新向量304之后的向量304的更新版本。在一些实施例中,向量(例如,304和310)可以被称为错误向量。
应当注意,尽管图3示出了在时间t处校正了两个错误并且在时间t+k处校正了一个错误,但是,通常,通过一个解码操作可以校正一个数据组块的许多位。此外,软信息可以指示数据组块的各个位可以具有不同级别的可靠性,并且每个位的可靠性可以随着时间变化。例如,基于历史信息,位置306.1处的位可能不如位置306.2处的位可靠,并且位置306.2处的位可能不比其他在解码时间t和时间t+k处从未发现任何错误的位可靠。
图4示意性地示出了根据本公开的一个实施例中的如何将软信息存储在内存120中。在一个实施例中,内存120可以使用唯一标识符作为索引来为不同的存储位置保存软信息。如图4中所示,NAND设备112可以包括NAND设备112.1至112.N,其中N是大于1的正整数。每个存储位置可以与唯一标识符相关联,并且唯一标识符可以用作存储在内存120中的软信息的索引。例如,NAND设备112.1可以具有存储在位置404.1的数据组块,NAND设备112.2可以具有存储在位置404.2的数据组块和另一存储在位置404.3的数据组块,以及NAND设备112.N可以具有存储在位置404.M的数据组块,其中M大于3。存储位置可以指的是具有特定大小的NAND设备的可识别单元。在一个实施例中,物理位置可以是数据组块的物理位置,并且唯一标识符可以是其物理数据组块地址(PDA)。
在内存120中,用于存储在位置404.1的数据的软信息可以保持在408.1并且与索引值相关联,该索引值可以是与位置404.1相关联的唯一标识符。用于存储在位置404.2的数据的软信息可以保持在408.2并与另一个索引值关联,该索引值可以是与位置404.2关联的唯一标识符。用于存储在位置404.3的数据的软信息可以保持在408.3并且与其自身的索引值相关联,该索引值可以是与位置404.3相关联的唯一标识符。类似地,存储在位置404.M的数据的软信息可以保持在408.M并与其自身的索引值关联,该索引值可以是与位置404.M关联的唯一标识符。
在一些实施例中,由于大小限制,内存120可能不能为NAND设备112的所有存储位置保存软信息。也就是说,如果需要保存许多物理位置的软信息,则所需的内存大小可能会超过内存120的大小。在一些实施例中,可以使用缓存方法。例如,可以将用于NAND存储位置的子集(例如,T个位置)的软信息保存在内存120中,而不是保存用于所有NAND存储位置的软信息。有多种选择T个存储位置的方法。可以使用任何现有或将来开发的缓存算法。例如,这些T个存储位置可以是最近读取或最近有错误的存储位置。在仅保存用于存储位置的子集的软信息的实施例中,内存120还可以存储用于这些存储位置的唯一标识符。
图5是根据一个实施例的用于使用来自历史解码信息的软信息来解码数据组块的过程500的流程图。在框502中,可以接收从非易失性存储设备的物理位置读取的数据组块。例如,一个或多个ECC解码器104可以接收来自NAND设备112的块数据。在框504中,可以使用与物理位置相关联的唯一标识符在内存中搜索与该物理位置相关联的软信息。在一个实施例中,例如,可以根据对来自物理位置的先前数据的一个或多个先前解码过程生成软信息,并将其存储在内存(例如,内存120)中。在框506中,可以从内存中获取由与物理位置相关联的唯一标识符标识的软信息。在一个实施例中,例如,软信息获取器118可以被配置为使用与物理位置相关联的唯一标识符搜索用于与物理位置相关联的软信息的内存120,并从内存120中获取所标识的软信息。
在框508中,可使用指示数据组块中的位的可靠性的软信息来解码数据组块。在一个实施例中,一个或多个ECC解码器104可以包括至少一个解码器,该解码器被配置为使用从内存120获取的软信息,该软信息可以指示数据组块中的位的可靠性来解码该块。在框510中,可以利用在解码过程中生成的解码信息来更新软信息。在一个实施例中,当读取来自物理位置的块数据并且在内存120中未找到与该物理位置相关联的软信息时,软信息可以最初由软信息生成器116生成。之后,每当来自相同物理位置的数据组块被解码时,可以由软信息生成器116更新软信息。可以将更新的软信息放回内存120中,以用于将来对来自相同物理位置的数据进行解码。
实施例中公开的上述过程(包括过程500)可以通过软件(例如,可执行在计算机处理器(例如,中央处理器单元(CPU)、图形处理器单元(GPU)或该两者)、硬件(例如,现场可编程门阵列(FPGA)或专用IC(ASIC))、固件或三者的任何合适组合来实现。
在一个实施例中,例如,可以用存储在一个或多个计算机可读存储介质上以计算机可执行指令组成的软件来实现所公开的方法和操作中的一些或全部。一个或多个计算机可读存储介质可以包括非暂时性计算机可读介质(例如可移动或不可移动磁盘、磁带或盒式磁带、固态驱动器(SSD)、混合硬盘驱动器、CD-ROM、CD-RW、DVD或任何其他有形存储介质)、易失性存储组件(例如DRAM或SRAM)或非易失性存储组件(例如硬盘驱动器))。计算机可执行指令可以通过计算机(例如,任何商用计算机,包括智能电话或包括计算机硬件的其他移动设备)的计算机处理器(例如,CPU、GPU或两者)来执行。用于实现所公开的技术的任何计算机可执行指令以及在所公开的实施例的实现期间创建和使用的任何数据都可以存储在一个或多个计算机可读介质(例如,非暂时性计算机可读介质)上。这样的软件可以例如在单个本地计算设备(例如,任何合适的商用计算机或移动设备)上或在使用一台或多台网络计算机的网络环境中(例如,经由因特网、广域网、局域网、客户端-服务器网络(例如云计算网络)或其他此类网络))执行。
可以针对任何类型的ECC码来实现根据本公开的实施例,例如但不限于,矩形奇偶校验、LDPC和汉明码。
尽管本文已经公开了各个方面和实施例,但是其他方面和实施例对于本领域技术人员将是显而易见的。本文所公开的各个方面和实施例是出于说明的目的,而不是旨在进行限制,真实的范围和精神由所附权利要求书指示。
Claims (20)
1.一种方法,包括:
接收从非易失性存储设备的物理位置读取的数据组块;
使用与所述物理位置相关联的唯一标识符在内存中搜索与所述物理位置相关联的软信息,所述软信息是根据对来自所述物理位置的先前数据的一个或多个先前解码过程生成的;
从所述内存中获取由与所述物理位置相关联的所述唯一标识符标识的所述软信息;
用指示所述数据组块中的位的可靠性的所述软信息对所述数据组块进行解码;和
使用在所述解码过程中生成的解码信息来更新所述软信息。
2.根据权利要求1所述的方法,其特征在于,所述数据组块是数据块,并且与所述物理位置相关联的所述唯一标识符是所述块的物理数据块地址(PDA)。
3.根据权利要求1所述的方法,其特征在于,所述软信息包括每个位相应的可靠性信息,所述可靠性信息是基于在所述一个或多个先前解码过程中相应位是否翻转和翻转频率而生成的。
4.根据权利要求1所述的方法,其特征在于,所述软信息包括整个所述数据组块的可靠性信息。
5.根据权利要求4所述的方法,其特征在于,整个所述数据组块的可靠性信息包括一个逻辑状态比另一个逻辑状态更可靠的信息。
6.根据权利要求1所述的方法,其特征在于,所述内存使用与所述物理位置相关联的唯一标识符作为索引来存储所述软信息。
7.根据权利要求1所述的方法,其特征在于,还包括:使用缓存算法来缓存所述软信息。
8.一种存储系统控制器,包括:
解码器,其被配置为接收从非易失性存储设备的物理位置读取的数据组块并解码所述数据组块;
软信息获取器,其被配置为:
使用与所述物理位置相关联的唯一标识符在内存中搜索与所述物理位置相关联的软信息,所述软信息是根据对来自所述物理位置的先前数据的一个或多个先前解码过程生成的;和
从所述内存中获取由与所述物理位置相关联的所述唯一标识符标识的所述软信息,其中,所述解码器还被配置为:用指示所述数据组块中的位的可靠性的所述软信息对所述数据组块进行解码;和
软信息生成器,其被配置为使用在所述解码器解码所述数据组块过程中生成的解码信息来更新所述软信息。
9.根据权利要求8所述的存储系统控制器,其特征在于,所述数据组块是数据块,并且与所述物理位置相关联的所述唯一标识符是所述块的物理数据块地址(PDA)。
10.根据权利要求8所述的存储系统控制器,其特征在于,所述软信息包括每个位相应的可靠性信息,所述可靠性信息是基于在所述一个或多个先前解码过程中相应位是否翻转和翻转频率而生成的。
11.根据权利要求8所述的存储系统控制器,其特征在于,所述软信息包括整个所述数据组块的可靠性信息。
12.根据权利要求11所述的存储系统控制器,其特征在于,整个所述数据组块的可靠性信息包括一个逻辑状态比另一个逻辑状态更可靠的信息。
13.根据权利要求8所述的存储系统控制器,其特征在于,所述内存使用与所述物理位置相关联的唯一标识符作为索引来存储所述软信息。
14.根据权利要求8所述的存储系统控制器,其特征在于,所述软信息通过缓存算法被缓存在所述内存中。
15.一种具有可执行指令的非暂时性机器可读介质,其特征在于,在由存储控制器执行所述可执行指令时使所述存储控制器执行以下操作:
接收从非易失性存储设备的物理位置读取的数据组块;
使用与所述物理位置相关联的唯一标识符在内存中搜索与所述物理位置相关联的软信息,所述软信息是根据对来自所述物理位置的先前数据的一个或多个先前解码过程生成的;
从所述内存中获取由与所述物理位置相关联的所述唯一标识符标识的所述软信息;
用指示所述数据组块中的位的可靠性的所述软信息对所述数据组块进行解码;和
使用在所述解码过程中生成的解码信息来更新所述软信息。
16.根据权利要求15所述的非暂时性机器可读介质,其特征在于,所述数据组块是数据块,并且与所述物理位置相关联的所述唯一标识符是所述块的物理数据块地址(PDA)。
17.根据权利要求15所述的非暂时性机器可读介质,其特征在于,所述软信息包括每个位相应的可靠性信息,所述可靠性信息是基于在所述一个或多个先前解码过程中相应位是否翻转和翻转频率而生成的。
18.根据权利要求15所述的非暂时性机器可读介质,其特征在于,所述软信息包括整个所述数据组块的可靠性信息。
19.根据权利要求18所述的非暂时性机器可读介质,其特征在于,整个所述数据组块的可靠性信息包括一个逻辑状态比另一个逻辑状态更可靠的信息。
20.根据权利要求15所述的非暂时性机器可读介质,其特征在于,所述内存使用与所述物理位置相关联的唯一标识符作为索引来存储所述软信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/841,158 US11159182B1 (en) | 2020-04-06 | 2020-04-06 | Systems and methods for decoding error correcting codes with historical decoding information |
US16/841,158 | 2020-04-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113496753A true CN113496753A (zh) | 2021-10-12 |
Family
ID=77922238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010824563.8A Pending CN113496753A (zh) | 2020-04-06 | 2020-08-17 | 利用历史解码信息对纠错码进行解码的系统和方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US11159182B1 (zh) |
CN (1) | CN113496753A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11159182B1 (en) * | 2020-04-06 | 2021-10-26 | Innogrit Technologies Co., Ltd. | Systems and methods for decoding error correcting codes with historical decoding information |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5432803A (en) * | 1992-04-30 | 1995-07-11 | Novatel Communications, Ltd. | Maximum likelihood convolutional decoder |
US8271862B2 (en) * | 2007-07-19 | 2012-09-18 | Pioneer Corporation | Error correction decoding device and reproduction device |
US10372529B2 (en) * | 2015-04-20 | 2019-08-06 | Sandisk Technologies Llc | Iterative soft information correction and decoding |
US9935659B2 (en) * | 2015-05-18 | 2018-04-03 | SK Hynix Inc. | Performance optimization in soft decoding for turbo product codes |
JP2018045387A (ja) * | 2016-09-13 | 2018-03-22 | 東芝メモリ株式会社 | メモリシステム |
US10715182B2 (en) * | 2018-07-27 | 2020-07-14 | Innogrit Technologies Co., Ltd. | Systems and methods for decoding error correcting codes with self-generated LLR |
JP2020155163A (ja) * | 2019-03-18 | 2020-09-24 | キオクシア株式会社 | メモリシステム及び不揮発性メモリ |
US11159182B1 (en) * | 2020-04-06 | 2021-10-26 | Innogrit Technologies Co., Ltd. | Systems and methods for decoding error correcting codes with historical decoding information |
-
2020
- 2020-04-06 US US16/841,158 patent/US11159182B1/en active Active
- 2020-08-17 CN CN202010824563.8A patent/CN113496753A/zh active Pending
-
2021
- 2021-09-30 US US17/489,901 patent/US11695434B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20210311876A1 (en) | 2021-10-07 |
US20220021403A1 (en) | 2022-01-20 |
US11695434B2 (en) | 2023-07-04 |
US11159182B1 (en) | 2021-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10437668B2 (en) | Memory controller, memory system, and method for controlling memory system | |
US9673840B2 (en) | Turbo product codes for NAND flash | |
KR101306645B1 (ko) | 시행착오에 의한 에러 보정 디코딩 | |
US9294132B1 (en) | Dual-stage data decoding for non-volatile memories | |
US11005499B2 (en) | LDPC decoder, semiconductor memory system, and operating method thereof | |
US20120144272A1 (en) | Probabilistic multi-tier error correction in not-and (nand) flash memory | |
US8321757B2 (en) | Method and apparatus for error correction | |
US10108490B1 (en) | Decoding method, memory storage device and memory control circuit unit | |
US11768732B2 (en) | Soft decoding method using LLR conversion table | |
US10574272B2 (en) | Memory system | |
US20210028795A1 (en) | Memory Controller and Method for Decoding Memory Devices with Early Hard-Decode Exit | |
US10193569B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US10944424B1 (en) | Error correction with multiple LLR-LUTS for a single read | |
US11695434B2 (en) | Systems and methods for decoding error correcting codes with historical decoding information | |
US10713113B2 (en) | Solid state drive implementing polar encoding and successive cancellation list decoding | |
US9954556B2 (en) | Scheme to avoid miscorrection for turbo product codes | |
US11936403B2 (en) | Systems and methods for decoding codewords in a same page with historical decoding information | |
CN114911414A (zh) | 使用错误校正方案的组合的数据恢复 | |
US11735286B2 (en) | Selecting read reference voltage using historical decoding information | |
US11204831B2 (en) | Memory system | |
US11843393B2 (en) | Method and apparatus for decoding with trapped-block management | |
CN113496752B (zh) | 解码方法、存储器存储装置及存储器控制电路单元 | |
US10673465B2 (en) | Memory controller, memory system, and control method |
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: 2 / F, No.1, Lane 500, shengxia Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai 201210 Applicant before: Yingren Technology (Shanghai) Co.,Ltd. |