System and method for retiring approximately simultaneously a group of instructions in a superscalar microprocessor
First Claim
1. A superscalar microprocessor for executing instructions having a program order, the microprocessor comprising:
- a temporary buffer comprising a plurality of temporary buffer locations configured to store result data for executed instructions, wherein the temporary buffer locations are arranged in a plurality of groups of temporary buffer locations, each group of temporary buffer locations including a number (N) of the temporary buffer locations, the number N being greater than 1;
tag assignment logic configured to assign tags to instructions, wherein each tag identifies one of the temporary buffer locations,wherein the tag assignment logic is further configured to concurrently assign a tag to each instruction in a first set of instructions, wherein the number of instructions in the first set of instructions is at least 1 and not more than the number N, and wherein the tags are assigned such that the respective tag assigned to each of the instructions in the first set of instructions identifies a different one of the temporary buffer locations in a first one of the groups of temporary buffer locations;
a plurality of functional units configured to execute instructions from at least the first set of instructions out of the program order, thereby generating result data for each of the instructions in the first set of instructions;
a plurality of data paths configured to transfer result data from the functional units to the temporary buffer, wherein the result data for each instruction in the first set of instructions is transferred to the temporary buffer location identified by the tag assigned to that instruction;
a register array including a plurality of array locations for storing result data for instructions that have been retired;
a retirement control block configured to determine whether execution of all of the instructions in the first set of instructions is complete; and
a superscalar instruction retirement unit configured to concurrently retire all of the instructions in the first set of instructions after execution of all of the instructions in the first set of instructions is complete, wherein retiring at least one of the instructions in the first set of instructions includes transferring the result data for the at least one instruction from the temporary buffer location identified by the tag assigned to the at least one instruction to a selected one of the array locations in the register array.
3 Assignments
0 Petitions
Accused Products
Abstract
An apparatus and method for executing instructions having a program order. The apparatus comprising a temporary buffer, tag assignment logic, a plurality of functional units, a plurality of data paths, a register array, a retirement control block, and a superscalar instruction retirement unit. The temporary buffer includes a plurality of temporary buffer locations to store result data for executed instructions, wherein the temporary buffer locations are arranged in a plurality of groups of temporary buffer locations. The tag assignment logic is configured to concurrently assign a tag to each instruction in a first set of instructions, wherein the tags are assigned such that the respective tag assigned to each of the instructions in the first set of instructions identifies a different one of the temporary buffer locations in a first one of the groups of temporary buffer locations.
-
Citations
27 Claims
-
1. A superscalar microprocessor for executing instructions having a program order, the microprocessor comprising:
-
a temporary buffer comprising a plurality of temporary buffer locations configured to store result data for executed instructions, wherein the temporary buffer locations are arranged in a plurality of groups of temporary buffer locations, each group of temporary buffer locations including a number (N) of the temporary buffer locations, the number N being greater than 1; tag assignment logic configured to assign tags to instructions, wherein each tag identifies one of the temporary buffer locations, wherein the tag assignment logic is further configured to concurrently assign a tag to each instruction in a first set of instructions, wherein the number of instructions in the first set of instructions is at least 1 and not more than the number N, and wherein the tags are assigned such that the respective tag assigned to each of the instructions in the first set of instructions identifies a different one of the temporary buffer locations in a first one of the groups of temporary buffer locations; a plurality of functional units configured to execute instructions from at least the first set of instructions out of the program order, thereby generating result data for each of the instructions in the first set of instructions; a plurality of data paths configured to transfer result data from the functional units to the temporary buffer, wherein the result data for each instruction in the first set of instructions is transferred to the temporary buffer location identified by the tag assigned to that instruction; a register array including a plurality of array locations for storing result data for instructions that have been retired; a retirement control block configured to determine whether execution of all of the instructions in the first set of instructions is complete; and a superscalar instruction retirement unit configured to concurrently retire all of the instructions in the first set of instructions after execution of all of the instructions in the first set of instructions is complete, wherein retiring at least one of the instructions in the first set of instructions includes transferring the result data for the at least one instruction from the temporary buffer location identified by the tag assigned to the at least one instruction to a selected one of the array locations in the register array. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. In a superscalar microprocessor, a method of executing instructions having a program order, the method comprising:
-
receiving a first set of instructions, the first set of instructions including at least one instruction and not more than a number (N) of instructions, the number N being greater than 1; concurrently assigning a tag to each instruction in the first set of instructions, wherein the tag assigned to each of the instructions in the first set of instructions identifies one of a plurality of temporary buffer locations in a temporary buffer, the temporary buffer locations being configured to store result data for executed instructions, wherein the temporary buffer locations are arranged in a plurality of groups of temporary buffer locations, each group of temporary buffer locations including the number N of the temporary buffer locations, wherein the tags are assigned such that the respective tag assigned to each of the instructions in the first set of instructions identifies a different one of the temporary buffer locations in a first one of the groups of temporary buffer locations; executing the instructions of the first set of instructions, thereby generating result data for each of the instructions in the first set of instructions, wherein at least one of the instructions in the first set of instructions is executed out of the program order; storing the result data in the temporary buffer, wherein the result data for each instruction in the first set of instructions is transferred to the temporary buffer location identified by the tag assigned to that instruction; determining whether execution of all of the instructions in the first set of instructions is complete; and in response to determining that execution of all of the instructions in the first set of instructions is complete, concurrently retiring all of the instructions in the first set of instructions, wherein retiring at least one of the instructions in the first set of instructions includes transferring the result data for the at least one instruction from the temporary buffer locations identified by the tag assigned to the at least one instruction to a selected one array location in a register array. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27)
-
Specification