P
US9684590B2ActiveUtilityPatentIndex 51

Storing corresponding data units in a common storage unit

Assignee: HAINES JONATHAN WILLIAMSPriority: Oct 25, 2010Filed: Feb 15, 2011Granted: Jun 20, 2017
Est. expiryOct 25, 2030(~4.3 yrs left)· nominal 20-yr term from priority
Inventors:HAINES JONATHAN WILLIAMSFELDMAN TIMOTHY R
G06F 12/0246G06F 3/0613G06F 3/0643G06F 3/0679G06F 3/064
51
PatentIndex Score
1
Cited by
32
References
35
Claims

Abstract

A storage device controller may segregate data units that are typically accessed together to a common storage unit. In one example, a storage device includes a control unit configured to receive a plurality of logical blocks to be stored in the storage device, wherein a first set of addresses comprises logical block addresses (LBAs) of the plurality of logical blocks, and a non-volatile memory configured to store logical blocks in a plurality of storage units, wherein one of the plurality of storage units includes logical blocks corresponding to a second set of addresses. The control unit may determine an intersection of the first set of addresses with the second set of addresses and to store each of the logical blocks having LBAs in the determined intersection of addresses in a common storage unit of the storage device, wherein the common storage unit comprises one of the plurality of storage units.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A method comprising:
 receiving, by a storage device, a plurality of logical blocks comprising logical block addresses (LBAs) to be stored in the storage device, the plurality of logical blocks corresponding to two or more objects to be written to the storage device and the correspondence to the objects is established prior to receipt of the logical blocks; 
 comparing respective LBAs of the plurality of logical blocks for close spatial proximity of the addresses; 
 determining a subset of the logical blocks that correspond to a common object based on the comparison, the common object comprising one of the two or more objects; and 
 storing each of the logical blocks of the subset of logical blocks corresponding to the common object in a common storage unit of the storage device. 
 
     
     
       2. The method of  claim 1 , further comprising storing the logical blocks not related to the common object in one or more storage units other than the common storage unit of the storage device. 
     
     
       3. The method of  claim 1 , wherein determining the subset comprises:
 detecting accesses to a first set of logical blocks at a first rate; 
 detecting accesses to a second set of logical blocks at a second rate; 
 determining that the accesses to the first set of logical blocks and the second set of logical blocks occur at approximately the same time; and 
 determining that the subset of the logical blocks that correspond to the common object comprise logical blocks in the received plurality of logical blocks and at least one of the first set of logical blocks and the second set of logical blocks. 
 
     
     
       4. The method of  claim 3 , wherein the common object comprises a multimedia object, wherein the first set of logical blocks corresponds to an audio track of the multimedia object, and wherein the second set of logical blocks corresponds to a video track of the multimedia object. 
     
     
       5. The method of  claim 1 , wherein determining the subset comprises determining that the logical blocks of the subset comprise file system information, and wherein the common object comprises a file system object. 
     
     
       6. The method of  claim 1 , further comprising receiving a list of storage locations, and wherein the common object corresponds to the list of storage locations. 
     
     
       7. The method of  claim 1 , wherein the plurality of logical blocks comprises a first plurality of logical blocks, and wherein a first set of addresses comprises the LBAs of the subset of the logical blocks stored in the common storage unit, the method further comprising:
 receiving a second plurality of logical blocks to be stored in the storage device, wherein a second set of addresses comprises LBAs of the second plurality of logical blocks; 
 determining an intersection of the second set of addresses with the first set of addresses; and 
 storing each of the logical blocks having LBAs in the determined intersection of addresses in a common storage unit of the storage device. 
 
     
     
       8. The method of  claim 1 , wherein determining the subset comprises determining the subset from LBAs for the logical blocks that are in sequence. 
     
     
       9. The method of  claim 8 , wherein determining the subset comprises:
 receiving, by a detector module, at least a portion of the plurality of logical blocks; 
 including a first one of the received logical blocks in the subset; and 
 including subsequent ones of the received logical blocks in the subset when the subsequent ones of the received logical blocks comprise LBAs that are in sequence with respective previous ones of the LBAs of the logical blocks included in the subset. 
 
     
     
       10. The method of  claim 9 , further comprising:
 receiving, by a second detector module, a second portion of the plurality of logical blocks, the second portion comprising the logical blocks of the portion of the plurality of logical blocks received by the detector module that were not included in the subset; 
 including a first one of the received logical blocks of the second portion in a second subset; and 
 including subsequent ones of the received logical blocks of the second portion in the second subset when the subsequent ones of the received logical blocks of the second portion comprise LBAs that are in sequence with respective previous ones of the LBAs of the logical blocks included in the subset in the second subset. 
 
     
     
       11. The method of  claim 1 , wherein determining the subset comprises determining the subset such that for each LBA in the subset, the LBA is within a particular number of addresses of at least one other LBA in the subset. 
     
     
       12. The method of  claim 11 , wherein determining the subset comprises:
 receiving, by a detector module, at least a portion of the plurality of logical blocks; 
 including a first one of the received logical blocks in the subset; and 
 including subsequent ones of the received logical blocks in the subset when the subsequent ones of the received logical blocks comprise LBAs that are within the particular number of addresses of at least one of the LBAs of the logical blocks included in the subset. 
 
     
     
       13. The method of  claim 12 , further comprising:
 receiving, by a second detector module, a second portion of the plurality of logical blocks, the second portion comprising the logical blocks of the portion of the plurality of logical blocks received by the detector module that were not included in the subset; 
 including a first one of the received logical blocks of the second portion in a second subset; and 
 including subsequent ones of the received logical blocks of the second portion in the second subset when the subsequent ones of the received logical blocks of the second portion comprise LBAs that are within the particular number of addresses of at least one of the LBAs of the logical blocks included in the second subset. 
 
     
     
       14. The method of  claim 1 , wherein storing each of the logical blocks comprises: storing each of the logical blocks corresponding to the common object in order of logical block addresses (LBAs) of the logical blocks in the common storage unit; or
 storing each of the logical blocks corresponding to the common object in an order in which the logical blocks were received in the common storage unit. 
 
     
     
       15. A storage device comprising:
 a control unit configured to receive a plurality of logical blocks comprising logical block addresses (LBAs) to be stored in the storage device, the plurality of logical blocks corresponding to two or more objects to be written to the storage device and the correspondence to the objects is established prior to receipt of the logical blocks; and 
 a non-volatile memory configured to store logical blocks in a plurality of storage units, 
 wherein the control unit is configured to compare respective LBAs of the plurality of logical blocks for close spatial proximity of the addresses, to determine a subset of the logical blocks that correspond to a common object based on the comparison, the common object comprising one of the two or more objects, and to store each of the logical blocks of the subset of logical blocks corresponding to the common object in a common one of the plurality of storage units. 
 
     
     
       16. The storage device of  claim 15 , wherein the control unit is configured to store the logical blocks that do not correspond to the common object in one or more storage units other than the common storage unit of the non-volatile memory. 
     
     
       17. The storage device of  claim 15 , wherein to determine the subset, the control unit is configured to detect accesses to a first set of logical blocks at a first rate, detect accesses to a second set of logical blocks at a second rate, determine that the accesses to the first set of logical blocks and the second set of logical blocks occur at approximately the same time, and determine that the subset of the logical blocks that correspond to the common object comprise logical blocks in the received plurality of logical blocks and at least one of the first set of logical blocks and the second set of logical blocks. 
     
     
       18. The storage device of  claim 17 , wherein the common object comprises a multimedia object, wherein the first set of logical blocks corresponds to an audio track of the multimedia object, and wherein the second set of logical blocks corresponds to a video track of the multimedia object. 
     
     
       19. The storage device of  claim 15 , wherein to determine the subset, the control unit is configured to determine that the logical blocks of the subset comprise file system information, and wherein the common object comprises a file system object. 
     
     
       20. The storage device of  claim 15 , wherein the control unit is configured to receive a list of storage locations, and wherein the common object corresponds to the list of storage locations. 
     
     
       21. The storage device of  claim 15 , wherein:
 the plurality of logical blocks comprises a first plurality of logical blocks; 
 the set of addresses comprises a first set of addresses; and 
 the control unit is further configured to receive a second plurality of logical blocks to be stored in the storage device, wherein a second set of addresses comprises LBAs of the second plurality of logical blocks, to determine an intersection of the second set of addresses with the subset of the first set of addresses, and to store each of the logical blocks having LBAs in the determined intersection of addresses in a second common storage unit of the storage device, wherein the second common storage unit of the storage device comprises a second one of the plurality of storage units of the non-volatile memory. 
 
     
     
       22. The storage device of  claim 15 , wherein the control unit is configured to include logical blocks having LBAs that are in sequence in the subset. 
     
     
       23. The storage device of  claim 15 , further comprising a detector module that is configured to receive at least a portion of the plurality of logical blocks, include a first one of the received logical blocks in the subset, and include subsequent ones of the received logical blocks in the subset when the subsequent ones of the received logical blocks comprise LBAs that are in sequence with respective previous ones of the LBAs of the logical blocks included in the subset. 
     
     
       24. The storage device of  claim 23 , further comprising a second detector module configured to receive a second portion of the plurality of logical blocks, the second portion comprising the logical blocks of the portion of the plurality of logical blocks received by the detector module that were not included in the subset, include a first one of the received logical blocks of the second portion in a second subset, and include subsequent ones of the received logical blocks of the second portion in the second subset when the subsequent ones of the received logical blocks of the second portion comprise LBAs that are in sequence with respective previous ones of the LBAs of the logical blocks included in the second subset. 
     
     
       25. The storage device of  claim 15 , further comprising a detector module that is configured to receive at least a portion of the plurality of logical blocks, include a first one of the received logical blocks in the subset, and include subsequent ones of the received logical blocks in the subset when the subsequent ones of the received logical blocks comprise LBAs that are within a particular number of addresses of at least one of the LBAs of the logical blocks included in the subset. 
     
     
       26. The storage device of  claim 25 , further comprising a second detector module configured to receive a second portion of the plurality of logical blocks, the second portion comprising the logical blocks of the portion of the plurality of logical blocks received by the detector module that were not included in the subset, include a first one of the received logical blocks of the second portion in a second subset, and include subsequent ones of the received logical blocks of the second portion in the second subset when the subsequent ones of the received logical blocks of the second portion comprise LBAs that are in sequence with respective previous ones of the LBAs of the logical blocks included in the second subset. 
     
     
       27. The storage device of  claim 15 , wherein the control unit is configured to include logical blocks in the subset such that for each logical block in the subset, the logical block has an LBA that is within a particular number of addresses of an LBA of at least one logical block in the subset. 
     
     
       28. The storage device of  claim 15 , wherein the control unit is configured to store each of the logical blocks having addresses in the determined subset in order of the addresses of logical block addresses (LBAs) of the logical blocks in the common storage unit. 
     
     
       29. The storage device of  claim 15 , wherein the control unit is configured to store each of the logical blocks corresponding to the common object in an order in which the logical blocks were received. 
     
     
       30. A system according to  claim 15 , comprising a computing device coupled to the storage device, the computing device comprising the control unit for controlling the storage device. 
     
     
       31. A computer-readable storage medium comprising instructions that, when executed, cause a processor to:
 receive a plurality of logical blocks comprising logical block addresses (LBAs) to be stored in a storage device, the plurality of logical blocks corresponding to two or more objects to be written to the storage device and the correspondence to the objects is established prior to receipt of the logical blocks; 
 comparing respective LBAs of the plurality of logical blocks for close spatial proximity of the addresses; 
 determine a subset of the logical blocks that correspond to a common object based on the comparison, the common object comprising one of the two or more objects; and 
 store each of the logical blocks of the subset of logical blocks corresponding to the common object in a common storage unit of the storage device. 
 
     
     
       32. The computer-readable storage medium of  claim 31 , wherein the instructions that cause the processor to determine the subset comprise instructions that cause the processor to:
 detect accesses to a first set of logical blocks at a first rate; 
 detect accesses to a second set of logical blocks at a second rate; 
 determine that the accesses to the first set of logical blocks and the second set of logical blocks occur at approximately the same time; and 
 determine that the subset of the logical blocks that correspond to the common object comprise logical blocks in the received plurality of logical blocks and at least one of the first set of logical blocks and the second set of logical blocks. 
 
     
     
       33. The computer-readable storage medium of  claim 31 , wherein the instructions that cause the processor to determine the subset comprise instructions that cause the processor to:
 receive at least a portion of the plurality of logical blocks; 
 include a first one of the received logical blocks in the subset; and 
 include subsequent ones of the received logical blocks in the subset when the subsequent ones of the received logical blocks comprise LBAs that are in sequence with respective previous ones of the LBAs of the logical blocks included in the subset. 
 
     
     
       34. The computer-readable storage medium of  claim 31 , wherein the instructions that cause the processor to determine the subset comprise instructions that cause the processor to:
 receive at least a portion of the plurality of logical blocks; 
 include a first one of the received logical blocks in the subset; and 
 include subsequent ones of the received logical blocks in the subset when the subsequent ones of the received logical blocks comprise LBAs that are within the particular number of addresses of at least one of the LBAs of the logical blocks included in the subset. 
 
     
     
       35. The computer-readable storage medium of  claim 34 , wherein the instructions that cause the processor to determine the subset comprise instructions that cause the processor to:
 receive a second portion of the plurality of logical blocks, the second portion comprising the logical blocks of the portion of the plurality of logical blocks that were not included in the subset; 
 include a first one of the received logical blocks of the second portion in a second subset; and 
 include subsequent ones of the received logical blocks of the second portion in the second subset when the subsequent ones of the received logical blocks of the second portion comprise LBAs that are within the particular number of addresses of at least one of the LBAs of the logical blocks included in the second subset.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.