IP Library Granted Patent US 10,388,400
Granted Patent B2
US 10,388,400 · App. 15/158,425 · Granted Aug 20, 2019

Generalized product codes for flash storage

Inventors: Naveen Kumar (San Jose, CA); Aman Bhatia (San Jose, CA); Lingqi Zeng (San Jose, CA)
Assignee: SK hynix Inc.
G11C29/52G06F11/108G06F11/1068G06F11/1088G06F11/1096G11C16/349G11C29/42G06F2211/109G11C2029/0409G11C2029/0411
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,388,400
App. No.
15/158,425
Granted
Aug 20, 2019
Kind
B2
Abstract

Memory systems may include an encoder suitable for arranging data in rows of data blocks as a plurality of codewords, and permuting the data block rows and constructing row parities on the permuted rows, and a decoder suitable for decoding the codewords, and correcting stuck error patterns when decoding of the codewords fails.

Claims (47)

1. A memory system, comprising:

an encoder suitable for:

arranging data in rows of blocks;

permuting the data in each single row of blocks and constructing row parities on the permuted data for the corresponding row of blocks to generate a corresponding codeword, of a plurality of codewords, one of which is generated for each row of blocks; and

combining, column-wise, a parity bit of the row parities of each of the plurality of codewords to generate combined parities; and

a decoder suitable for:

decoding the plurality of codewords to generate decoded codewords; and

correcting stuck error patterns in one or more unsuccessfully decoded codewords, among the decoded codewords, based at least in part on one or more of the combined parities.

2. The memory system of claim 1 , wherein the data in the rows of blocks are permuted such that each block is included in at least two rows.

3. The memory system of claim 1 , wherein each block includes a same number of bits.

4. The memory system of claim 1 , wherein the encoder is further suitable for generating an XOR parity and storing the XOR parity in at least one of the rows of blocks.

5. The memory system of claim 4 , wherein the XOR parity is generated by taking an XOR of the data in a single select row of blocks and a predetermined number of the constructed row parities.

6. The memory system of claim 4 , wherein the decoder is suitable for correcting stuck error patterns by:

constructing an XOR parity from the decoded codewords; and

determining a location of a stuck error pattern based on a difference between the XOR parity constructed by the decoder and the XOR parity generated by the encoder.

7. The memory system of claim 4 , wherein the decoder is suitable for correcting stuck error patterns by:

determining an error location intersection of two of the one or more unsuccessfully decoded codewords; and

flipping a bit at the error location intersection.

8. A method, comprising:

arranging, with an encoder, data in rows of blocks;

permuting, with the encoder, the data in each single row of blocks and constructing row parities on the permuted data for the corresponding row of blocks to generate a codeword, of a plurality of codewords, one of which is generated for each row of blocks;

combining, column-wise, with the encoder, a parity bit of the row parities of each of the plurality of codewords to generate combined parities;

decoding, with a decoder, the plurality of codewords to generate decoded codewords; and

correcting, with the decoder, stuck error patterns in one or more unsuccessfully decoded codewords, among the decoded codewords, based at least in part on one or more of the combined parities.

9. The method of claim 8 , wherein the data in the rows of blocks are permuted such that each block is included in at least two rows.

10. The method of claim 8 , wherein each block includes a same number of bits.

11. The method of claim 8 , further comprising generating, with the encoder, an XOR parity and storing the XOR parity in at least one of the rows of blocks.

12. The method of claim 11 , wherein the XOR parity is generated by taking an XOR of the data in a single select row of blocks and a predetermined number of the constructed codeword parities.

13. The method of claim 11 , wherein the correcting error patterns step further comprises:

constructing, with the decoder, an XOR parity from the decoded codewords; and

determining a location of a stuck error pattern based on a difference between the XOR parity constructed by the decoder and the XOR parity generated by the encoder.

14. The method of claim 11 , wherein the correcting error patterns step includes:

determining, with the decoder, an error location intersection of two of the one or more unsuccessfully decoded codewords; and

flipping a bit at the error location intersection.

15. A memory device, comprising:

an encoder configured to:

arrange data in rows of blocks;

permute the data in each single row of blocks and construct row parities on the permuted data for the corresponding row of blocks to generate a codeword, of a plurality of codewords, one of which is generated for each row of blocks; and

combine, column-wise, a parity bit of the row parities each of the plurality of codewords to generate combined parities; and

a decoder configured to:

decode the plurality of codewords to generate decoded codewords; and

correct stuck error patterns in one or more unsuccessfully decoded codewords, among the decoded codewords, based at least in part on one or more of the combined parities.

16. The memory device of claim 15 , wherein the encoder is further configured to generate an XOR parity and store the XOR parity in at least one of the rows of blocks.

17. The memory device of claim 16 , wherein the XOR parity is generated by taking an XOR of the data in a single select row of blocks and a predetermined number of the constructed codeword parities.

18. The memory device of claim 17 , wherein the decoder is further configured to correct stuck error patterns by:

constructing an XOR parity from the decoded codewords; and

determining a location of a stuck error pattern based on a difference between the XOR parity constructed by the decoder and the XOR parity generated by the encoder.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2017
From: SK HYNIX MEMORY SOLUTIONS INC.
To: SK HYNIX INC.
Reel/Frame 044899/0443 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2016
From: KUMAR, NAVEEN; BHATIA, AMAN; ZENG, LINGQI
To: SK HYNIX MEMORY SOLUTIONS INC.
Reel/Frame 038912/0195 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2016
From: KUMAR, NAVEEN; BHATIA, AMAN; ZENG, LINGQI
To: SK HYNIX MEMORY SOLUTIONS INC.
Reel/Frame 038912/0279 →
Continuity (2)
Provisional Application 62163291 · May 18, 2015
Related Publication 20160342467A1 · Nov 24, 2016
Cited By (2)
US 12,206,497 US 12,210,412