Non-stalling circular counterflow pipeline processor with reorder buffer
First Claim
1. A processor, comprising:
- an instruction pipeline having a plurality of stages;
a result pipeline having a plurality of stages;
an execution unit connected to the instruction pipeline and the result pipeline, wherein the execution unit includes an operand input and a result output, wherein the operand input receives an operand from the instruction pipeline and wherein the execution unit transmits a result to the result output as a function of the operand received by the operand input; and
a reorder buffer, wherein the reorder buffer supplies instructions and operands to the instruction pipeline and receives results from the result pipeline and wherein the instruction pipeline and the result pipeline wrap around the reorder buffer to create counter rotating queues.
0 Assignments
0 Petitions
Accused Products
Abstract
A system and method of executing instructions within a counterflow pipeline processor. The counterflow pipeline processor includes an instruction pipeline, a data pipeline, a reorder buffer and a plurality of execution units. An instruction and one or more operands issue into the instruction pipeline and a determination is made at one of the execution units whether the instruction is ready for execution. If so, the operands are loaded into the execution unit and the instruction executes. The execution unit is monitored for a result and, when the result arrives, it is stored into the result pipeline. If the instruction reaches the end of the pipeline without executing it wraps around and is sent down the instruction pipeline again.
-
Citations
59 Claims
-
1. A processor, comprising:
-
an instruction pipeline having a plurality of stages;
a result pipeline having a plurality of stages;
an execution unit connected to the instruction pipeline and the result pipeline, wherein the execution unit includes an operand input and a result output, wherein the operand input receives an operand from the instruction pipeline and wherein the execution unit transmits a result to the result output as a function of the operand received by the operand input; and
a reorder buffer, wherein the reorder buffer supplies instructions and operands to the instruction pipeline and receives results from the result pipeline and wherein the instruction pipeline and the result pipeline wrap around the reorder buffer to create counter rotating queues. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 17, 18, 19)
-
- 11. The processor of claim 110, wherein the tag identifies the reorder buffer register associated with the instruction.
-
20. A computer system comprising:
-
memory; and
a processor;
wherein the processor includes;
a cache connected to the memory, wherein the cache stores recently accessed data and instructions;
an instruction prefetch unit;
a branch prediction unit connected to the instruction prefetch unit;
an instruction pipeline having a plurality of stages;
a result pipeline having a plurality of stages;
an execution unit connected to the instruction pipeline and the result pipeline, wherein the execution unit includes an operand input and a result output, wherein the operand input receives an operand from the instruction pipeline and wherein the result output transmits a result to the result pipeline as a function of the operand received by the operand input; and
a reorder buffer, wherein the reorder buffer receives instructions from the instruction prefetch unit, supplies instructions and operands to the instruction pipeline and receives results from the result pipeline and wherein the instruction pipeline and the result pipeline wrap around the reorder buffer to create counter rotating queues. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 40, 41, 42)
-
-
39. A method of executing instructions within a counterflow pipeline processor having an instruction pipeline, a data pipeline, a reorder buffer and a plurality of execution units, including a first execution unit, the method comprising:
-
fetching an instruction;
determining operands for the instruction;
issuing the instruction into the instruction pipeline;
determining, at the first execution unit, if the instruction is ready for execution;
if the instruction is ready for execution, loading the operands into the first execution unit;
monitoring for a result from the first execution unit;
on receiving a result, storing the result in the result pipeline;
determining if the instruction has executed; and
if the instruction has not executed by the end of the instruction pipeline, wrapping the instruction back into the instruction pipeline.
-
-
43. A processor, comprising:
-
an instruction pipeline having a plurality of stages, including a first and a second stage;
a result pipeline having a plurality of stages, including an first and a second stage;
first and second execution units, wherein the first and second execution units are connected to the first and second stages, respectively, of the instruction pipeline and the result pipeline, wherein each execution unit includes an operand input and a result output, wherein the operand input receives an operand from its respective stage of the instruction pipeline and wherein the result output transmits a result to its respective stage of the result pipeline as a function of the operand received by the operand input; and
first and second reorder buffers, wherein the first reorder buffer supplies instructions and operands to the first stage of the instruction pipeline and receives results from the first stage of the result pipeline and wherein the second reorder buffer supplies instructions and operands to the second stage of the instruction pipeline and receives results from the second stage of the result pipeline. - View Dependent Claims (44, 45, 47, 48)
-
-
46. A computer system having memory and a processor, wherein the processor is capable of executing a plurality of instructions, including a first instruction, wherein the processor comprises:
-
a plurality of instruction pipelines;
a plurality of result pipelines; and
a plurality of reorder buffers, wherein each reorder buffer receives instructions from one instruction pipeline and issues instructions to a second instruction pipeline, wherein each reorder buffer receives data from one result pipeline and issues data to a second result pipeline and wherein each reorder buffer includes;
a register file having a plurality of registers, wherein each register includes a data entry and a tag field; and
a register alias table having a plurality of register alias table entries, wherein each register alias table entry includes a pipeline field and a register field, wherein the pipeline field shows which instruction pipeline the first instruction was dispatched into and wherein the register field show the register into which the first instruction will write its result.
-
-
49. In a computer system having a plurality of threads, including a first and second thread, a method of executing more than one thread at a time, the method comprising:
-
providing a first and a second reorder buffer;
reading first instructions and first operands associated with the first thread from the first reorder buffer;
executing one of the first instructions and storing a result in the first reorder buffer, wherein storing the result includes marking the result with a tag associating the result with the first thread;
reading second instructions and second operands associated with the second thread from the second reorder buffer; and
executing one of the second instructions and storing a result in the second reorder buffer, wherein storing the result includes marking the result with a tag associating the result with the second thread.
-
-
50. In a counterflow pipeline processing system having an instruction pipeline and a data pipeline, both of which feed back into a reorder buffer, a method of recovering from incorrect speculations, wherein the method comprises:
-
detecting a mispredicted branch, wherein the mispredicted branch includes a first instruction;
invalidating, in the reorder buffer, all instructions after the mispredicted branch;
if the first instruction is in the instruction pipeline and can execute, executing the instruction and invalidating results associated with that instruction when they reach the reorder buffer; and
if the instruction reaches the end of the instruction pipeline, deleting the instruction.
-
-
51. A method of controlling data speculation, comprising:
-
providing an instruction;
obtaining an operand associated with the instruction, wherein obtaining an operand includes;
determining whether the operand is valid;
determining whether the operand is a speculative value; and
marking the operand as a function of whether the operand is valid and whether the operand is a speculative value;
executing the instruction to generate a result as a function of the operand; and
if the operand was a speculative value, checking for a nonspeculative value for the operand, comparing the nonspeculative value against the speculative value and, if the speculative value was correct, saving the result. - View Dependent Claims (52)
-
-
53. A method of controlling data speculation within a computer system having a processor, the method comprising:
-
providing an instruction;
obtaining an operand associated with the instruction, wherein obtaining an operand includes;
determining whether the operand is valid;
determining whether the operand is a speculative value; and
marking the operand as a function of whether the operand is valid and whether the operand is a speculative value;
executing the instruction to generate a result as a function of the operand; and
if the operand was a speculative value, checking for a nonspeculative value for the operand, comparing the nonspeculative value against the speculative value and, if the speculative value was correct, saving the result. - View Dependent Claims (54, 55, 56, 57)
-
-
58. A microprocessor comprising:
-
a results pipeline;
an instruction pipeline;
a reorder buffer which provides instructions and operands to the instruction pipeline and receives results from the results pipeline; and
control logic for data speculation, wherein the control logic includes;
means for determining whether an operand associated with an instruction is valid and a speculative value;
means for marking the operand as a function of whether the operand is valid and whether the operand is a speculative value;
means for executing the instruction to generate a result as a function of the operand; and
means for comparing a nonspeculative value against the speculative value; and
if the operand was a speculative value, checking for a nonspeculative value for the operand, comparing the nonspeculative value against the speculative value and, if the speculative value was correct, saving the result.
-
-
59. A computer system comprising:
-
memory; and
a processor;
wherein the processor includes;
a results pipeline;
an instruction pipeline;
a reorder buffer which provides instructions and operands to the instruction pipeline and receives results from the results pipeline; and
control logic for data speculation, wherein the control logic includes;
means for determining whether an operand associated with an instruction is valid and a speculative value;
means for marking the operand as a function of whether the operand is valid and whether the operand is a speculative value;
means for executing the instruction to generate a result as a function of the operand; and
means for comparing a nonspeculative value against the speculative value; and
if the operand was a speculative value, checking for a nonspeculative value for the operand, comparing the nonspeculative value against the speculative value and, if the speculative value was correct, saving the result.
-
Specification