Patent Publication Number: US-6662267-B2

Title: Hardware acceleration of boot-up utilizing a non-volatile disk cache

Description:
This application is a continuation of U.S. application Ser. No. 09/417,000 filed on Oct. 13, 1999, now U.S. Pat. No. 6,539.456. 
    
    
     TECHNICAL FIELD OF THE INVENTION 
     The present invention pertains generally to computers, and more particularly to method and apparatus for speeding the boot-up process in computers. 
     BACKGROUND OF THE INVENTION 
     Booting up a computer, and in particular an IBM-compatible personal computer (PC), often takes longer than desired. For example, it is not atypical for a PC using the Windows® 98 operating system to require one minute or more to boot up. This delay can be untenable when the PC needs to be activated on an expedited basis. For instance, if the user needs a phone number quickly, it can be more expeditious to look the number up in a telephone directory as opposed to a PC if the PC requires booting. Thus, unless PC&#39;s can be booted more quickly than as is currently the case, their use in applications that require fast initialization is limited. Thus, there is a need for a PC with a shorter boot up time than is currently available. 
     SUMMARY OF THE INVENTION 
     The present invention provides method and apparatus for speeding the boot-up of a computer. According to one embodiment of the invention, a boot program stored on a boot disk is cached in a nonvolatile memory, and retrieved by the system from the cache during the boot sequence instead of from the boot disk, thereby increasing the speed of access to the boot program. This and various other embodiments of the invention are described below. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 illustrates a first embodiment of the apparatus of the invention. 
     FIGS. 2-5 illustrate various alternate embodiments of the method of using the cache according to the present invention. 
     FIG. 6 illustrates an alternate embodiment of the apparatus of the invention. 
     FIG. 7 illustrates yet another embodiment of the method of the invention. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     In the following detailed description of the invention reference is made to the accompanying drawings which form a part hereof, and in which is shown, by way of illustration, specific embodiments in which the invention may be practiced. In the drawings, like numerals describe substantially similar components throughout the several views. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention. Other embodiments may be utilized and structural, logical, and electrical changes may be made without departing from the scope of the present invention. 
     Referring now to FIG. 1, there is shown a first embodiment of the invention. A computer system  10  includes a Central Processing Unit (CPU)  12 , a boot disk  14  storing a boot program  16  used by the computer system  10  to boot, and a nonvolatile random access memory  18  used as a disk cache. Memory  18  receives all or a portion of the boot program  16  from the boot disk  14  and stores it for access by the CPU  12  so that the computer system  10  can boot in whole or in part from the disk cache in memory  18 . A data bus  20  couples the CPU  12  to a controller  22  that controls the boot disk  14 , and a cache controller  24  is coupled between the bus  20  and the boot disk  14 , and wherein the memory  18  is coupled to the cache controller  22 . In one example embodiment, the computer system  10  may comprise an IBM-compatible computer with a Pentium class microprocessor and an IDE controller for controller  22 , or an Apple Macintosh computer with a Motorola microprocessor. The invention, however, is not limited in this respect, and other types of computer systems and processors can be used. Nonvolatile memory  18  may be a FLASH memory, or any suitable form of nonvolatile memory, and, preferably in at least some embodiments of the invention, random access memory. 
     In operation, the computer system  10  operates under the control of an operating system  26 , which includes as a portion thereof boot program  16 . Boot program  16  has a boot-time disk footprint of a ascertainable size. The memory  18  is sized to be substantially as large as the boot-time disk footprint, so that the boot program  16  can be cached in the memory  18 . However, the memory  18  could be smaller than the footprint, and store only a portion of the entire boot program  16 . Alternatively, memory  18  could exceed the size of program  16 . All or a portion of boot program  16  can therefore be stored in memory  18 , from where it can be more quickly retrieved, as opposed to being retrieved from the boot disk  14 , during boot-up of the system  10 . If only a portion of the boot program  16  is stored in memory  18 , that portion may be retrieved therefrom, with the remaining portion retrieved from the boot disk  14 . 
     According to another example embodiment, the boot program cache in memory  18  is formed of lines, the boot program  16  is stored in linear sectors on the boot disk  14 , and the lines of the cache are mapped to the linear sectors of the boot disk  14  read in a boot sequence upon boot up of system  10 . Referring to FIGS. 2-5, there is shown an example method for using the boot program cache. Initially, the cache lines are marked invalid ( 30 ). The cache is loaded with data from sectors of disk  14  read during an initial boot sequence ( 32 ). As shown in FIG. 3, during boots of the system  10  subsequent to the initial boot sequence, data in the cache is used ( 34 ) instead of the corresponding sector data from the boot disk, if the sector data in the cache is valid ( 33 ). Otherwise, the boot program or the disk is used ( 35 ). According to another example variant of this embodiment shown in FIG. 4, if data is written to a sector read during the initial boot sequence ( 36 ), the cache lines corresponding to the sector are marked invalid ( 37 ). The invalid cache line can be subsequently replaced with new data from the boot disk and the cache line marked valid ( 38 ). According to yet another example embodiment of the method of the present invention, illustrated in FIG. 5, cache coherency is maintained by detecting cache misses ( 40 ), and if a miss is detected, aging the cache, to invalidate lines from the cache ( 41 ). According to one approach, the cache is aged in a first-in first-out (FIFO) manner. 
     According to yet another embodiment of the invention diagrammatically illustrated in FIG. 6, a filter driver  50  is positioned between the operating system  26  and the disk controller  22 , and the filter driver  50  has access to all input-output (I/O) requests to the boot disk  14 , and to a cache map  52  in cache controller  24 . Filter driver  50  can detect writes to the disk  14  which are in the same sector as a sector in the cache. In one embodiment, filter driver  50  can monitor all I/O operations without significantly slowing performance of the system. 
     According to a method of operation using the embodiment of FIG. 6, illustrated in FIG. 7, if a disk sector cached in the cache is changed ( 60 ), as detected by filter driver  50 , the corresponding cache line is invalidated ( 61 ). The invalidated line can be refreshed with the correct contents during the next boot sequence ( 62 ). In one embodiment, the cache is not updated by the filter driver so that performance is not degraded. However, according to another embodiment, the cache is refreshed during the write operation to the corresponding sector in the disk drive ( 64 ) using a cache write-back queue. 
     Thus, as described above, there is provided method and apparatus for speeding the boot-up of a computer. The invention is applicable to all manner of computer systems, including appliance-like, sealed case systems, where the loadable files and configuration are seldom changed.