Claims
- 1. A processor comprising a prefetch queue that detects request patterns in both an ascending and a descending direction in memory and requests data from a next memory address in the detected direction.
- 2. A prefetch queue, comprising:
a plurality of registers, the registers including a page address portion, a home address portion and a marker field, and a controller.
- 3. The prefetch queue of claim 2, wherein the marker field is populated by a plurality of flag entries, a flag entry in an intermediate position of the flag portion relating to a memory location specified by the contents of the page and home address portions.
- 4. The prefetch queue of claim 3, wherein the controller:
compares a newly received address against contents of the page address portions of the registers, and upon a match, compares the newly received address against contents of the home address portion of a matching register, and when the newly received address differs from the contents of the home address portion of the matching register by a predetermined amount, determining whether a number of flags set in the marker field exceeds a predetermined threshold, if the number of flags exceeds the predetermined threshold, identifying a prefetch direction based upon a difference between the newly received address and the contents of the home address portion of the matching register.
- 5. The prefetch queue of claim 3, wherein the controller:
compares a newly received address against contents of the page address portions of the registers, and upon a match, compares the newly received address against contents of the home address portion of a matching register, and marks a flag in the flag portion of the matching register corresponding to a proximity between the newly received address and the address stored in the matching register.
- 6. The prefetch queue of claim 5, wherein, if a number of flags exceed a predetermined threshold, the controller further causes a prefetch request to be made to a next memory address.
- 7. The prefetch queue of claim 3, wherein the controller:
compares a newly received address against contents of the page address portions of the registers, and in the absence of a match, stores portions of the address in page address portion and home address portion of one of the registers.
- 8. The prefetch queue of claim 3, wherein the controller:
compares a newly received address against contents of the page address portions of the registers, and upon a match, compares the newly received address against contents of the home address portion of a matching register, and when the newly received address differs from the contents of the home address portion of the matching register by a predetermined amount, storing a portion of the newly received address in the home address portion of the matching register and clearing the flag portion thereof.
- 9. A method of prefetching data, comprising:
receiving an address, determining a number of previous read request that are directed to addresses within a predetermined range of the new read request, and if the number exceeds a predetermined threshold, prefetching data from a next address.
- 10. The method of claim 9, wherein the next address is in an ascending direction of memory.
- 11. The method of claim 9, wherein the next address is in a descending direction of memory.
- 12. A method of prefetching data, comprising:
receiving an address, comparing the newly received address to page portions of previously received addresses, on a match, comparing a the newly address to a home address portions of the matching previous read request, if the newly received address is within a predetermined range of the home address portion, determining a number of previous requests directed to addresses in the same range, and if the number of previous requests in the range exceeds a predetermined threshold, prefetching data.
- 13. The method of claim 12, further comprising:
if the newly received address is not within a predetermined range of the home address portion, determining a number of previous requests directed to addresses in the same range, and if the number of previous requests in the range exceeds a predetermined threshold:
determining a prefetch direction based on a difference between the newly received address and the home address portion and prefetching data in the prefetch direction.
- 14. A processor comprising:
a processor core, a bus interface unit, comprising:
an arbiter in communication with the processor core, an internal cache in communication with the arbiter, a transaction queue in communication with the arbiter, a prefetch queue in communication with the arbiter to detect request patterns from the core in both an ascending and a descending direction in memory and request data from a next memory address in the detected direction.
- 15. The processor of claim 14, wherein the prefetch queue comprises:
a plurality of registers, the registers including a page address portion, a home address portion and a flag portion, and a controller.
- 16. The processor of claim 15, wherein the flag portion is populated by a plurality of flag entries and a flag entry in an intermediate position of the flag portion relates to a memory location specified by the contents of the page and home address portions.
- 17. The processor of claim 15, wherein the controller:
compares the page address of a newly received address from a core read request against the contents of the page address portions of the registers, and upon a match, compares the home address of the newly received address against the contents of the home address portion of a matching register, and marks an flag in the flag portion of the matching register corresponding to a proximity between the home address of the newly received address and the home address portion of the matching register.
- 18. The processor of claim 17, wherein, if a number of flags exceed a first predetermined threshold, the controller further causes a prefetch request to be made to a next memory address.
- 19. The processor of claim 15, wherein the controller:
compares the page address of a newly received address from a core read request against the contents of the page address portions of the registers, and in the absence of a match, stores portions of the address in page address portion and home address portion of one of the registers.
- 20. The processor of claim 15, wherein the controller:
compares the page address of a newly received address from a core read request against the contents of the page address portions of the registers, and upon a match, compares the home address of the newly received address against the contents of the home address portion of a matching register, and when the home address of the newly received address differs from the contents of the home address portion of the matching register, storing the home address of the newly received address in the home address portion of the matching register and clearing the flag portion thereof.
- 21. A prefetch queue, comprising a plurality of registers, the registers comprising:
fields for page addresses and for home addresses of stored requests, and an additional marker field populated by a plurality of flag positions, a base flag position corresponding to a memory address identified by data stored in the page address and home address fields and flag positions neighboring the base flag position corresponding to external memory addresses neighboring the memory address identified by data stored in the page address and home address fields.
- 22. The prefetch queue of claim 21, wherein the registers each further comprise a direction flag identifying a prefetch direction established for the respective register.
- 23. The prefetch queue of claim 21, wherein the registers each further comprise a mode flag identifying whether the address stored in respective register is subject to an active prefetch.
RELATED APPLICATIONS
[0001] This application is a continuation-in-part of U.S. patent application Ser. No. 08/999,241, entitled “Prefetch Queue,” filed Dec. 29, 1997, is incorporated herein by reference and may benefit from the priority thereof.
Continuations (2)
|
Number |
Date |
Country |
| Parent |
10230289 |
Aug 2002 |
US |
| Child |
10402983 |
Apr 2003 |
US |
| Parent |
09474012 |
Dec 1999 |
US |
| Child |
10230289 |
Aug 2002 |
US |
Continuation in Parts (1)
|
Number |
Date |
Country |
| Parent |
08999241 |
Dec 1997 |
US |
| Child |
09474012 |
Dec 1999 |
US |