IP Library › Granted Patent US 9,645,742
Granted Patent B2
US 9,645,742 · App. 14/249,096 · Granted May 9, 2017

Storage module and host device for storage module defragmentation

Inventors: Yacov Duzly (Raanana, IL); Hadas Oshinsky (Kfar Saba, IL); Shahar Bar-Or (Raanana, IL); Judah Gamliel Hahn (Ofra, IL)
Assignee: SANDISK TECHNOLOGIES LLC
G06F3/061G06F3/0643G06F3/0679G06F3/0688G06F12/02G06F12/023G06F17/30G06F17/30135G06F2206/1014G06F2212/1044
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,645,742
App. No.
14/249,096
Granted
May 9, 2017
Kind
B2
Abstract

A storage module and host device for storage module defragmentation are disclosed. In one embodiment, a host controller sends a storage module a first set of logical block addresses of a file stored in the storage module. The host controller receives a metric from the storage module indicative of a fragmentation level of the file in physical blocks of memory in the storage module. If the metric is greater than a threshold, the host controller reads the file and then writes it back to the storage module using a different set of logical block addresses. To avoid sending the file back and forth, in another embodiment, the host controller sends the fragmentation threshold and the different set of logical block addresses to the storage module. The storage module then moves the file itself if the metric indicative of the fragmentation level is greater than the threshold. Other embodiments are provided.

Claims (64)

1. A host device comprising:

an interface through which to operatively communicate with a storage module; and

a controller operatively in communication with the interface, wherein the controller is configured to:

send a query to the storage module for a metric indicative of a fragmentation level of a file stored in the storage module, wherein the query comprises a first set of logical block addresses of the file;

receive a metric indicative of a fragmentation level of the file in physical blocks of memory in the storage module;

determine whether the metric is greater than a threshold; and

in response to determining that the metric is greater than the threshold:

send a command to the storage module to read the file;

receive the file from the storage module; and

send the file back to the storage module along with a write command comprising a second set of logical block addresses and a writing mode to use to write the file.

2. The host device of claim 1 , wherein the writing mode comprises a best effort mode, in which the storage module makes its best effort to write the file using a minimum number of physical blocks.

3. The host device of claim 2 , wherein the controller is further configured to provide the storage module with an indication of a type of the file, wherein an effort the storage module makes to write the file is based on the type of the file.

4. The host device of claim 2 , wherein the controller is further configured to:

receive a metric indicative of a fragmentation level of the file written back to the storage module;

determine if the metric indicative of the level of fragmentation of the file written back to the storage module is greater than the threshold; and

if it is determined that the metric indicative of the level of fragmentation of the file written back to the storage module is greater than the threshold, instruct the storage module to use a warranted mode in which the storage module must write the file using the minimum number of physical blocks.

5. The host device of claim 1 wherein the writing mode comprises a warranted mode in which the storage module must write the file using a minimum number of physical blocks.

6. The host device of claim 1 , wherein the metric comprises a number of physical blocks in the storage module containing the file.

7. The host device of claim 1 , wherein the metric comprises a hot/cold indication.

8. The host device of claim 1 , wherein the metric comprises a mapping efficiency indication.

9. The host device of claim 1 , wherein the controller is further configured to:

send the storage module an indication that multiple non-consecutive logical block address ranges are part of a same file.

10. The host device of claim 9 , wherein a command is used by the host device to indicate to the storage module when multiple non-consecutive logical block address ranges are part of the same file.

11. The host device of claim 9 , wherein the indication that multiple non-consecutive logical block address ranges are part of the same file comprises a flag.

12. The host device of claim 1 , wherein the memory of the storage module is a three-dimensional memory.

13. The host device of claim 1 , wherein the storage module is embedded in the host device.

14. The host device of claim 1 , wherein the storage module is removably connected to the host device.

15. The host device of claim 1 , wherein the storage module is a solid-state drive.

16. A method for storage module defragmentation, the method comprising:

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

sending a query to the storage module for a metric indicative of a fragmentation level of a file stored in the storage module, wherein the query comprises a first set of logical block addresses of the file;

receiving a metric indicative of a fragmentation level of the file in physical blocks of memory in the storage module;

determining whether the metric is greater than a threshold; and

in response to determining that the metric is greater than the threshold:

sending a command to the storage module to read the file;

receiving the file from the storage module; and

sending the file back to the storage module along with a write command comprising a second set of logical block addresses and a writing mode to use to write the file.

17. The method of claim 16 , wherein the writing mode comprises a best effort mode, in which the storage module makes its best effort to write the file using a minimum number of physical blocks.

18. The method of claim 17 further comprising providing the storage module with an indication of a type of the file, wherein an effort the storage module makes to write the file is based on the type of the file.

19. The method of claim 17 further comprising:

receiving a metric indicative of a fragmentation level of the file written back to the storage module;

determining if the metric indicative of the level of fragmentation of the file written back to the storage module is greater than the threshold; and

if it is determined that the metric indicative of the level of fragmentation of the file written back to the storage module is greater than the threshold, instructing the storage module to use a warranted mode in which the storage module must write the file using the minimum number of physical blocks.

20. The method of claim 16 , wherein the writing mode comprises a warranted mode in which the storage module must write the file using a minimum number of physical blocks.

21. The method of claim 16 , wherein the metric comprises a number of physical blocks in the storage module containing the file.

22. The method of claim 16 , wherein the metric comprises a hot/cold indication.

23. The method of claim 16 , wherein the metric comprises a mapping efficiency indication.

24. The method of claim 16 further comprising:

sending the storage module an indication that multiple non-consecutive logical block address ranges are part of a same file.

25. The method of claim 24 , wherein a command is used by the host controller to indicate to the storage module when multiple non-consecutive logical block address ranges are part of the same file.

26. The method of claim 24 , wherein the indication that multiple non-consecutive logical block address ranges are part of the same file comprises a flag.

27. The method of claim 16 , wherein the memory of the storage module is a three-dimensional memory.

28. The method of claim 16 , wherein the storage module is embedded in a host containing the host controller.

29. The method of claim 16 , wherein the storage module is removably connected to a host containing the host controller.

30. The method of claim 16 , wherein the storage module is a solid-state drive.

31. A host device comprising:

an interface through which to operatively communicate with a storage module;

means for sending a query to the storage module for a metric indicative of a fragmentation level of a file stored in the storage module, wherein the query comprises a first set of logical block addresses of the file;

means for receiving a metric indicative of a fragmentation level of the file in physical blocks of memory in the storage module;

means for determining whether the metric is greater than a threshold; and

means for in response to determining that the metric is greater than the threshold:

sending a command to the storage module to read the file;

receiving the file from the storage module; and

sending the file back to the storage module along with a write command comprising a second set of logical block addresses and a writing mode to use to write the file.

Assignments (5)
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 038807/0807 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 10, 2014
From: DUZLY, YACOV; OSHINSKY, HADAS; BAR-OR, SHAHAR; HAHN, JUDAH GAMLIEL
To: SANDISK TECHNOLOGIES INC.
Reel/Frame 032648/0106 →
Continuity (2)
Provisional Application 61936170 · Feb 5, 2014
Related Publication 20150220552A1 · Aug 6, 2015