Reconfigurable processing unit
AssigneeFacebook, Inc.
InventorAhmad Byagowi
Life of this patent
Estimating the term…
Abstract
Instructions to be executed by a processing unit that is configured to handle a predefined instruction set are prefetched. A set of instructions in the prefetched instructions to be combined as a macro instruction to be executed by a reconfigurable logic unit is identified. The macro instruction is issued to the reconfigurable logic unit rather than issuing the identified set of instructions to the processing unit.
Claims20
A central processing unit, comprising:
- a processing unit configured to handle a predefined instruction set;
- a reconfigurable logic unit configured to handle a specialized instruction set including a first macro instruction, wherein the first macro instruction has been identified for inclusion in the specialized instruction set based on a determination of frequencies of occurrence of patterns of instructions belonging to the predefined instruction set based on use of a Poincaré map that plots sequences of instructions using a first axis representing a first order instruction in a specific sequence, a second axis representing a second order instruction in the specific sequence, and third axis representing a third order instruction in the specific sequence;
- and
- a control unit configured to:
- prefetch instructions to be executed;
- identify sets of instructions included in the prefetched instructions, wherein each set included in the identified sets is able to be replaced with a corresponding macro instruction for potential execution by the reconfigurable logic unit;
- identify a sequence length of each of the identified sets of instructions and select a set of instructions in the identified sets determined to have a longest sequence length for replacement with the first macro instruction to be executed by the reconfigurable logic unit;
- after selecting the set of instructions determined to have the longest sequence length, identify a next longest set of instructions in the sets of instructions for replacement with a second macro instruction to be executed by the reconfigurable logic unit;
- and
- issue the first macro instruction and the second macro instruction to the reconfigurable logic unit rather than issuing the corresponding replaced instructions to the processing unit.
A method, comprising:
- prefetching instructions to be executed by a processing unit that is configured to handle a predefined instruction set;
- identifying sets of instructions included in the prefetched instructions, wherein each set included in the identified sets is able to be replaced with a corresponding macro instruction for potential execution by a reconfigurable logic unit;
- identifying a sequence length of each of the identified sets of instructions and selecting a set of instructions in the identified sets determined to have a longest sequence length for replacement with a first macro instruction to be executed by the reconfigurable logic unit;
- after selecting the set of instructions determined to have the longest sequence length, identifying a next longest set of instructions in the sets of instructions for replacement with a second macro instruction to be executed by the reconfigurable logic unit;
- and
- issuing the first macro instruction and the second macro instruction to the reconfigurable logic unit rather than issuing the corresponding replaced instructions to the processing unit wherein the reconfigurable logic unit is configured to handle a specialized instruction set including the first macro instruction, and the first macro instruction has been identified for inclusion in the specialized instruction set based on a determination of frequencies of occurrence of patterns of instructions belonging to the predefined instruction set based on use of a Poincare map that plots sequences of instructions using a first axis representing a first order instruction in a specific sequence, a second axis representing a second order instruction in the specific sequence, and third axis representing a third order instruction in the specific sequence.
A computer program product, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
- prefetching instructions to be executed by a processing unit that is configured to handle a predefined instruction set;
- identifying sets of instructions included in the prefetched instructions, wherein each set included in the identified sets is able to be replaced with a corresponding macro instruction for potential execution by a reconfigurable logic unit;
- identifying a sequence length of each of the identified sets of instructions and selecting a set of instructions in the identified sets determined to have a longest sequence length for replacement with a first macro instruction to be executed by the reconfigurable logic unit;
- after selecting the set of instructions determined to have the longest sequence length, identifying a next longest set of instructions in the sets of instructions for replacement with a second macro instruction to be executed by the reconfigurable logic unit;
- and
- issuing the first macro instruction and the second macro instruction to the reconfigurable logic unit rather than issuing the corresponding replaced instructions to the processing unit;
- wherein the reconfigurable logic unit is configured to handle a specialized instruction set including the first macro instruction, and the first macro instruction has been identified for inclusion in the specialized instruction set based on a determination of frequencies of occurrence of patterns of instructions belonging to the predefined instruction set based on use of a Poincaré map that plots sequences of instructions using a first axis representing a first order instruction in a specific sequence, a second axis representing a second order instruction in the specific sequence, and third axis representing a third order instruction in the specific sequence.
Dependencies are inferred from the claim text.