Memory controller for non-sequentially prefetching data for a processor of a computer system
First Claim
1. A method for implementing a non-sequential prefetch of data for a processor of a computer system, comprising:
- storing a plurality of address pairs as leg entries in a table data structure of a memory controller that couples to the processor via a front side bus and couples to a system memory via a system memory bus, the address pairs including a first address and a second address, wherein the first address and the second address are non-sequential as fetched by a processor of a computer system due to a branch instruction execution;
prioritizing the address pairs in accordance with a frequency of use for each of the address pairs;
accessing system memory and storing a plurality of cache lines corresponding to the address pairs in a prefetch cache; and
upon a cache hit during a subsequent access by the processor, decrementing a confidence value upon a hit on the corresponding leg entry; and
incrementing the confidence value when there is no hit on the corresponding leg entry and a hit on the second address transferring data from the cache lines stored in the prefetch cache to the processor.
1 Assignment
0 Petitions
Accused Products
Abstract
A memory controller for non-sequentially prefetching data for a processor of a computer system. The memory controller performs a method including the step of storing a plurality of address pairs in a table data structure, wherein the address pairs include a first address and a second address. The first address and the second address are non-sequential as fetched by a processor of a computer system. The address pairs are prioritized in accordance with a frequency of use for each of the address pairs. A system memory of the computer system is accessed and a plurality of cache lines corresponding to the address pairs are stored in a prefetch cache. Upon a cache hit during a subsequent access by the processor, data is transferred from the cache lines stored in the prefetch cache to the processor.
-
Citations
22 Claims
-
1. A method for implementing a non-sequential prefetch of data for a processor of a computer system, comprising:
-
storing a plurality of address pairs as leg entries in a table data structure of a memory controller that couples to the processor via a front side bus and couples to a system memory via a system memory bus, the address pairs including a first address and a second address, wherein the first address and the second address are non-sequential as fetched by a processor of a computer system due to a branch instruction execution; prioritizing the address pairs in accordance with a frequency of use for each of the address pairs; accessing system memory and storing a plurality of cache lines corresponding to the address pairs in a prefetch cache; and upon a cache hit during a subsequent access by the processor, decrementing a confidence value upon a hit on the corresponding leg entry; and
incrementing the confidence value when there is no hit on the corresponding leg entry and a hit on the second address transferring data from the cache lines stored in the prefetch cache to the processor. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A device for implementing a non-sequential prefetch of data for a processor of a computer system, comprising:
-
a memory controller for interfacing the processor to a system memory via a system memory bus, wherein the memory controller couples to the processor via a front side bus; a prefetch cache included in the memory controller, the prefetch cache configured to access the system memory to retrieve and store a plurality of cache lines; and a leg table data structure included in the memory controller, the leg table data structure for storing a plurality of legs, wherein each of the legs includes a first address and a second address non-sequential to the first address due to a branch instruction execution; the legs having a priority in accordance with a frequency of use for each of the legs; and the legs controlling the storing of the plurality of cache lines in the prefetch cache, such that upon a cache hit during a subsequent access by the processor, decrementing a confidence value upon a hit on the corresponding leg; and
incrementing the confidence value when there is no hit on the corresponding leg and a hit on the second address data is transferred from the cache lines stored in the prefetch cache to the processor. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A system for implementing non-sequential data prefetching for a processor of a computer system, comprising:
-
a processor; a system memory; a prefetch cache configured to access the system memory to retrieve and store a plurality of cache lines, wherein the prefetch cache couples to the processor via a front side bus and couples to the system memory via a system memory bus; and a memory controller coupled to the prefetch cache, the processor and the system memory, the memory controller for interfacing the processor to the system memory and implementing a method for non-sequential prefetching, comprising; storing a plurality of legs in a leg table data structure, the legs including a first address and a second address, wherein the first address and the second address are non-sequential as fetched by a processor of a computer system due to a branch instruction execution; prioritizing the legs in accordance with a frequency of use for each of the legs; accessing system memory and storing a plurality of cache lines corresponding to the legs in a prefetch cache; and upon a cache hit during a subsequent access by the processor, decrementing a confidence value upon a hit on the corresponding leg; and
incrementing the confidence value when there is no hit on the corresponding leg and a hit on the second address transferring data from the cache lines stored in the prefetch cache to the processor. - View Dependent Claims (18, 19, 20, 21, 22)
-
Specification