Prefetching data for peripheral component interconnect devices
AssigneeIntel Corporation
InventorsNagi Aboulenein, Randy B. Osborne
Life of this patent
Estimating the term…
Abstract
Prefetching data includes issuing a first request to prefetch data from a memory, receiving a response to the first request from the memory, obtaining a measure of latency between the first request and the response, and controlling issuance of a subsequent request to prefetch other data from the memory based on the measure.
Claims39
A method comprising:
- issuing a first request to prefetch data from a memory;
- receiving a response to the first request from the memory;
- obtaining a measure of latency between the first request and the response;
- controlling issuance of a subsequent request to prefetch other data from the memory based on the measure;
- and
- in which said controlling issuance of the subsequent request is also based on a measure of latency including an average of an amount of time between a prefetch request to prefetch data from the memory and a prefetch response from the memory for each of a plurality of prefetch requests occurring before the first request.
A method comprising:
- issuing a first request to prefetch data from a memory;
- receiving a response to the first request from the memory;
- obtaining a measure of latency between the first request and the response;
- controlling issuance of a subsequent request to prefetch other data from the memory based on the measure;
- and
- in which said controlling issuance of the subsequent request includes delaying issuance of the subsequent request by a number of clock cycles if the measure of latency is less than a nominal latency.
A method comprising:
- issuing a first request to prefetch data from a memory;
- receiving a response to the first request from the memory;
- obtaining a measure of latency between the first request and the response;
- controlling issuance of a subsequent request to prefetch other data from the memory based on the measure;
- and
- in which said controlling issuance of the subsequent request includes accelerating issuance of the subsequent request by a number of clock cycles if the measure of latency exceeds a nominal latency.
A method comprising:
- issuing a first request to prefetch data from a memory;
- receiving a response to the first request from the memory;
- obtaining a measure of latency between the first request and the response;
- controlling issuance of a subsequent request to prefetch other data from the memory based on the measure;
- and
- in which said controlling issuance of the subsequent request is performed dynamically.
An article comprising:
- a machine-readable medium which stores machine-executable instructions, the instructions causing a machine to:
- issue a first request to prefetch data from a memory;
- receive a response to the first request from the memory;
- obtain a measure of latency between the first request and the response;
- control issuance of a subsqguent request to prefetch other data from the memory based on the measure;
- and
- in which controlling issuance of the subsequent request is also based on a measure of latency including an average of an amount of time between a prefetch request to prefetch data from the memory and a prefetch response from the memory for each of a plurality of prefetch requests occurring before the first request.
An article comprising:
- a machine-readable medium which stores machine-executable instructions, the instructions causing a machine to:
- issue a first request to prefetch data from a memory;
- receive a response to the first request from the memory;
- obtain a measure of latency between the first request and the response;
- control issuance of a subsequent request to prefetch other data from the memory based on the measure;
- and
- in which said controlling issuance of the subsequent request includes delaying issuance of the subsequent request by a number of clock cycles if the measure of latency is less than a nominal latency.
An article comprising:
- a machine-readable medium which stores machine-executable instructions, the instructions causing a machine to:
- issue a first request to prefetch data from a memory;
- receive a response to the first request from the memory;
- obtain a measure of latency between the first request and the response;
- control issuance of a subsequent request to prefetch other data from the memory based on the measure;
- and
- in which said controlling issuance of the subsequent request includes accelerating issuance of the subsequent request by a number of clock cycles if the measure of latency exceeds a nominal latency.
An article comprising:
- a machine-readable medium which stores machine-executable instructions, the instructions causing a machine to:
- issue a first request to prefetch data from a memory;
- receives a response to the first request from the memory;
- obtain a measure of latency between the first request and the response;
- control issuance of a subsequent request to prefetch other data from the memory based on the measure;
- and
- in which determining when to make the subsequent request is performed dynamically.
A method comprising:
- issuing a prefetch request from a bridge to prefetch from a memory a first amount of data, the first amount being equal to a stored value;
- receiving at the bridge and from a device a data request for data;
- providing a second amount of data from the bridge to the device in response to the data request;
- revising the stored value based on the stored value and the second amount of data;
- issuing from the bridge a subsequent request after issuing the first request to prefetch from the memory a revised amount of data, the revised amount being equal to the stored value;
- and
- in which said revising the stored value includes increasing the stored value if the second amount of data exceeds the stored value.
A method comprising:
- issuing a prefetch request from a bridge to prefetch from a memory a first amount of data, the first amount being equal to a stored value;
- receiving at the bridge and from a device a data request for data;
- providing a second amount of data from the bridge to the device in response to the data request;
- revising the stored value based on the stored value and the second amount of data;
- issuing from the bridge a subsequent request after issuing the first request to prefetch from the memory a revised amount of data, the revised amount being equal to the stored value;
- and
- in which said revising the stored value includes decreasing the stored value if the stored value exceeds the second amount of data.
A method comprising:
- issuing a prefetch request from a bridge to prefetch from a memory a first amount of data, the first amount being equal to a stored value;
- receiving at the bridge and from a device a data request for data;
- providing a second amount of data from the bridge to the device in response to the data request;
- revising the stored value based on the stored value and the second amount of data;
- issuing from the bridge a subsequent request after issuing the first request to prefetch from the memory a revised amount of data, the revised amount being equal to the stored value;
- and
- maintaining the stored value if the stored value equals the second amount of data.
A method comprising:
- issuing a prefetch request from a bridge to prefetch from a memory a first amount of data, the first amount being equal to a stored value;
- receiving at the bridge and from a device a data request for data;
- providing a second amount of data from the bridge to the device in response to the data request;
- revising the stored value based on the stored value and the second amount of data;
- issuing from the bridge a subsequent request after issuing the first request to prefetch from the memory a revised amount of data, the revised amount being equal to the stared value;
- and
- in which said revising the stored value includes changing the stored value by a fixed amount.
A method comprising:
- issuing a prefetch request from a bridge to prefetch from a memory a first amount of data, the first amount being equal to a stored value;
- receiving at the bridge and from a device a data request for data;
- providing a second amount of data from the bridge to the device in response to the data request;
- revising the stored value based on the stored value and the second amount of data;
- issuing from the bridge a subsequent request after issuing the first request to prefetch from the memory a revised amount of data, the revised amount being equal to the stored value;
- and
- in which said revising the stored value includes changing the stored value by a dynamically determined amount.
A method comprising:
- issuing a prefetch request from a bridge to prefetch from a memory a first amount of data, the first amount being equal to a stored value;
- receiving at the bridge and from a device a data request for data;
- providing a second amount of data from the bridge to the device in response to the data request;
- revising the stored value based on the stored value and the second amount of data;
- issuing from the bridge a subsequent request after issuing the first request to prefetch from the memory a revised amount of data, the revised amount being equal to the stored value;
- and
- in which said revising the stored value is also based on amounts of data provided to the device in response to a plurality of actual requests for data sent to the bridge, the actual requests being included in a request stream that includes the first request.
An article comprising:
- a machine-readable medium which stores machine-executable instructions, the instructions causing a machine to:
- issue a prefetch request from a bridge to prefetch from a memory a first amount of data, the first amount being equal to a stored value;
- receive at the bridge and from a device a data request for data;
- provide a second amount of data from the bridge to the device in response to the data request;
- revise the stored value based on the stored value and the second amount of data;
- issue from the bridge a subsequent request after issuing the first request to prefetch from the memory a revised amount of data, the revised amount being equal to the stored value;
- and
- in which said revising the stored value includes increasing the stored value if the second amount of data exceeds the stored value.
An article comprising:
- a machine-readable medium which stores machine-executable instructions, the instructions causing a machine to:
- issue a prefetch request from a bridge to prefetch from a memory a first amount of data, the first amount being equal to a stored value;
- receive at the bridge and from a device a data request for data;
- provide a second amount of data from the bridge to the device in response to the data request;
- revise the stored value based on the stored value and the second amount of data;
- issue from the bridge a subsequent request after issuing the first request to prefetch from the memory a revised amount of data, the revised amount being equal to the stored value;
- and
- in which said revising the stored value includes decreasing the stored value if the stored value exceeds the second amount of data.
An article comprising:
- a machine-readable medium which stores machine-executable instructions, the instructions causing a machine to;
- issue a prefetch request from a bridge to prefetch from a memory a first amount of data, the first amount being equal to a stored value;
- receive at the bridge and from a device a data request for data;
- provide a second amount of data from the bridge to the device in response to the data request;
- revise the stored value based on the stored value and the second amount of data;
- issue from the bridge a subsequent request after issuing the first request to prefetch from the memory a revised amount of data, the revised amount being equal to the stored value;
- and
- further comprising instructions causing a machine to maintain the stored value if the stored value equals the second amount of data.
An article comprising:
- a machine-readable medium which stores machine-executable instructions, the instructions causing a machine to:
- issue a prefetch request from a bridge to prefetch from a memory a first amount of data, the first amount being equal to a stored value;
- receive at the bridge and from a device a data request for data;
- provide a second amount of data from the bridge to the device in response to the data request;
- revise the stored value based on the stored value and the second amount of data;
- issue from the bridge a subsequent request after issuing the first request to prefetch from the memory a revised amount of data, the revised amount being equal to the stored value;
- and
- in which said revising the stored value includes changing the stored value by a fixed amount.
An article comprising:
- a machine-readable medium which stores machine-executable instructions, the instructions causing a machine to:
- issue a prefetch request from a bridge to prefetch from a memory a first amount of data, the first amount being equal to a stored value;
- receive at the bridge and from a device a data request for data;
- provide a second amount of data from the bridge to the device in response to the data request;
- revise the stored value based on the stored value and the second amount of data;
- issue from the bridge a subsequent request after issuing the first request to prefetch from the memory a revised amount of data, the revised amount being equal to the stored value;
- and
- in which said revising the stored value includes changing the stored value by a dynamically determined amount.
An article comprising:
- a machine-readable medium which stores machine-executable instructions, the instructions causing a machine to:
- issue a prefetch request from a bridge to prefetch from a memory a first amount of data, the first amount being equal to a stored value;
- receive at the bridge and from a device a data request for data;
- provide a second amount of data from the bridge to the device in response to the data request;
- revise the stored value based on the stored value and the second amount of data;
- issue from the bridge a subsequent request after issuing the first request to prefetch from the memory a revised amount of data, the revised amount being equal to the stored value;
- and
- in which said revising the stored value is also based on amounts of data provided to the device in response to a plurality of actual requests for data sent to the bridge, the actual requests being included in a request stream that includes the first request.
An apparatus comprising:
- a storage area configured to store a saved amount of data indicating a latency;
- and
- a first mechanism configured to
- issue a first request at a first time to prefetch from a storage location a first amount of data, the first amount determined at least in part by the saved amount,
- obtain a length of time between the first time and a time that the first mechanism begins to receive a response to the first request,
- determine when to make a subsequent request to prefetch other data from the storage location based on the length of time,
- revise the saved amount based on a comparison of the saved amount and a consumed amount of data including at least part of the first amount of data prefetched by the first request;
- and
- a plurality of storage areas, each of the plurality of storage areas associated with a different request stream and configured to store an associated amount of data indicating a latency.
An apparatus comprising:
- a storage area configured to store a saved amount of data indicating a latency;
- and
- a first mechanism configured to
- issue a first request at a first time to prefetch from a storage location a first amount of data, the first amount determined at least in part by the saved amount,
- obtain a length of time between the first time and a time that the first mechanism begins to receive a response to the first request,
- determine when to make a subsequent request to prefetch other data from the storage location based on the length of time,
- revise the saved amount based on a comparison of the saved amount and a consumed amount of data including at least part of the first amount of data prefetched by the first request;
- and
- in which the first mechanism includes an input/output bridge.
An apparatus comprising:
- a storage area configured to store a saved amount of data indicating a latency;
- and
- a first mechanism configured to
- issue a first request at a first time to prefetch from a storage location a first amount of data, the first amount determined at least in part by the saved amount,
- obtain a length of time between the first time and a time that the first mechanism begins to receive a response to the first request,
- determine when to make a subsequent request to prefetch other data from the storage location based on the length of time,
- revise the saved amount based on a comparison of the saved amount and a consumed amount of data including at least part of the first amount of data prefetched by the first request;
- and
- further comprising an input/output device configured to consume data prefetched by the first mechanism.
An apparatus comprising:
- a storage area configured to store a saved amount of data indicating a latency;
- and
- a first mechanism configured to
- issue a first request at a first time to prefetch from a storage location a first amount of data, the first amount determined at least in part by the saved amount,
- obtain a length of time between the first time and a time that the first mechanism begins to receive a response to the first request,
- determine when to make a subsequent request to prefetch other data from the storage location based on the length of time,
- revise the saved amount based on a comparison of the saved amount and a consumed amount of data including at least part of the first amount of data prefetched by the first request;
- and
- in which said revising the saved amount includes increasing the saved amount if the consumed amount exceeds the saved amount.
An apparatus comprising:
- a storage area configured to store a saved amount of data indicating a latency;
- and
- a first mechanism configured to
- issue a first request at a first time to prefetch from a storage location a first amount of data, the first amount determined at least in part by the saved amount,
- obtain a length of time between the first time and a time that the first mechanism begins to receive a response to the first request,
- determine when to make a subsequent request to prefetch other data from the storage location based on the length of time,
- revise the saved amount based on a comparison of the saved amount and a consumed amount of data including at least part of the first amount of data prefetched by the first request;
- and
- in which revising the saved amount includes decreasing the saved amount if the saved amount exceeds the consumed amount.
An apparatus comprising:
- a storage area configured to store a saved amount of data indicating a latency;
- and
- a first mechanism configured to
- issue a first request at a first time to prefetch from a storage location a first amount of data, the first amount determined at least in part by the saved amount,
- obtain a length of time between the first time and a time that the first mechanism begins to receive a response to the first request,
- determine when to make a subsequent request to prefetch other data from the storage location based on the length of time,
- revise the saved amount based on a comparison of the saved amount and a consumed amount of data including at least part of the first amount of data prefetched by the first request;
- and
- in which the revising is performed dynamically.
An apparatus comprising:
- a storage area configured to store a saved amount of data indicating a latency;
- and
- a first mechanism configured to
- issue a first request at a first time to prefetch from a storage location a first amount of data, the first amount determined at least in part by the saved amount,
- obtain a length of time between the first time and a time that the first mechanism begins to receive a response to the first request,
- determine when to make a subsequent request to prefetch other data from the storage location based on the length of time,
- revise the saved amount based on a comparison of the saved amount and a consumed amount of data including at least part of the first amount of data prefetched by the first request;
- and
- in which the determining is performed dynamically.
A system comprising:
- a memory configured to store data;
- a register configured to store a saved amount of data indicating a latency;
- and
- an input/output (I/O) bridge configured to
- issue a first request at a first time to prefetch a first amount of data from the memory, the first amount being determined at least in part by the saved amount,
- determine a length of time between the first time and a time that the I/O bridge begins to receive a response to the first request from the memory,
- dynamically determine when to make a subsequent request to prefetch a second amount of data from the memory based on the length of time, the second amount being equal to the saved amount, and
- dynamically revise the saved amount based on a comparison of the saved amount and a consumed amount of data including at least part of the first data prefetched by the first request.
Dependencies are inferred from the claim text.