Patrol function used in flash storage controller to detect data errors
First Claim
Patent Images
1. In a storage controller attached to a host and to a flash memory module made up of a plurality of flash memory devices, the flash memory devices being organized in groups, each group including a plurality of areas, a method comprising the following steps:
- (a) performing a first read of first data and first ECC information from a first area of a first group;
(b) generating second ECC information relating to the first data;
(c) comparing the first and second ECC information;
(d) if the first and second ECC information do not match, performing an ECC correction operation on the first data, the ECC correction operation if successful resulting in corrected first data and a value specifying the number of corrected errors; and
performing steps (e) and (f) if the ECC correction operation was successful;
(e) if the number of corrected errors exceeds a threshold, writing the corrected first data to an area of the first group other than the first area of the first group and setting an indicator indicating that the data contained in the first area of the first group is invalid;
(f) if the number of corrected errors does not exceed the threshold, discarding the corrected first data without writing the corrected first data to the flash memory module, the discarding occurring in connection with a subsequent ECC correction operation.
11 Assignments
0 Petitions
Accused Products
Abstract
A patrol function performed in a storage controller connected to a flash memory storage module. The function causes selected areas of the flash storage to be read for purposes of detecting and correcting errors.
-
Citations
25 Claims
-
1. In a storage controller attached to a host and to a flash memory module made up of a plurality of flash memory devices, the flash memory devices being organized in groups, each group including a plurality of areas, a method comprising the following steps:
-
(a) performing a first read of first data and first ECC information from a first area of a first group; (b) generating second ECC information relating to the first data; (c) comparing the first and second ECC information; (d) if the first and second ECC information do not match, performing an ECC correction operation on the first data, the ECC correction operation if successful resulting in corrected first data and a value specifying the number of corrected errors; and
performing steps (e) and (f) if the ECC correction operation was successful;(e) if the number of corrected errors exceeds a threshold, writing the corrected first data to an area of the first group other than the first area of the first group and setting an indicator indicating that the data contained in the first area of the first group is invalid; (f) if the number of corrected errors does not exceed the threshold, discarding the corrected first data without writing the corrected first data to the flash memory module, the discarding occurring in connection with a subsequent ECC correction operation. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. In a system including a storage controller and a flash memory module made up of at least three flash memory groups, performing the following steps for each of the groups:
-
(a) checking to determine if a worklist associated with the group contains any tasks and performing the following steps if no tasks are found; (b) performing a flash memory read relating to an area of the group; (c) performing an ECC check related to data read from the area; (d) performing an action if the ECC check reveals errors; (e) repeating steps (a) through (d) for substantially all areas of the flash group that contain currently valid data received as a result of a host-initiated write; whereby, at least steps (a)-(c) are performed independently for each flash memory group. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. In a system including a storage controller and a flash memory module, a method comprising the following steps:
-
(a) identifying an entry in a metadata table, the identification based on information in the entry, the information designating a first portion of the flash memory module; (b) reading first data and first ECC information associated with the entry; (c) generating second ECC information based on the first data; (d) comparing the first and second ECC information; (e) if the first and second ECC information differ, performing a first ECC correction operation based on the first ECC information; (f) if the first ECC correction operation is successful and if the number of errors corrected exceeds a threshold, writing the corrected data to the flash memory module and invalidating the entry; whereas, if the number of errors corrected does not exceed the threshold, the corrected data is not written to the flash memory. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24)
whereby, the presence of entries on the first worklist does not affect performance of the method for the second portion and the presence of entries on the second worklist does not affect performance of the method for the first portion.
-
-
24. The method as in claim 23, further including:
-
(m) following performance of step (k) for all entries designating the first portion, waiting for a designated event, and then repeating the performance of step (k) for all entries designated the first portion; and (n) following performance of step (l) for all entries designating the second portion, waiting for a designated event, and then repeating the performance of step (1) for all entries designated the second portion.
-
-
25. The method as in claim 25 in which:
the first portion consists of at least two flash dies, and the second portion consists of at least two flash dies, and the flash dies contained in the first portion are different than the flash dies contained in the second portion.
Specification