IP Library › Granted Patent US 9,189,327
Granted Patent B2
US 9,189,327 · App. 14/084,043 · Granted Nov 17, 2015

Error-correcting code distribution for memory systems

Inventors: Paul W. Coteus (Yorktown, NY); Hillery C. Hunter (Chappaqua, NY); Charles A. Kilmer (Essex Junction, VT); Kyu-hyoun Kim (Mount Kisco, NY); Warren E. Maule (Cedar Park, TX); Kenneth L. Wright (Austin, TX)
Assignee: International Business Machines Corporation
G06F11/1008
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,189,327
App. No.
14/084,043
Granted
Nov 17, 2015
Kind
B2
Abstract

According to one embodiment, a memory system includes a plurality of memory devices and a memory controller operatively coupled to the memory devices. The memory controller is configured to partition write data into a plurality of data blocks, where each data block is associated with one of the memory devices. The memory controller is further configured to generate an instance of a local error-correcting code (ECC) corresponding to each data block, and merge each data block with the corresponding instance of the local ECC to form an encoded data block for each memory device. Additionally, the memory controller is configured to write each encoded data block to the memory devices such that each memory device stores one of the data blocks with the corresponding instance of the local ECC. A global ECC and a local ECC of the global ECC can also be included in the memory system.

Claims (62)

1. A memory system, comprising:

a plurality of memory devices; and

a memory controller operatively coupled to the memory devices and configured to:

partition write data into a plurality of data blocks, each of the data blocks associated with one of the memory devices;

generate an instance of a local error-correcting code (ECC) corresponding to each of the data blocks;

merge each of the data blocks with the corresponding instance of the local ECC to form an encoded data block for each of the memory devices;

write each of the encoded data blocks to the memory devices such that each of the memory devices stores one of the data blocks with the corresponding instance of the local ECC;

generate a global ECC across all of the data blocks or the encoded data blocks;

write the global ECC to a global ECC storage memory device;

check for a global ECC error and one or more local ECC errors based on reading the global ECC storage memory device and the memory devices;

based on determining global ECC correctable error and a local ECC correctable error are identified, attempting error correction using either a read global ECC or a read local ECC, and verifying that neither the global ECC correctable error nor the local ECC correctable error exist after attempting the error correction;

based on determining that the global ECC correctable error and a local ECC uncorrectable error are identified, attempting error correction using the read global ECC, and verifying that the local ECC uncorrectable error is corrected or correctable after attempting the error correction using the read global ECC; and

based on determining that a global ECC uncorrectable error and the local ECC correctable error are identified, attempting error correction using the read local ECC, and verifying that the global ECC uncorrectable error is corrected or correctable after attempting the error correction using the read local ECC.

2. The memory system of claim 1 , wherein the memory controller is further configured to:

generate an instance of a local ECC corresponding to the global ECC; and

write the instance of the local ECC corresponding to the global ECC to the global ECC storage memory device.

3. The memory system of claim 1 , wherein the global ECC comprises a greater number of bits than a number of bits included in any one of the data blocks.

4. The memory system of claim 1 , wherein the memory controller is further configured to include a special purpose bit in one of the data blocks prior to generation of the local ECC, each of the data blocks comprising an odd number of bits, and each instance of the local ECC comprising an odd number of bits.

5. The memory system of claim 4 , wherein the special purpose bit comprises a parity bit or an inversion bit.

6. The memory system of claim 1 , wherein the memory controller is further configured to:

retry error correction based on determining that the local ECC uncorrectable error transitioned to the local ECC correctable error or the global ECC uncorrectable error transitioned to the global ECC correctable error.

7. A method comprising:

partitioning write data into a plurality of data blocks, each of the data blocks associated with one of a plurality of memory devices;

generating an instance of a local error-correcting code (ECC) corresponding to each of the data blocks;

merging each of the data blocks with the corresponding instance of the local ECC to form an encoded data block for each of the memory devices;

writing each of the encoded data blocks to the memory devices such that each of the memory devices stores one of the data blocks with the corresponding instance of the local ECC

generating a global ECC across all of the data blocks or the encoded data blocks;

writing the global ECC to a global ECC storage memory device;

checking for a global ECC error and one or more local ECC errors based on reading the global ECC storage memory device and the memory devices;

based on determining that a global ECC correctable error and a local ECC correctable error are identified, attempting error correction using either a read global ECC or a read local ECC, and verifying that neither the global ECC correctable error nor the local ECC correctable error exist after attempting the error correction;

based on determining that the global ECC correctable error and a local ECC uncorrectable error are identified, attempting error correction using the read global ECC, and verifying that the local ECC uncorrectable error is corrected or correctable after attempting the error correction using the read global ECC; and

