High-performance, superscalar-based computer system with out-of-order instruction execution
First Claim
1. A superscalar microprocessor for processing instructions having a sequential program order, the microprocessor comprising:
- an instruction buffer configured to buffer a plurality of instructions, including at least one conditional branch instruction;
a plurality of functional units configured to execute instructions, thereby generating result data;
a register file including a plurality of entries configured to store data including result data generated by the plurality of functional units;
a resource identifying circuit configured to concurrently identify execution resources for a plurality of buffered instructions, the identified execution resources for each of the plurality of buffered instructions including a functional unit capable of executing the instruction and a register file entry corresponding to a source of an operand for the instruction, wherein the resource identifying circuit is further configured to make a group of at least two and not more than a maximum number N of instructions concurrently available for execution, wherein the group includes up to N conditional branch instructions;
an issue control circuit coupled to the resource identifying circuit and configured to concurrently issue more than one of the available instructions to the functional units for execution, based on availability of the identified execution resources for each instruction and without regard to the sequential program order; and
a plurality of data routing paths coupled between the plurality of functional units and the register file and configured to concurrently transfer result data from more than one of the plurality of functional units to the register file.
0 Assignments
0 Petitions
Accused Products
Abstract
A high-performance, superscalar-based computer system with out-of-order instruction execution for enhanced resource utilization and performance throughput. The computer system fetches a plurality of fixed length instructions with a specified, sequential program order (in-order). The computer system includes an instruction execution unit including a register file, a plurality of functional units, and an instruction control unit for examining the instructions and scheduling the instructions for out-of-order execution by the functional units. The register file includes a set of temporary data registers that are utilized by the instruction execution control unit to receive data results generated by the functional units. The data results of each executed instruction are stored in the temporary data registers until all prior instructions have been executed, thereby retiring the executed instruction in-order.
-
Citations
21 Claims
-
1. A superscalar microprocessor for processing instructions having a sequential program order, the microprocessor comprising:
-
an instruction buffer configured to buffer a plurality of instructions, including at least one conditional branch instruction;
a plurality of functional units configured to execute instructions, thereby generating result data;
a register file including a plurality of entries configured to store data including result data generated by the plurality of functional units;
a resource identifying circuit configured to concurrently identify execution resources for a plurality of buffered instructions, the identified execution resources for each of the plurality of buffered instructions including a functional unit capable of executing the instruction and a register file entry corresponding to a source of an operand for the instruction, wherein the resource identifying circuit is further configured to make a group of at least two and not more than a maximum number N of instructions concurrently available for execution, wherein the group includes up to N conditional branch instructions;
an issue control circuit coupled to the resource identifying circuit and configured to concurrently issue more than one of the available instructions to the functional units for execution, based on availability of the identified execution resources for each instruction and without regard to the sequential program order; and
a plurality of data routing paths coupled between the plurality of functional units and the register file and configured to concurrently transfer result data from more than one of the plurality of functional units to the register file. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method for processing instructions having a sequential program order in a superscalar microprocessor, the method comprising:
-
buffering a plurality of instructions, including at least one conditional branch instruction;
concurrently identifying execution resources for more than one of a plurality of buffered instructions, the identified execution resources for each of the plurality of buffered instructions including a functional unit capable of executing the instruction arid a register file entry corresponding to a source of an operand for the instruction;
making a group of at least two and not more than a maximum number N of instructions for which execution resources have been identified concurrently available for execution, wherein the group includes up to N conditional branch instructions;
concurrently issuing more than one of the group of available instructions for execution by a plurality of functional units, based on availability of the identified execution resources for each instruction and without regard to the sequential program order;
executing the issued instructions in the plurality of functional units, thereby generating result data; and
transferring the result data from the functional units to a register file, the register file including a plurality of entries. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A computer system, comprising:
-
a memory;
a superscalar microprocessor for processing instructions having a sequential program order; and
a bus coupled between the memory and the microprocessor, wherein the microprocessor includes;
an instruction buffer configured to buffer a plurality of instructions, including at least one conditional branch instruction;
a plurality of functional units configured to execute instructions, thereby generating result data;
a register file including a plurality of entries configured to store data including result data generated by the plurality of functional units;
a resource identifying circuit configured to concurrently identify execution resources for a plurality of buffered instructions, the identified execution resources for each of the plurality of buffered instructions including a functional unit capable of executing the instruction and a register file entry corresponding to a source of an operand for the instruction, wherein the resource identifying circuit is further configured to make a group of at least two and not more than a maximum number N of instructions concurrently available for execution, wherein the group includes up to N conditional branch instructions;
an issue control circuit coupled to the resource identifying circuit and configured to concurrently issue more than one of the available instructions to the functional units for execution, based on availability of the identified execution resources for each instruction and without regard to the sequential program order; and
a plurality of data routing paths coupled between the plurality of functional units and the register file and configured to concurrently transfer result data from more than one of the plurality of functional units to the register file. - View Dependent Claims (16, 17, 18, 19, 20, 21)
-
Specification