IP Library Granted Patent US 8,707,122
Granted Patent B1
US 8,707,122 · App. 13/023,336 · Granted Apr 22, 2014

Nonvolatile memory controller with two-stage error correction technique for enhanced reliability

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,707,122
App. No.
13/023,336
Granted
Apr 22, 2014
Kind
B1
Abstract

A nonvolatile memory controller generates an error correction code for each data unit in a data stripe and generates a parity unit based on the data units of the data stripe. If a data unit of the data stripe has a number of data bit errors not exceeding the error correction capacity of the nonvolatile memory controller, the nonvolatile memory controller corrects any data bit errors in the data unit based on the error correction code of the data unit. Otherwise, if a data unit of the data stripe has a number of data bit error exceeding the error correction capacity of the nonvolatile memory controller, the nonvolatile memory controller recovers the data unit based on the other data units of the data stripe and the parity unit.

Claims (43)

1. A nonvolatile memory system comprising:

an error correction module configured to receive a data stripe including data units and to generate an error correction code for each data unit of the data stripe for correcting data bit errors in the data unit;

a data recovery module configured to generate a parity unit for the data stripe based on the data units of the data stripe for recovering a data unit of the data stripe based on other data units of the data stripe and the parity unit;

a nonvolatile memory module coupled to the error correction module and the data recovery module, the nonvolatile memory module configured to store the data stripe, the parity unit, and the error correction codes;

the error correction module further configured to read the data stripe and the error correction codes from the nonvolatile memory module in response to a data stripe read request, to correct data bit errors in a data unit of the data stripe if the data unit has a number of data bit errors not exceeding an error correction capacity of the error correction module to generate corrected data units and to provide the corrected data units of the data stripe to the data recovery module if the number of data bit errors of the data unit exceeds the error correction capacity of the error correction module; and

the data recovery module further configured to read the parity unit from the nonvolatile memory module in response to a data stripe read request and to recover the data unit of the data stripe based on the corrected data units of the data stripe and the parity unit if the data unit has a number of data bit errors exceeding the error correction capacity of the error correction module.

2. The nonvolatile memory system of claim 1 , wherein the data recovery module is further configured to recover the error correction code of a data unit of the data stripe when recovering a data unit based on the corrected data units of the data stripe and the parity unit if the data unit has a number of data bit errors exceeding the error correction capacity of the error correction module.

3. The nonvolatile memory system of claim 1 , wherein the error correction module comprises a plurality of error correction circuits, each error correction circuit of the plurality of error correction circuits configured to generate an error correction code of a data unit in the data stripe.

4. The nonvolatile memory system of claim 1 , wherein the error correction module includes a BCH error correction circuit having an error correction capacity for correcting up to the predetermined number of data bit errors, the BCH error correction circuit further configured to generate an error capacity indicator for indicating whether the error correction capacity of the BCH error correction circuit is exceeded for a data unit.

5. The nonvolatile memory system of claim 4 , wherein the BCH error correction circuit is configured to generate a locator polynomial based on a data unit, identify a number of data bit errors in the data unit based on the locator polynomial, and determine the identified number of data bit errors in the data unit exceeds the error correction capacity of the BCH error correction circuit by determining the identified number of data bit errors in the data unit is not equal to the degree of the locator polynomial.

6. The nonvolatile memory system of claim 1 , wherein the nonvolatile memory module comprises an array of nonvolatile memory units configured to store the data stripe, and the error correction module is further configured to stripe the data units of the data stripe across the array of nonvolatile memory units.

7. The nonvolatile memory system of claim 1 , wherein the nonvolatile memory module is further configured to store a memory page including a data unit of the data stripe and the error correction code of the data unit into a page frame of the nonvolatile memory module.

8. The nonvolatile memory system of claim 1 , further comprising a data management module configured to receive a plurality of data units and to generate the data stripe by aggregating a number of data units of the plurality of data units into the data stripe.

