IP Library Granted Patent US 10,180,794
Granted Patent B2
US 10,180,794 · App. 15/426,951 · Granted Jan 15, 2019

Soft decoding scheduling

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,180,794
App. No.
15/426,951
Granted
Jan 15, 2019
Kind
B2
Abstract

The subject technology provides reduced overhead in Low Density Parity Check decoding operations. A method includes receiving a hard decode fail indication from a decoder that decoding first raw data read from non-volatile memory in response to a first read command using a first set of voltages failed. The method includes determining a count of available soft decoders of a plurality of soft decoders of the decoder. The method includes determining, based on the count of available soft decoders and a pending number of soft decoding requests, a number of soft decoding requests to issue. The method includes issuing the determined number of soft decoding requests to respective ones of the available soft decoders for soft decoding the first raw data in parallel. The method includes receiving from the decoder a success indication of successful decoding.

Claims (74)

1. A method for managing data decoding comprising:

in response to receiving a first hard decode fail indication by a decoder of a controller of a memory system, determining a count of available soft decoders of a plurality of soft decoders of the decoder of the controller, wherein a hard decoder of the decoder generates the first hard decode fail indication when the hard decoder fails to hard decode first raw data that is read in response to a first read command from a non-volatile memory of the memory system;

determining, based on the count of available soft decoders and a pending number of soft decoding requests, a first number of soft decoding requests to provide;

providing the first number of soft decoding requests to available soft decoders for soft decoding the first raw data in parallel using the available soft decoders; and

receiving from the decoder a success indication of successful decoding of the first raw data by the available soft decoders.

2. The method of claim 1 , wherein the soft decoding of the first raw data further uses respective sets of confidence values.

3. The method of claim 1 , further comprising:

updating, after providing the first number of soft decoding requests, the count of available soft decoders and the pending number of soft decoding requests;

determining, based on the updated count of available soft decoders and the updated pending number of soft decoding requests, an updated first number of soft decoding requests to provide; and

providing the updated first number of soft decoding requests to the available soft decoders for soft decoding the first raw data in parallel on the available soft decoders.

4. The method of claim 1 , further comprising:

receiving a soft decoding failure indication for each of the provided first number soft decoding requests; and

when the pending number of soft decoding requests is zero, providing a second read command using a second set of voltages, the second read command comprising a second set of read operations.

5. The method of claim 4 , further comprising:

receiving a second hard decode fail indication that hard decoding second raw data read in response to the second read command failed;

resetting the pending number of soft decoding requests;

determining the count of available soft decoders of the plurality of soft decoders;

determining, based on the count of available soft decoders and the pending number of soft decoding requests, a second number of soft decoding requests to provide; and

providing the second number of soft decoding requests to respective ones of the available soft decoders for soft decoding the second raw data in parallel.

6. The method of claim 1 , further comprising:

determining, in response to the success indication, whether decoded first raw data was successfully provided; and

providing the decoded first raw data when the decoded first raw data was not previously provided by hard decoding.

7. The method of claim 6 , wherein determining whether the decoded first data was successfully provided comprises determining whether a success flag indicating that the decoded first data was provided is set.

8. A flash storage system comprising:

means for receiving a hard decode fail indication from a decoder indicating that decoding first raw data read from non-volatile memory of the flash storage system in response to a first read command using a first set of voltages has failed, wherein the first read command comprising a first set of read operations from the non-volatile memory, and wherein the hard decode fail indication is generated in response to a failed hard decoding, by a hard decoder of the decoder, of the first raw data that is read by the first set of read operations;

means for determining a count of available soft decoders of a plurality of soft decoders of the decoder;

means for determining, based on the count of available soft decoders and a pending number of soft decoding requests, a first number of soft decoding requests to provide;

means for providing the first number of soft decoding requests to available soft decoders for soft decoding the first raw data in parallel using the available soft decoders; and

means for receiving from the decoder a success indication of successful decoding of the first raw data by the available soft decoders.

9. The flash storage system of claim 8 , wherein the soft decoding of the first raw data further uses respective sets of confidence values.

10. The flash storage system of claim 8 , further comprising:

