High-performance, superscalar-based computer system with out-of-order instruction execution
First Claim
1. A superscalar microprocessor for processing instructions having a program order, the microprocessor comprising:
- a fetch circuit configured to fetch instructions, including a conditional branch instruction, from an instruction store;
a branch detection circuit configured to detect the conditional branch instruction from among the fetched instructions;
a branch bias circuit configured to receive a branch bias signal indicating whether a conditional branch controlled by the conditional branch instruction is predicted to be taken or not taken;
a stream identifier circuit configured to associate a stream identifier with one or more of the fetched instructions, thereby identifying a first stream predicted by the branch bias signal;
a buffer circuit configured to receive and buffer the fetched instructions;
a decode circuit coupled to the buffer circuit and configured to make a group of buffered instructions concurrently available for execution as decoded instructions, wherein the available decoded instructions include a decoded instruction corresponding to the conditional branch instruction and a decoded instruction from the first stream; and
an execution circuit including a plurality of functional units configured to execute the available decoded instructions out of the program order, wherein execution of the conditional branch instruction determines whether the conditional branch is taken,wherein the fetch circuit is further configured to cancel instructions from the first stream based on the stream identifier in the event that the branch bias signal incorrectly predicts whether the conditional branch is taken.
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.
112 Citations
35 Claims
-
1. A superscalar microprocessor for processing instructions having a program order, the microprocessor comprising:
-
a fetch circuit configured to fetch instructions, including a conditional branch instruction, from an instruction store; a branch detection circuit configured to detect the conditional branch instruction from among the fetched instructions; a branch bias circuit configured to receive a branch bias signal indicating whether a conditional branch controlled by the conditional branch instruction is predicted to be taken or not taken; a stream identifier circuit configured to associate a stream identifier with one or more of the fetched instructions, thereby identifying a first stream predicted by the branch bias signal; a buffer circuit configured to receive and buffer the fetched instructions; a decode circuit coupled to the buffer circuit and configured to make a group of buffered instructions concurrently available for execution as decoded instructions, wherein the available decoded instructions include a decoded instruction corresponding to the conditional branch instruction and a decoded instruction from the first stream; and an execution circuit including a plurality of functional units configured to execute the available decoded instructions out of the program order, wherein execution of the conditional branch instruction determines whether the conditional branch is taken, wherein the fetch circuit is further configured to cancel instructions from the first stream based on the stream identifier in the event that the branch bias signal incorrectly predicts whether the conditional branch is taken. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. In a superscalar microprocessor, a method for processing instructions having a program order, the method comprising the steps of:
-
fetching instructions from an instruction store; detecting a conditional branch instruction from among the plurality of fetched instructions; receiving a branch bias signal associated with the conditional branch instruction, the branch bias signal indicating whether the conditional branch is predicted to be taken or not taken; associating a stream identifier with one or more of the fetched instructions, thereby identifying a first stream predicted by the branch bias signal; making a group of the fetched instructions concurrently available for execution, wherein the available instructions include the conditional branch instruction and an instruction from the first stream; executing the available instructions out of the program order, wherein execution of the conditional branch instruction determines whether the conditional branch is taken; determining, based on the execution of the conditional branch instruction, whether the branch bias signal correctly predicted whether the conditional branch is taken; and in the event that the branch bias signal incorrectly predicted whether the conditional branch is taken, canceling instructions from the first stream based on the stream identifier. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. A computer system, comprising:
-
a memory; a superscalar microprocessor for processing instructions having a program order; and a bus coupled between the memory and the microprocessor, wherein the microprocessor includes; a fetch circuit configured to fetch instructions, including a conditional branch instruction, from an instruction store; a branch detection circuit configured to detect the conditional branch instruction from among the fetched instructions; a branch bias circuit configured to receive a branch bias signal indicating whether a conditional branch controlled by the conditional branch instruction is predicted to be taken or not taken; a stream identifier circuit configured to associate a stream identifier with one or more of the fetched instructions, thereby identifying a first stream predicted by the branch bias signal; a buffer circuit configured to receive and buffer the fetched instructions; a decode circuit coupled to the buffer circuit and configured to make a group of buffered instructions concurrently available for execution as decoded instructions, wherein the available decoded instructions include a decoded instruction corresponding to the conditional branch instruction and a decoded instruction from the first stream; and an execution circuit including a plurality of functional units configured to execute the available decoded instructions out of the program order, wherein execution of the conditional branch instruction determines whether the conditional branch is taken, wherein the fetch circuit is further configured to cancel instructions from the first stream based on the stream identifier in the event that the branch bias signal incorrectly predicts whether the conditional branch is taken. - View Dependent Claims (24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35)
-
Specification