IP Library Granted Patent US 8,966,347
Granted Patent B2
US 8,966,347 · App. 14/086,807 · Granted Feb 24, 2015

Forward error correction with parallel error detection for flash memories

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 8,966,347
App. No.
14/086,807
Granted
Feb 24, 2015
Kind
B2
Abstract

Methods, systems, and devices are described for forward error correction for flash memory. Encoded data from flash memory may be used to generate a number of data streams. At each of a number of error detection sub-modules operating in parallel, a different one of the data streams is processed. Each error detection sub-module may detect whether a portion of the respective received stream contains an error, and forward the portion to an error correction module. The error correction module, physically separate from the error detection sub-modules, may correct the forwarded portions of the respective received streams containing an error. The age and error rate associated with the flash memory may be monitored, and a coding rate or other aspects may be dynamically adapted to account for these factors.

Claims (48)

1. A method comprising:

encoding data using forward error correction coding;

storing the encoded data in a flash memory;

retrieving the encoded data stored in the flash memory to generate a data stream;

processing, using at least a first error correction sub-module, the data stream to correct errors in the data stream associated with the flash memory;

monitoring a metric of the flash memory while repeating the encoding, the storing, the retrieving and the processing, wherein the metric represents memory performance degradation of the flash memory;

determining that the monitored metric exceeds a threshold;

in response to the determination, modifying the forward error correction coding for use in subsequently encoding data for storage in the flash memory; and

in response to the determination, powering-up, from an inactive mode, a second error correction sub-module arranged in parallel with the first error correction sub-module for subsequent data stream processing.

2. The method of claim 1 , wherein the modifying comprises changing a coding rate of the forward error correction coding.

3. The method of claim 1 , wherein the modifying comprises implementing more robust forward error correction coding.

4. The method of claim 1 , wherein the metric is based at least in part on an aging of the flash memory.

5. The method of claim 4 , wherein the metric is based on one or more of a time since manufacture of the flash memory, a time since first use of the flash memory, and an amount of use of the flash memory.

6. The method of claim 1 , wherein the metric is based at least in part on an amount of errors corrected during the processing.

7. The method of claim 6 , wherein the metric is based on the amount of errors corrected over a period of time.

8. The method of claim 1 , wherein the retrieving, the processing and the monitoring are performed on a sector-by-sector basis of the flash memory.

9. The method of claim 1 , further comprising:

subsequently encoding data using the modified forward error correction coding; and

storing the subsequently encoded data in the flash memory.

10. The method of claim 9 , wherein the subsequently encoded data is stored in a sector of the flash memory different than that of said encoded data.

11. The method of claim 9 , further comprising:

retrieving the subsequently encoded data stored in the flash memory to generate a second data stream; and

processing, using at least the first error correction sub-module and the second error correction sub-module, the data stream to correct errors in the data stream associated with the flash memory.

12. The method of claim 1 , wherein the threshold is based at least in part on an amount of available memory within the flash memory.

13. A system comprising:

an encoder to encode data using forward error correction coding;

a flash memory to store the encoded data;

a decoder to retrieve the encoded data stored in the flash memory to generate a data stream, and to process the data stream to correct errors in the data stream associated with the flash memory using at least a first error correction sub-module; and

a controller to:

monitor a metric of the flash memory while repeating the encoding, the storing, the retrieving and the processing, wherein the metric represents memory performance degradation of the flash memory;

determine that the monitored metric exceeds a threshold;

in response to the determination, modify the forward error correction coding for use by the encoder in subsequently encoding data for storage in the flash memory; and

in response to the determination, powering-up, from an inactive mode, a second error correction sub-module arranged in parallel with the first error correction sub-module for subsequent data stream processing.

14. The system of claim 13 , wherein the controller changes a coding rate of the forward error correction coding to modify the forward error correction coding.

15. The system of claim 13 , wherein the controller implements more robust forward error correction coding to modify the forward error correction coding.

16. The system of claim 13 , wherein the metric is based at least in part on an aging of the flash memory.

17. The system of claim 16 , wherein the metric is based on one or more of a time since manufacture of the flash memory, a time since first use of the flash memory, and an amount of use of the flash memory.

18. The system of claim 13 , wherein the metric is based at least in part on an amount of errors corrected during the processing.

19. The system of claim 18 , wherein the metric is based on the amount of errors corrected over a period of time.

20. The system of claim 13 , wherein the decoder retrieves the encoded data and processes the data stream on a sector-by-sector basis of the flash memory, and the controller monitors the metric on a sector-by-sector basis of the flash memory.

21. The system of claim 13 , wherein:

the encoder subsequently encodes data using the modified forward error correction coding; and

the flash memory stores the subsequently encoded data in the flash memory.

22. The system of claim 21 , wherein the flash memory stores the subsequently encoded data in a sector different than that of said encoded data.

23. The system of claim 21 , wherein the decoder:

retrieves the subsequently encoded data stored in the flash memory to generate a second data stream; and

processes, using at least the first error correction sub-module and the second error correction sub-module, the data stream to correct errors in the data stream associated with the flash memory.

24. The system of claim 13 , wherein the threshold is based at least in part on an amount of available memory within the flash memory.

Assignments (5)
SECURITY AGREEMENT Recorded Jun 1, 2023
From: VIASAT, INC.
To: BANK OF AMERICA, N.A., AS AGENT
Reel/Frame 063822/0446 →
SECURITY AGREEMENT Recorded Mar 7, 2022
From: VIASAT, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 059332/0558 →
SECURITY INTEREST Recorded Mar 27, 2019
From: VIASAT, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL TRUSTEE
Reel/Frame 048715/0589 →
PATENT SECURITY AGREEMENT Recorded May 24, 2016
From: VIASAT, INC.
To: MUFG UNION BANK, N.A., AS AGENT
Reel/Frame 038799/0714 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 10, 2014
From: DAVE, SAMEEP; FUERST, RUSSELL; KOHOOT, MARK; KESZENHEIMER, JIM; THESLING, WILLIAM H
To: VIASAT, INC.
Reel/Frame 032182/0939 →