Abstract:
Method and apparatus for improving instruction decoding in a microcode-controlled digital computer system. The microinstruction sequences are made simple and compact enough that sufficient complexity is required in the instruction decoding logic that it is feasible to custom-configure a gate array to perform instruction decoding. The resultant gate array, by virtue of being embodied in a single integrated circuit, is extremely fast and compact and has low power requirements.

Description:
BACKGROUND OF THE INVENTION 
     This invention relates generally to digital computers, and more particularly to instruction decoding in microcode-controlled digital computers. U.S. patent application Ser. No. 441,967, filed Nov. 15, 1982 and assigned to common assignee Data General Corporation is incorporated herein by reference. 
     Designers of such computers are generally faced with the problem of designing means for decoding or &#34;cracking&#34; each instruction in order to determine the starting address in a control store of a sequence of microinstructions that will effect the operations specified by the instruction. Historically, this has involved a design tradeoff between the size and complexity of the control store on the one hand, and the size and complexity of the cracking logic on the other. 
     One extreme of the prior art approach to this tradeoff would be to have no cracking logic at all, but to use the instruction directly as the address of the microinstruction sequence; under this approach, a machine using an n-bit instruction would require a control store with at least 2 n  locations. 
     The other extreme of the prior art approaches the &#34;hard-wired&#34; machine which has no control store, and in which control of the operational circuit elements is effected entirely by the instruction-cracking logic circuits; as this extreme is approached the advantages of a microcode-controlled machine, such as ease of altering the machine&#39;s characteristics, are lost. 
     Designers of microcode-controlled machines have worked somewhere between those two extremes, and in recent years have benefitted to some extent from use of integrated circuit technology for constructing cracking logic. Nevertheless, serious problems to operating speed and overall performance still remain. In the prior art trend to reduce the overall size of their machines, attempts to decrease the size and complexity of the control store have been limited by the corresponding increased size of cracking logic built of conventional off-the-shelf integrated circuits. 
     The present invention offers a solution to these drawbacks and disadvantages of the prior art. 
     SUMMARY OF THE INVENTION 
     The present invention employs a gate array, embodied in a single integrated circuit packaged in a single encapsulation, to perform decoding of each instruction in order to produce the address within a control store of a sequence of microinstructions that will control a computer in performing the operations specified by that instruction. 
     It is advantageous to employ the present invention: the aforementioned design tradeoff is worked to advantage by designing a machine requiring sufficient complexity in the instruction cracking logic that it becomes economically feasible to procure custom-configured gate arrays embodying all the gating necessary to translate instructions into control store addresses. The initial costs of procuring and configuring off-the-shelf gate arrays are significantly less than the costs of custom-fabricating integrated circuits, yet the resultant gate array occupies only a single DIP (dual inline package). Under this approach, reductions in the size and complexity of the control store actually result in reductions in the size, complexity, and cost of the cracking logic, running directly counter to the historical limitations. 
     Additional benefits are inherently realized in the use of the present invention: circuit delays inherent in instruction cracking are minimized; power consumption is reduced. 
     Therefore, it is an object of the present invention to provide an improved digital computer. 
     It is another object of the present invention to provide a microcode-controlled digital computer in which the instruction cracking logic and the control store occupy minimum space. 
     It is a further object of the present invention to provide a microcode-controlled digital computer in which the cracking logic and control store have minimum cost. 
     It is yet another object of the present invention to provide a digital computer in which instruction decoding is accomplished at high speed. 
     It is yet a further object of the present invention to provide a digital computer in which power consumption is reduced. 
     Other objects and advantages of the present invention will by understood by those of ordinary skill in the art, after referring to the detailed description of the preferred embodiments and the appended drawings wherein: 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 depicts a DIP (dual inline package) containing the Single Level Instruction Cracker (SLIC) of the present invention and shows the numbering and significance of the pin connections; 
     FIG. 2 depicts the form of a truth table that a logic designer might use in designing the gating of an instruction cracker; 
     FIG. 3 depicts a scheme of grouping instructions to be decoded into classes; and 
     FIG. 4 depicts the overall design of the gating within the Single Level Instruction Cracker. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Since it is a common practice of computer manufacturers to produce &#34;families&#34; of computers with some measure of compatability between members of the family, the present invention has been embodied in a digital computer system in which it is employed to decode (crack) four sets of instructions from a family of related Data General Corporation computers: 
     NOVA® instructions, having eight-bit operation codes, 
     ECLIPSE® instructions of the Commercial Instruction Set (CIS), having eight-bit operation codes, 
     ECLIPSE® instructions of the Scientific Instruction Set (SIS), having eight-bit operation codes, 
     ECLIPSE/MV family instructions, such as ECLIPSE MV/4000® instructions, having sixteen-bit operation codes. 
     The invention is embodied in a single encapsulation (a dual inline package, or DIP) to which are input the operation codes to be cracked. Cracking consists in producing a unique nine-bit number corresponding to each operation code, which may then be used as the address in a control store of a microinstruction or sequence of microinstructions that will control the processing elements of the computer in such a manner as to effect the operation specified by the instruction&#39;s operation code. 
     FIG. 1 depicts the pin configuration of a DIP (dual inline package) housing the Single Level Instruction Cracker (SLIC) 101 of the present invention. The signal inputs are: 
     I0 through I15 16-bit operation code to be cracked. (Operation codes of fewer than 16 bits may be handled by connecting them to an appropriate number of these inputs) 
     IO.PROT Indicates that I/O protection is on. 
     LEF Indicates that LEF mode (Load Effective Address mode, denoting that address indirection and indexing are to be resolved prior to loading the addresses specified by an instruction) is on. 
     LEF.INH Forces LEF mode off 
     OE Output Enable 
     PASS Pass inputs directly through to outputs (for diagnostic purposes). 
     The signal outputs are: 
     A0 through A8 9-bit decoded address 
     X0, X1 Index bits (from operation code) 
     CIS ECLIPSE® CIS instruction 
     SIS ECLIPSE® SIS instruction 
     EAGLE MV/ family instruction 
     NOVA NOVA® instruction 
     FIG. 1 of the incorporated-by-reference application depicts the overall digital computer in which the present invention is embodied: Control Unit 104 is seen to contain Instruction Prefetch and Decode unit 114, which is shown in greater detail in FIG. 5 of the incorporated-by-reference application. An instruction to be cracked is fetched from memory and placed in Prefetch Register A 564 or Prefetch Register B 566, whence the contents of the instruction are presented to SLIC 580 via Prefetch Bus 568. SLIC&#39;s outputs, including the nine-bit number uniquely representing the instruction, are placed in SLIC Register 582. In this particular embodiment, the nine-bit number is supplied to Macroinstruction Decode Memory 584, where it is used as the address of a location that in turn contains the control store address of the requisite sequence of microinstructions. In alternative embodiments, the nine-bit number could be used directly as the control store address of the microinstruction sequence. The control store address is passed through Microinstruction Address Multiplexer 588 to Microinstruction Input Multiplexer 554 within Microsequencer 116, where it is used to access the sequence of microinstructions that will effect the operation specified in the current instruction. The general method of dispatching to microcode which then controls the machine is well known in the prior art. 
     FIG. 2 of the present application is provided for illustrative purposes and is a portion of the truth table related to SLIC. The entire truth table is not presented to enhance clarity of presentation. The column labeled &#34;MNEM&#34; contains the mnemonic code assigned to each instruction. The &#34;NUM&#34; column contains a number arbitrarily assigned to each instruction. The OE, PAS, LIN, I/O, and LEF columns (note that the column labelling is presented vertically) denote the states of Output Enable, Pass, LEF.INH, I/O Protect, and Load Effective Address input signals, respectively. (An &#34;X&#34; in any column indicates that the state of a bit is immaterial to SLIC.) the I0 through I15 columns denote the sixteen-bit operation code assigned to each instruction. The A0 through A8 columns contain the unique nine-bit number that represents each instruction. The EAG, NOV, SIS, and CIS columns denote which of the four sets an instruction belongs to. The X0 and X1 columns denote the state of the index bits: whether they are forced to 0&#39;s or are pass-throughs of bits from the operation code. 
     FIG. 3 of the present application is likewise provided for illustrative purposes and is a portion of a document that represents an intermediate step in reducing the invention to practice. The entire document is not presented to improve clarity of presentation. It shows how groups of operation codes are categorized into &#34;classes&#34;. While a class may include more than one operation code, each operation code will fall into one class and one class only. The &#34;CLASS&#34; column contains a number assigned to each class. The &#34;OP CODE&#34; column shows two bit position indicating the states of the I/O Protection and LEF bits respectively, followed by a blank position followed by a representation of the sixteen-bit operation code: an &#34;x&#34; in a bit position indicates that the corresponding bit is immaterial to SLIC and is not passed through to the output; a &#34;-&#34; in a bit position indicates that the corresponding bit is immaterial to SLIC but is passed through to the output. The &#34;9 BIT ENCODING&#34; column shows the state of the output that will result for the indicated operation code; A &#34;.&#34; indicates that the respective &#34;-&#34; bit from the operation code is passed through as is, while a &#34; &#34; indicates that it is passed through inverted. The &#34;SET&#34; column denotes which of the four sets the instruction belongs to. The &#34;INDEX BITS&#34; column indicates how the two index bits of the output are determined. 
     Because SLIC is embodied in a single chip thus minimizing the distances that electrons must travel, the elapsed time from stabilization of the input signals to stabilization of the output signals is typically less than than 35 nanoseconds. 
     One of ordinary skill in the art can, for any instruction set to be decoded, construct equivalents to FIG. 2 and FIG. 3 for purposes of practicing the invention. 
     FIG. 4 of the present application is a flow diagram through the SLIC gating. Reading it from left to right shows that (1) operation code bits are received; (2) made available in both direct and inverted states; (3) divided or fanned out; (4) combined to identify an instruction&#39;s class; (5) classes are combined to produce a unique address corresponding to the instruction; and (6) the addresses are made available to subsequent portions of the computer. 
     Gating interconnections were devised in conformance with FIG. 4 reflecting the logic conveyed in FIGS. 2 and 3, and were implemented in a Fujitsu B500 gate array. The figure is provided for illustrative purposes only; complete logic diagrams are not necessary for full disclosure in view of the materials available from vendors of gate arrays. 
     The invention may be embodied in yet other specific forms without departing from the spirit of essential characteristics thereof. Thus, the present embodiments are to be considered in all respects as illustrative and not restrictive, the scope of the invention being indicated by the appended claims rather than by the foregoing description, and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein.