Apparatus and method for creating instruction bundles in an explicitly parallel architecture
First Claim
1. A method in a data processing system for creating instruction bundles, comprising:
- receiving an instruction group having one or more instructions;
automatically determining a number of each possible type of instruction in the one or more instructions of the instruction group; and
dynamically creating one or more instruction bundles based on the number of each possible type of instruction in the one or more instructions of the instruction group.
1 Assignment
0 Petitions
Accused Products
Abstract
An apparatus and method for creating instruction groups for explicitly parallel architectures is provided. The apparatus and method accept instruction groups as input and determine a number of each possible type of instruction in the instruction group. Based on the number of each possible type of instruction in the instruction group, instruction bundling is performed such that the instructions in the instruction group are bundled into efficiently executed bundles. The instruction bundling further accommodates intra-bundle stop bundles in the event that more efficient bundles are not possible. The instruction bundling is performed based on a most restrictive instruction type placement first and proceeds to less restrictive instruction type placement.
-
Citations
36 Claims
-
1. A method in a data processing system for creating instruction bundles, comprising:
-
receiving an instruction group having one or more instructions;
automatically determining a number of each possible type of instruction in the one or more instructions of the instruction group; and
dynamically creating one or more instruction bundles based on the number of each possible type of instruction in the one or more instructions of the instruction group. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. An apparatus in a data processing system for creating instruction bundles, comprising:
-
means for receiving an instruction group having one or more instructions;
means for automatically determining a number of each possible type of instruction in the one or more instructions of the instruction group; and
means for dynamically creating one or more instruction bundles based on the number of each possible type of instruction in the one or more instructions of the instruction group; and
means for dynamically creating one or more instruction bundles based on the number of each possible type of instruction in the one or more instructions of the instruction group, wherein the means for creating one or more instruction bundles operates in view of one or more of the following rules;
1) instructions of the same instruction type will preserve there original order;
2) branches will normally appear only in the final bundle of an instruction group;
3) for architectures where a number of M execution units is equal or less than a number of concurrent bundles, MM templates will only be used when there are three or fewer instructions remaining in the group;
4) instructions are taken in order of their flexibility in terms of where that instruction can be placed in the available bundle types; and
5) MBB and BBB templates are avoided when only a single B instruction remains. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. A computer program product in a computer readable medium for creating instruction bundles, comprising:
-
first instructions for receiving an instruction group having one or more instructions;
second instructions for automatically determining a number of each possible type of instruction in the one or more instructions of the instruction group; and
third instructions for dynamically creating one or more instruction bundles based on the number of each possible type of instruction in the one or more instructions of the instruction group, wherein the third instructions for creating one or more instruction bundles are executed in view of one or more of the following rules;
1) instructions of the same instruction type will preserve there original order;
2) branches will normally appear only in the final bundle of an instruction group;
3) for architectures where a number of M execution units is equal or less than a number of concurrent bundles, MM templates will only be used when there are three or fewer instructions remaining in the group;
4) instructions are taken in order of their flexibility in terms of where that instruction can be placed in the available bundle types; and
5) MBB and BBB templates are avoided when only a single B instruction remains. - View Dependent Claims (26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36)
-
Specification