I/O cache with user configurable preload
First Claim
1. In a computer system executing a computer operating system having a device driver stack, a method of responding to a request to access a storage location in a mass storage device, the method comprising:
- determining whether data from the storage location is stored in a primary cache maintained in a system memory of the computer system;
determining whether the data from the storage location is stored in a secondary cache of the computer system in response to determining that the data is not stored in the primary cache; and
executing a first device driver to access the data in the secondary cache in response to determining that the data from the storage location is stored in the secondary cache, the first device driver being logically located in the device driver stack above a second device driver that controls access to the mass storage device.
7 Assignments
0 Petitions
Accused Products
Abstract
An apparatus and method for accessing data in a computer system. A relatively high-speed, intermediate-volume storage device is operated as a user-configurable cache. Requests to access a mass storage device such as a disk or tape are intercepted by a device driver that compares the access request against a directory of the contents of the user-configurable cache. If the user-configurable cache contains the data sought to be accessed, the access request is carried out in the user-configurable cache instead of being forwarded to the device driver for the target mass storage device. Because the user-cache is implemented using memory having a dramatically shorter access time than most mechanical mass storage devices, the access request is fulfilled much more quickly than if the originally intended mass storage device was accessed. Data is preloaded and responsively cached in the user-configurable cache memory based on user preferences.
-
Citations
50 Claims
-
1. In a computer system executing a computer operating system having a device driver stack, a method of responding to a request to access a storage location in a mass storage device, the method comprising:
-
determining whether data from the storage location is stored in a primary cache maintained in a system memory of the computer system;
determining whether the data from the storage location is stored in a secondary cache of the computer system in response to determining that the data is not stored in the primary cache; and
executing a first device driver to access the data in the secondary cache in response to determining that the data from the storage location is stored in the secondary cache, the first device driver being logically located in the device driver stack above a second device driver that controls access to the mass storage device. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. In a computer system executing a computer operating system having a device driver stack, a method comprising:
-
generating an access request to access data stored in a mass storage unit, access to the mass storage unit being controlled by a first device driver;
intercepting the access request in a second device driver, the second device driver being logically located above the first device driver in the device driver stack for the computer operating system;
determining in the second device driver whether the data has been stored in a secondary solid state memory that is distinct from a system memory of the computer system; and
redirecting the access request to access the data in the secondary solid state memory if the data has been stored therein. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32)
-
-
33. A method of accessing data in a computer system that includes a primary semiconductor memory, a secondary semiconductor memory, and at least one mass storage memory, and that executes a computer operating system having a device driver stack, the method comprising:
-
executing program code stored in the primary semiconductor memory to generate a request to access data stored in the mass storage device;
intercepting the request in a first device driver to determine whether the data is cached in the secondary semiconductor memory, the first device driver being logically located above a second device driver in the device driver stack;
accessing the data in the secondary semiconductor memory if the data is cached in the secondary semiconductor memory; and
forwarding the request to access the data to the second device driver to access the data in the mass storage device if the data is not cached in the secondary semiconductor memory. - View Dependent Claims (34, 35, 36)
-
-
37. A computer system executing a computer operating system having a device driver stack, the computer system comprising:
-
a processing unit;
a system memory coupled to the processing unit;
a mass storage unit coupled to the processing unit;
a secondary solid state memory coupled to the processing unit; and
the system memory having stored therein program code that, when executed by the processing unit, causes the processing unit to;
determine whether data from a storage location in the mass storage unit is stored in a primary cache maintained in the system memory;
determine whether the data from the storage location is stored in a secondary cache in the secondary solid state memory in response to determining that the data is not stored in the primary cache; and
execute a first device driver defined by program code in the system memory to access the data in the secondary cache in response to determining that the data from the storage location is stored in the secondary cache, the first device driver being logically located in the device driver stack above a second device driver that controls access to the mass storage unit. - View Dependent Claims (38, 39, 40, 41)
-
-
42. A computer system executing a computer operating system having a device driver stack, the computer system comprising:
-
a processing unit;
a system memory coupled to the processing unit;
a network access device coupled to the processing unit and adapted to connect the computer system to a computer network that includes a remote mass storage device; and
a secondary solid state memory coupled to the processing unit; and
the system memory having stored therein program code that, when executed by the processing unit, causes the processing unit to;
determine whether the data from a storage location in the remote mass storage device is stored in a secondary cache in the secondary solid state memory in response to a request to access the remote mass storage device;
execute a first device driver defined by program code in the system memory to access the data in the secondary cache in response to determining that the data from the storage location is stored in the secondary cache, the first device driver being logically located in the device driver stack above a second device driver that controls access to the remote mass storage device. - View Dependent Claims (43, 44, 45, 46)
-
-
47. A computer system executing a computer operating system having a device driver stack, the computer system comprising:
-
a processing unit;
a mass storage unit coupled to the processing unit;
a non-volatile solid state memory coupled to the processing unit; and
a volatile solid state memory coupled to the processing unit, the volatile solid state memory having stored therein program code that, when executed by the processing unit, implements a first device driver to access the mass storage unit in response to data access requests, and a second device driver to intercept the data access requests prior to the data access requests being received by the first device driver, the second device driver determining, for each of the data access requests, whether data sought to be accessed by the request has been stored in the non-volatile semiconductor memory, the second device driver redirecting the access request to access the data in the secondary semiconductor memory instead of the mass storage unit if the data has been stored in the secondary semiconductor memory, the second device driver being logically located above the first device driver in the device driver stack. - View Dependent Claims (48, 49)
-
-
50. In a computer system executing a computer operating system having a device driver stack, a method of responding to a request to write a file to a mass storage device, the method comprising:
-
determining whether the data from the storage location is cached in a secondary cache of the computer system in response to determining that the data is not cached in a primary cache; and
executing a first device driver to write the file to the secondary cache in the computer system, the first device driver being logically located in the device driver stack above a second device driver that controls access to the mass storage device;
detecting when a number of contiguous storage blocks sufficient to store the file become available in the mass storage device of the computer system; and
copying the file from the cache to the number of contiguous storage blocks in response to detecting that the number of contiguous storage blocks have become available.
-
Specification