Claims
- 1. A method of managing a clocked instruction flow subject to issue and fetch constraints in plurality of instruction latches which receive instructions, including, from selected memory locations, said method comprising the steps of:
- checking whether a taken control transfer instruction is latched for issue;
- checking whether a taken control transfer instruction is fetched;
- checking whether a fetched taken control transfer instruction will not be in the next issue cycle;
- checking whether a taken control transfer instruction is latched for issue in the current cycle;
- determining the number of instructions fetched and the number of instructions issued in the current cycle;
- adjusting the fetch program counter in relationship to the number of issued instructions and the number of fetched instructions, if there is no taken control transfer instruction being fetched or latched for issue;
- adjusting the fetch program counter in relationship to the number of issued instructions and the number of fetched instructions, if no taken control transfer instruction is latched for issue, and a taken control transfer instruction is fetched, or a fetched taken control transfer instruction is not latched for issue;
- adjusting the fetch program counter to the target program counter of the first taken branch in the fetch cycle, if there is no taken control transfer instruction in the issue cycle, there is a predict taken branch in the fetch cycle, and there is a predict taken branch in the fetch cycle which will be loaded for issue;
- adjusting the fetch program counter to the target program counter of the first taken branch in the issue cycle, if there is a taken control transfer instruction in the issue cycle, and there is a predict taken branch latched for issue which will not be issued in this cycle;
- adjusting the fetch program counter to the current cycle fetch program count plus the fetch count, if there is a taken control transfer instruction in the issue cycle but not in the fetch cycle, and a taken control transfer instruction which will be latched for issue; and
- adjusting the fetch program counter to the target program counter of the first taken branch in the fetch cycle, if there is a taken control transfer instruction in the issue cycle and in the fetch cycle, and there is a taken control transfer instruction in the issue cycle which will be latched for issue in this cycle.
- 2. The method according to claim 1 wherein the fetch program counter is adjusted according to the relationship:
- FPC.sub.-- D=PC.sub.-- Q+ISSUE.sub.-- CNT+min{EI, �NC.sub.-- Q! NV.sub.-- Q+FETCH.sub.-- CNT-ISSUE.sub.-- CNT}, where: EI=k means the number of issue latch entries, and NV.sub.-- Q is the number of instructions in the issue latch which are valid, i.e., 0<=nv.sub.-- q<=k, where k is the number of a particular issue latch entry, wherein, "PC.sub.-- Q" means the current program counter (PC) value in the issue cycle; "FPC.sub.-- Q" means the fetch program counter value (FPC) in the current cycle; "FETCH.sub.-- CNT" is the number of instructions which are fetched, i.e., 0<=FETCH.sub.-- CNT<=j; "ISSUE.sub.-- CNT" means the number of instructions which are issued, i.e., 0<=issue.sub.-- cnt<=min{i, NV.sub.-- Q}; and "NV.sub.-- D" is the number of instructions which will be valid in the next cycle.
- 3. The method according to claim 1 wherein the fetch program counter is adjusted according to the relationship:
- FPC.sub.-- D=PC.sub.-- Q+min{EI+ISSUE.sub.-- CNT, �NV+Q!NV.sub.-- Q+FETCH.sub.-- CNT}, where: EI=k means the number of issue latch entries, and NV.sub.-- Q is the number of instructions in the issue latch which are valid, i.e., 0<=nv.sub.-- q<=k, where k is the number of issue latch entries, wherein, "PC.sub.-- Q" means the current program counter (PC) value in the issue cycle; "FPC.sub.-- Q" means the fetch program counter value (FPC) in the current cycle; "FETCH.sub.-- CNT" is the number of instructions which are fetched, i.e., 0<=FETCH.sub.-- CNT<=j; "ISSUE.sub.-- CNT" means the number of instructions which are issued, i.e., 0<=issue.sub.-- cnt<=min{i, NV.sub.-- Q}; and "NV.sub.-- D" is the number of instructions which will be valid in the next cycle.
- 4. A method of managing a clocked instruction flow subject to issue and fetch constraints in plurality of instruction latches which receive instructions, including, from selected memory locations, said method comprising the steps of:
- checking whether a taken control transfer instruction is latched for issue;
- checking whether a taken control transfer instruction is fetched;
- checking whether a fetched taken control transfer instruction will not be in the next issue cycle;
- checking whether a taken control transfer instruction is latched for issue in the current cycle;
- determining the number of instructions fetched and the number of instructions issued in the current cycle;
- adjusting the fetch program counter in relationship to the number of issued instructions and the number of fetched instructions, if there are no taken control transfer instructions being fetched or latched for issue, and a taken control transfer instruction is fetched, or a fetched taken control transfer instruction is not latched for issue;
- adjusting the fetch program counter to the target program counter of the first taken branch in the fetch cycle, if there are no taken control transfer instruction being fetched or latched for issue, and a taken control transfer instruction is fetched, or a fetched taken control transfer instruction is latched for issue;
- adjusting the fetch program counter to the target program counter of the second taken branch in the issue cycle, if there are no first branch taken control transfer instruction being fetched but there is a second branch taken control transfer instruction being latched for issue;
- adjusting the fetch program counter to the target program counter of the first taken branch in the issue cycle, if there is a first taken control transfer instruction in the issue cycle, and the first branch in the issue cycle is not issued in the same cycle;
- adjusting the fetch program counter to the current cycle fetch program count plus the fetch count, if there is a taken control transfer instruction in the issue cycle but not in the fetch cycle, and a taken control transfer instruction which will be latched for issue; and
- adjusting the fetch program counter to the target program counter of the first taken branch in the fetch cycle, if there is a taken control transfer instruction in the issue cycle and in the fetch cycle, and there is a taken control transfer instruction in the issue cycle which will be latched for issue in this cycle.
- 5. The method according to claim 4 wherein the fetch program counter is adjusted according to the relationship:
- FPC.sub.-- D=PC.sub.-- ISSUE.sub.-- CNT+min{EI, �NC.sub.-- Q!NV.sub.-- Q+FETCH.sub.-- CN-ISSUE.sub.-- CNT}, where: EI=k means the number of issue latch entries, and NV.sub.-- Q is the number of instructions in the issue latch which are valid, i.e., 0<=nv.sub.-- q<=k, where k is the number of issue latch entries, wherein, "PC.sub.-- Q" means the current program counter (PC) value in the issue cycle; "FPC.sub.-- Q" means the fetch program counter value (FPC) in the current cycle; "FETCH.sub.-- CNT" is the number of instructions which are fetched, i.e., 0<=FETCH.sub.-- CNT<=j; "ISSUE.sub.-- CNT" means the number of instructions which are issued, i.e., 0<=issue.sub.-- cnt<=min{i, NV.sub.-- Q}; and "NV.sub.-- D" is the number of instructions which will be valid in the next cycle.
- 6. The method according to claim 3 wherein the fetch program counter is adjusted according to the relationship:
- FPC.sub.-- D=PC.sub.-- Q+min{EI+ISSUE.sub.-- CNT, �NV+Q!NV.sub.-- Q+FETCH.sub.-- CNT}, where: EI=k means the number of issue latch entries, and NV.sub.-- Q is the number of instructions in the issue latch which are valid, i.e., 0<=nv.sub.-- q<=k, where k is the number of issue latch entries, wherein, "PC.sub.-- Q" means the current program counter (PC) value in the issue cycle; "FPC.sub.-- Q" means the fetch program counter value (FPC) in the current cycle; "FETCH.sub.-- CNT" is the number of instructions which are fetched, i.e., 0<=FETCH.sub.-- CNT<=j; "ISSUE.sub.-- CNT" means the number of instructions which are issued, i.e., 0<=issue.sub.-- cnt<=min{i, NV.sub.-- Q}; and "NV.sub.-- D" is the number of instructions which will be valid in the next cycle.
- 7. A method of managing a clocked instruction flow subject to issue and fetch constraints in plurality of instruction latches which receive instructions, including, from selected memory locations, said method comprising the steps of:
- checking whether a taken control transfer instruction is latched for issue;
- checking whether a taken control transfer instruction is fetched;
- checking whether a fetched taken control transfer instruction will not be in the next issue cycle;
- checking whether a taken control transfer instruction is latched for issue in the current cycle;
- determining the number of instructions fetched and the number of instructions issued in the current cycle;
- adjusting the fetch program counter in relationship to the number of issued instructions and the number of fetched instruction, if there is no first taken control transfer instruction latched for issue, there is no second taken control transfer instruction latched for issue, and no second taken control transfer instruction is fetched;
- adjusting the fetch program counter in relationship to the number of issued instructions and the number of fetched instruction, if there is no first taken control transfer instruction latched for issue, there is no second taken control transfer instruction latched for issue, a second taken control transfer instruction is fetched, and the first control transfer function fetched will not latch to issue;
- adjusting the fetch program counter in relationship to the number of issued instructions and the number of fetched instruction, if there is no first taken control transfer instruction latched for issue, there is no second taken control transfer instruction latched for issue, a second taken control transfer instruction is fetched, a first fetched control transfer instruction includes a non-annulled delay instruction not in a fetch cycle, the first control transfer function fetched will latch to issue, and a first fetched control transfer instruction includes a non-annulled delay instruction not in an issue cycle;
- adjusting the fetch program counter to the target program counter of the first taken branch in the fetch cycle, if there is no first taken control transfer instruction latched for issue, there is no second taken control transfer instruction latched for issue, a second taken control transfer instruction is fetched, a first fetched control transfer instruction includes a non-annulled delay instruction not in a fetch cycle, the first control transfer function fetched will latch to issue, and a first fetched control transfer instruction includes a non-annulled delay instruction not in an issue cycle;
- adjusting the fetch program counter to the target program counter of the first taken branch in the fetch cycle, if there is no first taken control transfer instruction latched for issue, there is no second taken control transfer instruction latched for issue, a second taken control transfer instruction is fetched, and a first fetched control transfer instruction does not include a non-annulled delay instruction not in a fetch cycle;
- adjusting the fetch program counter in relationship to the number of issued instructions and the number of fetched instruction, if there is no first taken control transfer instruction latched for issue, there is a second taken control transfer instruction latched for issue, and a second control transfer instruction latched for issue includes a non-annulled delay instruction which will not be issued;
- adjusting the fetch program counter to the target program counter of the second taken branch in the issue cycle, if there is no first taken control transfer instruction latched for issue, there is a second taken control transfer instruction latched for issue, and a second control transfer instruction latched for issue does not include a non-annulled delay instruction which will not be issued;
- adjusting the fetch program counter in relationship to the number of issued instructions and the number of fetched instruction, if there is a first taken control transfer instruction latched for issue, a first control transfer instruction latched for issue includes a non-annulled delay instruction not latched for issue, or a fetched taken control transfer instruction is not latched for issue;
- adjusting the fetch program counter to the target program counter of the first taken branch in the issue cycle, if there is a first taken control transfer instruction latched for issue, a first control transfer instruction latched for issue does not include a non-annulled delay instruction not latched for issue, or a fetched taken control transfer instruction is not latched for issue, and a first control transfer instruction without a delay instruction in the issue cycle is issued in its current cycle or both the first control transfer instruction and the delay instruction which is not annulled, are issued;
- adjusting the fetch program counter to the current cycle fetch program count plus the fetch count, if there is a first taken control transfer instruction latched for issue, a first control transfer instruction latched for issue does not include a non-annulled delay instruction not latched for issue, no second taken control transfer instruction is fetched, and a first control transfer instruction without a delay instruction in the issue cycle is issued in its current cycle or both the first control transfer instruction and the delay instruction which is not annulled, are issued;
- adjusting the fetch program counter to the current cycle fetch program count plus the fetch count, if there is a first taken control transfer instruction latched for issue, a first control transfer instruction latched for issue does not include a non-annulled delay instruction not latched for issue, a second taken control transfer instruction is fetched, a first fetched control transfer instruction includes a non-annulled delay instruction in a fetch cycle, and a first control transfer instruction without a delay instruction in the issue cycle is issued in its current cycle or both the first control transfer instruction and the delay instruction which is not annulled, are issued; and
- adjusting the fetch program counter to the target program counter of the first taken branch in the fetch cycle, if there is a first taken control transfer instruction latched for issue, a first control transfer instruction latched for issue does not include a non-annulled delay instruction not latched for issue, a second taken control transfer instruction is fetched, a first fetched control transfer instruction includes a non-annulled delay instruction not in a fetch cycle; and a first control transfer instruction without a delay instruction in the issue cycle is issued in its current cycle or both the first control transfer instruction and the delay instruction which is not annulled, are issued.
- 8. The method according to claim 7 wherein the fetch program counter is adjusted according to the relationship:
- FPC.sub.-- D=PC.sub.-- Q+ISSUE.sub.-- CNT+min{EI, �NC.sub.-- Q!NV.sub.-- Q+FETCH.sub.-- CN-ISSUE.sub.-- CNT}, where: EI=k means the number of issue latch entries, and NV.sub.-- Q is the number of instructions in the issue latch which are valid, i.e., 0<=nv.sub.-- q<=k, where k is the number of issue latch entries, wherein, "PC.sub.-- Q" means the current program counter (PC) value in the issue cycle; "FPC.sub.-- Q" means the fetch program counter value (FPC) in the current cycle; "FETCH.sub.-- CNT" is the number of instructions which are fetched, i.e., 0<=FETCH.sub.-- CNT<=j; "ISSUE.sub.-- CNT" means the number of instructions which are issued, i.e., 0<=issue.sub.-- cnt<=min{i, NV.sub.-- Q}; and "NV.sub.-- D" is the number of instructions which will be valid in the next cycle.
- 9. The method according to claim 7 wherein the fetch program counter is adjusted according to the relationship:
- FPC.sub.-- D=PC.sub.-- Q+min{EI+ISSUE.sub.-- CNT, �NV+Q!NV.sub.-- Q+FETCH.sub.-- CNT}, where: EI=k means the number of issue latch entries, and NV.sub.-- Q is the number of instructions in the issue latch which are valid, i.e., 0<=nv.sub.-- q<=k, where k is the number of a particular issue latch entry, wherein, "PC.sub.-- Q" means the current program counter (PC) value in the issue cycle; "FPC.sub.-- Q" means the fetch program counter value (FPC) in the current cycle; "FETCH.sub.-- CNT" is the number of instructions which are fetched, i.e., 0<=FETCH.sub.-- CNT<=j; "ISSUE.sub.-- CNT" means the number of instructions which are issued, i.e., 0<=issue.sub.-- cnt<=min{i, NV.sub.-- Q}; and "NV.sub.-- D" is the number of instructions which will be valid in the next cycle.
RELATED APPLICATIONS
This application is a continuation of U.S. patent application Ser. No. 398,066 filed Mar. 3, 1995 abandoned, having the same title and inventors as the present application.
US Referenced Citations (5)
Continuations (1)
|
Number |
Date |
Country |
Parent |
398066 |
Mar 1995 |
|