Claims
- 1. An instruction-set-aware method for reducing transitions on an irredundant address bus, comprising:
receiving a first address on an irredundant address bus; retrieving an instruction from a memory location indicated by the first address; transmitting the instruction on a data bus; determining a category of the instruction; and predicting a second address based on the first address, the instruction, and the category of the instruction.
- 2. The method of claim 1, wherein the category of the instruction is control flow instruction and the second address indicates a memory location of a second instruction.
- 3. The method of claim 1, wherein the category of the instruction is memory access instruction and the second address is a data address.
- 4. The method of claim 2, further comprising:
determining a type of control flow instruction, the type of control flow instruction being a selected one of branch, jump, jump-register, and jump-and-link; and wherein predicting the second address is further based on the determined type of control flow instruction.
- 5. The method of claim 4, wherein the type of control flow instruction is jump, and predicting the second address comprises:
extracting an offset from the instruction; and adding the offset to the first address to predict the second address.
- 6. The method of claim 5, further comprising pushing a return address onto a memory stack.
- 7. The method of claim 6, wherein the instruction is a first instruction and the method further comprises:
retrieving a second instruction, wherein the second instruction is a control flow instruction and wherein the type of the second instruction is jump-register; retrieving the return address off the memory stack; predicting a third address based on the retrieved return address; and in response to receiving a fourth address on the address bus:
replacing the predicted third address with the fourth address; and returning the retrieved return address to the stack.
- 8. The method of claim 4, wherein the type of control flow instruction is branch, and predicting a second address comprises:
extracting an offset from the instruction; and adding the offset to the first address to predict the second address.
- 9. The method of claim 8, wherein, in response to receiving a branch-not-taken message, the method further comprises:
adding one to the first address; and replacing the predicted second address with the updated first address.
- 10. The method of claim 3, further comprising:
loading a shadow register file with values from a plurality of actual registers, wherein the shadow register file comprises a plurality of shadow registers; and wherein predicting the second address is further based on the values stored in the shadow register file.
- 11. The method of claim 10, wherein the second address is predicted using displaced addressing.
- 12. The method of claim 11, wherein loading the shadow register file comprises:
extracting an offset from the instruction; subtracting the offset from the first address to determine a value; extracting a register identifier from the instruction, wherein the register identifier identifies one of the plurality of actual registers; linking one of the shadow registers to the identified actual register based on the register identifier; and storing the value in the linked shadow register.
- 13. The method of claim 12, wherein the plurality of shadow registers is a subset of the plurality of actual registers used by a microprocessor.
- 14. The method of claim 13, further comprising updating a saturation counter to determine a subset of the actual registers to link to shadow registers in the shadow register file.
- 15. The method of claim 11, wherein predicting the second address comprises:
extracting an offset from the instruction; extracting a register identifier from the instruction, wherein the register identifier identifies one of a plurality of actual registers; extracting a value from one of the shadow registers based on the register identifier; and adding the offset to the value to predict the second address.
- 16. The method of claim 15, wherein, in response to receiving an invalid message, the method further comprises:
receiving a fourth address on the address bus; and replacing the predicted second address with the fourth address.
- 17. An instruction-set-aware prediction module for reducing transitions on an address bus comprising:
an input operable to receive a first address on an address bus; an instruction-set-aware operable to retrieve an instruction from a memory location indicated by the first address and to determine a category of the instruction; an output operable to transmit the instruction on a data bus; and a calculation/prediction unit operable to predict a second address based, at least in part, on the first address, the instruction, and the category of the instruction.
- 18. The prediction module of claim 17, wherein the category of the instruction is control flow instruction and the second address indicates a memory location of a second instruction.
- 19. The prediction module of claim 17, wherein the category of the instruction is memory access instruction and the second address is a data address.
- 20. The prediction module of claim 18, wherein the instruction-set-aware unit is further operable to determine a type of control flow instruction, the type of control flow instruction being a selected one of branch, jump, jump-register, and jump-and-link and wherein the calculation/prediction unit is further operable to predict the second address based on the determined type of control flow instruction.
- 21. The prediction module of claim 20, wherein the type of control flow instruction is jump and the calculation/prediction unit is further operable to extract an offset from the instruction and add the offset to the first address to predict the second address.
- 22. The prediction module of claim 21, wherein the calculation/prediction unit is further operable to push the first address onto a memory stack.
- 23. The prediction module of claim 22, wherein the instruction is a first instruction and the calculation/prediction unit is further operable to receive a second instruction, wherein the second instruction is a control flow instruction and wherein the type of the second instruction is jump-register, to retrieve the first address off the stack, to predict a third address based on the retrieved return address, and in response to receiving a fourth address on the address bus, to replace the predicted third address with the fourth address and to return the retrieved return address to the stack.
- 24. The prediction module of claim 20, wherein the type of control flow instruction is branch and the calculation/prediction unit is further operable to extract an offset from the instruction and add the offset to the first address to predict the second address.
- 25. The prediction module of claim 24, wherein, in response to receiving a branch-not-taken message, the calculation/prediction unit is further operable to add one to the first address and replace the predicted second address with the updated first address.
- 26. The prediction module of claim 19, further comprising:
a shadow register file, wherein the shadow register file comprises a plurality of shadow registers, each shadow register storing a value from an actual register; and wherein the calculation/prediction unit is further operable to predict the second address is based on the values stored in the shadow register file.
- 27. The prediction module of claim 26, wherein the second address is predicted using displaced addressing.
- 28. The prediction module of claim 27, wherein the calculation/prediction unit is further operable to extract an offset from the instruction, to subtract the offset from the first address to determine a third address, to extract a register identifier from the instruction, wherein the register identifier identifies one of the plurality of actual registers, to link one of the shadow registers to the identified actual register based on the register identifier, and to store the third address in the linked shadow register.
- 29. The prediction module of claim 28, wherein the plurality of shadow registers is a subset of the plurality of actual registers used by a microprocessor.
- 30. The prediction module of claim 29, wherein the calculation/prediction unit is further operable to update a saturation counter to determine a subset of the actual registers to link to shadow registers in the shadow register file.
- 31. The prediction module of claim 27, wherein the calculation/prediction unit is further operable to extract an offset from the instruction, to extract a register identifier from the instruction, wherein the register identifier identifies one of a plurality of actual registers, to extract a value from one of the shadow registers based on the register identifier, and to add the offset to the value to predict the second address.
- 32. The prediction module of claim 31, wherein, in response to receiving an invalid message:
the input is further operable to receive a fourth address on the address bus; and the calculation/prediction unit is further operable to replace the predicted second address with the fourth address.
- 33. Logic for reducing transitions on an irredundant address bus, the logic encoded in media and operable to:
receive a first address on an irredundant address bus; retrieve an instruction from a memory location indicated by the first address; transmit the instruction on a data bus; determine a category of the instruction; and predict a second address based on the first address, the instruction, and the category of the instruction.
- 34. The logic of claim 33, wherein the category of the instruction is control flow instruction and the second address indicates a memory location of a second instruction.
- 35. The logic of claim 33, wherein the category of the instruction is memory access instruction and the second address is a data address.
- 36. The logic of claim 34 further operable to:
determine a type of control flow instruction, the type of control flow instruction being a selected one of branch, jump, jump-register, and jump-and-link; and wherein the logic operable to predict the second address is further based on the determined type of control flow instruction.
- 37. The logic of claim 36, wherein the type of control flow instruction is jump, and the logic operable to predict the second address comprises the logic operable to:
extract an offset from the instruction; and add the offset to the first address to predict the second address.
- 38. The logic of claim 37 further operable to push a return address onto a memory stack.
- 39. The logic of claim 38, wherein the instruction is a first instruction and the logic further operable to:
retrieve a second instruction, wherein the second instruction is a control flow instruction and wherein the type of the second instruction is jump-register; retrieve the return address off the memory stack; predict a third address based on the retrieved return address; and in response to receiving a fourth address on the address bus:
replace the predicted third address with the fourth address; and return the retrieved return address to the stack.
- 40. The logic of claim 36, wherein the type of control flow instruction is branch, and the logic operable to predict a second address comprises the logic operable to:
extract an offset from the instruction; and add the offset to the first address to predict the second address.
- 41. The logic of claim 40, wherein, in response to receiving a branch-not-taken message, the logic further operable to add one to the first address and replace the predicted second address with the updated first address.
- 42. The logic of claim 35 further operable to:
load a shadow register file with values from a plurality of actual registers, wherein the shadow register file comprises a plurality of shadow registers; and wherein predict the second address is further based on the value stored in the shadow register file.
- 43. The logic of claim 42, wherein the second address is predicted using displaced addressing.
- 44. The logic of claim 43, wherein the logic operable to load the shadow register file comprises the logic operable to:
extract an offset from the instruction; subtract the offset from the first address to determine a value; extract a register identifier from the instruction, wherein the register identifier identifies one of the plurality of actual registers; link one of the shadow registers to the identified actual register based on the register identifier; and store the value in the linked shadow register.
- 45. The logic of claim 44, wherein the plurality of shadow registers is a subset of the plurality of actual registers used by a microprocessor.
- 46. The logic of claim 45 further operable to update a saturation counter to determine a subset of the actual registers to link, to shadow registers in the shadow register file.
- 47. The logic of claim 43, wherein the logic operable to predict the second address comprises the logic operable to:
extract an offset from the instruction; extract a register identifier from the instruction, wherein the register identifier identifies one of a plurality of actual registers; extract a value from one of the shadow registers based on the register identifier; and add the offset to the value to predict the second address.
- 48. The logic of claim 47, wherein, in response to receiving an invalid message, the logic further operable to:
receive a fourth address on the address bus; and replace the predicted second address with the fourth address.
- 49. An instruction-set-aware prediction module for reducing transitions on an address bus comprising:
means for receiving a first address on an address bus; means for retrieving an instruction from a memory location indicated by the first address; means for transmitting the instruction on a data bus; means for determining a category of the instruction; and means for predicting a second address based on the first address, the instruction, and the category of the instruction.
- 50. An instruction-set-aware method for reducing transitions on an irredundant address bus, comprising:
receiving a first address on an irredundant address bus; retrieving an instruction from a memory location indicated by the first address; transmitting the instruction on a data bus; determining a category of the instruction; in response to the category of the instruction being control flow instruction, determining a type of control flow instruction, the type of control flow instruction being a selected one of branch, jump, jump-register, and jump-and-link; and in response to the type of control flow instruction being jump:
extracting an offset from the instruction; and adding the offset to the first address to predict a second address; in response to the type of control flow instruction being branch:
extracting an offset from the instruction; and adding the offset to the first address to predict the second address; and in response to receiving a branch-not-taken message:
adding one to the first address; and replacing the predicted second address with the updated first address.
RELATED APPLICATIONS
[0001] This application is a continuation-in-part of U.S. patent application Ser. No. 10/162,010 filed Jun. 3, 2002, entitled “REDUCTION OF BUS SWITCHING ACTIVITY,” which claims the priority under 35 U.S.C. §119 of provisional application serial No. 60/297,614 filed Jun. 11, 2001, entitled “ALBORZ: ADDRESS LEVEL BUS POWER OPTIMIZATION,” and provisional application serial No. 60/298,233 filed Jun. 13, 2001, entitled “METHOD AND APPARATUS FOR BUS ENCODING.”
Provisional Applications (2)
|
Number |
Date |
Country |
|
60297614 |
Jun 2001 |
US |
|
60298233 |
Jun 2001 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
10162010 |
Jun 2002 |
US |
Child |
10342418 |
Jan 2003 |
US |