IP Library Granted Patent US 9,747,202
Granted Patent B1
US 9,747,202 · App. 13/829,235 · Granted Aug 29, 2017

Storage module and method for identifying hot and cold data

Inventors: Amir Shaharabany (Kochav Yair, IL); Alon Marcu (Tel Mond, IL); Hadas Oshinsky (Kfar Saba, IL); Adir Moshe HaCohen (Sunnyvale, CA)
Assignee: Sandisk Technologies LLC
G06F12/0253G06F12/123
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,747,202
App. No.
13/829,235
Granted
Aug 29, 2017
Kind
B1
Abstract

A storage module and method for identifying hot and cold data are provided. The storage module can be removable from a host or can be embedded in a host. In one embodiment, a request to store data in a logical block address (LBA) of a memory of the storage module is received. A physical block associated with the LBA is determined, and it is also determined whether the physical block stores hot or cold data. A last-known open block is then selected, wherein the last-known open block is either hot or cold depending on whether the physical block stores hot or cold data. If space is available in the last-known open block, the data is written to the last-known open block.

Claims (69)

1. A method for identifying hot and cold data, the method comprising:

performing the following in a storage module which is operatively in communication with a host:

receiving a request from the host to store data in a logical block address (LBA) of a memory of the storage module;

determining a first physical block associated with the LBA based on a logical-to-physical address map;

determining how recently the first physical block was last written to;

determining whether the LBA is hot or cold based on how recently the first physical block was last written to, wherein a size of the first physical block is larger than a size of the LBA;

in response to determining that the LBA is hot, storing the data in a second physical block, wherein the second physical block is designated for hot data; and

in response to determining that the LBA is cold, storing the data in a third physical block, wherein the third physical block is designated for cold data;

wherein, irrespective of whether the LBA is determined to be hot or cold, the data is stored in a different physical block than the one determined using the logical-to-physical address map.

2. The method of claim 1 further comprising:

selecting a last-known open block, wherein the last-known open block is either hot or cold depending on whether the first physical block stores hot or cold data;

if space is available in the last-known open block, writing the data from the host to the last-known open block; and

if space is not available in the last-known open block, writing the data from the host to a newly-allocated block.

3. The method of claim 1 , wherein the memory module determines how recently the first physical block was last written to by analyzing a list of most-recently open blocks.

4. The method of claim 3 , wherein a threshold for determining which blocks on the list are hot or cold is static.

5. The method of claim 3 , wherein a threshold for determining which blocks on the list are hot or cold is dynamic.

6. The method of claim 1 further comprising updating the logical-to-physical address map to associate the LBA with the second or third physical block, as appropriate.

7. The method of claim 1 further comprising performing garbage collection on the blocks in the memory while maintain a temperature of data being compacted.

8. The method of claim 7 further comprising, during garbage collection, placing a block with available pages at a beginning of a list.

9. A storage module comprising:

a memory; and

a processor in communication with the memory, wherein the processor is configured to:

receive a request from the host to store data in a logical block address (LBA) of the memory;

determine a first physical block associated with the LBA based on a logical-to-physical address map;

determine how recently the first physical block was last written to;

determine whether the LBA is hot or cold based on how recently the first physical block was last written to, wherein a size of the first physical block is larger than a size of the LBA;

in response to determining that the LBA is hot, store the data in a second physical block, wherein the second physical block is designated for hot data; and

in response to determining that the LBA is cold, store the data in a third physical block, wherein the third physical block is designated for cold data;

wherein, irrespective of whether the LBA is determined to be hot or cold, the data is stored in a different physical block than the one determined using the logical-to-physical address map.

10. The storage module of claim 9 , wherein the processor is further configured to:

select a last-known open block, wherein the last-known open block is either hot or cold depending on whether the first physical block stores hot or cold data;

if space is available in the last-known open block, write the data from the host to the last-known open block; and

if space is not available in the last-known open block, write the data from the host to a newly-allocated block.

11. The storage module of claim 9 , wherein the memory module determines how recently the first physical block was last written to by analyzing a list of most-recently open blocks.

12. The storage module of claim 11 , wherein a threshold for determining which blocks on the list are hot or cold is static.

13. The storage module of claim 11 , wherein a threshold for determining which blocks on the list are hot or cold is dynamic.

14. The storage module of claim 9 , wherein the processor is further configured to update the logical-to-physical address map to associate the LBA with the second or third physical block, as appropriate.

15. The storage module of claim 9 , wherein the processor is further configured to perform garbage collection on the blocks in the memory while maintain a temperature of data being compacted.

16. The storage module of claim 15 , wherein the processor is further configured to, during garbage collection, place a block with available pages at a beginning of a list.

17. A method for identifying hot and cold data, the method comprising:

performing the following in a host having embedded therein a host controller and a storage module:

receiving a request to store data in a logical block address (LBA) of a memory of the storage module;

determining a first physical block associated with the LBA based on a logical-to-physical address map;

determining how recently the first physical block was last written to;

determining whether the LBA is hot or cold based on how recently the first physical block was last written to, wherein a size of the first physical block is larger than a size of the LBA;

in response to determining that the LBA is hot, storing the data in a second physical block, wherein the second physical block is designated for hot data; and

in response to determining that the LBA is cold, storing the data in a third physical block, wherein the third physical block is designated for cold data;

wherein, irrespective of whether the LBA is determined to be hot or cold, the data is stored in a different physical block than the one determined using the logical-to-physical address map.

18. The method of claim 17 further comprising:

selecting a last-known open block, wherein the last-known open block is either hot or cold depending on whether the first physical block stores hot or cold data;

if space is available in the last-known open block, writing the data from the host to the last-known open block; and

if space is not available in the last-known open block, writing the data to a newly-allocated block.

19. The method of claim 17 , wherein determining how recently the first physical block was last written to is performed by analyzing a list of most-recently open blocks.

20. The method of claim 19 , wherein a threshold for determining which blocks on the list are hot or cold is static.

21. The method of claim 19 , wherein a threshold for determining which blocks on the list are hot or cold is dynamic.

22. The method of claim 17 further comprising updating the logical-to-physical address map to associate the last-known open block with the LBA.

23. The method of claim 17 further comprising performing garbage collection on the blocks in the memory while maintain a temperature of data being compacted.

24. The method of claim 23 further comprising, during garbage collection, placing a block with available pages at a beginning of a list.

25. The method of claim 17 , wherein at least some of the acts are performed by a controller in the storage module.

26. The method of claim 17 , wherein at least some of the acts are performed by the host controller.

27. A storage system comprising:

a memory;

means for receiving a request from a host to store data in a logical block address (LBA) of the memory;

means for determining a first physical block associated with the LBA based on a logical-to-physical address map;

means for determining how recently the first physical block was last written to;

means for determining whether the LBA is hot or cold based on how recently the first physical block was last written to, wherein a size of the first physical block is larger than a size of the LBA;

means for, in response to determining that the LBA is hot, storing the data in a second physical block, wherein the second physical block is designated for hot data; and

means for, in response to determining that the LBA is cold, storing the data in a third physical block, wherein the third physical block is designated for cold data;

wherein, irrespective of whether the LBA is determined to be hot or cold, the data is stored in a different physical block than the one determined using the logical-to-physical address map.

Assignments (2)
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0807 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 8, 2013
From: SHAHARABANY, AMIR; MARCU, ALON; OSHINSKY, HADAS; HACOHEN, ADIR MOSHE
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 030374/0754 →