Claims
- 1. A method for operating a persistent storage device having solid state, non-volatile (“NV”) memory and a disk drive, the method comprising the steps of:
loading at least one block of data in NV memory from the disk drive in response to receiving a list of data to be pre-cached; and flushing the at least one block of data in response to receiving a flush command.
- 2. The method of claim 1 wherein the step of loading the at least one block of data in NV memory includes the step of pinning a block of data in the NV memory.
- 3. The method of claim 1 wherein the step of loading the at least one block of data in NV memory includes the step of immediately spinning up the disk drive.
- 4. The method of claim 1 wherein the NV memory has pinned data blocks and the step of flushing the at least one block of data in response to receiving a flush command comprises the step of flushing pinned data blocks in response to receiving a command to flush pinned data blocks.
- 5. The method of claim 1 wherein the NV memory has non-pinned data blocks and the step of flushing the at least one block of data in response to receiving a flush command comprises the step of flushing non-pinned data blocks in response to receiving a command to flush a dynamic cache.
- 6. The method of claim 1 wherein the NV memory has at least one pinned data block and at least one non-pinned data block and the step of flushing the at least one block of data in response to receiving a flush command comprises the step of flushing the at least one pinned data block and the at least one non-pinned data block in response to receiving a command to flush all data blocks.
- 7. The method of claim 1 further comprising the step of providing capabilities to the computer system in response to receiving a request to provide capabilities.
- 8. The method of claim 1 wherein the persistent storage device is in a computing device having a motherboard, the NV memory is located on the motherboard, and the step of loading at least one block of data in NV memory from the disk drive in response to receiving a list of data to be pre-cached includes the step of transferring the at least one block of data to the NV memory on the motherboard from the disk drive.
- 9. The method of claim 1 wherein the persistent storage device is in a computing device having an iSCSI board, the NV memory is located on the iSCSI board, and the step of loading at least one block of data in NV memory from the disk drive in response to receiving a list of data to be pre-cached includes the step of transferring the at least one block of data to the NV memory on the iSCSI board from the disk drive.
- 10. A method for operating a computer system having a persistent storage device having a disk drive and solid state, non-volatile (“NV) memory, the method comprising the steps of:
determining capabilities of the persistent storage device; providing a list of blocks to pin in the NV memory to the persistent storage device if the persistent storage device has the ability to pin blocks; and providing a list of blocks to cache in the NV memory to the persistent storage device.
- 11. The method of claim 10 wherein the step of determining the capabilities of the persistent device comprises the steps of:
determining a size of the NV memory; determining features supported by the NV memory; and determining a state of the disk drive.
- 12. The method of claim 10 further comprising the step of predicting a next set of blocks that will be accessed by a user.
- 13. The method of claim 12 further comprising the steps of providing a list of the next set of blocks that will be accessed by the user to the persistent storage device and commanding the persistent storage device to cache the list of the next set of blocks.
- 14. The method of claim 10 further comprising the step of commanding the persistent storage device to flush blocks listed in a flush list from NV memory to the disk drive.
- 15. The method of claim 14 wherein the step of commanding the persistent storage device to flush blocks listed in a flush list comprises the step of commanding the persistent storage device to flush all blocks in NV memory to the disk drive.
- 16. The method of claim 14 wherein the step of commanding the persistent storage device to flush blocks listed in a flush list comprises the step of commanding the persistent storage device to flush all pinned blocks in NV memory to the disk drive.
- 17. The method of claim 14 wherein the step of commanding the persistent storage device to flush blocks listed in a flush list comprises the step of commanding the persistent storage device to flush all non-pinned blocks in NV memory to the disk drive.
- 18. The method of claim 10 further comprising the step of commanding the persistent storage device to store a set of blocks in NV memory, the set of blocks forming a write transaction.
- 19. The method of claim 18 further comprising the step of commanding the persistent storage device to commit the write transaction to the disk drive.
- 20. An interface for enabling an operating system to control a solid state, non-volatile (“NV”) memory cache in a hard drive, the interface comprising: a first command to determine capabilities of the hard drive; a second command to pin a list of blocks in the NV memory; a third command to pre-cache a list of blocks in the NV memory; and a fourth command to flush commands from the NV memory to a hard drive disk.
- 21. The interface of claim 20 further comprising a fifth command to write a set of blocks that comprise a write transaction to NV memory.
- 22. The interface of claim 21 further comprising a sixth command to commit the write transaction to the hard drive disk.
- 23. The interface of claim 20 wherein the fourth command to flush commands from the NV memory to the hard drive disk comprises an instruction to flush a list of blocks from the NV memory to the hard drive disk.
- 24. The interface of claim 20 wherein the fourth command to flush commands from the NV memory to the hard drive disk comprises an instruction to flush all blocks in the NV memory from the NV memory to the hard drive disk.
- 25. The interface of claim 20 wherein the fourth command to flush commands from the NV memory to the hard drive disk comprises an instruction to flush pinned blocks from the NV memory to the hard drive disk.
- 26. The interface of claim 20 wherein the fourth command to flush commands from the NV memory to the hard drive disk comprises an instruction to flush a non-pinned blocks from the NV memory to the hard drive disk.
- 27. A computer-readable medium having computer executable instructions for operating a persistent storage device having solid state, non-volatile (“NV”) memory and a disk drive, the computer executable instructions for performing the steps of claim 1.
- 28. The computer-readable medium of claim 27 wherein the step of loading at least one block of data in NV memory includes the step of pinning a block of data in the NV memory.
- 29. The computer-readable medium of claim 27 wherein the step of loading at least one block of data in NV memory includes the step of immediately spinning up the disk drive.
- 30. The computer-readable medium of claim 27 wherein the NV memory has a static section for pinned data blocks and a dynamic section for non-pinned data blocks and the step of flushing the at least one block of data in response to receiving a flush command comprises the step of flushing pinned data blocks in response to receiving a command to flush pinned data blocks.
- 31. The computer-readable medium of claim 27 wherein the NV memory has a static section for pinned data blocks and a dynamic section for non-pinned data blocks and the step of flushing the at least one block of data in response to receiving a flush command comprises the step of flushing non-pinned data blocks in response to receiving a command to flush a dynamic cache.
- 32. The computer-readable medium of claim 27 wherein the NV memory has a static section for pinned data blocks and a dynamic section for non-pinned data blocks and the step of flushing the at least one block of data in response to receiving a flush command comprises the step of flushing pinned data blocks and non-pinned data blocks in response to receiving a command to flush all data blocks.
- 33. The computer-readable medium of claim 27 further comprising the step of providing capabilities to the computer system in response to receiving a request to provide capabilities.
- 34. A computer-readable medium having computer executable instructions for operating a computer system having a persistent storage device having NV memory and a disk drive, the computer executable instructions for performing the steps of claim 10.
- 35. The computer-readable medium of claim 34 having further computer-executable instructions for performing the step of predicting a next set of blocks that will be accessed by a user.
- 36. The computer-readable medium of claim 35 having further computer-executable instructions for performing the steps of providing a list of the next set of blocks that will be accessed by the user to the persistent storage device and commanding the persistent storage device to cache the list of the next set of blocks.
- 37. The computer-readable medium of claim 34 having further computer-executable instructions for performing the step of commanding the persistent storage device to flush blocks listed in a flush list from NV memory to the disk drive.
- 38. The computer-readable medium of claim 37 wherein the step of commanding the persistent storage device to flush blocks listed in a flush list comprises one of commanding the persistent storage device to flush all blocks in NV memory to the disk drive, commanding the persistent storage device to flush all pinned blocks in NV memory to the disk drive, and commanding the persistent storage device to flush all non-pinned blocks in NV memory to the disk drive.
- 39. The computer-readable medium of claim 34 having further computer-executable instructions for performing the step of commanding the persistent storage device to store a set of blocks in NV memory, the set of blocks forming a write transaction.
- 40. The computer-readable medium of claim 39 having further computer-executable instructions for performing the step of commanding the persistent storage device to commit the write transaction to the disk drive.
- 41. A method for operating a persistent storage device having solid state, non-volatile (“NV”) memory and a disk drive in a computing device, the method comprising the steps of:
storing data received from the computing device in data blocks in NV memory; determining when the NV memory available space is below a threshold; flushing at least a portion of the NV memory to the disk drive if the NV memory available space is below the threshold; and sending data stored on the disk drive that is requested by the computing device directly to the computing device.
- 42. The method of claim 41 wherein the step of flushing the at least a portion of the NV memory to the disk drive comprises the steps of immediately spinning up the disk drive and flushing the at least a portion of the NV memory to the disk drive.
- 43. The method of claim 41 wherein the step of flushing the at least a portion of the NV memory to the disk drive comprises the steps of waiting until the disk drive is spinning for data to be sent to the computing device and flushing the at least a portion of the NV memory to the disk drive after the disk drive has spun up.
- 44. A persistent storage device comprising:
a disk drive; an array of solid state, non-volatile (“NV”) memory blocks in communication with the disk drive and a controller, the controller in communication with the disk drive, the controller for controlling the disk drive and the NV memory and adapted to store at least one data block received from a computing device in at least one memory block in NV memory and flush the at least one block of data in response to receiving a flush command.
- 45. The persistent storage device of claim 44 wherein the controller is further adapted to load at least one block of data in NV memory from the disk drive in response to receiving a list of data to be pre-cached
- 46. The persistent storage device of claim 44 wherein the controller is further adapted to pin a block of data in the NV memory.
- 47. The persistent storage device of claim 44 wherein the controller is further adapted to immediately spin up the disk drive to load the at least one block of data in NV memory.
- 48. The persistent storage device of claim 44 wherein each memory block is one of a pinned data block and a non-pinned data block and the controller is further adapted to flush pinned data blocks in response to receiving a command to flush pinned data blocks.
- 49. The persistent storage device of claim 44 wherein each memory block is one of a pinned data block and a non-pinned data block and the controller is further adapted to flush non-pinned data blocks in response to receiving a command to flush a dynamic cache.
- 50. The persistent storage device of claim 44 wherein the NV memory comprises an array of memory blocks, each memory block being one of a pinned data block and a non-pinned data block and the controller is further adapted to flush pinned data blocks and non-pinned data blocks in response to receiving a command to flush all data blocks.
- 51. The persistent storage device of claim 44 wherein the controller is further adapted to provide capabilities to the computer system in response to receiving a request to provide capabilities.
- 52. The persistent storage device of claim 51 wherein the controller provides a size of the NV memory, features supported by the NV memory, and the state of the disk drive when the controller provides capabilities to the computer system,
- 53. The persistent storage device of claim 44 wherein the controller is further adapted to:
determine when the NV memory available space is below a threshold; and flush at least a portion of the NV memory to the disk drive if the NV memory available space is below the threshold.
- 54. The persistent storage device of claim 44 wherein the controller is further adapted to send data stored on the disk drive that is requested by a computing device directly to the computing device.
CROSS-REFERENCE TO RELATED PATENT APPLICATIONS
[0001] This patent application is a continuation-in-part of co-pending U.S. patent application Ser. No. 10/186,164, filed Jun. 27, 2002.
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
10186164 |
Jun 2002 |
US |
Child |
10372734 |
Feb 2003 |
US |