Background of the Invention
The present invention relates to a microprogram control (to be referred to as "MC" hereunder) apparatus for controlling the sequence of elementary operations within an information handling system.
Such an MC apparatus for higher speed processing has been proposed in the U.S. Pat. No. 3,800,293. The proposed apparatus is equipped with first and second control stores 18 and 19 as shown in the drawing each of which stores a plurality of microinstructions for carrying out a system instruction of higher order. With this apparatus, the final microinstruction (MI-instruction) of the plurality of MI-instructions stored in the first control store (CS) 18 is executed concurrently and in parallel with the execution of the initial MI-instruction of the plural MI-instructions stored in the second CS 19. However, the other MI-instructions stored in the two CSs 18 and 19 are performed serially. In this way, since the final MI-instruction of the first system instruction and the first MI-instruction of the second system instruction are executed in parallel, the total execution time required can be comparatively reduced as compared with the sequential processing of such MI-instruction sequences, without stopping the operation of an arithmetic unit.
However, an increased number of MI-instructions for controlling complicated processing causes an increase in the capacity of each of the used CSs, which in turn results in an increase in the memory access time for each of the CSs, disturbing the high-speed operation.
Summary of the Invention
An object of the present invention is to provide an MC apparatus free from the above-mentioned disadvantages in the prior art apparatus.
As one aspect of the present invention, there is provided an MC apparatus for controlling microinstruction sequences, each microinstruction having a branch address field.
The present apparatus comprises: first CS means for storing control information; second CS means for storing a microinstruction; third CS means composed of a plurality of CS portions, each of which stores a plurality of microinstructions; first selecting means for selecting either said microinstruction given from the second CS means or a selected one of said plurality of microinstructions given from the third CS means; decoding means for decoding at least one microinstruction selected by the first selecting means; and second selecting means for selecting either the decoded result of the decoding means or the control information given from the first CS means, whereby the control information stored in the first CS means is read out from a corresponding address in response to an address given from an external unit; the microinstruction stored in the second CS means is read out from a corresponding address in response to another address given from said unit; and said selected one of said plurality of microinstructions stored in the third CS means is read out from a corresponding address in response to the content of the branch address field of the microinstruction fed from the second control store.
Brief Description of the Drawings
The present invention will be described hereinafter in more detail referring to the attached drawings in which:
FIG. 1A shows one embodiment of the present invention;
FIG. 1B shows an MI-instruction format used in the invention;
FIG. 2A is a diagram for describing the operation of the embodiment shown in FIG. 1A; and
FIG. 2B is a diagram showing the relationship between a macroinstruction and a microinstruction.
In the drawings, identical reference numerals denote indentical structural elements. Also, each circle marked at a gate represents the inversion of the output of each gate, and signal paths and signals may be used without destruction.
Detailed Description of the Preferred Embodiment
Referring to FIG. 1A, one embodiment of the present invention comprises a macroinstruction register 5 for storing a macroinstruction, an address CS 10 for storing a plurality of addresses, an address register 120 for storing an address given from the CS 10, a first CS 140 for storing control information, an address register 20 for storing said address given from the CS 10, a second CS 30 for storing an MI-instruction, and a third CS 450 composed to two CS portions 40 and 50 (each of which stores plural MI-instructions). Each storage operation for such contents into the register 5 and CSs 10, 140, 30, and 450 is externally done in advance at the time of initialization of the whole apparatus shown in FIG. 1A.
The embodiment further comprises a selector 60 for selecting either the MI-instruction given from the CS 30 or a selected MI-instruction from the CS portion 40, a selector 70 for selecting either the MI-instruction from the CS 30 or a selected MI-instruction from the CS portion 50, an MI-instruction register 80 for storing the output of the selector 60, an MI-instruction register 90 for storing the output of the selector 70, a control circuit 100 responsive to the outputs of the registers 80 and 90, a selector 110 for selecting either of the outputs of the registers 80 or 90 in response to decoder address bits B4 and B5, a memory decoder 130 for decoding the output of the selector 110, a selector 150 for selecting either of the outputs of the CS 140 or the decoder 130 in response to the control signal 1030 from the circuit 100, a memory decoder register 160 for storing the output of the selector 150, and an arithmetic unit 170 for performing the operation for the content of the register 160.
Referring to FIG. 1B, each MI-instruction includes an OP (operation) code field having a bit B0, a control information field having bits B1 to B3, a decoder address field having bits B4 and B5, and a branch address field having bits B6 and B7. Each inversion of these bits is shown at B1, B2, . . . , and B7, respectively in FIG. 1A.
The selector 60 is composed of an AND circuit 61 for producing a logical product of a signal from the circuit 100 through a signal path 1010 and an MI-instruction from the CS portion 40, a gate 62 for forming a selection signal using the signal given from the circuit 100 via a signal path 1030, and NAND gates 63, 64, and 65 for selecting either of the MI-instructions given from the second CS 30 or the CS portion 40 in response to the selection signal from the gate 62. The selector 70 is identical in structure with the selector 60. The control circuit 100 is comprised of an AND gate 101 for producing a logical product of the bits B2 and B3 of the content of the register 80, an AND gate 102 for producing a logical product of the bits B3 and B2 of the content of the register 90 and an AND gate 103 for producing a logical product of the bit B1 of the content of the register 80 and the bit B1 of the content of the register 90.
The selector 110 consists of an NAND gate 111 for producing an inversion of the logical product of the bits B4 of the contents of the registers 80 and 90 and an NAND gate 112 for producing an inversion of the logical product of the bits B5 of the contents of the registers 80 and 90. The circuit 150 comprises a gate 151 for forming a selection signal using a signal given via the AND gate 103 of the circuit 100 through the signal path 1030, and NAND gates 152, 153, and 154 for selecting either of the outputs of the memory decoder 130 or the CS 140 in response to the output of the gate 151.
The decoder 130 may be composed of the type shown at 3 of FIG. 1a of the U.S. Pat. No. 4,051,460.
The operation of the embodiment will now be described in detail.
Referring to FIG. 2B, a macroinstruction (referred to simply an "instruction") MA(A) consists of control information (A) and 3 MI-instructions (A+1), (A+2), and (A+3), while an instruction MA(B) consists of control information (B) and 3 MI-instructions (B+1), (B+2), and (B+3). Each of the instructions MA(A) and MA(B) has an OP code field and at least one other field such as an address field (not used with the embodiment). Also, the instruction MA(B) is set in the register 5 one clock cycle after the instruction MA(A) is set in the register 5. Also, the control information (A) and (B), the MI-instruction (A+1) and (B+1), the MI-instructions (A+2) and (A+3), and the MI-instructions (B+2) and (B+3) are stored in the CS 140, CS 30, CS portion 40, and CS portion 50, respectively. The execution of each MI-instruction requires one clock (CL) cycle.
Referring to FIGS. 1A and 2A, in response to the OP code of the instruction MA(A) initially set in the register 5, the address A is given from the CS 10 to the register 120 so that the control information (A) stored in the CS 140 is read out. The information (A) is then stored in the register 160 through the selector 150 to control the arithmetic unit 170, since the control circuit 100 produces a "1" from the gate 103 at the initial state of the apparatus of FIG. 1A. Meanwhile, the address A+1 is given from the CS 10 to the register 20, in response to the OP code of the instruction MA(A) set in the register 5, so that the MI-instruction (A+1) stored in the CS 30 is read out. The circuit 100 causes the MI-instruction (A+1) to be selected by the selectors 60 and 70. Thus, the MI-instructions (A+1) selected by the selectors 60 and 70 are stored concurrently in the registers 80 and 90. The MI-instruction (A+2) stored in the CS portion 40 is read out by the branch address field of the MI-instruction (A+1) stored in the register 80. In response to "1s" of both the bits B2 and B3 of the register 80, the circuit 100 produces "1" on the path 1010 to read out the MI-instruction (A+2) from the CS portion 40. Further, the decoder 130 produces an output in response to the decoder address field of the MI-instruction (A+1) selected by the selector 110. The output of the decoder 130 is then selected by the selector 150 and stored in the decoder register 160 to control the arithmetic unit 170. Similarly, the MI-instruction (A+3) is read out from the CS portion 40 to be stored in the register 80. By the control information field of the MI-instruction (A+3) stored in the register 80, the termination of the instruction MA(A) is designated so that the circuit 100 can control the selectors 60 and 70 to store, in the registers 80 and 90, the MI-instruction (B+1) of the instruction MA(B) set in the register 5 one CL cycle after the setting of the instruction MA(A) into the register 5. The execution of the instruction MA(B) is performed in a similar manner to that of the instruction MA(A). Namely, the address B is given from the CS 10 to the register 120, in response to the OP code of the instruction MA(B) set in the register 5, so that the control information (B) stored in the CS 140 is read out. The MI-instruction (B+1) is then read out from the CS 30 to be stored in the registers 80 and 90. The MI-instruction (B+2) stored in the CS portion 50 is read out by the branch address field of the MI-instruction (B+1) stored in the register 90. In response to "1s" of both the bits B2 and B3 of the register 90, the circuit 100 produces "1" on the path 1020 to read out the MI-instruction (B+2) from the CS portion 50. Further, the decoder 130 produces an output in response to the decoder address field of the MI-instruction (B+1) selected by the selector 110. The output of the decoder 130 is then selected by the selector 150 and stored in the register 160 to control the unit 170. Similarly, the MI-instruction (B+3) is read out from the CS portion 50 to be stored in the register 90. By the control information field of the MI-instruction (B+3) stored in the register 90, the termination of the instruction MA(B) is designated.
In this way, the parallel execution of the instructions MA(A) and MA(B) is completed by the use of the plural MI-instructions.
Thus, the present invention allows the parallel execution of plural macroinstructions, by mainly using the CSs 30 and 450 and dividing the CS 450 into the portions 40 and 50, without stopping the operation of the arithmetic unit 170. The adoption of the CS 450 divided into the portions 40 and 50 makes it easy to keep the memory capacity of each of these CS portions small as compared with each CS used in the apparatus shown in the U.S. Pat. No. 3,800,293, to thereby prevent the increase of the memory access time. Similarly, the present invention permits the memory capacity of the CS 30 to become much smaller than that of each CS used in the apparatus shown in the U.S. Pat. No. 3,800,293.
Many modifications and alternatives to the structure shown in FIG. 1 may be made within the scope of the invention defined by the appended claims.