IP Library Granted Patent US 10,389,381
Granted Patent B2
US 10,389,381 · App. 15/984,179 · Granted Aug 20, 2019

System and method for dynamic scaling of LDPC decoder in a solid state drive

Inventors: Kent D. Anderson (Broomfield, CO); Anantha Raman Krishnan (Irvine, CA)
Assignee: Western Digital Technologies, Inc.
H03M13/1111G06F11/1068G11C29/52H03M13/1128H03M13/3746H03M13/45H03M13/658H03M13/6591
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,389,381
App. No.
15/984,179
Granted
Aug 20, 2019
Kind
B2
Abstract

A decoder is configured to perform, for a unit of data received by the decoder, a plurality of decoding iterations in which a plurality of messages are passed between a plurality of check nodes and a plurality of variable nodes, each message indicating a degree of reliability in an observed outcome of data. The decoder determines, for each of the plurality of decoding iterations, whether a trigger condition is satisfied based on an internal state of the decoder and, when a trigger condition is determined to be satisfied during a respective decoding iteration, scales one or more respective messages of the plurality of messages during a subsequent decoding iteration. The unit of data is decoded based on the plurality of decoding iterations and at least one scaled message resulting from the trigger condition being satisfied during the respective decoding iteration.

Claims (49)

1. A decoder, the decoder configured to:

perform, for a unit of data received by the decoder, a plurality of decoding iterations in which a plurality of messages are passed between a plurality of check nodes and a plurality of variable nodes, each message indicating a degree of reliability in an observed outcome of data;

determine, for each of the plurality of decoding iterations, whether a trigger condition is satisfied based on an internal state of the decoder;

scale, when a trigger condition is determined to be satisfied during a respective decoding iteration, one or more respective messages of the plurality of messages; and

decode the unit of data received by the decoder based on the plurality of decoding iterations and at least one scaled message resulting from the trigger condition being satisfied during the respective decoding iteration.

2. The decoder of claim 1 , wherein, when the trigger condition is determined to be satisfied during the respective decoding iteration, the decoder being configured to scale the one or more respective messages comprises the decoder being configured to:

set, during the respective decoding iteration, the decoder to scale the one or more respective messages in a subsequent decoding iteration, and scaling the one or more respective messages during the subsequent decoding iteration.

3. The decoder of claim 2 , wherein the decoder being configured to scale the one or more respective messages comprises the decoder being configured to:

shift, using a shifter, a respective message to change a bit value of the respective message; and

subtract, using an adder, a message of a previous iteration from the shifted respective message.

4. The decoder of claim 3 , wherein the decoder being configured to shift the respective message comprises the decoder being configured to right shift a plurality of bits representing the respective message and truncate or round the respective message.

5. The decoder of claim 3 , wherein the message of the previous iteration is based on a message from the shifter and a message provided by one or more of the plurality of check nodes.

6. The decoder of claim 1 , wherein the decoder being configured to determine whether a the trigger condition is satisfied comprises the decoder being configured to determine, for each of the plurality of decoding iterations, whether the trigger condition is satisfied based on a condition of a respective message passed to or received from the plurality of check nodes.

7. The decoder of claim 1 , wherein the decoder is further configured to:

determine, based on one or more messages received from the plurality of check nodes, a number of unsatisfied checks;

determine that the trigger condition is satisfied based on the number of unsatisfied checks meeting or exceeding a threshold number of unsatisfied checks.

8. The decoder of claim 1 , wherein the decoder is further configured to:

determine that the trigger condition is satisfied based on absolute values of a predetermined number of the plurality of messages being greater than a set limit; and

scale down the at least one scaled message, wherein a numerical range spanned by the at least one scaled message is reduced.

9. The decoder of claim 1 , wherein the plurality of messages comprise a plurality of log-likelihood ratios (LLRs) for the unit of data received by the decoder.

10. A machine-implemented method comprising:

performing, for a unit of data received by a decoder, a plurality of decoding iterations in which a plurality of messages are passed between a plurality of check nodes and a plurality of variable nodes, each message indicating a degree of reliability in an observed outcome of data;

determining, for each of the plurality of decoding iterations, whether a trigger condition is satisfied based on an internal state of the decoder;

scaling, when a trigger condition is determined to be satisfied during a respective decoding iteration, one or more respective messages of the plurality of messages; and

decoding the unit of data received by the decoder based on the plurality of decoding iterations and at least one scaled message resulting from the trigger condition being satisfied during the respective decoding iteration.

11. The machine-implemented method of claim 10 , wherein, when the trigger condition is determined to be satisfied during the respective decoding iteration, scaling the one or more respective messages comprises:

setting, during the respective decoding iteration, the decoder to scale the one or more respective messages in a subsequent decoding iteration, and scaling the one or more respective messages during the subsequent decoding iteration.

12. The machine-implemented method of claim 11 , wherein scaling the one or more respective messages comprises:

shifting, using a shifter, a respective message to change a bit value of the respective message; and

subtracting, using an adder, a message of a previous iteration from the shifted respective message.

13. The machine-implemented method of claim 12 , wherein shifting the respective message comprises:

right shifting a plurality of bits representing the respective message and truncating or rounding the respective message.

14. The machine-implemented method of claim 12 , wherein the message of the previous iteration is based on a message from the shifter and a message provided by one or more of the plurality of check nodes.

15. The machine-implemented method of claim 10 , wherein determining whether the the trigger condition is satisfied comprises:

determining, for each of the plurality of decoding iterations, whether the trigger condition is satisfied based on a condition of a respective message passed to or received from the plurality of check nodes.

16. The machine-implemented method of claim 10 , further comprising:

determining, based on one or more messages received from the plurality of check nodes, a number of unsatisfied checks;

determining that the trigger condition is satisfied based on the number of unsatisfied checks meeting or exceeding a threshold number of unsatisfied checks.

17. The machine-implemented method of claim 10 , further comprising:

determining that the trigger condition is satisfied based on absolute values of a predetermined number of the plurality of messages being greater than a set limit; and

scaling down the at least one scaled message, wherein the scaling reduces a numerical range spanned by the at least one scaled message.

18. The machine-implemented method of claim 10 , wherein the plurality of messages comprise a plurality of log-likelihood ratios (LLRs) for the unit of data received by the decoder.

19. A decoder, comprising:

means for performing, for a unit of data received by the decoder, a plurality of decoding iterations in which a plurality of messages are passed between a plurality of check nodes and a plurality of variable nodes, each message indicating a degree of reliability in an observed outcome of data;

means for determining, for each of the plurality of decoding iterations, whether a trigger condition is satisfied based on an internal state of the decoder;

means for scaling, when a trigger condition is determined to be satisfied during a respective decoding iteration, one or more respective messages of the plurality of messages; and

means for decoding the unit of data received based on the plurality of decoding iterations and at least one scaled message resulting from the trigger condition being satisfied during the respective decoding iteration.

20. The decoder of claim 19 , wherein, when the trigger condition is determined to be satisfied during the respective decoding iteration, the means for scaling the one or more respective messages comprises:

means for setting, during the respective decoding iteration, the decoder to scale the one or more respective messages in a subsequent decoding iteration, and scaling the one or more respective messages during the subsequent decoding iteration.

Assignments (3)
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 10, 2019
From: ANDERSON, KENT D.; KRISHNAN, ANANTHA RAMAN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 049146/0332 →
Continuity (4)
Continuation 15162504 · May 23, 2016
Continuation 14722673 · May 27, 2015
Continuation 13842956 · Mar 15, 2013
Related Publication 20180269902A1 · Sep 20, 2018