9. The nonvolatile memory system of claim 8 , wherein the data management module is programmable to select a size of the data stripe by selecting the number of data units in the data stripe.

10. A nonvolatile memory system comprising:

a data management module configured to receive a plurality of data units and to generate a data stripe by aggregating a number of data units of the plurality of data units into the data stripe;

an error correction module comprising a plurality of error correction circuits, each error correction circuit of the plurality of error correction circuits configured to generate an error correction code for a data unit of the data stripe for correcting data bit errors in the data unit;

a data recovery module configured to generate a parity unit for the data stripe based on the data units of the data stripe for recovering a data unit of the data stripe based on other data units of the data stripe and the parity unit;

a nonvolatile memory module coupled to the error correction module and the data recovery module, the nonvolatile memory module comprising a plurality of nonvolatile memory units configured to store the data stripe, the parity unit, and the error corrections codes;

each error correction circuit of the plurality of error correction circuits further configured to read the data stripe and the error correction codes from the nonvolatile memory module in response to a data stripe read request, to correct data bit errors in a data unit of the data stripe if the data unit has a number of data bit errors not exceeding an error correction capacity of the error correction module to generate corrected data units and to provide the corrected data units of the data stripe to the data recovery module if the number of data bit errors of the data unit exceeds the error correction capacity of the error correction module; and

the data recovery module further configured to read the parity unit from the nonvolatile memory module in response to a data stripe read request and to recover the data unit of the data stripe based on the corrected data units of the data stripe and the parity unit if the data unit has a number of data bit errors exceeding the error correction capacity of the error correction module.

11. The nonvolatile memory system of claim 10 , wherein the data recovery module is further configured to recover the error correction code of a data unit of the data stripe when recovering a data unit based on the corrected data units of the data stripe and the parity unit if the data unit has a number of data bit errors exceeding the error correction capacity of the error correction module.

12. The nonvolatile memory system of claim 10 , wherein the plurality of nonvolatile memory units comprises an array of nonvolatile memory units configured to store the data stripe, and the error correction module is further configured to stripe the data units of the data stripe across the array of nonvolatile memory units.

13. The nonvolatile memory system of claim 10 , wherein an error correction circuit of the error correction module is a BCH error correction circuit having an error correction capacity for correcting up to the predetermined number of data bit errors, the BCH error correction circuit further configured to generate an error capacity indicator for indicating whether the error correction capacity of the BCH error correction circuit is exceeded for a data unit.

14. The nonvolatile memory system of claim 13 , wherein the BCH error correction circuit is configured to generate a locator polynomial based on a data unit of the data stripe, identify a number of data bit errors in the data unit based on the locator polynomial, and determine the identified number of data bit errors in the data unit exceeds the error correction capacity of the BCH error correction circuit by determining the identified number of data bit errors in the data unit is not equal to the degree of the locator polynomial.

15. The nonvolatile memory system of claim 10 , wherein the nonvolatile memory module is further configured to store a memory page including a data unit of the data stripe and the error correction code of the data unit into a page frame of the nonvolatile memory module.

16. The nonvolatile memory system of claim 10 , wherein the data management module is programmable to select a size of the data stripe by selecting the number of data units in the data stripe.

17. A method comprising:

generating error correction codes for data units of a data stripe by an error correction module of a nonvolatile memory system;

generating a parity unit based on the data units of the data stripe by a data recovery module of the nonvolatile memory system;

receiving a read request for a data unit of the data stripe;

reading the error correction code for the data unit of the data stripe by the error correction module of a nonvolatile memory system upon receipt of the read request;

reading the parity unit for the data strip by the data recovery module of the nonvolatile memory system upon receipt of the read request;

detecting a number of data bit errors in a data unit of the data stripe;

determining whether the number of data bit errors in the data unit exceeds an error correction capacity of the error correction module;

correcting the data bit errors in the data unit by the error correction module based on the error correction code of the data unit if the number of data bit errors in the data unit does not exceed the error correction capacity of the error correction module to generate corrected data units;

