Method and apparatus for automatically scrubbing ECC errors in memory via hardware
First Claim
1. In a memory controller, a method comprising:
- reading data from an address in memory indicated by a memory read request that is queued in a request queue of a memory controller;
detecting that the data has a correctable error;
tagging the memory read request in the request queue to indicate that the data has a correctable error;
correcting the correctable error in the data to generate corrected data; and
writing the corrected data back to the address in memory indicated by the tagged memory read request before retiring the tagged memory read request from the request queue.
0 Assignments
0 Petitions
Accused Products
Abstract
The present invention provides a method and apparatus for automatically scrubbing ECC errors in memory upon the detection of a correctable error in data read from memory. This is performed by providing in a memory controller memory control logic for controlling accesses to memory, an ECC error checking and correcting unit for checking data read from memory for errors and correcting any correctable errors found in the read data, a first data buffer for storing the corrected read data output from the ECC error checking and correcting unit and a writeback path having an input end coupled to an output of the first data buffer and an output end coupled to memory. Upon the detection of a correctable error in data read from a particular memory location, the ECC error checking and correcting unit signals to the memory control logic the existence of a correctable error in the read data. The memory control logic then obtains exclusive control over the first data buffer and the writeback path to control writing of the corrected read data onto the writeback path and subsequently to memory.
-
Citations
18 Claims
-
1. In a memory controller, a method comprising:
-
reading data from an address in memory indicated by a memory read request that is queued in a request queue of a memory controller; detecting that the data has a correctable error; tagging the memory read request in the request queue to indicate that the data has a correctable error; correcting the correctable error in the data to generate corrected data; and writing the corrected data back to the address in memory indicated by the tagged memory read request before retiring the tagged memory read request from the request queue. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A memory controller comprising:
-
a request queue to store memory access requests; a memory interface to read data from an address in memory indicated by a memory read request that is queued in the request queue; error checking and correcting logic coupled to receive the data read from the address in memory, the error checking and correcting logic being configured to detect whether the data has a correctable error and to issue an error signal and correct the correctable error to generate corrected data if the data has a correctable error; and control logic coupled to receive the error signal from the error checking and correcting logic, the control logic being configured to tag the memory read request in the request queue in response to the error signal to indicate that the data has the correctable error, and write the corrected data back to the address in memory indicated by the tagged memory read request before retiring the tagged memory read request from the request queue. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. A system comprising:
-
a system bus one or more processors each coupled to the system bus; a memory; and a memory controller coupled between the system bus and the memory, the memory controller including a request queue to store memory access requests received via the system bus; a memory interface to read data from an address in the memory indicated by a memory read request that is queued in the request queue; error checking and correcting logic coupled to receive the data read from the address in the memory, the error checking and correcting logic being configured to detect whether the data has a correctable error and to issue an error signal and correct the correctable error to generate corrected data if the data has a correctable error; and control logic coupled to receive the error signal from the error checking and correcting logic, the control logic being configured to tag the memory read request in the request queue in response to the error signal to indicate that the data has the correctable error, and write the corrected data back to the address in the memory indicated by the tagged memory read request before retiring the tagged memory read request from the request queue.
-
-
15. In a memory controller, a method comprising:
-
detecting that data read from memory in response to a memory read request has a correctable error; correcting the correctable error to generate corrected data; storing the corrected data in one of a plurality of entries in a read buffer; issuing a scrub command in response to detecting that the data read from memory has a correctable error, the scrub command establishing a writeback path to write the corrected data back to memory, and wherein the scrub command indicates which of the plurality of entries in the read buffer contains the corrected data; and writing the corrected data back to memory via the writeback path subsequent to at least one other memory access that has a higher priority. - View Dependent Claims (16, 17, 18)
-
Specification