Hardware acceleration of boot-up utilizing a non-volatile disk cache
First Claim
1. A computer system comprising a CPU, a boot disk storing a boot program used by the computer system to boot, and a nonvolatile memory disk cache receiving all or a portion of the boot program from the boot disk and storing it for access by the CPU so that the computer system can boot in whole or in part from the disk cache, wherein the computer system further includes an IDE controller for controlling the boot disk, wherein the cache has lines, wherein the lines of the cache are mapped to linear sectors read in a boot sequence, wherein the cache lines are initially marked invalid, wherein the cache is loaded with data from sectors read during an initial boot sequence, wherein during boots of the system subsequent to the initial boot sequence sector data in the cache is used instead of the corresponding sector data from the boot disk if the sector data in the cache is valid, and wherein if data is written to a sector read during the initial boot sequence, the cache line corresponding to the sector is marked invalid.
1 Assignment
0 Petitions
Accused Products
Abstract
A computer system includes a nonvolatile memory positioned between a disk controller and a disk drive storing a boot program, in a computer system. Upon an initial boot sequence, the boot program is loaded into a cache in the nonvolatile memory. Subsequent boot sequences retrieve the boot program from the cache. Cache validity is maintained by monitoring cache misses, and/or by monitoring writes to the disk such that a write to a sector held in the cache results in the cache line for that sector being invalidated until such time as the cache is updated. A filter driver is provided to monitor writes to the disk and determine if a cache line is invalidated.
171 Citations
38 Claims
- 1. A computer system comprising a CPU, a boot disk storing a boot program used by the computer system to boot, and a nonvolatile memory disk cache receiving all or a portion of the boot program from the boot disk and storing it for access by the CPU so that the computer system can boot in whole or in part from the disk cache, wherein the computer system further includes an IDE controller for controlling the boot disk, wherein the cache has lines, wherein the lines of the cache are mapped to linear sectors read in a boot sequence, wherein the cache lines are initially marked invalid, wherein the cache is loaded with data from sectors read during an initial boot sequence, wherein during boots of the system subsequent to the initial boot sequence sector data in the cache is used instead of the corresponding sector data from the boot disk if the sector data in the cache is valid, and wherein if data is written to a sector read during the initial boot sequence, the cache line corresponding to the sector is marked invalid.
- 3. A computer system comprising a CPU, a boot disk storing a boot program used by the computer system to boot, and a nonvolatile memory disk cache receiving all or a portion of the boot program from the boot disk and storing it for access by the CPU so that the computer system can boot in whole or in part from the disk cache, wherein the computer system further includes an IDE controller for controlling the boot disk, wherein the cache has lines, wherein the lines of the cache are mapped to linear sectors read in a boot sequence, wherein the cache lines are initially marked invalid, wherein the cache is loaded with data from sectors read during an initial boot sequence, wherein during boots of the system subsequent to the initial boot sequence sector data in the cache is used instead of the corresponding sector data from the boot disk if the sector data in the cache is valid, and wherein cache coherency is maintained by detecting cache misses, and if a miss is detected, the cache is aged, to invalidate lines from the cache.
- 5. A computer system comprising a CPU, a boot disk storing a boot program used by the computer system to boot, and a nonvolatile memory disk cache receiving all or a portion of the boot program from the boot disk and storing it for access by the CPU so that the computer system can boot in whole or in part from the disk cache, wherein the computer system further includes an IDE controller for controlling the boot disk, wherein the cache has lines, wherein the lines of the cache are mapped to linear sectors read in a boot sequence, wherein the cache lines are initially marked invalid, wherein the cache is loaded with data from sectors read during an initial boot sequence, wherein during boots of the system subsequent to the initial boot sequence sector data in the cache is used instead of the corresponding sector data from the boot disk if the sector data in the cache is valid, and wherein the computer system further includes a filter driver between the CPU and the IDE controller, wherein the filter driver has access to all input-output (I/O) requests to the boot disk, and wherein the filter driver has access to a cache map and can detect writes to the disk which are in the same sector as a sector in the cache.
- 9. A method comprising storing a boot program used by a computer system in a nonvolatile memory disk cache which receives all or a portion of the boot program from a system boot disk, the boot program stored in the cache for access by the CPU so that the computer system can boot in whole or in part from the disk cache, wherein an IDE controller is used to control the boot disk, wherein the cache is organized in lines, and wherein the lines of the cache are mapped to linear sectors read in a boot sequence, wherein the cache lines are initially marked invalid, wherein the cache is loaded with data from sectors read during an initial boot sequence, wherein during boots of the system subsequent to the initial boot sequence sector data in the cache is used instead of the corresponding sector data from the boot disk if the sector data in the cache is valid, and wherein if data is written to a sector read during the initial boot sequence, the cache line corresponding to the sector is marked invalid.
- 11. A method comprising storing a boot program used by a computer system in a nonvolatile memory disk cache which receives all or a portion of the boot program from a system boot disk, the boot program stored in the cache for access by the CPU so that the computer system can boot in whole or in part from the disk cache, wherein an IDE controller is used to control the boot disk, wherein the cache is organized in lines, and wherein the lines of the cache are mapped to linear sectors read in a boot sequence, wherein the cache lines are initially marked invalid, wherein the cache is loaded with data from sectors read during an initial boot sequence, wherein during boots of the system subsequent to the initial boot sequence sector data in the cache is used instead of the corresponding sector data from the boot disk if the sector data in the cache is valid, and wherein cache coherency is maintained by detecting cache misses, and if a miss is detected, the cache is aged, to invalidate lines from the cache.
- 13. A method comprising storing a boot program used by a computer system in a nonvolatile memory disk cache which receives all or a portion of the boot program from a system boot disk, the boot program stored in the cache for access by the CPU so that the computer system can boot in whole or in part from the disk cache, wherein an IDE controller is used to control the boot disk, wherein the cache is organized in lines, and wherein the lines of the cache are mapped to linear sectors read in a boot sequence, wherein the cache lines are initially marked invalid, wherein the cache is loaded with data from sectors read during an initial boot sequence, wherein during boots of the system subsequent to the initial boot sequence sector data in the cache is used instead of the corresponding sector data from the boot disk if the sector data in the cache is valid, and further wherein a filter driver is positioned between the CPU and the IDE controller, and wherein the filter driver has access to all input-output (I/O) requests to the boot disk, and wherein the filter driver has access to a cache map and can detect writes to the disk which are in the same sector as a sector in the cache.
-
17. A computer system, comprising:
-
a CPU;
a boot disk storing a boot program used by the computer system to boot;
a nonvolatile memory disk cache receiving all or a portion of the boot program from the boot disk and storing it for access by the CPU, so that the computer system can boot in whole or in part from the disk cache; and
a controller for controlling the boot disk, wherein the cache has lines that are initially marked invalid, and are mapped to linear sectors read in a boot sequence, wherein the cache is loaded with data from sectors read during an initial boot sequence, wherein during boots of the system subsequent to the initial boot, sequence sector data in the cache is used instead of the corresponding sector data from the boot disk if the sector data in the cache is valid, and wherein if data is written to a sector read during the initial boot sequence, the cache line corresponding to the sector is marked invalid. - View Dependent Claims (18, 19, 20)
a data bus coupled to the CPU; and
a cache controller coupled between the bus and the boot disk, wherein the disk cache is coupled to the cache controller.
-
-
19. The computer system of claim 17, wherein the computer system operates under the control of an operating system, and wherein the operating system has a boot-time disk footprint size and the cache is sized substantially as large as the size of the footprint.
-
20. The computer system of claim 17, wherein the invalid cache line is replaced with new data from the boot disk and the cache line marked valid.
-
21. A computer system, comprising:
-
a CPU;
a boot disk storing a boot program used by the computer system to boot;
a nonvolatile memory disk cache receiving all or a portion of the boot program from the boot disk and storing it for access by the CPU, so that the computer system can boot in whole or in part from the disk cache; and
a controller for controlling the boot disk, wherein the cache has lines that are initially marked invalid, and are mapped to linear sectors read in a boot sequence, wherein the cache is loaded with data from sectors read during an initial boot sequence, wherein during boots of the system subsequent to the initial boot, sequence sector data in the cache is used instead of the corresponding sector data from the boot disk if the sector data in the cache is valid, and wherein cache coherency is maintained by detecting cache misses, and if a miss is detected, the cache is aged, to invalidate lines from the cache. - View Dependent Claims (22, 23, 24)
a data bus coupled to the CPU; and
a cache controller coupled between the bus and the boot disk, wherein the disk cache is coupled to the cache controller.
-
-
24. The computer system of claim 21, wherein the computer system operates under the control of an operating system, and wherein the operating system has a boot-time disk footprint size and the cache is sized substantially as large as the size of the footprint.
-
25. A computer system, comprising:
-
a CPU;
a boot disk storing a boot program used by the computer system to boot;
a nonvolatile memory disk cache receiving all or a portion of the boot program from the boot disk and storing it for access by the CPU, so that the computer system can boot in whole or in part from the disk cache;
a controller for controlling the boot disk; and
a filter driver between the CPU and the controller, wherein the cache has lines that are initially marked invalid, and are mapped to linear sectors read in a boot sequence, wherein the cache is loaded with data from sectors read during an initial boot sequence, wherein during boots of the system subsequent to the initial boot, sequence sector data in the cache is used instead of the corresponding sector data from the boot disk if the sector data in the cache is valid, wherein the filter driver has access to all input-output (I/O) requests to the boot disk, and wherein the filter driver has access to a cache map and can detect writes to the disk which are in the same sector as a sector in the cache. - View Dependent Claims (26, 27, 28)
-
-
29. A method comprising:
-
storing a boot program used by a computer system in a nonvolatile memory disk cache that receives all or a portion of the boot program from a system boot disk, the boot program stored in the cache for access by a CPU so that the computer system can boot in whole or in part from the disk cache;
controlling the boot disk with a controller;
organizing the cache in lines;
initially marking the lines of the cache as invalid;
mapping the lines of the cache to linear sectors read in a boot sequence;
loading the cache with data from sectors read during an initial boot sequence;
using sequence sector data in the cache instead of the corresponding sector data from the boot disk during boots of the system subsequent to the initial boot if the sector data in the cache is valid; and
marking the cache line corresponding to a sector as invalid if data is written to the sector read during the initial boot sequence. - View Dependent Claims (30, 31)
replacing the invalid cache line with new data from the book disk; and
marking the cache line as valid.
-
-
32. A method comprising:
-
storing a boot program used by a computer system in a nonvolatile memory disk cache that receives all or a portion of the boot program from a system boot disk, the boot program stored in the cache for access by a CPU so that the computer system can boot in whole or in part from the disk cache;
controlling the boot disk with a controller;
organizing the cache in lines;
initially marking the lines of the cache as invalid;
mapping the lines of the cache to linear sectors read in a boot sequence;
loading the cache with data from sectors read during an initial boot sequence;
using sequence sector data in the cache instead of the corresponding sector data from the boot disk during boots of the system subsequent to the initial boot if the sector data in the cache is valid;
maintaining cache coherency by detecting cache misses; and
if a miss is detected, aging the cache to invalidate lines from the cache. - View Dependent Claims (33, 34)
-
-
35. A method comprising:
-
storing a boot program used by a computer system in a nonvolatile memory disk cache that receives all or a portion of the boot program from a system boot disk, the boot program stored in the cache for access by a CPU so that the computer system can boot in whole or in part from the disk cache;
controlling the boot disk with a controller;
organizing the cache in lines;
initially marking the lines of the cache as invalid;
mapping the lines of the cache to linear sectors read in a boot sequence;
loading the cache with data from sectors read during an initial boot sequence;
using sequence sector data in the cache instead of the corresponding sector data from the boot disk during boots of the system subsequent to the initial boot if the sector data in the cache is valid; and
positioning a filter driver between the CPU and the controller, wherein the filter driver has access to all input-output (I/O) requests to the boot disk, and wherein the filter driver has access to a cache map and can detect writes to the disk which are in the same sector as a sector in the cache. - View Dependent Claims (36, 37, 38)
invalidating a cache line if a sector mapped to the cache line is changed; and
refreshing the cache line with correct contents during a next boot sequence.
-
-
38. The method of claim 35, further comprising refreshing the cache during a write operation to a corresponding sector in the disk.
Specification