IP Library Granted Patent US 9,619,317
Granted Patent B1
US 9,619,317 · App. 13/742,248 · Granted Apr 11, 2017

Decoder having early decoding termination detection

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 9,619,317
App. No.
13/742,248
Granted
Apr 11, 2017
Kind
B1
Abstract

Embodiments of decoders having early decoding termination detection are disclosed. The decoders can provide for flexible and scalable decoding and early termination detection, particularly when quasi-cyclic low-density parity-check code (QC-LDPC) decoding is used. In one embodiment, a decoder iteratively decodes a data unit using a decoding matrix comprising a plurality of layers. After at least one iteration of decoding the data unit, the decoder determines whether the decoded data unit from a completed iteration and one or more layers of the plurality of layers satisfy a parity check equation. In response to determining that the decoded data unit from the completed iteration and each layer of the plurality of layers satisfy the parity check equation, the decoder terminates decoding the data unit. Advantageously, the termination of decoding of the data unit can reduce a number of iterations performed to decode the data unit.

Claims (38)

1. A data storage system, comprising:

a non-volatile memory array; and

a controller configured to:

iteratively decode a first data unit of a plurality of data units, the plurality of data units read from the non-volatile memory array, using a plurality of layers of a coding matrix at least by:

performing a first decoding iteration on the first data unit using the plurality of layers to generate a decoded first data unit, and

performing a second decoding iteration on the decoded first data unit using the plurality of layers;

determine, in parallel with performing the second decoding iteration, whether the decoded first data unit generated by the first decoding iteration and one or more layers of the plurality of layers satisfy a parity check equation;

in response to determining that the decoded first data unit and a first layer of the one or more layers do not satisfy the parity check equation:

skip determining whether the decoded first data unit and at least one layer of the plurality of layers other than the one or more layers satisfy the parity check equation, and

continue performing the second decoding iteration on the decoded first data unit; and

in response to determining that the decoded first data unit and each layer of the plurality of layers satisfy the parity check equation, terminate iteratively decoding the first data unit.

2. The data storage system of claim 1 , wherein the controller is further configured to, in response to determining that the decoded first data unit and the first layer satisfy the parity check equation, determine whether the decoded first data unit and a second layer of the one or more layers satisfy the parity check equation.

3. The data storage system of claim 1 , wherein the controller is further configured to, in parallel with determining whether the decoded first data unit and the first layer satisfy the parity check equation using first parity check computer hardware, determine whether the decoded first data unit and a second layer of the one or more layers satisfy the parity check equation using second parity check computer hardware different from the first parity check computer hardware.

4. The data storage system of claim 1 , wherein the controller is further configured to iteratively decode a second data unit of the plurality of data units in response to determining that the decoded first data unit and each layer of the plurality of layers satisfy the parity check equation.

5. The data storage system of claim 1 , wherein the controller is further configured to direct a rotate-left/right shifter to rotate data of the decoded first data unit before determining whether the decoded first data unit and the one or more layers satisfy the parity check equation.

6. The data storage system of claim 5 , wherein the controller is configured to direct the rotate-left/right shifter to rotate the data of the decoded first data unit by an amount of rotation based on a comparison between a current layer and a previous layer, the rotate-left/right shifter comprising a Benes network.

7. The data storage system of claim 5 , wherein the controller is configured to direct the rotate-left/right shifter to process the decoded first data unit using a granularity corresponding to a first matrix size of a plurality of matrix sizes, the rotate-left/right shifter supporting granularities corresponding to each of the plurality of matrix sizes.

8. The data storage system of claim 5 , wherein the controller is further configured to direct the rotate-left/right shifter to de-rotate the data of the decoded first data unit in response to determining that the decoded first data unit and each layer of the plurality of layers satisfy the parity check equation.

9. The data storage system of claim 1 , wherein the parity check equation comprises a matrix multiplication of the decoded first data unit and a transpose of one layer of the plurality of layers, the decoded first data unit and the transpose of the one layer satisfying the parity check equation when a result of the matrix multiplication is zero.

10. The data storage system of claim 1 , wherein the plurality of data units comprise a plurality of low-density parity-check (LDPC) data units, and the coding matrix comprises a plurality of sub-matrixes, the plurality of sub-matrixes comprising identity matrixes rotated by values.

11. In a data storage system comprising a controller, a method of decoding data performed under control of the controller, the method comprising:

iteratively decoding a first data unit of a plurality of data units, the plurality of data units read from a non-volatile memory array, using a plurality of layers of a coding matrix at least by:

performing a first decoding iteration on the first data unit using the plurality of layers to generate a decoded first data unit, and

performing a second decoding iteration on the decoded first data unit using the plurality of layers;

determining, in parallel with performing the second decoding iteration, whether the decoded first data unit generated by the first decoding iteration and one or more layers of the plurality of layers satisfy a parity check equation;

in response to determining that the decoded first data unit and a first layer of the one or more layers do not satisfy a parity check equation:

skipping determining whether the decoded first data unit and at least one layer of the plurality of layers other than the one or more layers satisfy the parity check equation, and

continuing performing the second decoding iteration on the decoded first data unit; and

in response to determining that the decoded first data unit and each layer of the plurality of layers satisfy the parity check equation, terminating iteratively decoding of the first data unit.

12. The method of claim 11 , further comprising, in response to determining that the decoded first data unit and the first layer satisfy the parity check equation, determining whether the decoded first data unit and a second layer of the one or more layers satisfy the parity check equation.

13. The method of claim 11 , further comprising, in parallel with determining whether the decoded first data unit and the first layer satisfy the parity check equation using first parity check computer hardware, determining whether the decoded first data unit and a second layer of the one or more layers satisfy the parity check equation using second parity check computer hardware different from the first parity check computer hardware.

14. The method of claim 11 , further comprising iteratively decoding a second data unit of the plurality of data units in response to determining that the decoded first data unit and each layer of the plurality of layers satisfy the parity check equation.

15. The method of claim 11 , further comprising directing a rotate-left/right shifter to rotate data of the decoded first data unit before determining whether the decoded first data unit and the one or more layers satisfy the parity check equation.

16. The method of claim 15 , further comprising directing the rotate-left/right shifter to rotate the data of the decoded first data unit by an amount of rotation based on a comparison between a current layer and a previous layer, the rotate-left/right shifter comprising a Benes network.

17. The method of claim 15 , further comprising directing the rotate-left/right shifter to process the decoded first data unit using a granularity corresponding to a first matrix size of a plurality of matrix sizes, the rotate-left/right shifter supporting granularities corresponding to each of the plurality of matrix sizes.

18. The method of claim 15 , further comprising directing the rotate-left/right shifter to de-rotate the data of the decoded first data unit in response to determining that the decoded first data unit and each layer of the plurality of layers satisfy the parity check equation.

19. The method of claim 11 , wherein the parity check equation comprises a matrix multiplication of the decoded first data unit and a transpose of one layer of the plurality of layers, the decoded first data unit and the transpose of the one layer satisfying the parity check equation when a result of the matrix multiplication is zero.

20. The method of claim 11 , wherein the plurality of data units comprise a plurality of low-density parity-check (LDPC) data units, and the coding matrix comprises a plurality of sub-matrixes, the plurality of sub-matrixes comprising identity matrixes rotated by values.

Assignments (11)
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 038744 FRAME 0481 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0556 →
RELEASE OF SECURITY INTEREST Recorded Mar 5, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 045501/0714 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038722/0229 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038744/0281 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038744/0481 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2013
From: LU, GUANGMING
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 029649/0772 →