Patent Publication Number: US-5634108-A

Title: Single chip processing system utilizing general cache and microcode cache enabling simultaneous multiple functions

Description:
This is continuation of co-pending application Ser. No. 08/159,683 filed on Nov. 30, 1993. This application is related to co-pending application U.S. Ser. No. 08/159,883 entitled &#34;Single Chip Processing Unit Providing Immediate Availability of Frequently Used Microcode Instruction Words&#34;. 
    
    
     FIELD OF THE INVENTION 
     This disclosure involves the use of control store systems providing faster access of microcode to a high-speed processor unit. 
     BACKGROUND OF THE INVENTION 
     In earlier years the design of the control portion of computer processors have gone through a transition by being converted from hard-wired control units to the more recently types of microcode-driven control units. The microcode is generally referred to as &#34;firmware&#34; and resides at a level below the machine instruction level. The microcode is generally fixed and presented by the manufacturer and is also inaccessible to the user who may not even be aware of its existence. 
     Microcode instructions must be stored in some type of memory structure which is available to the control hardware of the processor. In many processors, this is a Read Only Memory (ROM) unit which is generally inexpensive and fast, but has the limitation of being fixed and unalterable. Thus when inadequacies are found, or it is desired to change the definition of the instruction set that is implemented, this presents a problem which is very costly to change. 
     In other types of processors, the microcode instructions are stored in Random Access Memory (RAM). This makes it relatively easy to change the previously fixed type of microcode instructions, but on the other hand, it is much more costly and slower in operation. Additionally, in many VLSI implementations, the Random Access Memory also requires more silicon area per bit, thus reducing the amount of microcode available for use in a given silicon area. 
     In terms of other practical considerations, both RAM and ROM units are limited in size by certain practical considerations such as power consumption, cost, area required and performance. 
     With these type of problems presented by RAM and ROM memories, computer systems have been developed with the use of &#34;caching&#34; or cache memory assists in order to provide better service to a processor&#39;s need for instruction codes as rapidly as possible. 
     The present disclosure functions to obtain the benefits of a writable control store without the size constraints of Random Access Memory (RAM) or the lack of unalterability due to Read Only Memory (ROM). 
     Thus the improved concept that is indicated, is that, instead of attempting to store the entire microcode instruction set in either a RAM unit or a ROM unit, there can be implemented a specialized &#34;microcode cache unit&#34;. When a &#34;miss&#34; occurs in an ordinary cache memory unit, the required item is then fetched from the main memory. Most processors are connected to memory systems that are very large compared to the memory space required for microcode storage. 
     A special problem for microcode cache units is that a cache &#34;miss&#34; is very expensive in terms of average performance. Thus very high &#34;hit&#34; rates are most desirable compared to most general cache applications. It is desirable that hits occur at least 99% of the time in many applications. There are several concepts that make this possible. 
     (i) First, the amount of microcode actually used in the &#34;normal operation&#34; of a processor is relatively very small. Many OP codes are seldom used, and many esoteric variances of common OP codes are used even less. One obvious example is the action taken under error conditions; 
     (ii) Second, a microcode post-processor can be used to rearrange the microcode location accessibility to maximize the cache hit rate if the parameters of a caching algorithm and microcode use are known. 
     Microcode cache operations allow a large, complex, evolving instruction set to be implemented in a single-die package with options as to the whereabouts of the complete microcode in the memory subsystem depending on cost/performance requirements for the system. 
     Putting the control store off-chip would tend to require deeper pipelining because of the delay incurred. The requirements for computing the address of the next microcode word to be executed would make deeper pipelining of its prefetch very costly. Performance would suffer considerably. Thus the on-chip cache location eliminates much of the pipelining delays incurred if the on-chip caches were not available. 
     Putting both a general and microcode cache on-chip allows the processor to run for lengthy periods without having to access off-chip. Because of the performance cost of going off-chip (more costly the faster the processor with respect to the memory subsystem), it is desirable to do this as infrequently as possible. Thus, it is useful to implement larger caches as technology allows to further reduce the off-chip traffic. 
     SUMMARY OF THE INVENTION 
     A processor chip is provided with a specialized microcode cache unit to more rapidly supply requested microcode words to the processor. 
     A group of &#34;N&#34; Tag Status RAMs hold address information, validity information and parity information on existing microcode words stored in an associated group of &#34;N&#34; Data RAMs. 
     The processor&#39;s address request for a microcode instruction word is fed to the Tag Status RAMs. If a hit is effected by a group of comparators, then the selected microcode word will be found in the Data RAMs and conveyed to a Control Register in one clock cycle for execution. 
     If a &#34;miss&#34; occurs, a state machine controller will request the missing word from a control store in main memory. 
     A LRU RAM is used to monitor the least recently used set of microcode word addresses so that more recently used words can replace the less recently used words in the Data RAMs. 
     A processor (element 90 composed of elements 20 and 30) is provided not only with a general cache, but also with a microcode cache unit for keeping the regularly used microcode words available for use in every clock. The presently described implementation involves a 2K by 90-bit microcode cache. The cache organization is 4-way set associative and each line is one microcode word wide. 
     If the addressed microcode word is available in the microcode cache unit, then it will be loaded into a Control Register at the end of the clock during which the microcode word was requested. The microcode cache is accessed in parallel to the execution of the microcode word residing in the Control Register. 
     Should a microcode word be requested that is not available in the microcode cache unit, then all the internal operations of the processor will be &#34;held&#34; on the clock after the miss is detected. This allows the execution of the microcode word in the control register to be completed. Once the &#34;miss&#34; is detected, a request is made to external system memory to fetch the required microcode word assuming that the interface for doing so is available. 
     Any request of a microcode word to the external system will take several clocks to be returned. There is only a limited amount of useful work that can be done by the particular processor unit between a microcode &#34;miss&#34; occurring and the missing microword being returned. The function that can be done by hardware during this time is to finish any memory command in execution at the time of the microcode miss, or to service any new invalidate requests by the external system. A LRU or least recently used mechanism is used as a replacement system for the microcode cache when all four lines in a &#34;set&#34; of 4 words are valid. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a block diagram of a processor chip utilizing a general cache and microcode cache; 
     FIG. 1A is a schematic drawing shown on 3 sheets designated FIGS. 1A-1, 1A-2, 1A-3, indicating detailed portions of the elements of FIG. 1; 
     FIG. 1B is a schematic detail of the Control Section of FIG. 1 shown on 2 sheets designated FIGS. 1B-1, 1B-2; 
     FIG. 1C is a drawing illustrating the arrangement of the General Cache; 
     FIG. 1D is a drawing illustrating the layout of the Microcode Cache; 
     FIG. 2 is a diagram showing the system interface unit; 
     FIG. 3 is a diagram illustrating the operational flow from the sequencer; 
     FIG. 4 is a block diagram showing the elements of the microcode cache subsystem; 
     FIG. 5 is a circuit drawing of the elements of the microcode cache unit shown on 2 sheets designated FIGS. 5A, 5B. 
    
    
     GENERAL OVERVIEW 
     The environment described herein involves a recently developed processor chip designated as the SCAMP-D which is an acronym for &#34;Single Chip A-Series Mainframe Processor&#34;. This chip involves a CMOS die which is operative in a 323 pin package to provide a low cost but high-speed processing function. The SCAMP-D processor will allow efficient running of a specialized instruction set used by the Unisys Corporation and designated as the E-mode instruction set. SCAMP-D uses 90-bit instruction words. A control store is utilized which is programmable and thus is capable of disabling the E-mode instruction set in order to run other types of instruction sets. The E Mode instruction set is a specialized set of instructions used in the Unisys Corporation A-Series computer systems. 
     The SCAMP-D processor is designed to run at a clock speed of upwards beyond 24 megahertz and the processor requires only one clock signal from the external system. Internal operations of the processor will occur at the speed directly dictated by an external clock. Additionally, the SCAMP-D processor also requires the external system to supply a strobe signal every 512 microseconds. 
     Within the SCAMP-D processor, there are five main functional sections which are shown in FIG. 1. These include the data section 30, the control section 20, the microcode cache 10, the general cache 40, and the system interface 50. The system interface 50 connects to the memory subsystem 70 in FIG. 1. 
     FIG. 1A shows the main modules of the data section 30 and the interconnections. The data section contains the elements of the data path such as the register file, code isolate, counters, timers, rotating/masking hardware, the arithmetic logic unit and floating point assist hardware. The data section is mainly controlled by the microcode. 
     The register file is used to hold the &#34;state&#34; of the virtual machine that is implemented through the hardware and microcode combination. This includes addresses defining the E-mode stack, top of stack items and intermediate results. There are 14 register file locations defined to hold up to seven double precision top of stack items of the E-mode stack. This feature helps to reduce the number of transfers to and from main memory during operator execution. The maintenance of these registers is done by a combination of hardware and microcode. 
     The register file permits the independent sourcing of two operands to be processed by the data section 30. One operand may be rotated and both may be masked in order to extract fields. After masking, the manipulated operands are sent to the ALU (arithmetic logic unit) where they may be added, subtracted or logically combined. The result may be stored in the register file for use later, or written into the system interface 50 for use as an address, or as data in a memory operation. 
     Although the arithmetic logic unit, ALU, only directly supports simple operations like add, subtract, and divide by three, other functions may be performed using multiple passes through the ALU under microcode control or by using a floating point assist hardware. 
     The counter/timer block in the data section 30 provides support to the microcode for controlling the number of passes or time of operations. The outputs of the counters and timers are used as inputs to the PMASK allowing them to be selected, tested, and manipulated by microcode. 
     The floating point assist (FPA) provides hardware support to the microcode for the E-mode floating point arithmetic operations and integer multiplication. Floating point numeric values in the E-mode system are represented using binary signs/magnitude notation. The hardware support includes a 39-bit multiplier and alignment logic for manipulation of the mantissas and the exponents used to represent floating point numbers. 
     Other sources which are fed into the data section 30 involve: a parameter from the code stream, the code pointer value on the program syllable index value from the code isolate, a literal for microcode operand tags, the read data register or the programword address (PWA) within the system interface 50, or the result data being returned from the floating point assist section (FPA) in the data section 30. 
     In the data section 30, the Code Isolate contains a two word code buffer where each word is 48 bits. The code buffer contains the OPCODES and the parameters to be executed by the SCAMP-D processor. The Code Isolate is responsible for stepping through the code stream extracting the next OPCODE syllable to be executed and the parameters to be read into the data path. The stepping through the code stream is controlled by a combination of microcode and hardware. The Code Isolate uses the OPCODE which is extracted to generate the operator entry address of the microcode routine responsible for the execution of that operator. It also performs a pre-fetch of the next code word when it has finished using the OPCODES/parameters in one of its code buffers. 
     FIG. 1B is a drawing showing the control section 20 which is responsible for controlling the sequencing of the microcode as well as containing the logic for controlling various portions of the data section 30. The alternate address register is in the Sequencer. FIG. 1B shows the various address sources going into the Sequencer from the Return Stack, Interrupt Controller, Entry Vector portion of Code Isolate and the Control Register. The mcFreeze signal from the Microcode Cache causes the alternate address register to be loaded with the missed microcode address, already in the Sequencer. mcSetfreeze is used by the sequencer to select the alternate address register to address the microcode cache on sqUaddr[14:15]. 
     The microcode word is 90 bits wide including a single bit for parity checking, and it controls the operations of the SCAMP-D chip processor hardware 7, FIG. 1. The complete microcode is held in the control store of memory subsystem 70. Thus the control store is not within the processor chip 7 itself, but is present off-chip in the memory subsystem. 
     A microcode-word contains 90 bits of control information, divided into fields of differing lengths as shown in Table I: 
     
                       TABLE I                                                     
