IP Library Granted Patent US 8,453,021
Granted Patent B2
US 8,453,021 · App. 13/597,158 · Granted May 28, 2013

Wear leveling in solid-state device

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,453,021
App. No.
13/597,158
Granted
May 28, 2013
Kind
B2
Abstract

A flash storage device performs wear-leveling by tracking data errors that occur when dynamic data is read from a storage block of the flash storage device and moving the dynamic data to an available storage block of the flash storage device. Additionally, the flash storage device identifies a storage block containing static data and moves the static data to the storage block previously containing the dynamic data.

Claims (44)

1. A flash storage device comprising:

a plurality of storage blocks; and

a controller, wherein the controller is configured to:

read a first data unit in a first storage block of the plurality of storage blocks;

detect that a read data error has occurred in the first data unit and, in response, correct the first data unit; and

detect that the first storage block of the plurality of storage blocks is a dynamic storage block and, in response:

select an available storage block of the plurality of storage blocks;

move the first data unit from the first storage block to the available storage block;

select a second storage block of the plurality of storage blocks comprising static data; and

copy the static data into the first storage block.

2. The flash storage device of claim 1 , wherein the controller is configured to detect that the first storage block is a dynamic storage block if a read data error count associated with the first storage block exceeds a threshold value and a write status indicator associated with the first storage block is set.

3. The flash storage device of claim 1 , wherein the controller is configured to select the second storage block comprising static data based on a write status indicator associated with the second storage block that is not set in a status table.

4. The flash storage device of claim 2 , wherein the controller is further configured to modify the threshold value to cause the count of the read data error of at least one storage block of the plurality of storage blocks not to exceed the threshold value.

5. The flash storage device of claim 2 , wherein the controller is further configured to reset the read data error count after the flash storage device is powered-on and before the controller performs a read operation.

6. The flash storage system of claim 3 , wherein the controller is further configured to reset the write status indicator after the flash storage device is powered on and before the controller performs a write operation.

7. The flash storage device of claim 1 , wherein the controller is configured to detect that the first storage block is a dynamic storage block based on a write status indicator that indicates the controller has written data to the first storage block since the flash storage device was last powered-on.

8. The flash storage device of claim 1 , wherein the controller is configured to select the second storage block comprising static data based on a write status indicator that indicates the controller has not written data to the second storage block since the flash storage device was last powered-on.

9. A flash storage device comprising:

a plurality of storage blocks; and

a controller in communication with the plurality of storage blocks, wherein the controller is configured to:

read a first data unit from a first storage block of the plurality of storage blocks;

determine if a data error has occurred from a read operation of the first storage block and if the first storage block contains dynamic data, and in response the controller is further configured to:

correct the first data unit;

move the first data unit from the first storage block to an available storage block;

select a second storage block of the plurality of storage blocks, the second storage block containing a second data unit including static data; and

move the second data unit from the second storage block to the first storage block.

10. The flash storage device of claim 9 , wherein the controller is configured to detect that the first storage block contains dynamic data based on a write status indicator that indicates the controller has written data to the first storage block since the flash storage device was last powered-on.

11. The flash storage device of claim 9 , wherein the controller is configured to select the second storage block comprising static data based on a write status indicator that indicates the controller has not written data to the second storage block since the flash storage device was last powered-on.

12. The flash storage device of claim 9 , wherein the controller is further configured to correct the first data unit if the data error has occurred from the read operation of the first storage block.

13. The flash storage device of claim 10 , wherein the controller is further configured to reset the write status indicator after the flash storage device is powered on and before the controller performs a write operation.

14. A method implemented in a flash storage device comprising:

reading a first data unit from a first storage block of a plurality of storage blocks;

if a data error has occurred in the first data unit as a result of a read operation:

correcting the data error in the first data unit; and

maintaining an error status indicator, wherein the error status indicator comprises a count of the data errors of the first storage block;

if the first storage block contains dynamic data and the error status indicator of the first storage block exceeds a threshold value:

moving the first data unit from the first storage block to an available storage block; and

moving a second data unit containing static data of a second storage block to the first storage block.

15. The method of claim 14 , wherein the controller is configured to detect that the first storage block contains dynamic data based on a write status indicator that indicates the controller has written data to the first storage block since the flash storage system was last powered-on.

16. The method of claim 14 , wherein the controller is configured to select the second storage block comprising static data based on a write status indicator that indicates the controller has not written data to the second storage block since the flash storage system was last powered-on.

17. The method of claim 14 , wherein the first data unit is associated with an address mapped to the first storage block before the first data unit is moved to the available storage block, and wherein moving the first data unit from the first data block to the available storage block comprises mapping the address associated with the first data unit to the available storage block.

18. The method of claim 14 , wherein the second data unit is associated with an address mapped to the second storage block before the second data unit is moved to the first storage block, and wherein moving the second data unit to the first storage block comprises mapping the address associated with the second data unit to the first storage block.

19. The method of claim 14 , further comprising setting the threshold value to a new value such that the error status indicator does not exceed the new value.

20. The method of claim 14 , wherein moving the first data unit from the first storage block to the available storage block comprises writing the first data unit to the available storage block after correcting the data error in the first data unit; and erasing the first storage block.

Assignments (8)
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 16, 2018
From: HGST TECHNOLOGIES SANTA ANA, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 046174/0446 →