IP Library Granted Patent US 9,959,071
Granted Patent B2
US 9,959,071 · App. 15/087,104 · Granted May 1, 2018

Method and system for managing data in non-volatile memory

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 9,959,071
App. No.
15/087,104
Granted
May 1, 2018
Kind
B2
Abstract

Methods and systems for managing data storage in a non-volatile memory system are disclosed. The method may include receiving data, determining a data classification for the received data from a predetermined plurality of data classifications, writing the received data to an open block having only data of a same data classification as the determined data classification and, upon completely programming the open block, associating an epoch indicator where the epoch indicator defines a time period within which the block was created. When a block reclaim trigger is detected, only data within a same data classification and epoch may be reclaimed. An incrementing epoch indicator identifies a predetermined time granularity and is assigned to data such that earlier data and newer data are distinguishable. A system to implement the method may include a non-volatile memory and a controller configured to track and apply epoch and data-type classification information for data.

Claims (51)

1. A method for managing data storage in a non-volatile memory system, the method comprising:

receiving data at a controller of the non-volatile memory system;

determining a data classification for the received data from a predetermined plurality of data classifications to assign the received data;

writing the received data to an open data block having only data of a same data classification as the determined data classification;

upon completely programming the open data block, associating an epoch indicator with the open data block and closing the open data block to form a closed block, the epoch indicator defining a time period within which the closed block and a plurality of additional closed blocks were created; and

in response to detecting a block reclaim trigger in the non-volatile memory system:

selecting a block from a pool of closed blocks each having a previously determined data classification and a previously associated epoch indicator; and

moving valid data from the selected closed block to an open relocation block exclusively associated with a same data classification and a same epoch indicator as the selected closed block.

2. The method of claim 1 , wherein selecting the block comprises selecting the block having a least amount of valid data.

3. The method of claim 1 , wherein selecting the block comprises selecting the block from closed blocks associated with an earliest of a plurality of epochs.

4. The method of claim 1 , wherein each of the predetermined plurality of data classifications comprises a different likelihood of the received data being overwritten.

5. The method of claim 4 , wherein determining the data classification for the received data comprises receiving a data use frequency indicator from a host and associating one of the predetermined plurality of data classifications with the received data based on the data use frequency indicator.

6. The method of claim 4 , wherein determining the data classification for the received data comprises identifying a data type suffix of the received data and associating the received data with the data classification predetermined as corresponding to the identified data type suffix.

7. A method for managing data storage in a non-volatile memory system, the method comprising:

receiving data at a controller of the non-volatile memory system;

determining a data classification for the received data from a predetermined plurality of data classifications to assign the received data;

writing the received data to an open data block having only data of a same data classification as the determined data classification;

upon completely programming the open data block, associating an epoch indicator with the open data block to create a closed block, the epoch indicator defining a time period within which the closed block and a plurality of additional closed blocks were created; and

determining if the time period has expired and, if the time period has expired, changing the epoch indicator; and

associating subsequent closed blocks with the changed epoch indicator until a next time period expires.

8. The method of claim 7 , wherein each time period comprises a predetermined elapsed time.

9. The method of claim 8 , wherein each time period comprises an identical amount of elapsed time.

10. The method of claim 7 , wherein each time period is defined by an amount of data being received such that a time period expires only upon receiving a predetermined amount of data independent of any predetermined elapsed time.

11. The method of claim 7 , wherein the epoch indicator comprises a counter and changing the epoch indicator comprises incrementing the counter.

12. The method of claim 7 , further comprising:

in response to detecting a block reclaim trigger in the non-volatile memory system, the controller:

selecting a closed block from a pool of closed blocks having a same data classification and a same epoch indicator; and

moving valid data from the selected closed block to an open relocation block exclusively associated with the same data classification and the same epoch indicator.

13. A non-volatile memory system comprising:

a non-volatile memory having a plurality of memory blocks, wherein all blocks containing valid data are exclusively associated with a respective one of a plurality of data types and one of a plurality of epoch indicators, each epoch indicator defining a different time period within which data in an associated plurality of blocks was received from a host; and

a controller in communication with the non-volatile memory, the controller configured to:

detect a block reclaim trigger;

in response to detecting the block reclaim trigger, select a previously programmed block as a source block; and

relocate valid data from the selected source block only to a relocation block exclusively associated with a same data type and a same epoch indicator as associated with the selected source block.

14. A non-volatile memory system comprising:

a non-volatile memory having a plurality of memory blocks; and

a controller in communication with the non-volatile memory, the controller configured to:

receive data from a host;

determine a data classification for the received data from a predetermined plurality of data classifications to assign the received data;

write the received data to an open data block having only data of a same data classification as the determined data classification;

upon completely programming the open data block, store an association of an epoch indicator with the open data block in a data structure in the non-volatile memory system to create a closed block, the epoch indicator defining a time period within which the closed block and a plurality of additional closed blocks are created; and

upon detecting a block reclaim trigger:

select a previously programmed block as a source block; and

relocate valid data from the selected source block only to a relocation block exclusively associated with a same data type and a same epoch indicator as associated with the selected source block.

15. The non-volatile memory system of claim 14 , wherein the controller is further configured to:

determine if the time period has expired and, if the time period has expired, change the epoch indicator; and

associate subsequently closed blocks with the changed epoch indicator until a next time period expires.

16. The non-volatile memory system of claim 14 , wherein each time period comprises a predetermined elapsed time.

17. The non-volatile memory system of claim 16 , wherein each time period comprises an identical amount of elapsed time.

18. The non-volatile memory system of claim 14 , wherein each time period is defined by an amount of data being received such that the time period expires only upon receiving a predetermined amount of data independent of any predetermined elapsed time.

19. The non-volatile memory system of claim 15 , wherein the epoch indicator comprises a counter and changing the epoch indicator comprises incrementing the counter.

Assignments (5)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
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 →
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 038812/0954 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2016
From: THOMAS, NICHOLAS JAMES; MEZA, JOSEPH
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 038163/0374 →