______________________________________                                    
                                 Bit                                      
Microcode Field      Mnemonic    Width                                    
______________________________________                                    
Odd Parity           mcParity    1                                        
Code Isolate control mcCictrl    3                                        
PMASK operand1 select                                                     
                     mcPmopnd1sel                                         
                                 2                                        
PMASK operand2 select                                                     
                     mcPmopnd2sel                                         
                                 3                                        
Ctrl for dynamic operand1 address                                         
                     mcDynopnd1sel                                        
                                 1                                        
Ctrl for dynamic operand2 address                                         
                     mcDynopnd2sel                                        
                                 1                                        
Control for dynamic write address                                         
                     mcDynwrite  1                                        
Register File tag select                                                  
                     mcTagsel    1                                        
Register File operand1 address                                            
                     mcOpnd1addr 6                                        
Register File operand2 address                                            
                     mcOpnd2addr 6                                        
Register File write control                                               
                     mcWritectrl 2                                        
Dynamic Rotate/Mask control                                               
                     mcDynrotnask                                         
                                 1                                        
Rotate amount        mcRotamt    6                                        
Mask control/return address MSB                                           
                     mcMaskctrl  4                                        
ALU functin field    mcAlufcn    5                                        
Sequence mode control                                                     
                     mcSeqmode   2                                        
Condition select 1   mcCondes11  7                                        
Condition select 0   mcCondes10  7                                        
Next address for sequencing                                               
                     mcNextaddr  15                                       
Literal Control field                                                     
                     mcLitctrl   16                                       
