US2009327804A1PendingUtilityA1
Wear leveling in flash storage devices
Est. expiryJun 25, 2028(~1.9 yrs left)· nominal 20-yr term from priority
Inventors:Mark Moshayedi
G06F 3/0659G06F 3/0613G06F 11/1441G06F 3/0688
57
PatentIndex Score
0
Cited by
0
References
0
Claims
Abstract
A method of wear leveling in a flash storage device comprising a plurality of data blocks is provided. The method comprises the steps of detecting a data error in a read of dynamic data from a first data segment of a first data block of the plurality of data blocks, correcting the data error, and moving the dynamic data from the first data segment to a second data segment in a second one of the plurality of data blocks.
Claims
exact text as granted — not AI-modified1 . A method of wear leveling in a flash storage device comprising a plurality of data blocks, the method comprising the steps of:
detecting a data error in a read of dynamic data from a first data segment of a first data block of the plurality of data blocks; correcting the data error; and moving the dynamic data from the first data segment to a second data segment in a second one of the plurality of data blocks.
2 . The method according to claim 1 , wherein the available data segment of the first data block is the first data segment.
3 . The method according to claim 1 , wherein the step of correcting the data error is performed using an error correction code.
4 . The method according to claim 1 , wherein the step of moving the dynamic data from the first data segment to the second data segment in the second one of the plurality of data blocks comprises:
writing the dynamic data to the second data segment, and erasing the first data block.
5 . The method according to claim 1 , further comprising the step of:
moving static data from a third data segment of a third data block to an available data segment of the first data block.
6 . The method according to claim 5 , wherein the step of moving the static data from the third data segment to the available data segment of the first data block comprises:
writing the static data to the available data segment of the first data block, and erasing the third data block.
7 . The method according to claim 5 , wherein the step of moving the static data to the available data segment of the first data block comprises:
changing an address mapping associated with the static data from the third data segment to the available data segment of the first data block.
8 . The method according to claim 1 , wherein the step of moving the dynamic data to the second data segment comprises:
changing an address mapping associated with the dynamic data from the first data segment to the second data segment.
9 . The method according to claim 1 , wherein each data block of the plurality of data blocks is associated with a first status indicator that indicates a number of data errors that have occurred in reads of data segments of the associated data block.
10 . The method according to claim 9 , wherein the first status indicator indicates the number of data errors that have occurred in reads of data segments of the associated data block since the flash storage device was last powered on.
11 . The method according to claim 9 , further comprising adjusting the first status indicator associated with the first data block to indicate that the number of data errors that have occurred in reads of data segments of the first data block is 0.
12 . The method according to claim 9 , wherein the first data segment is determined to comprise dynamic data based upon the first status indicator associated with the first data block exceeding a predetermined threshold.
13 . The method according to claim 9 , further comprising:
selecting a third data block based on the associated first status indicator indicating that a number of data errors that have occurred in reads of data segments of the third data block does not exceed a predetermined threshold; and moving static data from a third data segment of the third data block to an available data segment of the first data block.
14 . The method according to claim 13 , wherein if the first status indicator for each of the plurality of data blocks exceeds the predetermined threshold, the predetermined threshold is modified such that the first status indicator of at least one of the plurality of data blocks does not exceed the predetermined threshold.
15 . The method according to claim 1 , wherein each data block of the plurality of data blocks is associated with a second status indicator that indicates a time of the last data write operation to a data segment of the associated data block.
16 . The method according to claim 15 , further comprising selecting a third data block based on the associated second status indicator indicating that the time of the last data write operation to a data segment of the third data block was prior to a predetermined time; and
moving static data from a third data segment of the third data block to an available data segment of the first data block.
17 . The method according to claim 15 , wherein the second status indicator indicates whether data has been written to a data segment of the associated data block since the flash storage device was last powered on.
18 . The method according to claim 17 , further comprising selecting a third data block based on the associated second status indicator indicating that no data has been written to a data segment of the third data block since the flash storage device was last powered on; and
moving static data from a third data segment of a third data block to an available data segment of the first data block.
19 . A flash storage device comprising:
a plurality of data blocks; and a controller configured to:
detect a data error in a read of dynamic data from a first data segment of a first data block of the plurality of data blocks,
correct the data error, and
move the dynamic data from the first data segment to a second data segment in a second one of the plurality of data blocks.
20 . The flash storage device according to claim 19 , wherein the available data segment of the first data block is the first data segment.
21 . The flash storage device according to claim 19 , wherein the controller is configured to correct the data error with an error correction code.
22 . The flash storage device according to claim 19 , wherein the controller is configured to move the dynamic data from the first data segment to the second data segment in the second one of the plurality of data blocks by:
writing the dynamic data to the second data segment, and erasing the first data block
23 . The flash storage device according to claim 19 , wherein the controller is further configured to:
move static data from a third data segment of a third data block to an available data segment of the first data block.
24 . The flash storage device according to claim 23 , wherein the controller is configured to move the static data from the third data segment to the first data block by:
writing the static data to the available data segment of the first data block, and erasing the third data block.
25 . The flash storage device according to claim 23 , wherein the controller is further configured to change an address mapping associated with the static data from the third data segment to the first data segment.
26 . The flash storage device according to claim 19 , wherein the controller is further configured to change an address mapping associated with the dynamic data from the first data segment to the second data segment.
27 . The flash storage device according to claim 19 , wherein each data block of the plurality of data blocks is associated with a first status indicator that indicates a number of data errors that have occurred in reads of data segments of the associated data block.
28 . The flash storage device according to claim 27 , wherein the first status indicator indicates the number of data errors that have occurred in reads of data segments of the associated data block since the flash storage device was last powered on.
29 . The flash storage device according to claim 27 , wherein the controller is further configured to adjust the first status indicator associated with the first data block.
30 . The flash storage device according to claim 27 , wherein the first data segment is determined to comprise dynamic data based upon the first status indicator associated with the first data block exceeding a predetermined threshold.
31 . The flash storage device according to claim 27 , wherein the controller is configured to:
select a third data block based on the associated first status indicator indicating that a number of data errors that have occurred in reads of data segments the second data block does not exceed a predetermined threshold; and move static data from a third data segment of the third data block to an available data segment of the first data block.
32 . The flash storage device according to claim 31 , wherein if the first status indicator for each of the plurality of data blocks exceeds the predetermined threshold, the controller is configured to modify the predetermined threshold such that the first status indicator of at least one of the plurality of data blocks does not exceed the predetermined threshold.
33 . The flash storage device according to claim 19 , wherein each data block of the plurality of data blocks is associated with a second status indicator that indicates a time of the last data write operation to a data segment of the associated data block.
34 . The flash storage device according to claim 33 , wherein the controller is configured to:
select a third data block based on the associated second status indicator indicating that the time of the last data write operation of the second data block was prior to a predetermined time; and move static data from a third data segment of the third data block to an available data segment of the first data block.
35 . The flash storage device according to claim 33 , wherein the second status indicator indicates whether data has been written to a data segment of the associated data block since the flash storage device was last powered on.
36 . The flash storage device according to claim 33 , wherein the controller is configured to:
select a third data block based on the associated second status indicator indicating that no data has been written to a data segment of the third data block since the flash storage device was last powered on; and move static data from a third data segment of the third data block to an available data segment of the first data block.
37 . A machine readable medium carrying one or more sequences of instructions for wear leveling in a flash storage device having a plurality of data blocks, wherein execution of the one or more sequences of instructions by one or more processors causes the one or more processors to perform the steps of:
detecting a data error in a read of dynamic data from a first data segment of a first data block of the plurality of data blocks; correcting the data error; and moving the dynamic data from the first data segment to a second data segment in a second one of the plurality of data blocks.Join the waitlist — get patent alerts
Track US2009327804A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.