Filtering pre-fetch requests to reduce pre-fetching overhead
AssigneeOracle International Corporation
InventorsTarik Ono, Mark R. Greenstreet
Life of this patent
Estimating the term…
Abstract
The disclosed embodiments provide a system that filters pre-fetch requests to reduce pre-fetching overhead. During operation, the system executes an instruction that involves a memory reference that is directed to a cache line in a cache. Upon determining that the memory reference will miss in the cache, the system determines whether the instruction frequently leads to cache misses. If so, the system issues a pre-fetch request for one or more additional cache lines. Otherwise, no pre-fetch request is sent. Filtering pre-fetch requests based on instructions' likelihood to miss reduces pre-fetching overhead while preserving the performance benefits of pre-fetching.
Claims18
A computer-implemented method for filtering pre-fetch requests to reduce pre-fetching overhead, the method comprising:
- executing an instruction that involves a memory reference which is directed to a memory;
- determining a frequency of cache misses for the instruction from a tracked history of cache misses for the instruction;
- determining a frequency of performance penalties of the cache misses from a tracked history of performance penalties of the cache misses for the instruction;
- when the frequency of cache misses exceeds a threshold, filtering a pre-fetch request that is associated with the instruction;
- and
- otherwise, when the frequency of cache misses does not exceed the threshold:
- when the frequency of performance penalties exceeds a second threshold, causing at least a cache line to be pre-fetched by sending the pre-fetch request;
- and
- otherwise, filtering the pre-fetch request.
A computer system that filters pre-fetch requests to reduce pre-fetching overhead, comprising:
- a processor;
- a cache;
- and
- a memory;
- wherein, while executing an instruction that involves a memory reference which is directed to the memory, the processor is configured to:
- determine a frequency of cache misses for the instruction from a tracked history of cache misses for the instruction;
- determine a frequency of performance penalties of the cache misses from a tracked history of performance penalties of the cache misses for the instruction;
- when the frequency of cache misses exceeds a threshold, filtering a pre-fetch request that is associated with the instruction;
- and
- otherwise, when the frequency of cache misses does not exceed the threshold:
- when the frequency of performance penalties exceeds a second threshold, causing at least a cache line to be pre-fetched by sending the pre-fetch request;
- and
- otherwise, filtering the pre-fetch request.
A processor that filters pre-fetch requests to reduce pre-fetching overhead, comprising:
- a cache, wherein the cache is part of a multi-level memory hierarchy;
- an executing mechanism that is configured to execute an instruction that involves a memory reference which is directed to a memory in the hierarchy, wherein the executing mechanism is configured to determine a frequency of cache misses for the instruction from a tracked history of cache misses for the instruction whether the instruction, wherein the executing mechanism is further configured to determine a frequency of performance penalties of the cache misses from a tracked history of performance penalties of the cache misses for the instruction;
- and
- a pre-fetch mechanism that is configured to:
- when the frequency of cache misses exceeds a threshold, filtering a pre-fetch request that is associated with the instruction;
- and
- otherwise, when the frequency of cache misses does not exceed the threshold:
- when the frequency of performance penalties exceeds a second threshold, causing at least a cache line to be pre-fetched by sending the pre-fetch request;
- and
- otherwise, filtering the pre-fetch request.
Dependencies are inferred from the claim text.