High performance superscalar microprocessor including a common reorder buffer and common register file for both integer and floating point operations
First Claim
1. A superscalar microprocessor comprising:
- an instruction supply;
a multiple instruction decoder, coupled to said instruction supply, for decoding multiple instructions in the same microprocessor cycle, said decoder decoding both integer and floating point instructions in the same microprocessor cycle, said decoder dispatching both decoded integer instructions and decoded floating point instructions in the same microprocessor cycle thus providing dispatched instructions;
a data processing bus coupled to said decoder;
an integer functional unit coupled to said data processing bus to receive dispatched instructions from the decoder;
a floating point functional unit coupled to said data processing bus to receive dispatched instructions from the decoder;
a branch prediction circuit coupled to said instruction supply for predicting the outcome of branch instructions thus determining predicted-taken branches including instructions which are then speculatively executed by the integer functional unit or the floating point functional unit to produce speculative results;
a branch functional unit, coupled to said data processing bus and the branch prediction circuit, for executing branch instructions and for determining if a branch is a mispredicted branch or a correctly predicted branch;
a common reorder buffer, coupled to said data processing bus, for use by both said integer functional unit and said floating point functional unit to store said speculative results in common storage elements, said common reorder buffer renaming registers, issuing multiple instructions in a single cycle, retiring multiple instructions in a single cycle, and retiring speculative results which become non-speculative results by virtue of being in a correctly predicted branch, said common reorder buffer not retiring speculative results in mispredicted branches; and
a common register file, coupled to said data processing bus and to said common reorder buffer, for storing non-speculative results which are retired from said common reorder buffer.
1 Assignment
0 Petitions
Accused Products
Abstract
A superscalar microprocessor is provided which includes a integer functional unit and a floating point functional unit that share a high performance main data processing bus. The integer unit and the floating point unit also share a common reorder buffer, register file, branch prediction unit and load/store unit which all reside on the same main data processing bus. Instruction and data caches are coupled to a main memory via an internal address data bus which handles communications therebetween. An instruction decoder is coupled to the instruction cache and is capable of decoding multiple instructions per microprocessor cycle. Instructions are dispatched from the decoder in speculative order, issued out-of-order and completed out-of-order. Instructions are retired from the reorder buffer to the register file in-order. The functional units of the microprocessor desirably accommodate operands exhibiting multiple data widths. High performance and efficient use of the microprocessor die size are achieved by the sharing architecture of the disclosed superscalar microprocessor.
-
Citations
28 Claims
-
1. A superscalar microprocessor comprising:
-
an instruction supply; a multiple instruction decoder, coupled to said instruction supply, for decoding multiple instructions in the same microprocessor cycle, said decoder decoding both integer and floating point instructions in the same microprocessor cycle, said decoder dispatching both decoded integer instructions and decoded floating point instructions in the same microprocessor cycle thus providing dispatched instructions; a data processing bus coupled to said decoder; an integer functional unit coupled to said data processing bus to receive dispatched instructions from the decoder; a floating point functional unit coupled to said data processing bus to receive dispatched instructions from the decoder; a branch prediction circuit coupled to said instruction supply for predicting the outcome of branch instructions thus determining predicted-taken branches including instructions which are then speculatively executed by the integer functional unit or the floating point functional unit to produce speculative results; a branch functional unit, coupled to said data processing bus and the branch prediction circuit, for executing branch instructions and for determining if a branch is a mispredicted branch or a correctly predicted branch; a common reorder buffer, coupled to said data processing bus, for use by both said integer functional unit and said floating point functional unit to store said speculative results in common storage elements, said common reorder buffer renaming registers, issuing multiple instructions in a single cycle, retiring multiple instructions in a single cycle, and retiring speculative results which become non-speculative results by virtue of being in a correctly predicted branch, said common reorder buffer not retiring speculative results in mispredicted branches; and a common register file, coupled to said data processing bus and to said common reorder buffer, for storing non-speculative results which are retired from said common reorder buffer. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A superscalar microprocessor comprising:
-
an instruction cache for supplying instructions from a computer program including branch instructions, the instruction cache including a branch prediction unit for predicting the outcome of branch instructions thus determining predicted-taken branches which include speculative instructions to be speculatively executed; a multiple instruction decoder, coupled to the instruction cache, for decoding multiple instructions in the same microprocessor cycle, said decoder decoding both integer and floating point instructions in the same microprocessor cycle, said decoder dispatching both decoded integer instructions and decoded floating point instructions in the same microprocessor cycle thus providing dispatched instructions; a data processing bus coupled to said decoder; an integer functional unit coupled to said data processing bus to receive dispatched instructions from the decoder as speculative instructions, said integer functional unit including a plurality of reservation stations for enabling out-of-order instruction execution by said microprocessor, said integer functional unit speculatively executing said speculative instructions when said speculative instructions are integer instructions thus producing speculative results; a floating point functional unit coupled to said data processing bus to receive dispatched instructions from the decoder as speculative instructions, said floating point functional unit including a plurality of reservation stations for enabling out-of-order instruction execution by said microprocessor, said floating point functional unit speculatively executing said speculative instructions when said speculative instructions are floating point instructions thus producing speculative results; a branch functional unit coupled to said data processing bus for executing branch instructions and for determining if a branch is a mispredicted branch or a correctly predicted branch; a common reorder buffer, coupled to said data processing bus, for use by both said integer functional unit and said floating point functional unit to store said speculative results in common storage elements to enable instructions to be processed speculatively and out-of-order, said reorder buffer renaming registers, issuing multiple instructions in a single cycle, retiring multiple instructions in a single cycle, and deallocating speculative results when such speculative results are in a mispredicted branch, said reorder buffer retiring those results whose status changes from speculative to non-speculative as a consequence of being in a correctly predicted branch; a common register file coupled to said data processing bus and to said common reorder buffer for storing results which are retired from said common reorder buffer; retire logic, coupled to the common register file, for monitoring the status of results in the common reorder buffer to determine when the status of results in the common reorder buffer changes from speculative to non-speculative as a consequence of being in a correctly predicted branch; and a load/store functional unit coupled to said data processing bus, for use by both said integer functional unit and said floating point functional unit to permit loading and storage of information. - View Dependent Claims (18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)
-
Specification