# US 2014/0157089 A1 · Forward error correction with parallel error detection for flash memories

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2014/0157089 A1
- Document ID: US20140157089A1
- Status: Published application
- Kind: A1
- Application number: 14/086,807
- Filed: 2013-11-21
- Published: 2014-06-05
- Earliest claimed: 2009-08-18
- Assignees: ViaSat, Inc.
- Applicants: Viasat, Inc.
- Inventors: SAMEEP DAVE; RUSSELL FUERST; MARK KOHOOT; JIM KESZENHEIMER; WILLIAM H THESLING
- Web page: https://patentgrep.com/patent/US20140157089A1

## CPC

- G06F 11/1068: {in sector programmable memories, e.g. flash disk (G06F11/1072 takes precedence)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## 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

### Claim at position 1

1-25. (canceled)

### Claim 26

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 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; and
in response to the determination, modifying the forward error correction coding for use in subsequently encoding data for storage in the flash memory.

### Claim 27 (depends on 26)

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

### Claim 28 (depends on 26)

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

### Claim 29 (depends on 26)

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

### Claim 30 (depends on 29)

The method of claim 29, 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.

### Claim 31 (depends on 26)

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

### Claim 32 (depends on 31)

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

### Claim 33 (depends on 26)

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

### Claim 34 (depends on 26)

The method of claim 26, further comprising:
subsequently encoding data using the modified forward error correction coding; and
storing the subsequently encoded data in the flash memory.

### Claim 35 (depends on 34)

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

### Claim 36 (depends on 26)

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

### Claim 37 (depends on 26)

The method of claim 26, further comprising powering-up, from an inactive mode, one more error correction sub-modules for processing the data stream in response to the determination.

### Claim 38

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; 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; and
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.

### Claim 39 (depends on 38)

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

### Claim 40 (depends on 38)

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

### Claim 41 (depends on 38)

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

### Claim 42 (depends on 41)

The system of claim 41, 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.

### Claim 43 (depends on 38)

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

### Claim 44 (depends on 43)

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

### Claim 45 (depends on 38)

The system of claim 38, 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.

### Claim 46 (depends on 38)

The system of claim 38, 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.

### Claim 47 (depends on 46)

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

### Claim 48 (depends on 38)

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

### Claim 49 (depends on 38)

The system of claim 38, further comprising powering-up, from an inactive mode, one more error correction sub-modules for processing the data stream in response to the determination.
