IP Library Granted Patent US 8,677,205
Granted Patent B2
US 8,677,205 · App. 13/045,307 · Granted Mar 18, 2014

Hierarchical error correction for large 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,677,205
App. No.
13/045,307
Granted
Mar 18, 2014
Kind
B2
Abstract

A mechanism is provided for detecting and correcting a first number of bit errors in a segment of data stored in a memory region being read, while concurrently detecting the presence of higher numbers of bit errors in that segment of data. In the event of detection of a higher number of bit errors in any single segment of data of the memory region, error correction of that higher number of bit errors is performed on the memory region, while concurrently detecting the presence of an even higher level of bit errors. By performing error correction of higher levels of bit errors in such a hierarchical order, memory latency associated with such error correction can be avoided in the majority of data accesses, thereby improving performance of the data access.

Claims (63)

1. A method comprising:

determining presence of data errors for each of a plurality of unique memory segments of a memory region;

for each memory segment if the data error is a first type of error, correcting the data error in the memory segment, wherein the first type of error has no more than a first number of bit errors;

for each memory segment if the data error is a second type of error, set a flag associated with the memory segment, wherein the second type of error has a second number of bit errors that is greater than the first number of bit errors; and

if only one memory segment in the memory region has its associated flag set, then determining if the data error is a third type of error, and in response to the data error not being the third type of error correcting the data error in the only one memory segment for the memory region, otherwise, determine a corrective action, wherein the third type of error has a third number of bit errors that is greater than the second number of bit errors.

2. The method of claim 1 wherein the memory region comprises a cache line of a cache memory.

3. The method of claim 2 wherein the memory segment comprises a double word.

4. The method of claim 2 further comprising:

if a plurality of flags are set corresponding to a plurality of memory segments, then

reloading the cache line from a corresponding system memory location, if the cache line is not dirty, and

rebooting a system comprising the cache memory if the cache line is dirty.

5. The method of claim 2 further comprising:

if the data error is the third type of error, then

reloading the cache line from a corresponding system memory location, if the cache line is not dirty, and

rebooting a system comprising the cache memory if the cache line is dirty, wherein the third type of error comprises errors in at least three bits of the memory segment.

6. The method of claim 1 wherein the first type of error comprises a single bit error in the memory segment.

7. The method of claim 6 wherein said correcting the data error in the memory segment comprises:

executing a single bit error correction Hamming code using parity bits associated with the memory segment.

8. The method of claim 7 , wherein

the second type of error comprises a double bit error in the memory segment, and

said executing the Hamming code further determines the presence of the second type of error.

9. The method of claim 8 wherein said correcting the second type of error comprises:

executing a double bit error correction code using parity bits associated with the memory region and an identification of the flagged memory segment.

10. The method of claim 1 further comprising:

storing the memory segments in the memory region by interleaving bits from each memory segment.

11. A memory subsystem comprising:

a data memory storing data in one or more memory regions, wherein each memory region comprises a plurality of unique memory segments; and

an error control circuit, coupled to the data memory, and comprising

a first level error detection and correction logic configured to

determine a presence of data errors for each segment of a memory region, and

for each memory segment, if the data error is a first type of error correct the data error in the memory segment, wherein the first type of error has no more than a first number of bit errors, and if the data error is a second type of error set a flag associated with the memory segment, wherein the second type of error has a second number of bit errors that is greater than the first number of bit errors, and

a second level error detection and correction logic configured to

determine that the data error is a third type of error when only one memory segment has its associated flag set, and

correct the data error for the memory region in response to the data error not being the third type of error, otherwise determine a corrective action, wherein the third type of error has a third number of bit errors that is greater than the second number of bit errors.

12. The memory subsystem of claim 11 wherein the error control circuit further comprises:

an error detection and correction circuit comprising the first level and second level error detection and correction logics.

13. The memory subsystem of claim 11 wherein the error control circuit further comprises:

an error correction encoder circuit configured to

generate one or more first level parity bits for each segment of a memory region for use by the first level error detection and correction logic, and

generate one or more second level parity bits for each memory region for use by the second level error detection and correction logic; and

the data memory storing the first level and second level parity bits in association with the corresponding memory region.

14. The memory subsystem of claim 13 wherein the error correction circuit is further configured to generate the first level and second level parity bits when data to be stored in the memory region is received at the memory subsystem.

15. The memory subsystem of claim 11 wherein the error control circuit is configured to perform said determining the presence of data errors when the data stored in a memory region is accessed.

16. The memory subsystem of claim 11 wherein the first level error detection and correction logic is further configured to:

perform a single bit error correction Hamming code, wherein

the first type of error comprises a single bit error in the memory segment, and

the second type of error comprises a double bit error in the memory segment.

17. The memory subsystem of claim 11 wherein the second level error detection and correction logic is further configured to:

perform a double bit error correction polynomial code, wherein

the third type of error comprises a triple bit error in the memory region.

18. The memory subsystem of claim 11 further comprising:

the data memory configured to store the memory segments in the memory region by interleaving bits from each memory segment.

19. The memory subsystem of claim 11 wherein the memory subsystem is a multi-way cache memory subsystem, the memory subsystem further comprising:

the data memory configured to store the memory regions by interleaving corresponding bits of a memory region from a plurality of ways.

20. A cache memory subsystem comprising:

a data memory storing data in one or more cache lines, wherein each cache line comprises a plurality of unique double word segments; and

an error control circuit, coupled to the data memory, and comprising

a first level error detection and correction logic configured to

determine a presence of data errors for each double word segment of a cache line when data from the cache line is accessed, and

for each double word segment, if the data error is a single bit error then correct the single error in the double word segment, and if the data error is a two or more bit error then set a flag associated with the double word segment, and

a second level error detection and correction logic configured to

determine that the data error is a triple bit error in the cache line when only one double word segment has its associated flag set, and

correct the data error for the memory region in response to the data error not being a triple bit error, otherwise determine a corrective action.

Assignments (19)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 11, 2026
From: NXP USA, INC.
To: NEX-X SILICON LLC
Reel/Frame 075615/0773 →
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 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 037486 FRAME 0517. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Dec 10, 2019
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 053547/0421 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT THE APPLICATION NO. FROM 13,883,290 TO 13,833,290 PREVIOUSLY RECORDED ON REEL 041703 FRAME 0536. ASSIGNOR(S) HEREBY CONFIRMS THE THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS.. Recorded Feb 20, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SHENZHEN XINGUODU TECHNOLOGY CO., LTD.
Reel/Frame 048734/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE PATENTS 8108266 AND 8062324 AND REPLACE THEM WITH 6108266 AND 8060324 PREVIOUSLY RECORDED ON REEL 037518 FRAME 0292. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS. Recorded Feb 1, 2017
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 041703/0536 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040652 FRAME: 0241. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Jan 5, 2017
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 041260/0850 →
MERGER Recorded Nov 8, 2016
From: FREESCALE SEMICONDUCTOR, INC.
To: NXP USA, INC.
Reel/Frame 040652/0241 →
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 13, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037518/0292 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTEREST IN PATENTS Recorded Jan 12, 2016
From: CITIBANK, N.A.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 037486/0517 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0285 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0387 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037357/0334 →
SECURITY AGREEMENT Recorded Nov 6, 2013
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031591/0266 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 10, 2011
From: RAMARAJU, RAVINDRARAJ; GIESKE, EDMUND J.; GREENBERG, DAVID F.
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 025936/0168 →