IP Library Granted Patent US 9,425,829
Granted Patent B2
US 9,425,829 · App. 14/485,624 · Granted Aug 23, 2016

Adaptive error correction codes (ECCs) for electronic memories

Inventors: Ravindraraj Ramaraju (Round Rock, TX); George P. Hoekstra (Austin, TX)
Assignee: Freescale Semiconductor, Inc.
H03M13/353G06F3/064G06F3/0619G06F3/0683G06F11/1076H03M13/1102H03M13/152H03M13/1515
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,425,829
App. No.
14/485,624
Granted
Aug 23, 2016
Kind
B2
Abstract

Systems and methods for adaptive error correction codes (ECCs) for electronic memories. In some embodiments, a memory device, may include a first memory having a plurality of address locations, each of the plurality of address locations having a number of storage bits configured to store data and one or more error correction bits corresponding to the data; and a second memory distinct from the first memory, the second memory having a plurality of entries, each of the plurality of entries configured to store one or more operation code bits relating to data stored at a corresponding address location in the first memory, the one or more operation code bits identifying an error correction scheme used to generate the one or more error correction bits at the corresponding address location in the first memory.

Claims (39)

1. A memory device, comprising:

a first memory having a plurality of address locations, each of the plurality of address locations having a number of storage bits configured to store data and one or more error correction bits corresponding to the data;

a second memory distinct from the first memory, the second memory having a plurality of entries, each of the plurality of entries configured to store one or more operation code bits relating to data stored at a corresponding address location in the first memory, the one or more operation code bits identifying an error correction scheme used to generate the one or more error correction bits at the corresponding address location in the first memory; and

a logic circuit coupled to the first and second memory circuits, the logic circuit configured to:

determine that data stored at a given address location of the first memory includes a number of data corruption errors that exceeds a correction capability of a first correction scheme identified by a first operation code stored in a corresponding entry of the second memory;

in response to the determination, select a second correction scheme capable of correcting the number of data corruption errors;

update the corresponding entry of the second memory with a second operation code identifying the second correction scheme; and

select the second correction scheme for another address location independently of whether the first correction scheme is capable of correcting data corruption errors in the other address location.

2. The memory device of claim 1 , wherein each of the plurality of address locations is a page within the first memory.

3. The memory device of claim 1 , wherein each of the plurality of address locations is a block within the first memory, each block comprising a plurality of pages.

4. The memory device of claim 1 , wherein the first and second memories include non-volatile memories, and wherein the logic circuit includes a memory controller.

5. The memory device of claim 1 , wherein the first correction scheme includes a Reed-Solomon code or a Mutually Orthogonal Latin Squares (MOLS) code, and wherein the second correction scheme includes a Bose-Chaudhuri-Hocquenghem (BCH) code.

6. The memory device of claim 1 , wherein the first correction scheme includes a Bose-Chaudhuri-Hocquenghem (BCH) code, and wherein the second correction scheme includes a Low-Density Parity-Check (LDPC) code.

7. The memory device of claim 1 , wherein selection of the second correction scheme follows a predetermined sequence of correction schemes ordered from least to most computationally complex.

8. The memory device of claim 1 , wherein the address location and the other address location are part of a same block within the first memory.

9. The memory device of claim 1 , wherein the logic circuit is further configured to, in response to a determination that a most complex correction scheme is not capable of correcting the number of corruption errors, flag the given address location of the first memory as unusable.

10. The memory device of claim 9 , wherein the logic circuit is further configured to flag another address location as unusable independently of whether the most complex correction scheme is capable of correcting other data corruption errors in the other address location, and wherein the given address location and the other address location are part of a same block within the first memory.

11. A method, comprising:

storing data at a plurality of address locations within a first memory, wherein each of the plurality of address locations has a number of storage bits configured to store data and one or more error correction bits corresponding to the data;

storing an operation code at each of a plurality of entries of a second memory, each operation code relating to data stored at a corresponding address location in the first memory, wherein each operation code is usable to identify an error correction scheme used to generate one or more error correction bits in a corresponding address location of the first memory;

determining that data stored at a given address location of the first memory includes a number of data corruption errors that exceeds a correction capability of a first correction scheme identified by a first operation code stored in a corresponding entry of the second memory;

selecting a second correction scheme capable of correcting the number of data corruption errors;

updating the corresponding entry of the second memory with a second operation code identifying the second correction scheme; and

selecting the second correction scheme for data stored at another address location independently of whether the first correction scheme is capable of correcting data corruption errors in the other address location.

12. The method of claim 11 , further comprising:

determining that the data has a number of data corruption errors;

determining that none of a set of available correction schemes is capable of correcting the number of corruption errors; and

flagging the given address location as unusable.

13. The method of claim 12 , further comprising flagging another address location as unusable independently of whether any of the available correction schemes is capable of correcting data corruption errors in the data stored at the other address location, wherein the address location and the other address location are part of a same block within the first memory.

14. The method of claim 11 , wherein the address location and the other address location are part of a same block within the first memory.

15. The method of claim 11 , further comprising: determining that data stored at the given address location of the first memory includes an additional number of data corruption errors that exceeds a correction capability of the second correction scheme; selecting a third correction scheme capable of correcting the additional number of data corruption errors; and updating the corresponding entry of the second memory with a third operation code identifying the third correction scheme.

16. The method of claim 15 , wherein the first correction scheme includes a Reed-Solomon code or a Mutually Orthogonal Latin Squares (MOLS) code, the second correction scheme includes a Bose-Chaudhuri-Hocquenghem (BCH) code, and the third correction scheme includes a Low-Density Parity-Check (LDPC) code.

17. An electronic device, comprising:

a controller; and

a memory having program instructions stored thereon that, upon execution by the controller, cause the electronic device to:

determine that data stored at a given address of a first memory has a number of data corruption errors that exceeds a correction capability of a first correction scheme identified by a first operation code stored in an entry of a second memory that corresponds to the address of the first memory;

select a second correction scheme capable of correcting the number of data corruption errors, wherein the second correction scheme is computationally more complex than the first correction scheme;

update the corresponding entry of the second memory with a second operation code identifying the second correction scheme; and

select the second correction scheme for another address of the first memory independently of whether the first correction scheme is capable of correcting data corruption errors in the other address.

Assignments (14)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
MERGER Recorded Jan 3, 2017
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 041144/0363 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →
SUPPLEMENT TO THE SECURITY AGREEMENT Recorded Jun 16, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 039138/0001 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 7, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037458/0502 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 7, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037458/0460 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0921 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Nov 4, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 034153/0027 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Nov 4, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 034160/0370 →
SUPPLEMENT TO IP SECURITY AGREEMENT Recorded Nov 4, 2014
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 034160/0351 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2014
From: RAMARAJU, RAVINDRARAJ; HOEKSTRA, GEORGE P.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 033735/0106 →
Continuity (1)
Related Publication 20160080002A1 · Mar 17, 2016