Claims
- 1. An apparatus for allocating one or more resources to an instruction, the apparatus comprising:
a sequence generator that generates one or more resource identifiers using at least a portion of a pseudorandom sequence, each resource identifier corresponding to one of the resources; and a resource identifier selector coupled to the sequence generator, the resource identifier selector selecting one or more of the resource identifiers for allocation to the instruction.
- 2. The apparatus as recited in claim 1, wherein the resource identifier selector determines how many resource identifiers, if any, are required by the instruction based on an instruction requirements signal.
- 3. The apparatus as recited in claim 1, further comprising a buffer including two or more buffer entries wherein each resource comprises one of the buffer entries.
- 4. The apparatus as recited in claim 3, wherein the buffer comprises a reorder buffer.
- 5. The apparatus as recited in claim 1, wherein the resource identifier selector further comprises:
one or more comparators coupled to the resource identifier selection circuit and configured to compare a selected resource identifier to an allocation bound and issue a control signal in response to the comparison; and a selector coupled to the one or more comparators and the resource identifier selection circuit.
- 6. The apparatus as recited in claim 1, wherein the resource identifier selector further comprises:
one or more comparators coupled to the resource identifier selection circuit and configured to compare a selected resource identifier to an allocation bound and issue a control signal in response to the comparison; and a variable shifter coupled to the one or more comparators and the resource identifier selection circuit.
- 7. The apparatus as recited in claim 1, wherein the resource identifier selector further comprises:
one or more comparators coupled to the resource identifier selection circuit and configured to compare a selected resource identifier to an allocation bound and issue a control signal in response to the comparison; a selector coupled to the one or more comparators and the resource identifier selection circuit; and a highest identifier allocation circuit coupled to the selector.
- 8. The apparatus as recited in claim 1, wherein the sequence generator further comprises:
a logic circuit coupled to the resource identifier selector; and a storage array coupled to the logic circuit and the resource identifier selector.
- 9. The apparatus as recited in claim 1, wherein the sequence generator further comprises a storage array coupled to the resource identifier selector.
- 10. The apparatus as recited in claim 1, wherein the sequence generator further comprises a logic circuit coupled to the resource identifier selector.
- 11. The apparatus as recited in claim 1, further comprising an instruction decode unit and wherein the resource identifier selector generates a decoder stall signal issued to the instruction decode unit.
- 12. The apparatus as recited in claim 1, wherein the portion of a pseudorandom sequence comprises a first resource identifier from within the pseudorandom sequence.
- 13. The apparatus as recited in claim 12, wherein the resource identifier selection circuit comprises means for generating a second resource identifier from within the pseudorandom sequence based upon the first resource identifier.
- 14. The apparatus as recited in claim 1, wherein the sequence generation circuit comprises a storage array and the portion of the pseudorandom sequence comprises a portion of each resource identifier within the pseudorandom sequence stored as elements within the storage array.
- 15. The apparatus as recited in claim 14, wherein the portion of each resource identifier within the pseudorandom sequence comprises a least significant bit of each resource identifier within the pseudorandom sequence.
- 16. The apparatus as recited in claim 14, wherein the resource identifier selection circuit comprises a variable shifter configured to shift elements of the storage array and the resource identifier selection circuit is configured to index the elements within the storage array.
- 17. The apparatus as recited in claim 1, wherein the sequence generation circuit comprises a logic circuit and the portion of a pseudorandom sequence comprises a portion of each resource identifier within the pseudorandom sequence stored as elements within the storage array.
- 18. The apparatus as recited in claim 17, wherein the portion of each resource identifier within the pseudorandom sequence comprises a least significant bit of each resource identifier within the pseudorandom sequence.
- 19. The apparatus as recited in claim 17, wherein the resource identifier selection circuit comprises a selector and a circuit to determine the highest identifier allocated configured to shift elements of the storage array and the resource identifier selection circuit is configured to index the elements within the storage array.
- 20. A method for allocating one or more resources to an instruction, the method comprising the steps of:
generating one or more resource identifiers using at least a portion of a pseudorandom sequence, each resource identifier corresponding to one of the resources; and selecting one or more of the resource identifiers for allocation to the instruction.
- 21. The method as recited in claim 20, further comprising the step of determining how many resource identifiers, if any, are required by the instruction based on an instruction requirements signal.
- 22. The method as recited in claim 20, further comprising the step of comparing a selected resource identifier to an allocation bound and issuing a control signal in response to the comparison.
- 23. The method recited in claim 20, wherein the portion of the pseudorandom sequence comprises a portion of each resource identifier within the pseudorandom sequence stored as elements within a storage array.
- 24. The method as recited in claim 23, wherein the portion of each resource identifier within the pseudorandom sequence comprises a least significant bit of each resource identifier within the pseudorandom sequence.
- 25. The method as recited in claim 20, further comprising:
storing the portion of the pseudorandom sequence as elements within a storage array; and the selecting step comprises the steps of shifting the elements of the storage array and indexing the elements of the storage array in response to the shifting.
- 26. The method as recited in claim 20, wherein the selecting step comprises the steps of:
identifying a most recently associated resource identifier from within the pseudorandom sequence; and selecting a resource identifier from within the pseudorandom sequence based upon the most recently associated resource identifier.
- 27. The method as recited in claim 20, wherein the selecting step comprises the steps of:
determining a resource requirement of the instruction; and associating the selected resource identifier with the instruction in response to the determination.
- 28. The method as recited in claim 20, wherein the selecting step comprises the steps of:
comparing the selected resource identifier to an allocation bound to determine whether a resource corresponding to the selected resource identifier is allocatable; and associating the selected resource identifier with the instruction in response to the determination.
- 29. The method as recited in claim 28, further comprising the step of modifying the allocation bound in response to a deallocation of a resource.
- 30. The method as recited in claim 28, further comprising the step of generating an instruction decode stall signal in response to a determination that the resource corresponding to the selected resource identifier is not allocatable.
- 31. A system comprising:
a memory storage device; a bus coupled to the memory storage device; a processor coupled to the bus, comprising a resource allocator for allocating one or more resources to an instruction; and the resource allocator comprising:
a sequence generator that generates one or more resource identifiers using at least a portion of a pseudorandom sequence, each resource identifier corresponding to one of the resources; and a resource identifier selector coupled to the sequence generator, the resource identifier selector selecting one or more of the resource identifiers for allocation to the instruction.
- 32. The system as recited in claim 31, wherein the resource identifier selector further comprises:
one or more comparators coupled to the resource identifier selection circuit and configured to compare a selected resource identifier to an allocation bound and issue a control signal in response to the comparison; and a selector coupled to the one or more comparators and the resource identifier selection circuit.
- 33. The system as recited in claim 31, wherein the resource identifier selector further comprises:
one or more comparators coupled to the resource identifier selection circuit and configured to compare a selected resource identifier to an allocation bound and issue a control signal in response to the comparison; and a variable shifter coupled to the one or more comparators and the resource identifier selection circuit.
- 34. The system as recited in claim 31, wherein the resource identifier selector further comprises:
one or more comparators coupled to the resource identifier selection circuit and configured to compare a selected resource identifier to an allocation bound and issue a control signal in response to the comparison; a selector coupled to the one or more comparators and the resource identifier selection circuit; and a highest identifier allocation circuit coupled to the selector.
- 35. The system as recited in claim 31, wherein the sequence generator further comprises:
a logic circuit coupled to the resource identifier selector; and a storage array coupled to the logic circuit and the resource identifier selector.
- 36. The system as recited in claim 31, wherein the sequence generator further comprises a storage array coupled to the resource identifier selector.
- 37. The system as recited in claim 31, wherein the sequence generator further comprises a logic circuit coupled to the resource identifier selector.
TECHNICAL FIELD OF THE INVENTION
[0001] This application is a conversion from and claims priority of U.S. Provisional Application No. 60/172,655, filed on Dec. 20, 1999.
[0002] The present invention relates in general to the field of computer systems, and more particularly, to a system, method and apparatus for allocating hardware resources within a computer processor using pseudorandom sequences.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60172655 |
Dec 1999 |
US |