IP Library Granted Patent US 11,429,481
Granted Patent B1
US 11,429,481 · App. 17/178,207 · Granted Aug 30, 2022

Restoring memory data integrity

Inventors: Sarosh I. Azad (Fremont, CA); Wern-Yan Koe (Cupertino, CA); Amitava Majumdar (San Jose, CA)
Assignee: XILINX, INC.
G06F11/1068G06F12/06G06F2212/1032
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 11,429,481
App. No.
17/178,207
Granted
Aug 30, 2022
Kind
B1
Abstract

Embodiments herein describe a hardware based scrubbing scheme where correction logic is integrated with memory elements such that scrubbing is performed by hardware. The correction logic reads the data words stored in the memory element during idle cycles. If a correctable error is detected, the correction logic can then use a subsequent idle cycle to perform a write to correct the error (i.e., replace the corrupted data stored in the memory element with corrected data). By using built-in or integrated correction logic, the embodiments herein do not add extra work for the processor, or can work with applications that do not include a processor. Further, because the correction logic scrubs the memory during idle cycles, correcting bit errors does not have a negative impact on the performance of the memory element. Memory scrubbing can delay the degradation of data error, extending the integrity of the data in the memory.

Claims (65)

1. An integrated circuit, comprising:

a memory element configured to store data at a plurality of addressable memory locations; and

correction logic configured to:

detect a first idle cycle in the memory element;

perform a read operation at a first memory address in the memory element during the first idle cycle;

detect a correctable error at the first memory address;

detect a second idle cycle in the memory element; and

perform a write operation at the first memory address during the second idle cycle to correct the correctable error using corrected data.

2. The integrated circuit of claim 1 , wherein the second idle cycle directly follows the first idle cycle, wherein the correction logic is configured to discard the corrected data when a cycle immediately following the first idle cycle is not an idle cycle.

3. The integrated circuit of claim 1 , wherein the second idle cycle is separated from the first idle cycle by one or more read cycles initiated by a requesting entity separate from the correction logic, wherein the correction logic is configured to discard the corrected data when the requesting entity initiates a write cycle before the correction logic detects another idle cycle after the first idle cycle.

4. The integrated circuit of claim 1 , wherein the second idle cycle is separated from the first idle cycle by one or more write cycles to a second memory address initiated by a requesting entity separate from the correction logic, wherein the correction logic is configured to discard the corrected data when the requesting entity initiates a write cycle to the first memory address before the correction logic detects another idle cycle after the first idle cycle.

5. The integrated circuit of claim 1 , wherein the first and second idle cycles are clock cycles where the memory element is not being used to perform a read or write operation by a requesting entity separate from the correction logic.

6. The integrated circuit of claim 5 , wherein the requesting entity is at least one of a processor or a memory controller.

7. The integrated circuit of claim 1 , further comprising:

an address counter, wherein the first memory address is a current value of the address counter,

wherein the correction logic is configured to, after performing the write operation at the first memory address, increment the current value of the address counter to store a second memory address in the memory element.

8. The integrated circuit of claim 7 , wherein the correction logic is configured to:

detect a third idle cycle in the memory element;

perform a read operation at the second memory address in the memory element during the third idle cycle;

determine there is no correctable error at the second memory address;

increment the current value of the address counter to store a third memory address in the memory element;

detect a fourth idle cycle in the memory element; and

perform a read operation at the third memory address in the memory element during the fourth idle cycle.

9. A circuit comprising:

a memory element configured to store data at a plurality of addressable memory locations; and

correction logic configured to:

detect a first idle cycle in the memory element;

perform a read operation at a first memory address in the memory element during the first idle cycle;

detect a correctable error at the first memory address;

detect a second idle cycle in the memory element; and

perform a write operation at the first memory address during the second idle cycle to correct the correctable error using corrected data.

10. The circuit of claim 9 , wherein the second idle cycle directly follows the first idle cycle, wherein the correction logic is configured to discard the corrected data when a cycle immediately following the first idle cycle is not an idle cycle.

11. The circuit of claim 9 , wherein the second idle cycle is separated from the first idle cycle by one or more read cycles initiated by a requesting entity separate from the correction logic, wherein the correction logic is configured to discard the corrected data when the requesting entity initiates a write cycle before the correction logic detects another idle cycle after the first idle cycle.

12. The circuit of claim 9 , wherein the second idle cycle is separated from the first idle cycle by one or more write cycles to a second memory address initiated by a requesting entity separate from the correction logic, wherein the correction logic is configured to discard the corrected data when the requesting entity initiates a write cycle to the first memory address before the correction logic detects another idle cycle after the first idle cycle.

13. The circuit of claim 9 , wherein the first and second idle cycles are clock cycles where the memory element is not being used to perform a read or write operation by a requesting entity separate from the correction logic.

14. The circuit of claim 9 , further comprising:

an address counter, wherein the first memory address is a current value of the address counter,

wherein the correction logic is configured to, after performing the write operation at the first memory address, increment the current value of the address counter to store a second memory address in the memory element.

15. The circuit of claim 14 , wherein the correction logic is configured to:

detect a third idle cycle in the memory element;

perform a read operation at the second memory address in the memory element during the third idle cycle;

determine there is no correctable error at the second memory address;

increment the current value of the address counter to store a third memory address in the memory element;

detect a fourth idle cycle in the memory element; and

perform a read operation at the third memory address in the memory element during the fourth idle cycle.

16. A method, comprising:

detecting a first idle cycle in a memory element comprising a plurality of addressable memory locations;

performing a read operation at a first memory address in the memory element during the first idle cycle;

detecting a correctable error at the first memory address;

detecting a second idle cycle in the memory element; and

performing a write operation at the first memory address during the second idle cycle to correct the correctable error using corrected data.

17. The method of claim 16 , wherein detecting the second idle cycle comprises:

determining that the second idle cycle directly follows the first idle cycle, wherein the corrected data is discarded when a cycle immediately following the first idle cycle is not an idle cycle.

18. The method of claim 16 , wherein detecting the second idle cycle comprises:

determining that the second idle cycle is separated from the first idle cycle by one or more read cycles initiated by a requesting entity, wherein the corrected data is discarded when the requesting entity initiates a write cycle before another idle cycle is detected after the first idle cycle.

19. The method of claim 16 , wherein detecting the second idle cycle comprises:

determining that the second idle cycle is separated from the first idle cycle by one or more write cycles to a second memory address initiated by a requesting entity, wherein the corrected data is discarded when the requesting entity initiates a write cycle to the first memory address before another idle cycle is detected after the first idle cycle.

20. The method of claim 16 , further comprising, after performing the write operation at the first memory address:

incrementing a current value of an address counter to store a second memory address in the memory element,

detecting a third idle cycle in the memory element;

performing a read operation at the second memory address in the memory element during the third idle cycle;

determining there is no correctable error at the second memory address;

incrementing the current value of the address counter to store a third memory address in the memory element;

detecting a fourth idle cycle in the memory element; and

performing a read operation at the third memory address in the memory element during the fourth idle cycle.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 19, 2021
From: AZAD, SAROSH I.; KOE, WERN-YAN; MAJUMDAR, AMITAVA
To: XILINX, INC.
Reel/Frame 055328/0001 →
Cited By (3)
US 12,530,260 US 12,608,257 US 12,670,966