Abstract:
Conventional microprocessors access cache memory and external memory using a common data bus and share a single program counter. According to this invention, the cache memory and the external memory have corresponding program counters and separate data buses. The capacity to update the cache memory program counter concurrently with a cache memory access increases the speed of data processing.

Description:
BACKGROUND OF THE INVENTION 
     This invention relates to a microprocessor which has an internal cache memory and particularly to the implementation of high speed cache access in the microprocessor. 
     High levels of chip integration accompanying recent rapid advances in LSI manufacturing technology has made it possible to increase the processing speed of microprocessors by placing on the microprocessor chip high speed instruction execution devices such as pipeline processing formerly used only by mainframe computers. 
     The operating speed of the external memory, where data the microprocessor needs is stored, already cannot keep up with the speed of the microprocessor. Now that high speed instruction execution devices are being integrated with the microprocessor, the operating speed of the external memory has become a bottleneck. 
     Microprocessor data access can be accelerated by placing a cache memory, a high speed memory device, between the microprocessor and the former external memory and entering frequently used data from the external memory into the cache memory. Moreover, we can use high integration LSI technology to put the cache memory within the microprocessor itself so that instructions can be entered into the microprocessor even more rapidly. 
     FIG. 3 is a block diagram of a conventional microprocessor which contains a cache memory. The microprocessor 11 is connected to an external memory 12, which stores data the microprocessor 11 needs. A program counter 13, an address bus 14, an address latch 15 and a cache memory M are also shown in FIG. 3. Multiple addresses are stored in an associative memory unit 16 (hereinafter CAM unit). If an address identical to the address outputted by an address latch 15 is registered, or set, in the CAM unit 16 a match signal corresponding to that address is output on a match line 17. A match signal latch 18 latches the match signal output from the CAM unit 16 on the match line 17. A data memory unit 19 (hereinafter the RAM unit) stores data corresponding to match signals. Data stored in the RAM unit can be accessed through match signals output from a match signal latch 18 on a word line 20. Data which is an output result of a cache memory M is output to a data latch 21. FIG. 3 also shows a data bus 22. 
     FIG. 4 is a timing chart for the clock signal which determines when the microprocessor 11 performs a reference operation to the cache memory M. Phase A and phase B of FIG. 4 are non-overlapping two phase clock signals. 
     First, during phase A, the address latch 15 latches the address on the address bus 14 while simultaneously referencing the CAM unit 16 at that address in order to determine if the identical address is registered in the CAM unit 16. If an identical address has been registered, then a corresponding match signal is output on the match line 17. Moreover, during this same phase A, a reference to this same address can be performed on the external memory unit 12. 
     Next, during phase B, the match signal latch 18 latches the match signal. Concurrently, the match line 17, which is the match line of the match signal latch 18, accesses RAM unit 19 through the word line 20. 
     During the second phase A, the data latch 21 latches the output results of the cache memory M and decides whether or not the output results are valid. 
     If the data is valid, the current access to the external memory 12 is canceled and the program counter 13 is incremented to the next reference operation. 
     If the data is invalid or if the CAM unit 16 does not contain an identical address, the results of the current access to the external memory 12 are needed. Therefore the microprocessor waits until the access to the external memory 12 has been completed before going on to the next reference operation. 
     The conventional microprocessors such as described above cannot update the contents of the address bus during an instruction fetch before the results of the cache access are output because the cache memory M and the external memory 12 share the address bus 14. Thus the long sequence of events requiring that when the cache memory M is hit, data must first be determined to be valid before the program counter 13 is incremented degrades the efficiency of the access which might begin at the next phase A. 
     SUMMARY OF THE INVENTION 
     It is an object of this invention to provide a microprocessor capable of performing high speed data processing by eliminating the address update period while data is being read from the external memory or from the cache memory. 
     According to this invention, separate registers are used to update addresses in the external memory and in cache meory. Moreover, separate data bus systems are used between the register and the external memory and between the register and the cache memory. Thus, processing speed may be increased by updating the address on the cache memory register when the address corresponding to the cache memory is output. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a microprocessor according to an embodiment of this invention; 
     FIG. 2 is a flowchart which explains the memory reference operations of the microprocessor according to this invention; 
     FIG. 3 is a block diagram of a conventional microprocessor; and 
     FIG. 4 is a timing chart of the clock signals which provide for cache memory reference operations. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     FIG. 1 shows a microprocessor embodying this invention. Components identical with those of FIG. 3 are assigned the same reference numerals as they have in FIG. 3. A microprocessor 1 includes a cache memory M and other devices on the same chip. An external memory reference program counter 2, which serves as the first register of this invention, outputs addresses to the external memory 12 through the address bus 14. A cache memory address bus 3 passes on addresses from the cache memory M. A cache reference program counter 4, which serves as the second register of this invention, outputs addresses to the cache memory M through the cache address bus 3. A program counter control mechanism 5, which serves as the control device of this invention, points to the address outputted by the cache reference program counter 4 and to the address output by the external memory reference program counter 2. 
     Next, the cache memory M reference operations of the microprocessor 1 of this invention will be described with reference to the flowchart of FIG. 2 in which steps (1) to (12) are shown. 
     The cache memory M is operated in the microprocessor of this invention, as in conventional microprocessors, by the non-overlapping two phase clock signals phase A and phase B shown in FIG. 4. 
     First, during phase A, the address latch 15 latches the address on the cache address bus 3 while concurrently referencing the same address at the CAM unit 16 in order to determine if an identical address has been registered in the CAM unit 16 (step 1). If an identical address is found registered in the CAM unit 16 at this time, then a corresponding match signal is output on the match line 17. Moreover, during this same phase A, a reference to external memory 12 is also performed using address bus 14 (step (2)). 
     Next, during phase B, at the same time the match signal latch 18 latches a match signal, the match signal latch 18 uses its match line 17 as word line 20 to access the RAM unit 19 (step (3)). 
     During phase A described above, the external memory reference program counter 2 and the cache reference program counter 4 have the same value. However, even if the cache memory M is not hit between the reads of phase A and phase B described above, the program counter control mechanism 5 increments the cache reference program counter 4. This new value is output to cache address bus 3 until the next phase A (step (4)). 
     Then, during the next phase A, the data latch 21 latches the read result of the RAM unit 19, which has assumed the same value as the read result of cache memory M. Concurrently, a new cache access begins (step (5)). In this case, the results of the previous read and the data hit by the CAM unit 16 are checked to determine if they are valid (step (6)). If they are valid, jumps are made to steps (3) and (7) and the next phase B read operation can be performed. Concurrently, the external memory access is canceled (step (7)), the external memory reference address is updated (step (8)), and a new external memory access (step (2)) is performed. 
     If there is no hit, or if the hit data is invalid, the newly initiated cache access cycle is canceled by jumping to step (10) and waiting for the termination of the external memory access (step (11)), and data is entered from the external memory 12 (step (12)). 
     Thus, according to this invention, before determining the validity of the read results at the second phase A, the cache memory is hit in order to increment the cache reference program counter 4. If the hit produces valid data, then the next read can begin immediately at the next phase A and the processing speed during cache reference increases. 
     Moreover, according to this invention, the reference operations to cache memory M occur essentially concurrently with reference operations to the external memory 12. However, in some cases, the address bus 14 is already busy and the external memory 12 cannot be accessed concurrently with the cache memory M. In such cases, no access is performed to the external memory 12 and the results of the cache memory reference are awaited. If a hit is made on the cache, then it is unnecessary to perform an access operation on the external memory 12. If no hit in made on the cache, then the external memory is referenced once again using the same address. 
     Although the flowchart of FIG. 2 shows that the increment (address update) of the cache reference program counter 4 occurs during the latter half of phase B, this invention does not restrict the increment to this time. Naturally, the increment could also occur during the first half of phase A.