Techniques for Multi-Level Indirect Data Prefetching
First Claim
1. A method of performing multi-level indirect data prefetching, comprising:
- determining a first memory address of a pointer associated with a data prefetch instruction;
fetching a first data block that includes content at the first memory address;
determining a second memory address from the content at the first memory address;
fetching a second data block that includes content at the second memory address;
determining a third memory address from the content at the second memory address; and
fetching a third data block that includes another pointer or data at the third memory address.
2 Assignments
0 Petitions
Accused Products
Abstract
A technique for performing data prefetching using multi-level indirect data prefetching includes determining a first memory address of a pointer associated with a data prefetch instruction. Content that is included in a first data block (e.g., a first cache line of a memory) at the first memory address is then fetched. A second memory address is then determined based on the content at the first memory address. Content that is included in a second data block (e.g., a second cache line) at the second memory address is then fetched (e.g., from the memory or another memory). A third memory address is then determined based on the content at the second memory address. Finally, a third data block (e.g., a third cache line) that includes another pointer or data at the third memory address is fetched (e.g., from the memory or the another memory).
29 Citations
26 Claims
-
1. A method of performing multi-level indirect data prefetching, comprising:
-
determining a first memory address of a pointer associated with a data prefetch instruction; fetching a first data block that includes content at the first memory address; determining a second memory address from the content at the first memory address; fetching a second data block that includes content at the second memory address; determining a third memory address from the content at the second memory address; and fetching a third data block that includes another pointer or data at the third memory address. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method of performing multi-level indirect data prefetching, comprising:
-
determining a first memory address of a pointer associated with a data prefetch instruction; fetching a first data block that includes content at the first memory address; adding a first offset to the content at the first memory address to provide a first offset memory address; determining a second memory address based on the first offset memory address; fetching a second data block that includes content at the second memory address; adding a second offset to the content at the second memory address to provide a second offset memory address; determining a third memory address based on the second offset memory address; and fetching a third data block that includes another pointer or data at the third memory address. - View Dependent Claims (9, 10, 11, 12)
-
-
13. A method of performing multi-level indirect data prefetching, comprising:
-
determining a first memory address of a pointer associated with a data prefetch instruction; fetching a first data block that includes content at the first memory address; determining a second memory address based on content at the first memory address; adding an offset to the second memory address to provide a second offset memory address; fetching a second data block that includes content at the second offset memory address; determining a third memory address based on content at the second offset memory address; adding an offset to the third memory address to provide an offset third memory address; and fetching a third data block that includes another pointer or data at the offset third memory address. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20)
-
-
21. A processor comprising:
-
at least one register configured to store information associated with a data prefetch instruction; and a load store unit coupled to the at least one register, wherein the load store unit is configured to; determine a first memory address of a pointer associated with the data prefetch instruction; initiate fetching of a first data block that includes content at the first memory address; determine a second memory address from the content at the first memory address; initiate fetching of a second data block that includes content at the second memory address; determine a third memory address from the content at the second memory address; and initiate fetching of a third data block that includes another pointer or data at the third memory address. - View Dependent Claims (22)
-
-
23. A processor comprising:
-
at least one register configured to store information associated with a data prefetch instruction; and a load store unit coupled to the at least one register, wherein the load store unit is configured to; determine a first memory address of a pointer associated with the data prefetch instruction; initiate fetching of a first data block that includes content at the first memory address; add a first offset to the content at the first memory address to provide a first offset memory address; determine a second memory address based on the first offset memory address; initiate fetching of a second data block that includes content at the second memory address; add a second offset to the content at the second memory address to provide a second offset memory address; determine a third memory address based on the second offset memory address; and initiate fetching of a third data block that includes another pointer or data at the third memory address. - View Dependent Claims (24)
-
-
25. A processor comprising:
-
a memory controller; and a load store unit coupled to the memory controller, wherein the load store unit is configured to determine a first memory address of a pointer associated with a data prefetch instruction, initiate fetching of a first data block that includes content at the first memory address, and determine a second memory address based on content at the first memory address, and wherein the memory controller is configured to add an offset to the second memory address to provide a second offset memory address and fetch a second data block that includes content at the second offset memory address, where the load store unit is further configured to determine a third memory address based on content at the second offset memory address, and where the memory controller is further configured to add an offset to the third memory address to provide an offset third memory address and fetch a third data block that includes another pointer or data at the offset third memory address. - View Dependent Claims (26)
-
Specification