Representing a plurality of instructions with a fewer number of micro-operations
First Claim
Patent Images
1. An apparatus comprising:
- at least two decoders to decode at least two instructions into at least two micro-operations (uops);
a storage unit to store the at least two uops;
uop fusion logic to fuse the at least two uops into a single fused uop that is to represent the complete function of the at least two uops, wherein the at least two uops are to be fused into the single fused uop in response to a determination that the at least two uops are compatible for fusion, wherein;
two or more uops are considered to be compatible for fusion if an output of one uop is to source one or more uops to be fused;
registers accessed by the two or more uops are compatible if they have the same destination register for the two or more uops;
flag destinations of the two or more uops are compatible if both of uops overwrite the same flag;
source operands of the two or more uops are compatible if operands from both of the uops do not overflow the available registers to store the source operands; and
the at least two instructions are adjacent to each other in program order;
execution logic to process the fused uop without unfusing the fused uop; and
determination logic to determine whether processing of the fused uop results in a trap, assist, or fault condition, wherein if no trap, assist, or fault condition occurs, the fused uop is retired.
1 Assignment
0 Petitions
Accused Products
Abstract
A micro-operation (uop) fusion technique. More particularly, embodiments of the invention relate to a technique to fuse two or more uops originating from two or more instructions.
27 Citations
28 Claims
-
1. An apparatus comprising:
-
at least two decoders to decode at least two instructions into at least two micro-operations (uops); a storage unit to store the at least two uops; uop fusion logic to fuse the at least two uops into a single fused uop that is to represent the complete function of the at least two uops, wherein the at least two uops are to be fused into the single fused uop in response to a determination that the at least two uops are compatible for fusion, wherein;
two or more uops are considered to be compatible for fusion if an output of one uop is to source one or more uops to be fused;
registers accessed by the two or more uops are compatible if they have the same destination register for the two or more uops;
flag destinations of the two or more uops are compatible if both of uops overwrite the same flag;
source operands of the two or more uops are compatible if operands from both of the uops do not overflow the available registers to store the source operands; and
the at least two instructions are adjacent to each other in program order;execution logic to process the fused uop without unfusing the fused uop; and determination logic to determine whether processing of the fused uop results in a trap, assist, or fault condition, wherein if no trap, assist, or fault condition occurs, the fused uop is retired. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A system comprising:
-
a memory unit to store two or more instructions to be represented by one micro-operation (uop); at least two decode logics to decode the two or more instructions into at least two or more uops; a first logic to cause representation of the two or more instructions by a single fused uop that is to represent the complete function of the at least two uops, wherein the two or more instructions are to be decoded by the decode logics, wherein the single fused uop corresponds to one of a plurality of operations into which the two or more instructions are to be decoded and wherein the single fused uop is to be generated in response to a determination that at least two uops, corresponding to the single fused uop, are compatible for fusion, wherein;
two or more uops are considered to be compatible for fusion if an output of one uop is to source one or more uops to be fused;
registers accessed by the two or more uops are compatible if they have the same destination register for the two or more uops;
flag destinations of the two or more uops are compatible if both of uops overwrite the same flag;
source operands of the two or more uops are compatible if operands from both of the uops do not overflow the available registers to store the source operands; and
the two or more instructions are adjacent to each other in program order;execution logic to process the single fused uop without unfusing the fused uop; and determining whether processing of the fused uop results in a trap, assist, or fault condition and if no trap, assist, or fault condition occurs the fused uop is to be retired. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A method comprising:
-
decoding, at two decoders, two or more instructions into at least two micro-operations (uops); storing the at least two uops in a storage unit; fusing, at a uop fusion logic, the at least two uops into a single fused uop that is to represent the complete function of the at least two uops, wherein the at least two uops are to be fused into the single fused uop in response to a determination that the at least two uops are compatible for fusion, wherein;
two or more uops are considered to be compatible for fusion if an output of one uop is to source one or more uops to be fused;
registers accessed by the two or more uops are compatible if they have the same destination register for the two or more uops;
flag destinations of the two or more uops are compatible if both of uops overwrite the same flag;
source operands of the two or more uops are compatible if operands from both of the uops do not overflow the available registers to store the source operands; and
the two or more instructions are adjacent to each other in program order;processing, at an execution logic, the fused uop without unfusing the fused uop; and determining, at a determination logic, whether processing of the fused uop results in a trap, assist, or fault condition, wherein if no trap, assist, or fault condition occurs, the fused uop is retired. - View Dependent Claims (18, 19, 20, 21, 22, 23)
-
-
24. A non-transitory machine-readable medium having stored thereon a set of instructions, which if executed by a machine cause the machine to:
-
decode two or more instructions into at least two micro-operations (uops); store the at least two uops; fuse the at least two uops into a single fused uop that is to represent the complete function of the at least two uops, wherein the at least two uops are to be fused into the single fused uop in response to a determination that the at least two uops are compatible for fusion, wherein;
two or more uops are considered to be compatible for fusion if an output of one uop is to source one or more uops to be fused;
registers accessed by the two or more uops are compatible if they have the same destination register for the two or more uops;
flag destinations of the two or more uops are compatible if both of uops overwrite the same flag;
source operands of the two or more uops are compatible if operands from both of the uops do not overflow the available registers to store the source operands; and
the two or more instructions are adjacent to each other in program order;process the fused uop without unfusing the fused uop; and determine whether processing of the fused uop results in a trap, assist, or fault condition, wherein if no trap, assist, or fault condition occurs, the fused uop is retired. - View Dependent Claims (25, 26, 27, 28)
-
Specification