IP Library Granted Patent US 9,684,463
Granted Patent B1
US 9,684,463 · App. 14/995,309 · Granted Jun 20, 2017

Predictive block allocation in a flash 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 9,684,463
App. No.
14/995,309
Granted
Jun 20, 2017
Kind
B1
Abstract

Predictive block allocation in a flash device, where the flash device includes a plurality of blocks may include: receiving a request to store data to the flash device; determining, in dependence upon one or more characteristics of the data, a usage prediction value for the data; determining, in dependence upon the usage prediction value for the data and upon wear levels for the plurality of blocks, a block from among the plurality of blocks; and; and storing the data in the block of the plurality of blocks.

Claims (76)

1. A method comprising:

by program instructions on a computing device,

receiving a request to store data to a flash device, the flash device comprising a plurality of blocks;

determining, in dependence upon one or more characteristics of the data, a usage prediction value for the data;

determining, in dependence upon the usage prediction value for the data and upon wear levels for the plurality of blocks, a block from among the plurality of blocks; and

storing the data in the block of the plurality of blocks.

2. The method of claim 1 , wherein determining the block from among the plurality of blocks further comprises:

if the usage predication value is high usage, then determining the block in dependence upon a wear level for the block being low;

if the usage predication value is medium usage, then determining the block in dependence upon the wear level for the block being medium; and

if the usage prediction value is low usage, then determining the block in dependence upon the wear level for the block being high.

3. The method of claim 1 , further comprising:

determining an estimated remaining wear for each of the plurality of blocks of the flash device;

wherein determining the block of the plurality of blocks further comprises:

determining the block based on a wear level for the block being near, but not exceeding, the estimated remaining wear for the block if the block is written a number of times corresponding to the usage predication value.

4. The method of claim 1 , further comprising:

determining one of the one or more characteristics of the data to be a file type; and

determining usage patterns for previously stored files of the file type;

wherein determining the usage prediction value is in dependence upon the usage patterns.

5. The method of claim 1 , further comprising:

determining a relationship between a file in the data and a previously stored file, wherein the relationship includes one or more of: being a sequel, being a similar type of content, or being referenced;

wherein determining the usage prediction value is in dependence upon the relationship.

6. The method of claim 1 , further comprising:

accessing a user profile describing usage characteristics for files or applications relative to content of the files or applications;

wherein determining the usage prediction value is in dependence upon the user profile.

7. The method of claim 1 , further comprising:

determining that the data comprises media content; and

accessing a database storing ratings information, trending information, or download metrics to determine a popularity metric for the media content;

wherein determining the usage prediction value is in dependence upon the popularity metric for the media content.

8. An apparatus comprising a computer processor and a non-transitory computer memory operatively coupled to the computer processor, the non-transitory computer memory having disposed within it computer program instructions that, when executed by the computer processor, cause the apparatus to carry out:

receiving a request to store data to a flash device, the flash device comprising a plurality of blocks;

determining, in dependence upon one or more characteristics of the data, a usage prediction value for the data;

determining, in dependence upon the usage prediction value for the data and upon wear levels for the plurality of blocks, a block from among the plurality of blocks; and

storing the data in the block of the plurality of blocks.

9. The apparatus of claim 8 , wherein determining the block from among the plurality of blocks further comprises:

if the usage predication value is high usage, then determining the block in dependence upon a wear level for the block being low;

if the usage predication value is medium usage, then determining the block in dependence upon the wear level for the block being medium; and

if the usage prediction value is low usage, then determining the block in dependence upon the wear level for the block being high.

10. The apparatus of claim 9 , further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out:

determining an estimated remaining wear for each of the plurality of blocks of the flash device;

wherein determining the block of the plurality of blocks further comprises:

determining the block based on a wear level for the block being near, but not exceeding, the estimated remaining wear for the block if the block is written a number of times corresponding to the usage predication value.

11. The apparatus of claim 10 , further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out:

determining one of the one or more characteristics of the data to be a file type; and

determining usage patterns for previously stored files of the file type;

wherein determining the usage prediction value is in dependence upon the usage patterns.

12. The apparatus of claim 9 , further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out:

determining a relationship between a file in the data and a previously stored file, wherein the relationship includes one or more of: being a sequel, being a similar type of content, or being referenced;

wherein determining the usage prediction value is in dependence upon the relationship.

13. The apparatus of claim 9 , further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out: accessing a user profile describing usage characteristics for files or applications relative to content of the files or applications;

wherein determining the usage prediction value is in dependence upon the user profile.

14. The apparatus of claim 13 , further comprising computer program instructions that, when executed by the computer processor, cause the apparatus to carry out:

determining that the data comprises media content; and

accessing a database storing ratings information, trending information, or download metrics to determine a popularity metric for the media content;

wherein determining the usage prediction value is in dependence upon the popularity metric for the media content.

15. A computer program product comprising a non-transitory, computer-readable medium, wherein the computer-readable medium comprises computer program instructions that, when executed, cause a computer to carry out the steps of:

receiving a request to store data to the flash device;

determining, in dependence upon one or more characteristics of the data, a usage prediction value for the data;

determining, in dependence upon the usage prediction value for the data and upon wear levels for the plurality of blocks, a block from among the plurality of blocks; and

storing the data in the block of the plurality of blocks.

16. The computer program product of claim 15 , wherein determining the block from among the plurality of blocks further comprises:

if the usage predication value is high usage, then determining the block in dependence upon a wear level for the block being low;

if the usage predication value is medium usage, then determining the block in dependence upon the wear level for the block being medium; and

if the usage prediction value is low usage, then determining the block in dependence upon the wear level for the block being high.

17. The computer program product of claim 15 , wherein the steps further comprise:

determining an estimated remaining wear for each of the plurality of blocks of the flash device;

wherein determining the block of the plurality of blocks further comprises:

determining the block based on a wear level for the block being near, but not exceeding, the estimated remaining wear for the block if the block is written a number of times corresponding to the usage predication value.

18. The computer program product of claim 15 , wherein the steps further comprise:

determining one of the one or more characteristics of the data to be a file type; and

determining usage patterns for previously stored files of the file type;

wherein determining the usage prediction value is in dependence upon the usage patterns.

19. The computer program product of claim 15 , wherein the steps further comprise:

determining a relationship between a file in the data and a previously stored file, wherein the relationship includes one or more of: being a sequel, being a similar type of content, or being referenced;

wherein determining the usage prediction value is in dependence upon the relationship.

20. The computer program product of claim 15 , wherein the steps further comprise: accessing a user profile describing usage characteristics for files or applications relative to content of the files or applications;

wherein determining the usage prediction value is in dependence upon the user profile.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 10, 2025
From: LENOVO GLOBAL TECHNOLOGIES INTERNATIONAL LIMITED
To: LENOVO GLOBAL TECHNOLOGIES SWITZERLAND INTERNATIONAL GMBH
Reel/Frame 069869/0614 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 6, 2019
From: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE LTD.
To: LENOVO GLOBAL TECHNOLOGIES INTERNATIONAL LTD
Reel/Frame 050298/0650 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 14, 2016
From: ALSHINNAWI, SHAREEF F.; CUDAK, GARY D.; HERMAN, JOSEPH F., JR.; MEGARITY, WILLIAM M.; WEBER, J. MARK
To: LENOVO ENTERPRISE SOLUTIONS (SINGAPORE) PTE. LTD.
Reel/Frame 037488/0748 →