System and method for retiring instructions in a superscalar microprocessor
First Claim
1. A superscalar processor that executes a group of instructions out of a program order, the superscalar processor comprising:
- means for assigning tags to instructions;
an index-addressable temporary buffer for storing results of executed instructions, wherein at least part of a tag assigned to an instruction indicates a location in said index-addressable temporary buffer where an execution result for the instruction is to be stored;
a register array for storing results of instructions that are retirable;
means for determining whether an executed instruction is retirable, wherein an executed instruction is retirable if there are no unexecuted instructions appearing earlier in program order relative to said executed instruction; and
means, coupled to said temporary buffer and said register array, for retiring approximately simultaneously a group of retirable instructions by transferring execution results of said group of retirable instructions from said index-addressable temporary buffer to said register array, wherein said execution results of said group of retirable instructions are retrieved from said index-addressable temporary buffer based on at least part of each tag assigned to an instruction in said group of retirable instructions.
1 Assignment
0 Petitions
Accused Products
Abstract
An system and method for retiring instructions in a superscalar microprocessor which executes a program comprising a set of instructions having a predetermined program order, the retirement system for simultaneously retiring groups of instructions executed in or out of order by the microprocessor. The retirement system comprises a done block for monitoring the status of the instructions to determine which instruction or group of instructions have been executed, a retirement control block for determining whether each executed instruction is retirable, a temporary buffer for storing results of instructions executed out of program order, and a register array for storing retirable-instruction results. In addition, the retirement control block further controls the retiring of a group of instructions determined to be retirable, by simultaneously transferring their results from the temporary buffer to the register array, and retires instructions executed in order by storing their results directly in the register array. The method comprises the steps of monitoring the status of the instructions to determine which group of instructions have been executed, determining whether each executed instruction is retirable, storing results of instructions executed out of program order in a temporary buffer, storing retirable-instruction results in a register array and retiring a group of retirable instructions by simultaneously transferring their results from the temporary buffer to the register array, and retiring instructions executed in order by storing their results directly in the register array.
95 Citations
52 Claims
-
1. A superscalar processor that executes a group of instructions out of a program order, the superscalar processor comprising:
-
means for assigning tags to instructions; an index-addressable temporary buffer for storing results of executed instructions, wherein at least part of a tag assigned to an instruction indicates a location in said index-addressable temporary buffer where an execution result for the instruction is to be stored; a register array for storing results of instructions that are retirable; means for determining whether an executed instruction is retirable, wherein an executed instruction is retirable if there are no unexecuted instructions appearing earlier in program order relative to said executed instruction; and means, coupled to said temporary buffer and said register array, for retiring approximately simultaneously a group of retirable instructions by transferring execution results of said group of retirable instructions from said index-addressable temporary buffer to said register array, wherein said execution results of said group of retirable instructions are retrieved from said index-addressable temporary buffer based on at least part of each tag assigned to an instruction in said group of retirable instructions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A method for retiring instructions in a processor which executes a group of instructions out of a program order, comprising the steps of:
-
(1) assigning tags to instructions; (2) determining whether an executed instruction is retirable, wherein an executed instruction is retirable if there are no unexecuted instructions appearing earlier in program order relative to said executed instruction; (3) storing results of executed instructions in an index-addressable temporary buffer addressed by said tags, wherein at least part of a tag assigned to an instruction indicates a location in said index-addressable temporary buffer where an execution result for the instruction is to be stored; and (4) retiring approximately simultaneously a group of retirable instructions, wherein said step of retiring comprises the step of transferring execution results of said group of retirable instructions from said index-addressable temporary buffer to a register array, wherein said execution results of said group of retirable instructions are retrieved from said index-addressable temporary buffer based on at least part of each tag assigned to an instruction in said group of retirable instructions. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
-
19. A superscalar processor that executes a group of instructions out of a program order, the superscalar processor comprising:
-
means for determining whether an executed instruction is retirable, wherein an executed instruction is considered retirable if there are no unexecuted instructions appearing earlier in a program order; a temporary buffer for storing results of instructions that are executed, at least one of said instructions being executed out of a program order; a register array that stores execution results of retirable instructions, said register array receiving execution results that are transferred from said temporary buffer, said register array further receiving execution results that are transferred directly from a functional unit. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27)
-
-
28. A method for retiring instructions in a processor which executes a group of instructions out of a program order, comprising the steps of:
-
(1) determining whether an executed instruction is retirable, wherein an executed instruction is retirable if there are no unexecuted instructions appearing earlier in a program order; (2) storing results of executed instructions in a temporary buffer, wherein at least one of said instructions is executed out of a program order; (3) transferring execution results of at least one instruction from said temporary buffer to a register array; and (4) transferring at least one execution result directly from a functional unit to said register array. - View Dependent Claims (29, 30, 31, 32, 33, 34)
-
-
35. A computer system, comprising:
-
a memory unit for storing program instructions; a bus coupled to said memory unit for retrieving said program instructions; and a processor coupled to said bus, wherein said processor comprises an instruction retirement system, including means for determining whether an executed instruction is retirable, wherein an executed instruction is retirable if there are no unexecuted instructions appearing earlier in a program order; a temporary buffer for storing results of executed instructions, wherein at least one of said instructions being executed out of a program order; a register array that stores execution results of retirable instructions, said register array receiving execution results from said temporary buffer, said register array further receiving execution results directly from a functional unit. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42, 43)
-
-
44. A computer system, comprising:
-
a memory unit for storing program instructions; a bus coupled to said memory unit for retrieving said program instructions; and a processor coupled to said bus, wherein said processor comprises an instruction retirement system, including means for assigning tags to instructions; an index-addressable temporary buffer for storing results of executed instructions, wherein at least part of a tag assigned to an instruction indicates a location in said index-addressable temporary buffer where an execution result for the instruction is to be stored; a register array for storing execution results of instructions that are retirable;
means for determining whether an executed instruction is retirable, wherein an executed instruction is retirable if there are no unexecuted instructions appearing earlier in program order relative to said executed instruction; andmeans, coupled to said temporary buffer and said register array, for retiring approximately simultaneously a group of retirable instructions by transferring execution results of said group of retirable instructions from said index-addressable temporary buffer to said register array, wherein said execution results of said group of retirable instructions are retrieved from said index addressable temporary buffer based on at least part of each tag assigned to an instruction in said group of retirable instructions. - View Dependent Claims (45, 46, 47, 48, 49, 50, 51, 52)
-
Specification