Abstract:
A method of programming a cache tag comparator by designing a semiconductor device&#39;s internal circuitry such that an input/output pin of the device may be programmed by an external resistor to ground that will indicate during the reset phase of the device that an alternate function for the pin is to be selected or that the pin itself is to be disabled.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The invention relates generally to electronic circuitry and more particularly to digital circuit design techniques in semiconductor devices and computer systems. 
     2. Description of the Prior Art 
     Modern high-performance microprocessors employ fast local memory as a cache reservoir of the most often accessed instructions and data. The resulting reduction in effective main memory access times produces higher system performance. In many types of systems, one example being workstations, the parts count and system cost are secondary features to performance. But in other applications, such as the embedded processors in laser printers, system cost is a prime consideration. 
     One such modern high-performance microprocessor is the Integrated Device Technology, Inc., IDT79R3000. The IDT79R3000 has an on-chip cache control that supports a &#34;direct mapped&#34; cache. In direct mapping, each word of the physical memory space is mapped into one cache memory location. The &#34;n&#34; least significant bits (LSB) of the memory address are used to index the direct mapped cache to specify a unique word. In this context, &#34;n&#34; is the number of address lines used to access the cache memory. Since the R3000 can address 32 Megabytes of memory, each cache location can contain the contents of one of the 2 32  -n physical locations in main memory. To identify the origin of the exact page of physical memory of a word which has been replicated in the cache, it is &#34;tagged&#34; by the 32-n most significant bits (MSB) of the main memory address. Consequently, each cache memory location stores both the data and the upper address bits of the physical main memory that the data is related to. 
     The tag is subsequently compared to the main memory addresses being output by the microprocessor, and if the tag matches, a cache &#34;hit&#34; is said to have occurred. If a cache miss occurs, the data will not be found in the cache and an access of the main memory must be attempted instead. A cache hit means that data will be accessed faster because the duplicate data found in the cache memory will respond much faster than would the original data in main memory. 
     The cache subsystem of a typical IDT79R3000 implementation is logically comprised of three parts: 1) memories containing data and/or instructions being cached from main memory, 2) memories which contain tags that indicate the page number of a cached word, and, 3) a comparator that compares each Physical Frame Number (PFN) generated by the on-chip Memory Management Unit (MMU) with the tag data read from the tag memory. 
     Specialized memories and extensive logic to control the cache are not required with the IDT79R3000 cache subsystem, because standard Static Random Access Memory (SRAM) components are adequate. The IDT79R3000 has separate control pins for the instruction cache controls: IRd, IWr, and IClk; and for the data cache controls: DRd, DWr, and Dclk. This enables the separation of instruction and data caches without the need for external decoding logic. 
     The IDT79R3000 has overlapping, but separate, pins for the 6 MSB bits of its &#34;AdrLo&#34; port and the 6 LSB bits of physical frame number (PFN) that enable each cache size to be independently varied from 4 Kb to 256 Kb. It also has a &#34;Harvard&#34; architecture which achieves high performance by overlapping load/store operations with the instruction fetch and execution. 
     A typical IDT79R3000&#39;s cache interface addressing is comprised of 10 bits of the virtual page address. Bits 0-1 of the offset are not connected to the cache memory since the IDT79R3000 accesses only 32 bit words from the cache. Since the ID79R3000 has instructions to access bytes or half words from memory, a whole word is read from the cache and, during read operations, the desired portion is automatically extracted, and then during write operations, the modified portion is merged and the whole word is written back. 
     The number of bits needed to tag memory pages is a function of the maximum cacheable memory size and the cache size. If a cache size of 4K bytes is used with the R3000 in a specific design and a cacheable memory space of 4 gigabytes is assumed then, the number of tag bits required is 20 bits (log base-2 of the size of the memory, divided by the cache size). In systems which do not utilize all of the 4 Gb address space, or in systems with more than 4 Kb of cache, less than 20 bits of cache tagging would be required. In such a case, the upper bits of the cache tag will always have the same value stored in them. But because the ID79R3000 processor compares the PFN to all 20 tag bits, it is necessary to supply the processor with all unused bits as well. 
     The ID79R3000 can accommodate many different cache sizes and system memory sizes, but at the expense of requiring wide cache words and therefore fast, costly SRAM. For example, in systems which implement larger caches, only 32-n (where n is log base-2 of the cache size) are actually required to identify the origin of the word from memory; however, the ID79R3000 uses the whole 20-bit page number as a tag for all cache sizes. Thus, for larger caches, the ID79R3000 compares more tag bits than would otherwise be needed to support a larger cache size. 
     In an application where the cache size is 128 Kb, the address for the cache will be 17 bits wide (n=17). All memory words of the selected page of the physical main memory with the same 17 LSB address bits (0-16) are respectively mapped into the same order within the cache. In this configuration, bits 12-16 are redundant if carried as tag bits as required by the R3000 tag comparator bus; these bits are actually used to address a unique cache memory location directly, and so do not need to be stored as a tag word. Notwithstanding the fact that only 15 bits are needed with a 128 Kb cache to &#34;tag&#34; the cache words (because 32-n=15), an ID79R3000 must use all 20 bits of the page number to determine whether a cache hit has occurred. 
     Table I shows the redundant tag bits that will occur for several different possible cache sizes a systems designer might select: 
     
                       TABLE I______________________________________Cache Size  AdrLo   Redundant address/tag bits______________________________________ 4Kb        11:2    none 8Kb        12:2    1216Kb        13:2    12-1332Kb        14:2    12-1464Kb        15:2    12-15128Kb       16:2    12-16256Kb       17:2    12-17______________________________________ 
    
     Further complicating the situation is the IDT79R3000&#39;s requirement that not only must the redundant tag bits, 12-16, be returned to the IDT79R3000, they must be properly toggled to correspond to the portion of the 128 Kb cache addressed by those bits. A simple tying high or low of these lines would not be possible, even if the IDT79R3000&#39;s tag pins were simple inputs and not input/outputs. 
     Since redundant bits are always generated as part of a cache address, it is possible to feed the bits back to the tag comparator inputs through a buffer--rather than more expensively storing their values in the cache in tag memories. It would be desirable to make a further parts cost savings by disabling the participation of these bits in the tag comparison process and thus avoid the use of latches altogether. In microprocessors, such as the IDT79R3000, this is not possible because the system designer does not have access to the necessary points within the semiconductor circuit itself. 
     Similarly, most systems implement smaller main memory than the 4 gigabytes assumed by the R3000. In such systems, fewer tag bits should be required to uniquely map cache entries to their main memory origin. However, the R3000 still requires 20 tag bits to be supplied for comparison. One way to reduce a system&#39;s component parts count is to store the upper tag bits in an inexpensive register rather than in additional memories. Such a design choice could mean significant savings. As an example, if a design has 4 Mb of cacheable memory and a 64 Kb cache, that would mean eleven IDT6198 (16K×4) memories--eight for data, one for parity and two for the tag--would be needed. The tag memory would contain 6 tag bits (Ad16-Ad21, corresponding to the 1024 possible pages of the 4 Mb cacheable memory); a valid bit; and 2 tag parity bits. The high order tag bits (Ad22-Ad31) and the third tag parity bit (TagP2 ) would be supplied by a 10-bit register (e.g. IDT 74FCT821), which are loaded by the CPU and they indicate where--within the 4 Gb address space--the 4 Mb of cacheable memory resides. The low-order tag bits 12-16 are provided to the processor by a buffer (e.g. IDT 74FCT244A), which feeds the redundant AdrLo (bits into the processor tag comparator. 
     The superfluous, most significant tag address bits (with regards to main memory and cache size) can be calculated as follows: 
     
         SUPERFLUOUS.sub.-- TAG=32-log.sub.2 (mem size) 
    
     The total number of unique tag address bits that are required with regards to main memory and cache size can be calculated as follows: 
     
         UNIQUE.sub.-- TAG=Log.sub.2 (mem size)-Log.sub.2 (cache size) 
    
     In order to reduce the amount of local/cache memory, the systems designer must be able to select which address bits will participate in the comparison with data from the cache. Current cache controllers of microprocessors such as IDT79R3000 do not accommodate such a selection. The problem then to be solved is how to allow the systems designer to be able to program the tag bits without simultaneously adding significant cost to the designer&#39;s system or the manufacturer&#39;s production of the semiconductor chips, while not degrading system performance, and without requiring software to participate in programming. The solution will therefore achieve software independence across multiple systems with different memory configurations. 
     SUMMARY OF THE PRESENT INVENTION 
     It is therefore an object of the present invention to provide an improved method of providing for user programming of a semiconductor device&#39;s alternative functions. 
     It is a further object to provide an improved method of cache tag comparison in high performance microprocessor systems. 
     It is a further object to provide for software independence/compatibility in implementations of an improved cache tag comparison method in high performance microprocessor systems. 
     It is a further object to provide for no loss of systems performance in implementations of an improved cache tag comparison method in high performance microprocessor systems. 
     It is a further object to limit the number of device pins in semiconductor device implementations of an improved cache tag comparison method in high performance microprocessor systems. 
     Briefly, a preferred embodiment includes within a semiconductor device a circuit that will detect the presence of a pull-down resistor that is connected to ground during the system reset phase of a cache tag comparator, and, if pulled-down, will disable the participation of the respective bit in the cache tag comparison phase. 
     An advantage of the present invention is that the elimination of tag bits will save the average system a minimum of 4 high-speed RAM devices (assuming 7198&#39;s are used) with no loss in performance. 
     Another advantage of the present invention is that implementation of techniques to reduce the width of individual cache entries by reducing the number of tag bits which must be compared to achieve a cache &#34;hit,&#34; are simplified. 
     Another advantage of the present invention is that a cache tag comparator&#39;s device pins, which are normally used to participate in cache tag comparisons, can be programmed by a systems designer to not participate in the comparison by inexpensively connecting the device pin to ground through a resistor. 
     These and other objects and advantages of the present invention will no doubt become obvious to those of ordinary skill in the art after having read the following detailed description of the preferred embodiments which are illustrated in the various drawing figures. 
    
    
     IN THE DRAWINGS 
     FIG. 1 is a block diagram of an external cache subsystem connected to a processor containing a comparator circuit embracing the present invention; 
     FIG. 2 is a circuit diagram detail according to the embodiment shown in FIG. 1. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Referring to FIG. 1, a processor 10 address bus &#34;AdrLo&#34; output is connected to a latch 12 and a latch 14. The latch 12 and a memory 16 and a memory 18 form an &#34;instruction cache.&#34; The latch 14 and a memory 20 and a memory 22 form a &#34;data cache.&#34; Tag data from memories 18 and 22 and addresses from the cache tag comparator 10 input are exchanged over a bus 24. Data from memories 16 and 20 are exchanged with the &#34;Data&#34; port of the cache tag comparator 10 over a bus 26. Tag programming resistors 28, 30, and 32 connect to the unused (superfluous/redundant) portion of the &#34;Tag&#34; port of the cache tag comparator 10 over a bus 34. 
     Each &#34;Tag&#34; port of the cache tag comparator 11 in FIG. 1 is comprised of a tag structure 40, shown in FIG. 2. During the reset phase of the cache tag comparator 11, an internal reset, a line 42, will turn-on a transistor 44. The resulting current, &#34;I reset ,&#34; will pull-up a pin 46. The pin 46 will rise to a logic one if a resistor 48 is not present. The pin 46 will remain a logic zero if the resistor 48 is present. A capacitive load 50 represents the stray capacitance on pin 46. 
     The logic condition of pin 46 is latched by a latch 52 when line 42 goes false. If the resistor 48 was present during reset, the &#34;Q&#34; output of latch 52 will be low and that will cause a multiplexer 54 to select an address line 56. Appropriate care is taken to insure that no race problems are created between the internal pull-up turning off and latch 50&#39;s set-up time and hold-time. An exclusive-or gate 58 will drive the tag compare line 60 permanently true. The net effect of the presence of the resistor 48 then is to disable the tag comparisons during operation. 
     If the resistor 48 was not present during reset, latch 50 will clock its &#34;Q&#34; output high. This in turn will cause the multiplexer 54 to select a buffered tag line 62 from the output of a buffer 64. Pin 46 is input to the buffer 64. During the operation phase of the cache tag comparator 10 a tag output enable line 66 will enable a buffer-driver 68. Buffer-driver 68 will thereby place the physical address on pin 46. During tag comparison, buffer-driver 68 will be disabled and the tag returned to pin 46 will be compared to line 56 in the exclusive-or gate 58. The match will be output on tag compare line 60. 
     To allow programing of pin 46 the transistor 44 is added which is active during reset (conducting) and is turned off (high impedance) after reset. Thus if the resistor 48 is placed on pin 46 it can be sensed as a low voltage. An absence of resistor 48 is sensed as a high voltage. The presence of resistor 48 is an indication of the line not to be used in bit comparison. The current sourced externally during the reset period is preferably 10 μA minimum, 100 μA maximum, with a reset time of 25 μs minimum that provides for an RC-time constant of the resistor 48 and the capacitor 50. 
     The proper value of the resistor 48 must be carefully calculated. The following equations are used in computing resistor 48&#39;s value: 
     
         V.sub.external =I.sub.reset * R.sub.ext                    (1) 
    
     
         V.sub.il =V.sub.cc * e.sup.-t/(Rext* Cload)                (2) 
    
     
         I.sub.reset =C.sub.load * dV/dt                            (3) 
    
     From a system point of view, it is desirable to use as large a resistor as possible to pull down the pin 46, since resistor 48 will always cause a current flow when pin 46 is output high. This current will be: 
     
         I=V.sub.cc /R.sub.ext                                      (4) 
    
     For 10 kΩ, this current is 0.5 mA. However, this would imply that I reset  maximum would be 40 μA (equation 1). A specification of 10 μA minimum, 100 μA maximum, is very practical. This implies a maximum resistor of 4 kΩ, and a current flow of 125 mA when the pad is output high. 
     The last two equations determine the reset period required to insure that the desired voltage level is seen at pin 46. The worst case reset period is determined by minimum I reset  and maximum C load  ; while maximum R ext  is determined by maximum I reset . Nominal values indicate a 4 kΩ resistor 48, 80 pF capacitive load of capacitor 50, and a 100 μs reset time. 
     One has to be concerned with the values of resistors used and the signal capacitance assumptions. Assume that the deselected tags are still used as outputs for address decoding. Then the processor could output the signal as a high, just prior to reset. The resistor value must be capable of allowing this high-voltage to decay to a low value during the reset period. Equation 2 dictates that: 
     
         0.4=5 e(.sup.-t/R.sub.ext.sup.*C.sub.load)                 (5) 
    
     If C load  =80 pF, R ext  =4 kΩ, then t=-R ext  * C load  * ln(0.4/5.0)=80 μSeconds for the reset period. 
     If no resistor 48 is used as a pull-down, and the signal was driven to ground just prior reset, then the signal must float to V ih  in order to be properly sampled at the end of the reset period. Equation 3 indicates that: 
     
         T.sub.reset =C.sub.load * (V.sub.ih -V.sub.ss)/I.sub.reset (6) 
    
     If I reset  is a minimum of 10 μA, then T reset  =20 μSeconds. 
     Thus, the transistor 44 should always source current in the range of 10 μA to 100 μA. T reset  must be greater than 100 μSec, and the maximum value of pull-down resistor 48 allowed is 4 kΩ. 
     The low input voltage level, V il , at pin 46 targets 0.4 V instead of the 0.8 V normal value--that builds in a 2:1 margin. Capacitive drive of 80 pF exceeds anything expected in a system which only uses tags for address decoding. The range of 10 μA to 100 μA for the reset current is easily achievable by current design engineering methods. 
     The configuration of FIG. 1 reduces system cost by eliminating the parity and tag bits from the fast local memory (cache), and it increases the amount of fast local memory possible such that some applications can use it as the sole random access memory in the system. 
     The tag pins, shown as pin 46 in FIG. 2, are both input and output and therefore could not be tied to ground and V cc  like other unused inputs. By testing for the presence of a resistor 48 initial reset time, the RC effect is experienced once and not on each cycle because during tag comparison phase of the cycle the inputs are ignored. 
     The device configurations in FIGS. 1-2 eliminate the requirement for a 60-bit value from the cache subsystem on every cache access. This 60-bit value usually includes the 32-bit data item, 4-bits of parity, a 20-bit tag value, a valid bit, and parity over the tag. The 60-bit value was required regardless of the particular system being designed. Systems with larger caches or a smaller cacheable memory space were required to provide the same amount of data as systems with small caches and a large cacheable memory space. Here, there is no requirement for tag parity, data parity is made optional, and the number of tags to compare is determined by the system designer. 
     In addition to the elimination of the logic in the ID79R3000 based system to ignore unneeded tags, further cost savings are achieved in the preferred embodiment of FIGS. 1-2. This is due to the elimination of data and tag parity. Usually, data and tag parity require 7-bits from each cache. The preferred embodiment system eliminates the requirement for a total of four 7198 type devices, which are typically required to support these parity bits. Thus, the preferred embodiment is expected to yield substantial cost savings relative to equivalent IDT79R3000-based systems. Specifically, the preferred embodiment eliminates 10 high-speed 7198&#39;s, plus 2 74FCT374A&#39;s relative to the &#34;nominal&#34; system. In a &#34;cost reduced&#34; system, the preferred embodiment eliminates 4 high-speed 7198&#39;s, one 74FCT244A, two 74FCT821A&#39;s, and 2 74FCT374A&#39;s, representing substantial savings over the least expensive IDT79R3000-based system. 
     Although the present invention has been described in terms of the presently preferred embodiment, it is to be understood that the disclosure is not to be interpreted as limiting. Various alterations and modifications will no doubt become apparent to those skilled in the art after having read the above disclosure. Accordingly, it is intended that the appended claims be interpreted as covering all alterations and modifications as fall within the true spirit and scope of the invention.