IP Library Granted Patent US 8,028,123
Granted Patent B2
US 8,028,123 · App. 12/103,277 · Granted Sep 27, 2011

Circular wear leveling

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,028,123
App. No.
12/103,277
Granted
Sep 27, 2011
Kind
B2
Abstract

A method for flash memory management comprises providing a head pointer configured to define a first location in a flash memory, and a tail pointer configured to define a second location in a flash memory. The head pointer and tail pointer define a payload data area. Payload data is received from a host, and written to the flash memory in the order it was received. The head pointer and tail pointer are updated such that the payload data area moves in a circular manner within the flash memory.

Claims (40)

1. A method for flash memory management, comprising:

providing a head pointer configured to define a first location in a flash memory;

providing a tail pointer configured to define a second location in the flash memory, wherein the head pointer and tail pointer define the beginning and end of a payload data area, respectively;

providing at least one data structure configured to locate payload data written to the flash memory, wherein the at least one data structure is contained entirely in random access memory;

receiving payload data from a host;

writing the payload data to the flash memory in the order the payload data was received from the host;

updating the head pointer and tail pointer such that the payload data area moves in a circular manner within the flash memory; and

providing a second head pointer and second tail pointer such that two payload data areas move in a circular manner within the flash memory.

2. The method of claim 1 , wherein the size of the flash memory reported to the host is smaller than the size of the payload area.

3. The method of claim 1 , further comprising relocating at least a portion of existing payload data in the payload data area such that existing payload data is stored substantially contiguously in the payload data area.

4. The method of claim 3 , wherein relocating existing payload data comprises operations on erase blocks located behind a head pointer and ahead of a tail pointer.

5. The method of claim 3 , wherein relocating existing payload data comprises operations on erase blocks located ahead of a head pointer.

6. The method of claim 3 , wherein relocating existing payload data comprises merging at least two partially obsolete erase blocks into a single erase block.

7. The method of claim 1 , wherein the at least one data structure is constructed using erase block index information stored in the final page of each erase block in the flash memory.

8. The method of claim 1 , wherein updating the head pointer and tail pointer causes the flash memory to wear substantially uniformly.

9. A solid state drive, comprising:

a flash memory controller configured to receive payload data from a host;

a random access memory containing at least one data structure, wherein the at least one data structure is configured to locate data written to the solid state drive, and wherein the at least one data structure is contained entirely in the random access memory; and

at least one flash chip configured as a circular storage space, wherein the flash memory controller is configured to write the payload data to the at least one flash chip in the order it was received from the host,

wherein the flash memory controller comprises at least two head pointers such that consecutively received pages of payload data are stored in different erase blocks in the circular storage space.

10. The solid state drive of claim 9 , wherein the host interface is at least one of PATA, SATA, SCSI, Fibre Channel, IEEE 1394, and SAS.

11. The solid state drive of claim 9 , wherein the flash memory controller comprises software installed on a host computer.

12. The solid state drive of claim 9 , further comprising at least one data structure configured to locate payload data written to the at least one flash chip.

13. The solid state drive of claim 12 , wherein the at least one data structure is contained entirely in random access memory.

14. A method for flash memory management, comprising:

providing a head pointer configured to define a first location in a flash memory;

providing a tail pointer configured to define a second location in the flash memory, wherein the head pointer and tail pointer define the beginning and end of a payload data area, respectively;

providing at least one data structure configured to locate payload data written to the flash memory, wherein the at least one data structure is contained entirely in random access memory;

receiving payload data from a host;

writing the payload data to the flash memory in the order the payload data was received from the host;

updating the head pointer and tail pointer; and

pausing a write request from the host when the size of the flash memory behind the tail pointer and ahead of the head pointer falls below a threshold value.

15. A method for flash memory management, comprising:

providing a head pointer configured to define a first location in a flash memory;

providing a tail pointer configured to define a second location in the flash memory, wherein the head pointer and tail pointer define the beginning and end of a payload data area, respectively;

providing at least one data structure configured to locate payload data written to the flash memory, wherein the at least one data structure is contained entirely in random access memory;

receiving payload data from a host;

writing the payload data to the flash memory in the order the payload data was received from the host; and

updating the head pointer and tail pointer;

wherein the writing the payload data to the flash memory takes place when the size of the antipayload area exceeds the no-defragmentation size.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038809/0600 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2016
From: SMART STORAGE SYSTEMS, INC
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 038290/0033 →
CHANGE OF NAME Recorded May 29, 2013
From: SMART STORAGE SYSTEMS (AZ), INC.
To: SMART STORAGE SYSTEMS, INC.
Reel/Frame 030508/0855 →
CHANGE OF NAME Recorded May 29, 2013
From: SMART MODULAR TECHNOLOGIES (AZ), INC.
To: SMART STORAGE SYSTEMS (AZ), INC.
Reel/Frame 030508/0843 →
NUNC PRO TUNC ASSIGNMENT Recorded Jul 13, 2011
From: KILZER, KEVIN L.; ELLIS, ROBERT W.; STERBENZ, RUDOLPH J.
To: ADTRON CORPORATION
Reel/Frame 026584/0095 →
CHANGE OF NAME Recorded Jul 13, 2011
From: ADTRON CORPORATION
To: SMART MODULAR TECHNOLOGIES (AZ), INC.
Reel/Frame 026584/0886 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 27, 2008
From: KILZER, KEVIN L; ELLIS, ROBERT W; FITZGERALD, ALAN A; STERBENZ, RUDOLPH J
To: ADTRON, INC.
Reel/Frame 021164/0971 →