______________________________________                                    
 
    
     Due to performance limitations in accessing an external control store in subsystem 70 at high clock speeds, the processor unit would normally not be able to fetch a microcode word every clock as would be required by the presently described performance goals. In order to handle this situation, the SCAMP-D processor chip 7 keeps the most regularly used microcode words in a 2K word (90 bit) on-chip microcode cache unit 10 which can be accessed in one clock cycle. 
     The &#34;next&#34; microcode word to be executed is selected by a microcode address generated by the sequencer 22 (FIG. 3) and also shown in FIG. 1B (which is part of the block 20 of FIGS. 1 and 1A). This &#34;next address&#34; may come from one of several sources. Whenever a new E-mode operator is encountered in a code stream, an operator entry address is generated from the OPCODE. The operator entry address is modified to take into account if the NAMC Name Call operator) proceeded this operator to allow the microcode to be optimized in certain situations. 
     Further microcode addresses are contained within the microcode word itself, although these may be modified by the internal processor state, thus enabling conditional branching within the microcode. The condition logic, FIG. 1B, is responsible for the testing of various conditions and for controlling the microcode sequencing during conditional branching in the microcode. 
     A variety of conditions are testable by the hardware, and the microcode contains two fields, CONDITION SELECT 0 and CONDITION SELECT 1 for selecting which combinations of conditions are to be checked. The results of the condition checking are used to select the next microcode word to be executed. The sequencer 22 in block 20 (FIG. 1) is controlled by a microcode field in conjunction with some condition lines. If a condition check should fail, then the sequencer 22 combines the condition codes from the condition logic with the next address field of the currently executing microcode word in order to form the new address. Due to implementation and timing reasons, two clock cycles are lost whenever such an address must be generated, and an ABORT mechanism inhibits unwanted changes of state. One clock is lost while forming the new microcode address and the other clock is lost while fetching the microcode word with the newly formed address. 
     Microcode subroutines are also used and therefore a microcode address &#34;Return Stack&#34;, FIG. 1B, is provided for holding the subroutine return address for a routine when it is called. A field within the microcode, called the &#34;sequence mode&#34; field, controls the microcode flow, that is to say, for example, CALL, is a microcode subroutine; RETURN (from a previously called microcode subroutine) uses the address on top of the Return Stack, or else the normal sequencing uses the &#34;next address&#34; field of the microcode, to fetch the next microcode word. A RETURN ENTIRELY, when the microcode stack is empty, designates the last clock of an E-Mode operator causing the next microcode word to be addressed based on the next OPCODE in the E-Mode code stream. 
     Both the CALL and the normal sequencing will use the next address field of the microcode to select the next microcode word. The difference is that the CALL will also push, onto the Return Stack, the address of the microcode word to be executed after the subroutine has completed execution. 
     A further address is available for interrupt servicing where each interrupt generates a unique address. Three types of interrupts will exist within the SCAMP-D processor and these will involve: (i) Fatal Immediate, (ii) Non-fatal Immediate, and (iii) Inter-operator. Fatal Immediate interrupts will terminate whatever the processor is currently executing. The Non-Fatal Immediate interrupts will suspend whatever the processor is currently executing but will allow execution to continue after the interrupt routine has finished. The Inter-operator interrupts will wait until the completion of the currently executing OPCODE. 
     Additionally there exists the ability for the microcode to &#34;disable&#34; the taking of external interrupts by masking them individually. Some of the internally generated interrupts can also be disabled by setting the interrupt mask flip-flop. 
     The microcode word is registered in the Control Register 26 of FIGS. 1 and 1B, and from there it is distributed to the rest of the processor. There are several fields, each of which controls various functions within the processor. Some fields (such as the Literal Control) are used to control several different modules, and further fields are used to determine from which module a particular field is valid. This method reduces microcode width. 
     A test control/maintenance section, FIG. 1B, of the processor is responsible for all shift chain access, controlling the built-in self test functions and providing adequate debug features for chip debug and system debug. 
     The general cache unit 40 of FIG. 1 communicates with the data section 30 and the system interface 50. Due to the relatively high clock speed of the processor chip unit, 7, the memory access time could become a major performance bottleneck in the normal situation. However, to minimize the impact of the relatively slow external memory subsystem 70, the SCAMP-D processor 7 has a 1K word cache called the general cache 40. This involves an on-chip unified Code cache and Data cache. 
     As seen in FIG. 1C, the general cache 40 is organized as a 2-way set associative unit with each line holding a 4-word block (208 bits). The 1K of general cache memory is logically organized as 128 &#34;sets&#34; with each set containing two four-word blocks. 
     The &#34;Write Operation Function&#34; for the on-chip general cache 40 is Write-Through system. All Writes will cause an external memory Write cycle and if the memory address for the Write engenders a match (hit) in the microcode cache 10, then the data is also written to the general cache 40. A Write to a memory address not contained in the general cache 40 will only be written to the external memory 70. 
     When a block of microcode words needs to be placed in the general cache 40 due to a Read &#34;miss&#34;, then the hardware checks to see if there is a non-valid block in the set that can be replaced. If both blocks in the appropriate set are valid, a least recently used (LRU) mechanism is used to determine which block should be replaced. 
     The SCAMP-D processor&#39;s general cache 40 has a mechanism for invalidating blocks to keep its contents consistent with the external memory 70. The address to be invalidated is passed into the SCAMP-D processor from the external system on a bi-directional bus designated rcAddress[31:32]. 
     Additionally, the operation of the general cache 40 can also be &#34;disabled&#34; at chip initialization time. 
     In FIG. 1, the system interface 50 is shown communicating to an external memory subsystem 70 and then (within the processor chip 7) has communication lines to the general cache 40 and to the microcode cache 10 in addition to the sequencer 22 and control register 26, in block 20. 
     The system interface 50 of FIG. 1, controls all communication between the internal SCAMP-D processor 7 and the external system 70. The system interface 50 also controls all communication from both the processor chip and the external system to the general cache 40. 
     The SCAMP-D processor chip 7 interfaces to the external system 70 via a 32-bit bi-directional memory address bus, rcAddress[31:32], a 52-bit bi-directional data bus, rcData[51:52], a 4-bit memory command bus, rcMemcmd[3:4], and a 6-bit bus interface unit command bus, rcBiucmd[5:6]. 
     Each bus involved here has a unique set of handshake signals associated with it. These consist of an output signal for notifying the external system 70 of &#34;valid&#34; information on the bus, and also an input signal to acknowledge that the external system 70 has finished its use with the information on the bus. 
     The system interface 50 receives all hardware generated memory commands: Microcode Cache Miss, Fetch Code request, and all of the microcode generated memory commands. The system interface 50 prioritizes and controls the servicing of these requests either from the general cache 40 or the external system 70. 
     DESCRIPTION OF PREFERRED EMBODIMENT 
     Referring to FIG. 1 the overall processor unit on a processor chip system 7 is shown wherein a general cache unit 40 and a microcache unit 10 cooperate with the system interface circuitry 50 for communicating to and from an external memory subsystem 70 and also communicating with a data section 30 and a sequencer-control register section 20 which can be considered as the Central Processor CPU 90. 
     FIG. 2 is a diagram illustrating the system interface 50 which is the portion of the processor unit which communicates with the memory subsystem 70. The available memory commands are Read, Write, and the Atomic (simultaneous) Read-Modify-Write. The latter two commands will apply to one 52-bit memory word. The Read Command can be requested for 1, 2, or 4 words. The microcode cache unit 10 is the sole requestor of 2 words. 
     A command can come from either of two sources: the general cache 40 and/or the microcode cache 10. The control logic 51 (FIG. 2) arbitrates and issues the commands to the command register 56 and enables a memory address to the XADDRESS register 53. 
     The microcode cache 10 signals its request by enabling the signal mcFETCHMICRO, seen in FIG. 2. 
     The microcode address to be fetched is on the bus ALTADDR[14:15] from the sequencer 22 as seen in FIG. 2. The address sent to the XADDRESS register 53 is a concatenation of the microcode base register 52 in [31:16], ALTADDR in [15:15] and zero in [0:1]. The microcode base register 52 is loaded at machine initialization time before the microcode has to execute. The microcode base register 52 denotes the 64K word bank of main system memory where the microcode has been loaded. 
     The following will indicate an example which shows the return of data on a Read command. When the memory subsystem 70 has a requested word (or the first word in a multiword request), it deposits this word in the Datastg Register 54 (Data Staging Register) along with an acknowledge control signal. On the following clock, the word is forwarded to the requestor. In the case of a multi-word read, the following words can be deposited in the Data Staging Register 54 along with an acknowledge signal in any number of clocks after the previous word. The system interface 50 contains the information of how many words to expect based on the command issued. 
     If the issued command were a Write in FIG. 2, the Wdatareg register 55 (Write Data Register) is loaded on the same clock as the command to the general cache 40. When available the XADDRESS register is loaded with the Write address and a Write command loaded into the command register 56. Then the memory subsystem 70 will access these at its convenience. 
     Referring to FIG. 3, there is seen a diagram of flow for the control path in the SCAMP-D processor unit. The sequencer 22 supplies a 15-bit microcode-address to the microcode cache 10. The microcode cache 10 looks up the address in its Tag RAMs, FIG. 5. These Tag RAMs are seen in FIG. 5 as 10As, 10Bs, 10Cs, and 10Ds. If the address is present, then the microcode cache 10 supplies the corresponding microcode word to the control register 26 of FIG. 3. If the address is absent, the microcode cache 10 signals the system interface 50 to fetch the 90-bit word in two 45-bit halves from the memory subsystem 70 via the Data Staging Register 54. When the word arrives, it is directed to the microcode cache 10 for storage and also to the control register 26. 
     FIG. 4 shows a diagram of the microcode cache 10 in relationship to various intercommunicating signals from the system interface 50, from the sequencer 22, and to certain input signals provided to the control register 26. 
     The cache operation function involves a readily accessible cache memory unit holding the most-commonly-used items from a much larger set of accessible items. Thus, this makes access to these commonly-used items much faster for the processor which can then enable a higher throughput. 
     In order to feasibly implement the faster access to commonly used items, the microcode cache 10 in FIG. 4 is shown in FIG. 1D as organized in 512 rows, each containing four microcode words. The Data RAMs seen in FIG. 5 as 10A d , 10B d , 10C d , 10D d , provide the storage for each column of data words. 
     When a word is required, the row in which it resides can be searched. This row is defined to be the least significant nine bits of the word&#39;s 15-bit address. 
     As seen in FIG. 5, the Tag RAMs 10A s , 10B s , 10C s , and 10D s , hold the remaining six bits of the address, plus a parity bit and a valid bit, denoting that the corresponding data location (10A d  . . . 10D d ) contains a microcode word. 
     If the desired word is found in one of the four columns of the addressed row, there is a &#34;hit&#34; signal and the word requested is supplied from one of the appropriate data RAM locations shown as 10A d , 10B d , 10C d , and 10D d  of FIG. 5. 
     If the required word is not present, this signifies a &#34;miss&#34;. In this case, the desired word is fetched from the memory subsystem 70 and put into the row at the location defined as being the least-recently-used according to the LRU RAM 10 u . The LRU RAM 10 u  is updated in order to reflect this access. 
     The microcode cache 10 of FIG. 1 is internal to the processor chip unit 7 (SCAMP-D) and is the top level of the control store hierarchy. An external cache could hold the next level of the hierarchy with memory being the bottom level, or the microcode could be held in an external fast static RAM or held entirely in main memory. 
     The microcode cache 10 is used to keep the most recently used and generally the most frequently used microwords internally within the processor unit, 7. However, the entire processor microcode is contained external to the processor unit and within the memory subsystem. Communication between the microcode cache 10 and the external system is done via the system interface 50 of FIG. 1 in order to supply the appropriate microcode words to be stored in the microcode cache 10. 
     In the preferred embodiment, the microcode cache size is 2048 microcode words FIG. 1D and is organized as a four-way set associative, one-word line, and may be bypassed at chip initialization time. 
     During normal operation of the processor unit 7, the microcode cache 10 will be addressed by the sequencer 22, FIG. 3 on every clock. The microcode address will request the microcode word to be loaded into the control register 26, FIG. 3, for execution during the next clock cycle assuming that no abort cycle occurs. If the control register (CREG) 26, FIG. 3 is going to be &#34;held&#34; at the end of the current clock, then the microcode address presented to the microcode cache 10 will not result in a microcode &#34;miss&#34; request being signaled to the system interface 50. This will prevent wasting clock periods due to fetching microcode words which will not be loaded into the control register 26. This is true of both of the two types of operation which are designated as &#34;bypass&#34; and &#34;non-bypass&#34; modes of operation, discussed hereinafter. 
     The sequencer addresses which have a &#34;hit&#34; in the microcode cache 10 will result in the control register 26 being loaded (FIG. 4) with the microcode cache output, mcCsw[89:90], at the end of the clock during which the cache was accessed. In the case of a &#34;miss&#34;, the microcode cache controller state machine 10 m , FIG. 5, will control the loading of the control register 26 with microcode from the external control store in memory subsystem 70. 
     Microcode cache &#34;miss&#34; requests are signaled to the system interface 50 by the signal designated mcReadmicro in FIG. 4. The system interface 50 will respond for microcode cache &#34;miss&#34; requests by sending out the absolute microcode address and a read-microcode memory command whenever the external interface is available. 
     Since microcode words are 90-bits wide and the interface to the main memory subsystem is only 52-bits wide, the control register 26 and the microcode cache 10 are loaded in separate clock periods upon a &#34;miss&#34; condition (freeze cycles). The system interface 50 also acts to inform the microcode cache controller 10 m  (FIG. 5) when each half of the requested microcode word is available to be loaded into the control register 26 and the microcode cache unit 10. The signal siCswvld (FIG. 4) notifies the microcode cache 10 when each half of the microcode word is available in the data staging register 54 in the system interface 50. 
     The microcode cache 10 will hold the appropriate processor state on the clock after a microcode &#34;miss&#34;. The microcode cache 10 does this by asserting the mcFreeze (FIGS. 4, 5) signal which holds all abortable states by asserting the processor&#39;s system abort and holds all the appropriate non-abortable states directly. The mcFreeze signal is set on the clock after the &#34;miss&#34; and will remain set until the second half of the requested microcode word is placed in the control register 26 from the memory subsystem 70. 
     The external system 70 will always return the memory word addressed first and then the word at the address incremented by 1. The processor unit (SCAMP-D) will only pass out one address and the host system will increment the address appropriately. 
     The processing unit requires that the external memory subsystem 70 must guarantee to return the least significant portion of the microcode word (lower 45-bits of the microcode word) first and then return the most significant portion (upper 45-bits of the microcode word). The processing unit will always send out an even address on a microcode miss, thus the least significant portion of the microcode word will be stored at an even address and the most significant portion of the microcode word will be stored at the reset address. 
     As seen in FIG. 5, the microcode cache 10 is constructed of four main subsections:--the cache controller state machine 10 m , the Data RAM group 10A d , 10B d , 10C d , 10D d , the tag-status RAMs, 10A s , 10B s , 10C s , and 10D s , and finally the LRU RAM 10 u . 
     The cache controller state machine 10 m  controls the interface of the microcode cache 10 to the rest of the processing unit. It also detects and controls microcode &#34;miss&#34; cycles as well as handling the various error conditions associated with the microcode cache 10 operation. 
     The lower nine bits of the microcode address, sqUaddr[8:9], are used as the &#34;set address&#34; (or row number) in the microcode cache 10. Because each microcode word takes two locations in the memory subsystem, the first word is at an even address (the least significant bit of its address is zero) and the second word is at the subsequent address (bits[31:31] are the same and the least significant bit of its address is one). The remaining portion of the microcode address, sqUaddr[14:6], is used as the &#34;address tag&#34; for tag comparison. 
     The data RAMs 10A d  . . . 10D d  of the microcode cache 10 are made of four columns of 512 microcode words. A &#34;cache set&#34; is made up of one microcode word from each column where each word has the same &#34;set address&#34;. This gives a total of 512 sets of four words each, FIG. 1D. 
     When the microcode cache 10 is accessed, then each word of a set will be read from the data RAMs 10A d  . . . 10D d , using the set address. The requested word, if present, will be selected from the correct column using the hit signal from the tag RAMs 10A s  . . . 10D s . Within each microcode word is a parity bit which is used for odd parity checking on a microcode hit. 
     The tag RAMs 10A s  . . . 10D s  of the microcode cache 10 have the same structure as the data RAMs 10A d  . . . 10D d  since each microcode word in the data RAM has a tag RAM location associated with it. Each tag RAM location has a six-bit tag corresponding to the address tag of the microcode word held in the corresponding location of the data RAM. Each tag within the addressed set is compared with the requested address tag field, sqUaddr[14:6] during a microcode cache Read operation and a hit signal will be asserted if the tags are the same. 
     The tag RAMs 10A s  . . . 10D s  also contains a valid bit and a parity bit in each tag location. The valid bit signifies that the microcode word in the corresponding data RAM location is valid. No &#34;hit&#34; will be active for this column if the valid bit selected by the set-address is zero. A parity bit is also stored in each location of the tag RAMs thus allowing an overall odd parity check to be done whenever that tag location is Read. 
     The LRU RAM 10 u  (FIG. 5) contains information regarding the relative usage of each word within a set of words in the microcode cache 10. The LRU hardware provides a method for keeping the most recently used microcode words in the cache 10. The LRU value always identifies which word within the particular set will be updated as a result of a microcode &#34;miss&#34;. The LRU value always reflects all of the invalid words within a set as being the least recently used. 
     The LRU RAM 10 u  is updated with a value reflecting the relative usage of microcode within a set of the microcode cache 10. The LRU RAM 10 u  is updated on every hit cycle to reflect the latest usage of microcode within the set during cycles resulting in a hit, and the LRU RAM 10 u  is &#34;Read from&#34; and &#34;Written to&#34; (Read-Modify-Write) in one clock cycle. 
     Whenever there is a microcode &#34;miss&#34;, the LRU RAM 10 u  will inform the control logic of LRU Logic Unit 10 g , which of the four microcode RAM columns is the least recently used column for the addressed set. Thus this column will be updated with the incoming microcode word. For this reason, the control logic of 10 g  will supply two address bits to the State Machine 10 m  which, in conjunction with the set address, will determine which microcode data RAM location will be written-to. 
     The LRU RAM 10 u  is 512 words deep by 7-bits wide. Each word of the LRU 10 u  contains a 6-bit value reflecting the relative usage of the four associated entries in the microcode Tag-Status RAM plus an odd parity bit associated with the LRU value. The LRU RAM 10 u  is addressed by the &#34;set address&#34; from sqUaddr[8:9]. 
     MODES OF OPERATION: 
     The microcode cache 10 may be configured to be either in a &#34;bypass mode&#34; or in a &#34;non-bypass mode&#34; by a flip-flop designated as the MCENABLE flip-flop which is reset at chip initialization time. The microcode cache controller state machine 10 m  of FIG. 5 operates to load the control register 26 with the next microcode word to be executed by the processor unit. The microcode cache 10 is accessed in parallel to microcode execution on the control register output. The control register 26 is sourced by the microcode cache output, McCsw(89:45), McCsw(44:45), FIG. 5, if a valid &#34;hit&#34; occurs. A valid hit may be defined as &#34;the address tag of the sequencer address equals only one of the valid address tags of the addressed set&#34;. If there is a &#34;miss&#34; and clCregholdhigh=0, then the mcFreeze signal will be raised on the next clock edge. This will allow the microcode word currently in the control register 26 to be executed and the &#34;missed&#34; microword address to be loaded into an alternate address register in the sequencer 22. 
     The microcode cache 10 will assert mcSetfreeze whenever a microcode &#34;miss&#34; occurs either due to a word not being available in the cache or a parity error is detected on the word about to be executed from the control register 26. The mcSetfreeze signal is registered in the sequencer 22 and is used to select the alternate address register to address the microcode cache on sqUaddr[14:15]. This allows the microcode cache 10 to be correctly updated when the missing microcode word is returned since the alternate address register will contain the missed microcode address. 
     The microcode &#34;miss address&#34; is necessary in forming the address sent off-chip for the read-microcode request. For this reason, ALTADDR[14:15] from the sequencer 22 (FIG. 2) is sent to the system interface 50 to be concatenated with a microcode base address register (52, FIG. 2) to form the absolute microcode address to be sent off-chip. 
     When a microcode miss is detected, then the control register 26 is held until the appropriate half of the microcode word has been fetched from the external system over to the processing unit (SCAMP-D). The microcode cache 10 will control the loading of the separate halves of the control register 26 when the low or the high half of the microcode word is in the data staging register 54 in the system interface 50, FIGS. 2, 3. Once the high half of the microcode word has been returned into the control register 26, then the microcode cache 10 will reset the signal mcCregholdlow and mcFreeze thus to allow the microcode execution to resume. 
     The mcFreeze signal (FIGS. 4, 5) will be used to select the siDatastg bus 54b, FIG. 2 in the system interface 50 or else the microcode cache output as the source of the microcode word for the control register 26. The cache output will be selected when there is no microcode cache freeze cycle occurring, that is to say, mcFreeze is unasserted. 
     NON-BYPASS MODE: 
     In the non-bypass mode, the microcode cache 10 is presented with a microcode address from the sequencer 22 on every internal processor clock cycle. The &#34;set address&#34; from sqUaddr[8:9] will address the tag portion (10A s  . . . 10D s ) (FIG. 5) of the cache 10 and the address tag will be compared to four tag outputs from the addressed set. If one and only one of the valid tag outputs of the addressed set compare with the address tag, then a hit condition is generated and the appropriate column from the microcode data RAM (10A d  . . . 10D d ) is selected as the source of microcode to be loaded into the control register 26 signal mcCsw[89:90]. 
     The LRU RAM 10 u  will also be updated on the next clock edge to reflect that at the column which was Just accessed is the &#34;most recently used&#34;. The LRU RAM 10 u  output is used to determine which column is least recently used and consequently updated when the requested microcode word returns after a &#34;miss&#34;. 
     If the microcode address presented to the cache 10 results in a &#34;miss&#34; (no match with the valid addressed tags) and the signal clCregholdhigh is not asserted, then the signal mcReadmicro (FIG. 4) will be asserted the clock just after the cache look-up. The mcReadmicro signal will be reset when the read-microcode request is sent to the external system. 
     The signal mcFreeze (FIG. 4, 5) on line 10, will be asserted on the clock after the tag comparison fails, since this allows the valid microcode word in the control register 26 to complete execution. The signal mcFreeze will remain asserted until the complete microcode word has been returned from memory into the control register 26. During a microcode freeze cycle, the microcode cache 10 will control (via the state machine controller logic 10 m ) the loading of the control register 26 using the mcCregholdlow (FIGS. 4, 5) signal on line 10 w . The LRU 10 u  will be updated at the same time the second half of the microcode word is written to one of the microcode data RAMs 10A d  . . . 10D d . 
     The signal mcReadmicro (FIG. 4) will be asserted on the same clock as the &#34;miss&#34; is detected. This allows the system interface 50 to send out the absolute microcode address and a Read-microcode command to the external system 70, assuming the external interface is not busy. The assertion of mcReadmicro will enable the microcode base address register 52 in the system interface 50, (FIG. 2) on to bits[31:16] of the absolute memory address and the ALTADDR[14:15] bus into bits[15:15] of the memory address. The least significant bit of the absolute memory address will be zero since the memory address for an external read-microcode memory command will always have an even address. 
     BYPASS MODE: 
     In the bypass mode, the microcode cache 10 will always produce a &#34;miss&#34; condition for every microcode word executed. The processing unit (SCAMP-D) will only request a microcode word from main memory using mcReadmicro (10 f , FIG. 4) if the signal clCregholdhigh is not asserted and there is no outstanding microcode request to the system interface 50. If the signal clCregholdhigh is asserted, then no microcode miss request will be generated. 
     The system interface 50, continues to use the same priority for microcode miss requests. The procedure for loading the control register 26 as a result of a &#34;miss&#34; is the same as in the non-bypass mode using the signal mcCregholdlow (FIG. 4, line 10 w ) for load control while using mcFreeze on line 10 z  to hold the appropriate processor state during this time. 
     In the bypass mode, the mcFreeze signal will only be inactive for one clock after the control register 26 has been completely loaded (unless this clock aborts). If there is no abort, then this will be the clock where the actual microcode execution occurs. 
     FIG. 5 shows the basic detail of the microcode cache unit 10 for the SCAMP-D processor. A microcode cache controller state machine 10 m  is seen receiving certain inputs among which is a &#34;hit signal&#34;, either A or B or C or D, from each one of the Tag status RAMs 10A s  . . . 10D s . Additionally, the state machine 10 m  receives an output from the LRU logic 10 g  in order to determine which row address is the least recently used. The further inputs to the state machine 10 m  include a parity signal from the control register 26 and parity signals from the Tag RAMs 10A s , 10B s , 10C s , 10D s . 
     In performing its functions, the state machine 10 m  provides a number of output signals. One of these is the Write Enable signal on line 10 e  to each of the Tag RAMs and the LRU RAM. Additional outputs from the state machine 10 m  are presented to the LRU logic unit 10 g  on line 10 mg  and to the data RAMs 10A d , . . . 10D d  on the lines 10hi and 10Lo, FIG. 5. Additional outputs from the state machine 10 m  denote outputs to the control register 26 which are shown in FIG. 5 as inputs to control register Section 26h (High) and Section 26L (Low). 
     The attached glossary will provide definitions and functions of the signals shown in FIG. 5. 
     Referring again to FIG. 5, it is seen that the Tag status RAMs 10A s  . . . 10D s  will receive address tags, valid bits and parity bit signals as inputs. Each of the Tag RAMs provide an output to a comparator (10A c , 10B c , 10C c , and 10D c ), in addition to providing an output to AND gates 10A h , 10B h , 10C h , and 10D h  which provide the &#34;hit&#34; signals to the state machine 10 m , to the LRU logic 10 g , and multiplexor 10 mx . 
     The address of the micro word being requested is designated as the signal sqUaddr[15:16] on a line 10 rq  which is presented to each of the comparators 10A c  . . . 10D c . 
     A bus 50 d , FIGS. 4, 5 from the data staging register 54, carries the signal siDatastg[44:45] seen in FIG. 5 which is provided to each of the data RAMs 10A d  . . . 10D d . The selected output word of a data RAM is fed in two phases of 45 bits (half word) to the control register 26 shown as signals mcCsw[89:45] and mcCsw[44:45] on a bus 10 c  containing the selected 90 bit microinstruction word which will control the next clock of processor execution. Multiplexor 20 mx  provides two 45 bit halves of the selected word to the control register 26. 
     Another input signal to the control register 26 is the signal siCswvld on line 50 v  which is a signal to the microcode cache 10 and its control register 26 from the system interface 70 indicating that a half microcode word is available. 
     FUNCTIONAL OPERATION: 
     The described SCAMP-D processor 7 makes use of the microcode cache 10 in a efficiently rapid fashion. While the data section 30 (FIGS. 1, 1A) is executing the microcode word in the control register 26, at the same time the sequencer 22 (FIGS. 1, 2, 3, 4) will be supplying to the microcode cache 10, the next address to be executed on the signal line sqUaddr[14:15] as seen in FIG. 4 on bus 10 rq . 
     The microcode cache 10 detects a &#34;hit&#34; if one of the comparators 10A c , 10B c , 10C c , and 10D c , (FIG. 5), reports a &#34;match&#34; (hit) and the corresponding gates 10A h  - - - 10D h  reports a hit because of the match at the same time that the corresponding valid bit on the lines VB of FIG. 5 are active. In this case, the microcode word is supplied from the corresponding entry in one of the data RAMs 10A d  . . . 10D d , and the word is sent to the control register 26 by the end of the first clock. 
     The selection is made by the use of the lower nine bits of the signal sqUaddr[15:16] which is supplying signals to a row within the RAMs, that is to say, the Tag and status RAMs the Comparators and Data RAMs. This enables one entry from each of the four Data RAM banks onto the multiplexor 10 mx . The setting of one of the four signals designated AHIT, BHIT, CHIT or DHIT provides control of the multiplexor 10 nx  which selects which of the four entries (microcode words) is be used. 
     If the microcode cache 10 detects a &#34;miss&#34;, that is to say, it does not have the word or there is a parity error or multiple-hit detection error, then the system begins a &#34;miss&#34; processing sequence. At this state the microcode cache state machine 10 m  asserts the signal mcFreeze to the control register 26 in order to freeze the data section 30 at the end of the clock period. During &#34;miss&#34; cycles, all the necessary processor states are held (frozen) due to the signal mcFreeze being asserted. 
     Another output from the state machine 10 m  is also asserted and this is the signal mcSetfreeze. This signal is registered in the sequencer 22 (FIG. 4). Also, this signal is used to register and hold the address of the requested microcode word onto ALTADDR[14:15] in FIG. 2 for use by the system interface 50. 
     The state machine 10 m  also asserts the signal mcFetchmicro to the system interface 50. This signal is a signal from the microcode cache 10 to the system interface 50 requesting that a microcode word be fetched from the memory subsystem 70. On seeing the signal mcFetchmicro, the system interface 50 creates the memory address of the required microcode word by concatenating its 16-bit microcode base address register 52, of FIG. 2, in [31:16]with the sqUaddr[14:15] in [15:15] and the zero in [0:1]. This address is then enabled into the XADDRESS register 53, FIG. 2, when this register is available and a Read-Microcode command is enabled into the command register 56 of FIG. 2. 
     The Read-Microcode command instructs the memory subsystem 70 (FIG. 2), to return two consecutive words from main memory, starting at the &#34;even&#34; address supplied. 
     When the first word has been returned to the data staging register 54, FIG. 2, the system interface 50 enables the signal siCswvld in FIG. 4 at line 50 v . This signifies that the first half of the microcode word is present on bus 50 d  of FIG. 4 showing the signal siDataStg[44:45]. The control logic 51 of FIG. 2 then resets mcFetchmicro. The cache controller state machine 10 m  provides this signal to the system interface 50 as seen in FIG. 5. 
     The signal mcCregholdlow in FIG. 5 is inactive (which is an output of the cache controller state machine 10 m ). This causes the lower half of the requested microcode word to be loaded into the lower half of the appropriate location (as determined by sqUaddr[8:9] and the LRU Logic, 10 g , to address one of the Data RAMs 10A d  . . . 10D d  in the microcode cache seen in FIG. 5 at the control register 26L (CREG-LOW). 
     Additionally, the upper half of the microcode word is loaded into the upper control register 26 h  (CREG-High). The signal ncCregholdlow is then set active. When the second word has been returned from memory 70 to the data staging register 54, FIG. 2, the second signal siCswvld on line 50 v  (FIG. 5) signifies that the second half of the microcode word is present on the line 50 d  in FIG. 5 holding the signal siDatastg[44:45]. Also, the signal mcCregholdlow is active from the microcode cache controller state machine 10m. This causes the signal siDatastg[44:45] to be loaded into the upper half of the same section in the microcode cache 10 and also into the upper half of the control register 26h in FIG. 5. In this clock, the state machine, 10 m , asserts Lruwe and the appropriate one of awe . . . dwe, 10 e  (FIG. 5) to cause the LRU RAM 10 u  to be updated to reflect that this &#34;missed microcode word&#34; is the most recently used word and to cause the tag location in the corresponding bank to be updated with sqUaddr[14:6]. The valid bit and the appropriate parity bit will also be stored. The output from the state machine 10 m  designated mcCregholdlow is then set as inactive to be ready for the next microcode miss. 
     On the clock following the second siCswvld strobe, the signals mcFreeze and the signal mcSetfreeze are reset, thus allowing the SCAMP-D processor 7 to continue execution. 
     GLOSSARY LIST 
     1. MICROCODE WORD 
     90 bits wide. Contains the encoded instructions defining the functions to be performed by the processor in one clock. 
     2. MICROCODE ADDRESS 
     The reference to the next microcode word to be executed. This is in the range 0 to 32,767 words. 
     3. HALF MICROCODE WORD 
     Microcode words are held in 2 consecutive locations in the Memory Subsystem (70). Each half is fetched on separate clocks. 
     4. COMMAND (MEMORY) 
     The function being requested of the General Cache (40) by the Data Section (30) or of the Memory Subsystem (70) by the General Cache 40 or Microcode cache (10). It is typically either a Read or Write operation. A read operation can request 1, 2 or 4 words. The Microcode Cache only issues Read commands and always requests 2 words. 
     5. WRITE DATA 
     The data to be written to the Memory Subsystem 70 on a Write command from the Data Path, item 17 of Glossary. 
     6. MEMORY DATA 
     Information read from the Memory Subsystem 70 following a Read command. 
     7. &#34;CONDITIONS&#34; FROM DATA SECTION (30) 
     Selected Data Section state items which can be tested under microcode control to affect microcode sequencing. 
     8. siCswvld (FIG. 2) 
     The signal to the Microcode Cache 10 and the Control Register 26 from the System Interface 50 indicating that a half Microcode word is available. 
     9. mcFetchmicro 
     The signal from the Microcode Cache 10 to the System Interface 50 requesting that a microcode word be fetched from the Memory Subsystem. 
     10. sqUaddr{14:15} 
     The address of the Microcode word being requested. 
     11. MEMORY SUBSYSTEM 70 (FIG. 2) 
     Up to 2 32  words of Random Access Memory. Each word consists of 52 bits of information. Microcode held in the Memory Subsystem 70 only makes use of 45 of the 52 bits. 
     12. CONTROL LOGIC 51 (FIG. 2) 
     Finite State Machine control for the System Interface 70. 
     13. MICROCODE BASE 52 (FIG. 2) 
     The value used as the most-significant 16 bits of the 32-bit address when the System Interface 50 requests a Microcode word Read of the Memory Subsystem 70. It is concatenated with sqUaddr in the next 15 bits with the least-significant bit being zero. 
     14. Xaddress 53 (FIG. 2) 
     A 32-bit register written by the System Interface 50 and read by the Memory Subsystem 70. It contains the address of the associated command. 
     15. Datastg 54 (FIG. 2): (Data Staging Register) 
     A 52-bit register written by the Memory Subsystem 70 containing one word of information as the (partial) result of a Read command. It can be read by the General Cache, the Microcode Cache and the Data Section 30. 
     16. Wdatareg 
     A 52-bit register written by the Data Section when it issues a Write command to the General Cache. It is read by the General Cache 40 and the Memory Subsystem 70. 
     17. DATA SECTION 30 
     The main functional block of the processor, consisting of and E-Mode code/parameter stream parser unit (Code Isolate) including a set of general-purpose registers, rotation and masking logic and an ALU (Arithmetic and Logical Unit). 
     18. CODE 
     The instruction (OP CODE) stream consisting of E-Mode instructions forming a program which is interpreted by the microcode executing on the processor. This is a high-level code of 48-bits. 
     19. siDatastg 
     The bus from the Datastg register, 54. 
     20. mcCsw 10 c  (FIG. 4) 
     The bus containing the 90-bit microinstruction which will control the next clock of processor execution. 
     21. mcFreeze 10 z  (FIGS. 4, 5) 
     The signal which causes most of the processor to suspend execution. It is also used to control loading of the Control Register 26. This is asserted the clock after microcode cache tag comparison fails. It remains asserted until the complete microcode word has been returned from memory into the Control Register 26. 
     22. mcCregholdlow 
     This is set after the first half of the microcode word being fetched from the Memory Subsystem has been loaded into the lower half of the control register 26. It ensures that the 2nd half of the microcode word is loaded into the upper half of the Control Register. 
     23. MICROCODE CACHE CONTROLLER STATE MACHINE 10 m  (FIG. 5) 
     The control logic for the Microcode Cache, implemented as a state machine. 
     24. TAG+STATUS RAMs (FIG. 5) 
     The Tag RAMs (Random Access Memories) in this Microcode cache hold the upper 6 bits of the address of the microcode word held in the corresponding Data RAMs. The lower 9 bits of the address are implicit from the address (or row number) in the range 0-511 of the Tag RAM. The Status RAMs contain 2 bits per entry, and denote whether the entry is &#34;in-use&#34; or &#34;not in-use&#34; (valid or invalid) plus an odd parity bit. 
     25. LRU SRAM (FIG. 5) 
     &#34;Least-Recently-Used&#34; bits are used to define the ordering of the 4 entries of each row in the microcode cache 10. They define the &#34;oldest&#34; entry which is used when a new slot is needed for an incoming Microcode word from the Memory Subsystem. 
     26. LRU LOGIC (FIG. 5) 
     The logic which maintains the LRU SRAM, 10 u . 
     27. (A, B, C, D) HIT GATES (FIG. 5) 
     Boolean signals which indicate whether the requested address matches the address held in the Tag and Status SRAMs. There is one match signal for each of the 4 sets of the cache. In normal operation, at most, one can be active at any one time. 
     28. DATA RAMs (A, B, C, D) (FIG. 5) 
     RAMs which hold the Microcode words corresponding to the addresses held in the Tag RAMs. Each word includes an odd parity bit. 
     29. Creg (FIG. 5) 
     The Control Register, 26. 
     30. SELECT BANK (FIG. 5) 
     A 2-bit value denoting which bank (or set) contains the requested Microcode word. These are outputs (hit lines) of the AND gates 10A n  . . . 10D n . 
     31. mcCsw{89:45} 
     The upper half of mcCsw, which is one-half of the 90-bit micro-instruction word. 
     32. mcCsw{44:45} 
     The lower half of mcCsw, which is one-half of the 90-bit micro-instruction word. 
     33. mcSetfreeze (FIG. 5) 
     A signal set &#34;on&#34; a Microcode miss to tell the Sequencer 22 to send the address of the missing microcode word to Mc Microcode cache on  sq  Addr 10 rq . This allows the microcode cache to be correctly updated when the microcode word is returned. 
     34. ALTADDR(14:15) (FIG. 2) the address placed in the alternate address register, in sequencer 22, after a &#34;miss&#34; or a condition select field signal.: 
     35. SET-ADDRESS: 
     Defines a &#34;row&#34; in the Tag-Status and Data RAMs. A &#34;set&#34; consists of 4 entries--one from each RAM. The &#34;Set-Address&#34; is obtained from sqAddr[8:9]. 
     Described herein has been a microcode cache subsystem wherein frequently used program instruction microcode words are made readily available to a processor in one clock cycle. 
     The microcode cache subsystem provides N(=4) columns of Tag-Status RAMs having addresses which can be searched for a &#34;hit&#34; resulting in the selection of a requested microcode word from a series of N data RAMs. The selected microcode word is provided in one cycle to an associated control register for immediate execution by a processor unit. 
     A specialized LRU-RAM (Least Recently Used) keeps track of address locations in RAM which are not frequently used so as to make these locations available for more frequently used microcode words. A cache controller state machine will enable a &#34;bypass&#34; mode to set a &#34;miss&#34; condition for requesting a microcode word from main memory as long as there are not existing requests to main memory. A &#34;non-bypass&#34; mode is used to search the Tag-status RAMs for a &#34;hit&#34; to enable access of a microcode word from a selected Data RAM to a Control Register for execution in one clock cycle. 
     While one embodiment of the invention has been described, it should be understood that other variations may still fall within the scope of the invention as defined in the following claims.