System and method for managing the routine execution in a computer system
This is a continuation of application Ser. No. 08/226,512 filed Dec. 6, 1993, now abandoned, which is a continuation of Ser. No. 07/689,311, filed Apr. 22, 1991, now abandoned. 
    
    
     BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     This invention relates to a system and method for managing computer programs in a computer system, and more particularly to a system and method for using both shadow memory and cache memory to execute programs which the system stores in read only memory. 
     2. Description Of the Prior Art 
     In a personal computer system containing a 486 series microprocessor, the primary components include the following: dynamic random access memory (DRAM), one read-only memory (ROM) for storage of firmware (F/W), and a central processor unit (CPU) with cache RAM. The system memory address space is allocated as shown in FIG. 2. The first address space 27, consisting of the memory from address 0 to address Ar is implemented as dynamic random access memory (DRLM) and is therefore cacheable. A second address space 28, defined as the memory region from address A+1 to address B contains firmware 26, and is implemented as ROH which has been non-cacheable in the prior art. A third address space 29, defined as the memory region from address B+1 to address N, is also implemented as dynamic random access memory (DRAM), and is therefore also cacheable. The firmware 26 in the second address space 28 can be shadowed according to a conventional shadowing method 23 by copying it into an external DRAM used as a shadow memory device 22. The steps of the conventional shadowing method are as follows: (a) Copy the firmware 26 from the ROM at the second address space 28 into an external shadow memory device 22; (b) Control the hardware so that all accesses of the second address space 28 will be directed to the external shadow memory device 22, instead of the ROM; and (c) Put the shadow memory device 22 into a write-protect mode. 
     A drawback of the conventional technique is that the data in shadow memory device 22 cannot be further copied into another cache RAM 24 according to a cache RAM method 25 because there is no conventional technique for maintaining data consistency between the firmware 26 stored in both the shadow memory device 22 and the cache RAM 24. 
     SUMMARY OF THE INVENTION 
     In accordance with the present invention, a method and system of managing computer programs is provided which determines whether an attempt is being made to write data into the address range occupied by a shadow system memory device, and if so, a signal is generated which causes the cache RAM to be flushed. In an alternate embodiment, a signal is generated which disables the write to the cache RAM. Consequently, in either embodiment of the present invention, both shadow memory and cache memory may be used to increase the speed of execution of firmware 26 without ever having the system in a state where the copy of firmware 26 in cache RAM does not exactly match the copy residing in the shadow memory. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a conventional computer system containing a cache RAM and a shadow memory device; 
     FIG. 2 is a block diagram showing the system memory map, and the use of the shadow method, and the cache RAM method as part of this memory device; 
     FIG. 3A is a block diagram of a computer system including the system and method of a first embodiment of the present invention; 
     FIG. 3B is a block diagram of a computer system including the system and method of a second embodiment of the present invention; 
     FIG. 4 is a timing diagram showing the signals generated by a flush device in accordance with a first embodiment of the present invention; 
     FIG. 5 is a circuit diagram of a flush device in accordance with a first embodiment of the present invention; 
     FIG. 6 is a timing diagram showing the signals generated by a cache disable device in accordance with a second embodiment of the present invention; and 
     FIG. 7 is a circuit diagram of a cache disable device in accordance with a second embodiment of the present invention. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     In FIG. 1, the primary components of a conventional computer 10 are as follows: system memory device 11, one read-only memory (ROM) device 12 for storing firmware 26 (F/W), one central processing unit (CPU) 14 containing a cache RAM 13, and a shadow controller 15. 
     As shown in FIG. 2, a first address space 27, defined as the memory region from address 0 to address A, is implemented as dynamic random access memory (DRAM) and is therefore cacheable. A second address space 28, defined as the memory region from address A+1 to address B, contains firmware 26 and is implemented as ROM which has been non-cacheable in the prior art. A third address space 29, defined as the memory region from address B+1 to address N, is also implemented as DRAM, and is therefore also cacheable. By utilizing the conventional shadow method 23, the firmware located in the second address space 28 can be copied to external shadow memory device DRAM 22. The steps of the conventional shadowing method are as follows: 
     1. Copy the firmware 26 from the ROM at the second address space 28 into an external shadow memory device 22; 
     2. Control the hardware so that all accesses of the second address space 28 will be directed to the external shadow memory device 22, instead of the ROM; and 
     3. Put the shadow memory device 22 into a write-protect mode. 
     A drawback of the conventional technique is that the data in shadow memory device 22 cannot be further copied into cacheable RAM 24 according to a cache RAM method 25 because there is no conventional technique for maintaining data consistency between the firmware 26 stored in both the shadow memory device 22 and the cache RAM 24. 
     In a first embodiment of the present invention, shown in FIG. 3A, the main components of the microprocessor system 30 include a central processing unit (CPU) 34 containing a cache RAM 33, one shadow control device 35, one system memory retrieval device 31, one read-only memory (ROM) device 32 containing the firmware 26, and a flush device 39A. Connections between them include an address bus 36, data bus 37, and control bus 38. 
     With reference to FIGS. 2 and 3A, the novel method of managing a computer program in accordance with a first embodiment of the present invention comprises the following steps: 
     1. Copy the firmware 26 from the ROM 32 into the system memory device 31 by using the conventional shadow method 23; 
     2. Copy some of the firmware 26 from the shadow portion of system memory device 31 into cache RAM 33 by using the conventional cache PJLM method 25; 
     3. Determine whether a request has been made to write into the shadow portion of the system memory device 31 (i.e., into the address range A+1 to B), and if a request has been so made, generate a flush signal 57 to flush the data which was copied to cache RAM 33. 
     In a second embodiment of the present invention, a second method for managing computer programs is provided which includes the following steps: 
     1. Copy the firmware 26 from the ROM 32 into the system memory device 31 by using the conventional shadow method 23; 
     2. Copy some of the firmware 26 from the shadow portion of system memory device 31 into cache RAM 33 by using the conventional cache RAM method 25; and 
     3. Determine whether a request has been made to write into the shadow portion of system memory device 31 (i.e., into the address range A+1 to B), and if a request has been so made, generate a disable signal 77 (EADS#) which prevents any write to the cache RAM 33 from taking place. 
     Referring to FIGS. 2, 3A, and 5, in order to generate a flush signal 57 (FLUSH#) as used in the above-described first method, a first embodiment of a microprocessor system 30 must include the following elements: 
     1. A shadow control device 35 which performs the steps necessary to copy the firmware 26 from the ROM 32 to the system memory device 31 in accordance with the conventional shadowing method 23; 
     2. A CPU 34 which copies some of the firmware 26 from the system memory device 31 to the cache RAM 33 by using the conventional cache RAM method 25; and 
     3. A flush device 39A which determines whether a request has been made to write into the shadow portion of the system memory device 31 (i.e., into the address range A+1 to B), and if a request has been so made, generates a flush signal 57 to flush the data which was copied to cache RAM 33 
     Details of the preferred embodiment of the above-mentioned flush device 39A are shown in FIG. 5. 
     Control bus 52 contains an address state signal (ADS#), a signal (M/IO#) for distinguishing between memory and input/output operations, and a signal (W/R#) for distinguishing between write and read operations. The address bus 53 carries address signals. The address bus 53 and the control bus 52 are both input into address decoder 51, which is constructed from a programable array logic (PAL) device. The address decoder 51 generates the decoding signal 54 which is active when address decoder 51 detects that a write to the shadow range (i.e., from address A+1 to B) of the system memory device 31 is being attempted. 
     Signal adjustment device 56 includes a first flip-flop 58, a second flip-flop 59, and an AND gate 54A. It accepts, as inputs, the decoding signals 54 and the CPU clock signal 55, and generates a flush signal 57 which meets the timing specifications of the CPU 34. When it is active, the flush signal 57 causes the CPU 34 to flush the contents of cache RAM 33. 
     The signals generated by the signal adjustment device 56 are shown in FIG. 4, and will now be described. When the decoding signal 54 is inactive it has a high value which is clocked into the first flip-flop 58 and then the second flip-flop 59. As long as the decoding signal 54 remains high, both flip-flops will have high values, causing the flush signal 57, which is the output of AND gate 54A, to remain high (inactive). 
     When the address decoder 51 detects a write to the shadow range (i.e., from address A+1 to B) of the system memory device 31, decoding signal 54 goes low. At the next rising edge of the CPU clock signal 55 (T3 in FIG. 4), the value of the decoding signal 54 is clocked into the first flip-flop 58, causing its output, Q1, to go low. This low Q1 value causes the flush signal 57, which is the output of AND gate 54A, to go low (active) 
     Sometime after T3 but before T4, the decoding signal 54 returns to its inactive (high) state. On the next rising edge of the CPU clock signal 55 (T4 in FIG. 4), the low output (Q1) of the first flip-flop 58 is clocked into the second flip-flop 59, causing its output (PR) to fall. This low value of PR causes the output of AND gate 54A (i.e., the flush signal 57) to remain low. Furthermore, this low value of PR is fed back to the preset input of the first flip-flop 58, causing Q1 to immediately rise to a high level. At the next rising edge of the CPU clock signal 55, this high value of Q1 is clocked into the second flip-flop 59, causing PR to rise. At the same time, the high value of decoding signal 54 is clocked into the first flip-flop 58, causing its output, Q1, to remain high. The high values of both Q1 and PR cause the output of AND gate 54A to rise, making the flush signal 57 high (inactive). This is shown occurring between times T5 and T6 in FIG. 4. 
     Referring to FIGS. 2, 3B, and 7, in order to generate a disable signal 77 (EADS#) as used in the above-described second method, a second embodiment of a microprocessor system 30 must include the following elements: 
     1. A shadow control device 35 which performs the steps necessary to copy the firmware 26 from the ROM 32 to the system memory device 31 in accordance with the conventional shadowing method 23; 
     2. A CPU 34 which copies some of the firmware 26 from the system memory device 31 to the cache RAM 33 by using the conventional cache RAM method 25; and 
     3. A disable signal device 39B which determines whether a request has been made to write into the shadow portion of the system memory device 31 (i.e., into the address range A+1 to B), and if a request has been so made, generates a disable signal 77 to prevent the writing of data into the cache RAM 33. 
     Details of the preferred embodiment of the above-mentioned disable signal device 39B are shown in FIG. 7. 
     Control bus 72 contains an address state signal (ADS#), a signal (M/IO#) for distinguishing between memory and input/output operations, and a signal (W/R#) for distinguishing between write and read operations. The address bus 73 carries address signals. The address bus 73 and the control bus 72 are both input into an address decoder 71, which is constructed from a programable array logic (PAL) device. The address decoder 71 generates decoding signal 74 which is active when address decoder 71 detects that a write to the shadow range (i.e., from address A+1 to B) of the system memory device 31 is being attempted. 
     The decoding signal 74 is fed into an AND gate 74A. The other input of the AND gate 74A comes from the monitor function monitoring signal (SNOOP#) which is required by the other system circuit modules. The output of AND gate 74A is control signal 74B. Control signal 74B is fed to a signal adjustment device 76. 
     Signal adjustment device 76 includes a first flip-flop 78 and a second flip-flop 79, connected as shown in FIG. 7. It accepts, as inputs, the control signal 74B and the CPU clock signal 75, and generates the disable signal 77 (EADS#) which meets the timing specifications of the CPU 34. When it is active, the disable signal 77 prevents the CPU 34 from writing any data to cache RAM 33. 
     The signals generated by the signal adjustment device 76 are shown in FIG. 6, and will now be described. When the control signal 74B is inactive it has a high value which is clocked into the first flip-flop 78 and then the second flip-flop 79. As long as both the control decoding signal 74 and the monitor function signal (SNOOP#) remain high, the control signal 74B will remain high, causing the output of both flip-flops 78 and 79 to remain high. The output of the first flip-flop 78 is taken as the disable signal 77 (EADS#), and is inactive when it has a high value. 
     When the address decoder 71 detects a write to the shadow range (i.e., from address A+1 to B) of the system memory device 31, decoding signal 74 goes low, causing the output 74B of the AND gate 74A to go low as well. This is shown occurring between times T2 and T3 in FIG. 6. At the next rising edge of the CPU clock signal 75 (T3 in FIG. 6), the value of the control signal 74B is clocked into the first flip-flop 78, causing its output, the disable signal 77 (EADS#) to also go low. This is shown as occurring just after time T3 in FIG. 6. 
     At some time after T3 but before T4, the decoding signal 74 rises (goes inactive), causing the control signal 74B to rise also. 
     At the next rising edge of the CPU clock signal 75 (at time T4 in FIG. 6), the low output of EADS# 77 is clocked into the second flip-flop 79, causing its output, PR#, also to go low. This PR# signal is fed to the preset input of the first flip-flop 78, causing its output, EADS# 77, to rise immediately. This is shown between times T4 and T5 in FIG. 6. At the next rising edge of CPU clock 75 (T5 in FIG. 6), the high value of EADS# 77 is clocked into the second flip-flop 79, causing its output PR#, to go high. At the same time, the high value of control signal 74B is clocked into the first flip-flop 78, so that its output, EADS# 77, remains high. The output of both flip-flops 78 and 79 remain high until the next time the control signal 74B drops to a low value.