providing the corrected data units of the data stripe to the data recovery module if the number of data bit errors of the data unit exceeds the error correction capacity of the error correction module; and

recovering the data unit by the data recovery module of the nonvolatile memory system based on the corrected data units of the data stripe and the parity unit if the number of data bit errors in the data unit exceeds the error correction capacity of the error correction module.

18. The method of claim 17 , further comprising:

receiving a plurality of data units; and

generating the data stripe by aggregating data units of the plurality of data units into the data stripe.

19. The method of claim 17 , further comprising striping the data units of the data stripe across an array of nonvolatile memory units in the nonvolatile memory system.

20. The method of claim 17 , further comprising storing a memory page including a data unit of the data stripe and the error correction code of the data unit into a page frame.

Assignments (11)
RELEASE OF SECURITY INTEREST Recorded May 29, 2018
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: MICROSEMI STORAGE SOLUTIONS, INC.; MICROSEMI STORAGE SOLUTIONS (U.S.), INC.
Reel/Frame 046251/0271 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 7, 2017
From: MICROSEMI SOLUTIONS (U.S.), INC.
To: IP GEM GROUP, LLC
Reel/Frame 043212/0001 →
CHANGE OF NAME Recorded Aug 7, 2017
From: MICROSEMI STORAGE SOLUTIONS (U.S.), INC.
To: MICROSEMI SOLUTIONS (U.S.), INC.
Reel/Frame 043458/0351 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME AND ADDRESS PREVIOUSLY RECORDED AT REEL: 037961 FRAME: 0519. ASSIGNOR(S) HEREBY CONFIRMS THE CHANGE OF NAME. Recorded Mar 15, 2016
From: PMC-SIERRA US, INC.
To: MICROSEMI STORAGE SOLUTIONS (US), INC.
Reel/Frame 038102/0874 →
CHANGE OF NAME Recorded Mar 1, 2016
From: PMC-SIERRA US, INC.
To: MICROSEMI STORAGE SOLUTIONS (U.S.), INC.
Reel/Frame 037961/0519 →
PATENT SECURITY AGREEMENT Recorded Feb 3, 2016
From: MICROSEMI STORAGE SOLUTIONS, INC. (F/K/A PMC-SIERRA, INC.); MICROSEMI STORAGE SOLUTIONS (U.S.), INC. (F/K/A PMC-SIERRA US, INC.)
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037689/0719 →
RELEASE OF SECURITY INTEREST Recorded Feb 1, 2016
From: BANK OF AMERICA, N.A.
To: PMC-SIERRA, INC.; PMC-SIERRA US, INC.; WINTEGRA, INC.
Reel/Frame 037675/0129 →
SECURITY INTEREST IN PATENTS Recorded Aug 6, 2013
From: PMC-SIERRA, INC.; PMC-SIERRA US, INC.; WINTEGRA, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 030947/0710 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING AND RECEIVING PARTIES PREVIOUSLY RECORDED ON REEL 030832 FRAME 0604. ASSIGNOR(S) HEREBY CONFIRMS THE CONVEYING PARTY DATA: INTEGRATED DEVICE TECHNOLOGY, INC. TECEIVING: PMC-SIERRA US, INC. Recorded Jul 23, 2013
From: INTEGRATED DEVICE TECHNOLOGY, INC.
To: PMC-SIERRA US, INC.
Reel/Frame 030919/0040 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 19, 2013
From: PMC-SIERRA US, INC.
To: INTEGRATED DEVICE TECHNOLOGY, INC.
Reel/Frame 030832/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 8, 2011
From: MICHELONI, RINO; MARELLI, ALESSIA; ONUFRYK, PETER Z.; NORRIE, CHRISTOPHER I. W.
To: INTEGRATED DEVICE TECHNOLOGY, INC.
Reel/Frame 025771/0967 →