Microcode generation for a scalable compound instruction set machine
AssigneeInternational Business Machines Corporation
InventorThomas L. Jeremiah
Life of this patent
Estimating the term…
Abstract
An apparatus for generating microcode in a scalable compound instruction set machine operates in response to compounding information indicating that two or more adjacent instructions are to be executed in parallel. Separate and independent microcode is held in control store for each possible instruction in a group. Microcode sequences for each instruction of a group of instructions to be executed in parallel are merged in response to the compounding information into a single microinstruction sequence.
Claims9
In a computer having a plurality of execution units in which object level instructions are executed singly in a scalar manner and in a group in a parallel, concurrent manner, and in which parallel execution of a group of object level instructions is indicated by compounding control information which is generated prior to fetching said object level instructions for execution, an apparatus for generating microcode that implements and controls execution of said object level instructions, said apparatus comprising:
- compound processing means for generating said compound control information for said group of object level instructions prior to fetching said group of object level instructions for execution;
- means for storing said group of object level instructions, including means for storing a first object level instruction, means for storing a second object level instruction, and means for storing said compounding control information indicating parallel execution of said first object level instruction and said second object level instruction;
- means for storing a plurality of first microcode instruction sequences that includes a sequence of microcode instructions for executing each object level instruction that is executed by said computer singly in a scaler manner;
- means for storing a second plurality of microcode instruction sequences that includes a sequence of partial microcode instructions for each object level instruction that is executed as a second instruction in a group of object level instructions;
- means to map said first object level instruction to said means for storing a first microcode instruction sequence to fetch a first microcode instruction;
- means to map said second instruction to said means for storing a second microcode instruction sequence to fetch a second microcode instruction;
- means responsive to said first object level instruction, said second object level instruction and said compounding control information to merge said first microcode instruction and said second microcode instruction;
- means coupling said means to merge said means for storing said first microcode instruction sequence and said means for storing a second microcode instruction sequence;
- said means to merge including;
- means to determine an execution resource dependency between said first microcode instruction and said second microcode instruction;
- means responsive to said means to determine an execution resource dependency to substitute predetermined fields of said second microcode instruction into certain predetermined fields of said first microcode instruction to form a merged microcode instruction;
- and
- means for parallel execution of said merged microcode instruction connected to said means to merge.
In a computer having a plurality of execution units in which object level instructions are executed singly in a scaler manner and in a group in a parallel, concurrent manner, and in which parallel execution of a group of object level instructions is indicated by compounding control information which is generated prior to fetching said object level instructions for execution, an apparatus for generating microcode that implements and controls execution of said object level instructions, said apparatus comprising:
- means for storing said group of object level instructions, including means for storing a first object level instruction, means for storing a second object level instruction, and means for storing said compounding control information, which indicates parallel execution of said first object level instruction and said second object level instruction;
- means for storing a plurality of first microcode instruction sequences that includes a sequence of microcode instructions for executing each object level instruction that is executed by said computer singly in a scaler manner;
- means for storing a second plurality of microcode instruction sequences that includes a sequence of microcode instructions for each object level instruction that is executed as a second instruction in a group of object level instructions;
- means to map said first object level instruction to said means for storing a first microcode instruction sequence to fetch a first microcode instruction;
- means to map said second instruction to said means for storing a second microcode instruction sequence to fetch a second microcode instruction;
- means responsive to said first object level instruction, said second object level instruction and said compounding control information to merge said first microcode instruction and said second microcode instruction;
- means coupling said means to merge to said means for storing said first microcode instruction sequence and to said means for storing a second microcode instruction sequence;
- said means to merge including;
- means to determine an execution resource dependency between said first microcode instruction and said second microcode instruction;
- means responsive to said means to determine an execution resource dependency to substitute predetermined fields of said second microcode instruction into certain predetermined fields of said first microcode instruction to form a merged microcode instruction;
- and
- means for parallel execution of said merged microcode instruction connected to said means to merge.
In a computer having a plurality of execution units in which object level instructions can be executed singly in a scalar manner and in parallel in a concurrent manner and in which parallel execution of a group of object level instructions is indicated by compounding control information which specifies whether a group of object level instructions can be concurrently executed, an apparatus for generating microcode for said group of object level instructions, said apparatus comprising:
- a first microinstruction storage for providing a first sequence of microinstructions for executing a first object level instruction of said group of instructions;
- a second microinstruction storage for providing a second sequence of microinstructions for executing a second object level instruction of said group of instructions;
- merging means connected to said first microinstruction storage and said second microinstruction storage;
- said merging means forming a merged microinstruction in response to said compounding information from said first sequence of microinstructions and said second sequence of microinstructions by substituting a field from a microinstruction in said second sequence of microinstructions for a field in a microinstruction in said first sequence of microinstructions;
- hardware field setting means for generating a hardware microinstruction field indicating a particular operation of an execution unit;
- multiplexing means connected to said hardware field setting means and to said merging means for selectively substituting said hardware microinstruction field for a field in said microinstruction in said first microinstruction sequence;
- and
- means connected to said merging means for pipelined execution of said merged composite sequence of microinstructions.
Dependencies are inferred from the claim text.