means for updating, after providing the first number of soft decoding requests, the count of available soft decoders and the pending number of soft decoding requests;

means for determining, based on the updated count of available soft decoders and the updated pending number of soft decoding requests, an updated first number of soft decoding requests to provide; and

means for providing the updated first number of soft decoding requests to respective ones of the available soft decoders for soft decoding the first raw data in parallel on the available soft decoders.

11. The flash storage system of claim 8 , further comprising:

means for receiving a soft decoding failure indication for each of the provided first number of soft decoding requests; and

means for providing, when the pending number of soft decoding requests is zero, a second read command using a second set of voltages, the second read command comprising a second set of read operations.

12. The flash storage system of claim 11 , further comprising:

means for receiving a second hard decode fail indication that hard decoding second raw data read in response to the second read command failed;

means for resetting the pending number of soft decoding requests;

means for determining the count of available soft decoders of the plurality of soft decoders;

means for determining, based on the count of available soft decoders and the pending number of soft decoding requests, a second number of soft decoding requests to provide; and

means for providing the second number of soft decoding requests to respective ones of the available soft decoders for soft decoding the second raw data in parallel.

13. The flash storage system of claim 8 , further comprising:

means for determining, in response to the success indication, whether decoded first raw data was successfully provided; and

means for providing the decoded first raw data when the decoded first raw data was not previously provided by hard decoding.

14. The flash storage system of claim 13 , wherein means for determining whether the decoded first data was successfully provided comprises means for determining whether a success flag indicating that the decoded first data was provided is set.

15. A flash storage system comprising:

a plurality of flash memory devices;

a decoder; and

a controller comprising the decoder and configured to:

receive a hard decode fail indication from the decoder indicating that decoding first raw data read from non-volatile memory of the flash storage system in response to a first read command using a first set of voltages has failed, wherein the first read command comprises a first set of read operations from the non-volatile memory, and wherein a hard decoder of the decoder is configured to generate the hard decode fail indication when the hard decoder fails to hard decode the first raw data that is read in response to the first set of read operations;

determine a count of available soft decoders of a plurality of soft decoders of the decoder;

determine, based on the count of available soft decoders and a pending number of soft decoding requests, a first number of soft decoding requests to provide;

provide the first number of soft decoding requests to available soft decoders for soft decoding the first raw data in parallel using the available soft decoders; and

receive from the decoder a success indication of successful decoding of the first raw data by the available soft decoders.

16. The flash storage system of claim 15 , wherein the soft decoding of the first raw data further uses respective sets of confidence values.

17. The flash storage system of claim 15 , wherein the controller is further configured to:

update, after providing the first number of soft decoding requests, the count of available soft decoders and the pending number of soft decoding requests;

determine, based on the updated count of available soft decoders and the updated pending number of soft decoding requests, an updated first number of soft decoding requests to provide; and

provide the updated first number of soft decoding requests to the available soft decoders for soft decoding the first raw data in parallel on the available soft decoders.

18. The flash storage system of claim 15 , wherein the controller is further configured to:

receive a soft decoding failure indication for each of the provided first number of soft decoding requests; and

when the pending number of soft decoding requests is zero, provide a second read command using a second set of voltages, the second read command comprising a second set of read operations.

19. The flash storage system of claim 18 , wherein the controller is further configured to:

receive a second hard decode fail indication that hard decoding second raw data read in response to the second read command failed;

reset the pending number of soft decoding requests;

determine the count of available soft decoders of the plurality of soft decoders;

determine, based on the count of available soft decoders and the pending number of soft decoding requests, a second number of soft decoding requests to provide; and

provide the second number of soft decoding requests to respective ones of the available soft decoders for soft decoding the second raw data in parallel.

20. The flash storage system of claim 15 , wherein the controller is further configured to:

determine, in response to the success indication, whether decoded first raw data was successfully provided; and

provide the decoded first raw data when the decoded first raw data was not previously provided by hard decoding.

21. The flash storage system of claim 20 , wherein determining whether the decoded first data was successfully provided comprises determining whether a success flag indicating that the decoded first data was provided is set.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
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 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 Feb 16, 2017
From: TAO, JUN; CHEN, NIANG-CHU
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 041282/0088 →