Efficient flash memory device driver
First Claim
1. A method whereby a host accesses a data storage device during execution of an application program, comprising the steps of:
- (a) storing, in an executable memory of the host, a software device driver of the data storage device;
(b) initiating a first access of the data storage device, by the host executing code of said software device driver;
(c) while the data storage device satisfies said first access, continuing the execution of the application program, by the host, until a second access of the data storage device is required by the application program; and
(d) querying a success of said first access prior to said second access, by the host executing code of said software device driver.
4 Assignments
0 Petitions
Accused Products
Abstract
A driver for a data storage device includes an access command and a verification command. The access command initiates an access (write, erase or read) of the data storage device while allowing a calling application to continue running without having to wait for the completion of the access. The verification command queries a preceding access. If the query indicates failure of the preceding access, the verification command repeats the preceding access until the preceding access succeeds. The verification command is called by the access command before the access command initiates a new access. The verification command also is called by an application following a sequence of related access command calls. A write access command saves the data to be written in a memory separate from the data storage device, in case the verification command needs that data to repeat a failed write.
17 Citations
53 Claims
-
1. A method whereby a host accesses a data storage device during execution of an application program, comprising the steps of:
-
(a) storing, in an executable memory of the host, a software device driver of the data storage device; (b) initiating a first access of the data storage device, by the host executing code of said software device driver; (c) while the data storage device satisfies said first access, continuing the execution of the application program, by the host, until a second access of the data storage device is required by the application program; and (d) querying a success of said first access prior to said second access, by the host executing code of said software device driver. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A computer readable storage medium having computer readable code embodied on the computer readable storage medium, the computer readable code comprising:
-
(a) first code, for a software device drivers, of a data storage device, that is executed by a host of said data storage device, for querying a success of a preceding access to said data storage device; (b) second code, for said software device driver, for;
if said querying indicates a failure of said preceding access, repeating said preceding access until said querying indicates a success of said preceding access; and(c) third code, for said software device driver, for initiating a new access to said data storage device if said querying indicates a success of said preceding access; said first, second and third code being callable by an application program, that is executed by said host and that accesses said data storage device, in a single call to said device driver. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
said first, second, third and fourth code being callable by an application program in a single call to said device driver.
-
-
18. The computer readable storage medium of claim 17, wherein said preceding access is a write of preceding data to said data storage device, and wherein said second code, in repeating said preceding access, writes, to said data storage device, said preceding data that were saved in said memory by said fourth code during said preceding access.
-
19. The computer readable storage medium of claim 14, wherein said new access is a read from said data storage device.
-
20. The computer readable storage medium of claim 14, wherein said new access is an erase of at least a portion of said data storage device.
-
21. The computer readable storage medium of claim 14, wherein the computer readable code further comprises:
-
(d) multi-portion code, for said device driver, for executing said first, second and third code successively for accessing each of a plurality of portions of said data storage device; said first, second, third and multi-portion code being callable by an application program in a single call.
-
-
22. The computer readable storage medium of claim 21, wherein said accesses are writes of data to respective pages of said data storage device.
-
23. The computer readable storage medium of claim 22, wherein the computer readable code further comprises:
-
(e) fourth code, for said device driver, for saving only said data of a last said write in a memory separate from said data storage device; said first, second, third fourth and multi-portion code being callable by an application program in a single call.
-
-
24. The computer readable storage medium of claim 21, wherein said accesses are reads from respective pages of said data storage device.
-
25. The computer readable storage medium of claim 21, wherein said accesses are erases of respective blocks of said data storage device.
-
26. The computer readable storage medium of claim 14, wherein said preceding access is a write to said data storage device.
-
27. The computer readable storage medium of claim 14, wherein said preceding access is a read from said data storage device.
-
28. The computer readable storage medium of claim 14, wherein said preceding access is an erase of at least a portion of said data storage device.
-
29. A computer readable storage medium having computer readable code embodied on the computer readable storage medium, the computer readable code comprising:
-
(a) first code, for a software device drivers of a data storage device, that is executed by a host of said data storage device, for querying a success of a preceding access to said data storage device; and (b) second code, for said software device driver, for initiating a new access to said data storage device if said querying indicates a success of said preceding access; said first and second code being callable by an application program, that is executed by said host and that accesses said data storage device, in a single call to said device driver. - View Dependent Claims (30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40)
said first, second and multi-portion code being callable by an application program in a single call.
-
-
35. The computer readable storage medium of claim 34, wherein said accesses are writes of data to respective pages of said data storage device.
-
36. The computer readable storage medium of claim 34, wherein said accesses are reads from respective pages of said data storage device.
-
37. The computer readable storage medium of claim 34, wherein said accesses are erases of respective blocks of said data storage device.
-
38. The computer readable storage medium of claim 29, wherein said preceding access is a write to said data storage device.
-
39. The computer readable storage medium of claim 29, wherein said preceding access is a read from said data storage device.
-
40. The computer readable storage medium of claim 29, wherein said preceding access is an erase of at least a portion of said data storage device.
-
41. A method of accessing a data storage device, comprising the steps of:
-
(a) providing an access command in an Application Programming Interface of a software device driver of the data storage device; (b) storing said software device driver in an executable memory of a host of the data storage device; and (c) issuing said access command, by an application program that is executed by said host, to initiate an access of the data storage device by said device driver; wherein, when said host executes said access command for a new access to the data storage device; (i) said host executes code of said software device driver to query a success of a preceding access to the data storage device; and (ii) if said querying indicates a failure of said preceding access, said host executes code of said software device driver to repeat said preceding access until said querying indicates a success of said preceding access. - View Dependent Claims (42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53)
-
Specification