based on determining that a global ECC uncorrectable error and the local ECC correctable error are identified, attempting error correction using the read local ECC, and verifying that the global ECC uncorrectable error is corrected or correctable after attempting the error correction using the read local ECC.

8. The method of claim 7 , further comprising:

generating an instance of a local ECC corresponding to the global ECC; and

writing the instance of the local ECC corresponding to the global ECC to the global ECC storage memory device.

9. The method of claim 7 , wherein the global ECC comprises a greater number of bits than a number of bits included in any one of the data blocks.

10. The method of claim 7 , further comprising:

inserting a special purpose bit in one of the data blocks prior to generation of the local ECC, each of the data blocks comprising an odd number of bits, and each instance of the local ECC comprising an odd number of bits.

11. The method of claim 10 , wherein the special purpose bit comprises a parity bit or an inversion bit.

12. The method of claim 7 , further comprising:

retrying error correction based on determining that the local ECC uncorrectable error transitioned to the local ECC correctable error or the global ECC uncorrectable error transitioned to the global ECC correctable error.

13. A computer program product comprising:

a tangible storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for performing a method comprising:

partitioning write data into a plurality of data blocks, each of the data blocks associated with one of a plurality of memory devices;

generating an instance of a local error-correcting code (ECC) corresponding to each of the data blocks;

merging each of the data blocks with the corresponding instance of the local ECC to form an encoded data block for each of the memory devices;

writing each of the encoded data blocks to the memory devices such that each of the memory devices stores one of the data blocks with the corresponding instance of the local ECC;

generating a global ECC across all of the data blocks or the encoded data blocks;

writing the global ECC to a global ECC storage memory device;

checking for a global ECC error and one or more local ECC errors based on reading the global ECC storage memory device and the memory devices;

based on determining that a global ECC correctable error and a local ECC correctable error are identified, attempting error correction using either a read global ECC or a read local ECC, and verifying that neither the global ECC correctable error nor the local ECC correctable error exist after attempting the error correction;

based on determining that the global ECC correctable error and a local ECC uncorrectable error are identified, attempting error correction using the read global ECC, and verifying that the local ECC uncorrectable error is corrected or correctable after attempting the error correction using the read global ECC; and

based on determining that a global ECC uncorrectable error and the local ECC correctable error are identified, attempting error correction using the read local ECC, and verifying that the global ECC uncorrectable error is corrected or correctable after attempting the error correction using the read local ECC.

14. The computer program product of claim 13 , wherein the tangible storage medium further stores instructions for execution by the processing circuit for performing the method comprising:

generating an instance of a local ECC corresponding to the global ECC; and

writing the instance of the local ECC corresponding to the global ECC to the global ECC storage memory device.

15. The computer program product of claim 13 , wherein the global ECC comprises a greater number of bits than a number of bits included in any one of the data blocks.

16. The computer program product of claim 13 , wherein the tangible storage medium further stores instructions for execution by the processing circuit for performing the method comprising:

inserting a special purpose bit in one of the data blocks prior to generation of the local ECC, each of the data blocks comprising an odd number of bits, and each instance of the local ECC comprising an odd number of bits.

17. The computer program product of claim 16 , wherein the special purpose bit comprises a parity bit or an inversion bit.

18. The computer program product of claim 13 , wherein the tangible storage medium further stores instructions for execution by the processing circuit for performing the method comprising:

retrying error correction based on determining that the local ECC uncorrectable error transitioned to the local ECC correctable error or the global ECC uncorrectable error transitioned to the global ECC correctable error.

Assignments (7)
RELEASE OF SECURITY INTEREST Recorded May 12, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 056987/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 20, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION
To: GLOBALFOUNDRIES INC.
Reel/Frame 054636/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 2, 2020
From: GLOBALFOUNDRIES INC.
To: GLOBALFOUNDRIES U.S. INC.
Reel/Frame 054633/0001 →
SECURITY AGREEMENT Recorded Nov 29, 2018
From: GLOBALFOUNDRIES INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 049490/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2016
From: GLOBALFOUNDRIES U.S. 2 LLC; GLOBALFOUNDRIES U.S. INC.
To: GLOBALFOUNDRIES INC.
Reel/Frame 037542/0087 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 3, 2016
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: GLOBALFOUNDRIES U.S. 2 LLC
Reel/Frame 037409/0869 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 19, 2013
From: COTEUS, PAUL W.; HUNTER, HILLERY C.; KILMER, CHARLES A.; KIM, KYU-HYOUN; MAULE, WARREN E.; WRIGHT, KENNETH L.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 031632/0693 →
Continuity (1)
Related Publication 20150143201A1 · May 21, 2015