IP Library Granted Patent US 11,442,863
Granted Patent B2
US 11,442,863 · App. 17/093,792 · Granted Sep 13, 2022

Data processing apparatus and method for generating prefetches

Inventors: Alexander Cole Shulyak (Austin, TX); Adrian Montero (Austin, TX); Joseph Michael Pusdesris (Austin, TX); Karthik Sundaram (Austin, TX); Yasuo Ishii (Austin, TX)
Assignee: Arm Limited
G06F12/0862G06F2212/602
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,442,863
App. No.
17/093,792
Filed
Nov 10, 2020
Granted
Sep 13, 2022
Kind
B2
Art Unit
2137
USPC
711/118
Abstract

Data processing apparatuses and methods of processing data are disclosed. The operations comprise: storing copies of data items; and storing, in a producer pattern history table, a plurality of producer-consumer relationships, each defining an association between producer load indicator and a plurality of consumer load entries, each consumer load entry comprising a consumer load indicator and one or more usefulness metrics. Further steps comprise: initiating, in response to a data load from an address corresponding to the producer load indicator in the producer pattern history table and when at least one of the corresponding one or more usefulness meets a criterion, a producer prefetch of data to be prefetched for storing as a local copy; and issuing, when the data is returned, one or more consumer prefetches to return consumer data from a consumer address generated from the data returned by the producer prefetch and a consumer load indicator of a consumer load entry.

Claims (63)

1. A data processing apparatus comprising:

a data cache to store local copies of data items for use during execution of instructions by processing circuitry;

a producer pattern history table to store a plurality of producer-consumer relationships, each producer-consumer relationship defining an association between a producer load indicator and a plurality of consumer load entries, each consumer load entry comprising a consumer load indicator and one or more usefulness metrics; and

prefetch generation circuitry to generate a prefetch of data for the data cache based on a data load from an address,

wherein the prefetch generation circuitry is adapted to, when the data load corresponds to the producer load indicator in the producer pattern history table and when at least one of the corresponding one or more usefulness metrics associated with the producer load indicator meets a criterion:

initiate a producer prefetch of the data; and

when the data is returned, issue one or more consumer prefetches, each consumer prefetch to return corresponding consumer data from a corresponding consumer address generated from the data returned by the producer prefetch and a corresponding consumer load indicator of a corresponding consumer load entry.

2. The data processing apparatus of claim 1 , wherein the consumer load indicator comprises an offset in address space between the data returned by the producer prefetch and the corresponding consumer address.

3. The data processing apparatus of claim 1 , wherein when the consumer load indicator corresponds to a further producer load indicator in the pattern history table, the consumer prefetch is issued as a further producer prefetch.

4. The data processing apparatus of claim 3 , wherein issuing the further producer prefetch is independent of whether the corresponding usefulness metric meets the criterion.

5. The data processing apparatus of claim 3 , wherein the further producer prefetch is associated with a prefetch depth counter indicative of a number of preceding producer prefetches from which the further producer prefetch is derived, and

wherein when the prefetch depth counter reaches a depth threshold, the further producer prefetch is discarded.

6. The data processing apparatus of claim 1 , wherein the one or more usefulness metrics for each entry of the plurality of consumer load entries comprises a confidence value indicative that a previous load based on the corresponding consumer address was issued subsequent to the producer load, and

wherein the criterion being met requires the confidence value to reach a confidence threshold.

7. The data processing apparatus of claim 6 , wherein the one or more usefulness metrics for each entry of the plurality of consumer load entries comprises a timeliness value indicative of whether data loaded based on the address generated from the producer data is likely to return in time to generate a timely consumer prefetch, and

wherein the criterion being met further requires the timeliness value to indicate that the producer data is likely to return in time to generate the timely consumer prefetch.

8. The data processing apparatus of claim 1 , further comprising producer training table circuitry to store a producer training table comprising a candidate producer-consumer relationship, and

training circuitry to populate the candidate producer-consumer relationship during a training phase based on a plurality of observed loads.

9. The data processing apparatus of claim 8 , wherein the one or more usefulness metrics comprises a confidence value indicative that a previous load based on the corresponding consumer address was issued subsequent to the producer load, and the training circuitry is adapted to, at the start of the training phase:

when an observed load of the training phase corresponds to an existing producer load indicator in one of the plurality of producer-consumer relationships stored in the pattern history table:

derive a candidate producer-consumer relationship from the producer-consumer relationship corresponding to the observed load;

enter the candidate producer-consumer relationship into the producer training table; and

modify candidate confidence values associated with the candidate producer-consumer relationship in a first direction; and

when the observed load of the training phase does not correspond to the existing producer load indicator in any of the plurality of producer-consumer relationships stored in the pattern history table:

create the candidate producer-consumer relationship comprising information indicative of the observed load; and

enter the candidate producer-consumer relationship into the producer training table.

10. The data processing apparatus of claim 9 , wherein the producer training table is adapted to store, in association with the candidate producer-consumer relationship, data returned in response to the observed load.

11. The data processing apparatus of claim 9 , wherein for each subsequent observed load of the plurality of observed loads, in response to detecting a match between a most significant portion of the data returned by the observed load and a candidate address associated with the subsequent observed load, the training circuitry is adapted to derive a candidate consumer entry based on a difference between the least significant portion of the data returned by the observed load and the candidate address associated with the subsequent observed load.

12. The data processing apparatus of claim 11 , wherein the training circuitry is adapted to:

when the candidate consumer entry corresponds to an existing consumer entry of the candidate producer-consumer relationship, modify an existing candidate confidence value of the existing consumer in a second direction;

when the candidate consumer entry is different from each existing consumer entry of the candidate producer-consumer relationship and when an existing consumer entry of the candidate producer-consumer relationship has a candidate confidence value that meets a replacement criterion, replace the existing consumer entry having with the candidate consumer entry; and

when the candidate consumer entry is different from each existing consumer entry of the candidate producer-consumer relationship and when a corresponding candidate confidence value of each existing consumer entry does not meet the replacement criterion, discard the candidate consumer entry.

13. The data processing apparatus of claim 11 , wherein the one or more usefulness metrics further comprises a timeliness value indicative of whether data loaded based on the address generated from the producer data is likely to return in time to generate a timely consumer prefetch, and

wherein the training circuitry is adapted to, when a difference between the observed load and the subsequent observed load meets a difference criterion, set a candidate timeliness value of the candidate producer-consumer relationship.

14. The data processing apparatus of claim 13 , wherein the difference between the observed load and the subsequent observed load is one of:

a difference in program counter value;

a number of loads; and

a number of cycles.

15. The data processing apparatus of claim 9 , wherein subsequent to the plurality of observed loads the candidate producer-consumer relationship is inserted into the pattern history table.

16. The data processing apparatus of claim 1 , further comprising stride prefetching circuitry to issue a stride prefetch load based on a predicted stride length,

wherein the prefetch generation circuitry is adapted to, when the stride prefetch load corresponds to the producer load indicator in the producer pattern history table, initiate the producer prefetch independent of whether the corresponding usefulness metric meets the criterion.

17. The data processing apparatus of claim 1 , further comprising producer tag table circuitry to store a producer tag table comprising a plurality of prefetch entries defining in-flight prefetches, each prefetch entry comprising a prefetch data address,

wherein initiating each producer prefetch comprises generating a candidate producer entry for insertion into the producer tag table, and

wherein initiating each consumer prefetch comprises generating a candidate consumer entry for insertion into the producer tag table.

18. The data processing apparatus of claim 17 , wherein each entry in the producer tag table further comprises a prefetch identifier,

wherein the data processing apparatus is adapted to, in response to generation of the candidate producer entry:

when a candidate prefetch data address of the candidate producer matches an existing entry in the producer tag table, discard the candidate producer entry;

when the candidate prefetch data address of the producer entry corresponds to a same cache line as an existing entry in the producer tag table, insert the candidate producer entry into the producer tag table with a same prefetch identifier as the existing entry; and

when the candidate prefetch data address of the candidate producer entry is different to all existing entries in the producer tag table, insert the candidate producer entry into the producer tag table with a new prefetch identifier.

19. The data processing apparatus of claim 17 , further comprising a sequence buffer to store the data returned from the producer prefetch in association with data indicative of a corresponding producer tag table entry; and

sequencer circuitry to, when the data returned from the producer prefetch reaches a head of the sequence buffer:

sequentially generate one or more consumer addresses to be sent as the one or more consumer prefetches; and

invalidate the corresponding producer tag table entry.

20. A method of processing data comprising:

storing local copies of data items for use during execution of instructions by processing circuitry;

storing, in a producer pattern history table, a plurality of producer-consumer relationships, each producer-consumer relationship defining an association between producer load indicator and a plurality of consumer load entries, each consumer load entry comprising a consumer load indicator and one or more usefulness metrics;

initiating, in response to a data load from an address corresponding to the producer load indicator in the producer pattern history table and when at least one of the corresponding one or more usefulness metrics associated with the producer load indicator meets a criterion, a producer prefetch of data to be prefetched for storing as a local copy; and

issuing, when the data is returned, one or more consumer prefetches, each consumer prefetch to return corresponding consumer data from a corresponding consumer address generated from the data returned by the producer prefetch and a corresponding consumer load indicator of a corresponding consumer load entry.

21. A data processing apparatus comprising:

means for storing local copies of data items for use during execution of instructions by processing circuitry;

means for storing, in a producer pattern history table, a plurality of producer-consumer relationships, each producer-consumer relationship defining an association between producer load indicator and a plurality of consumer load entries, each consumer load entry comprising consumer load indicator and one or more usefulness metrics;

means for initiating, in response to a data load from an address corresponding to the producer load indicator in the producer pattern history table and when at least one of the corresponding one or more usefulness metrics associated with the producer load indicator meets a criterion, a producer prefetch of data to be prefetched into the means for storing based on the data load; and

means for issuing, when the data is returned, one or more consumer prefetches, each consumer prefetch to return corresponding consumer data from a corresponding consumer address generated from the data returned by the producer prefetch and a corresponding consumer load indicator of a corresponding consumer load entry.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 7, 2021
From: SHULYAK, ALEXANDER COLE; MONTERO, ADRIAN; PUSDESRIS, JOSEPH MICHAEL; SUNDARAM, KARTHIK; ISHII, YASUO
To: ARM LIMITED
Reel/Frame 054845/0203 →
Continuity (1)
Related Publication 20220147459A1 · May 12, 2022
Cited By (14)
US 12,332,791 US 12,360,769 US 12,499,056 US 12,517,734 US 12,547,407 US 12,554,503 US 12,578,967 US 12,596,647 US 12,632,261 US 12,639,254 US 12,664,096 US 12,681,732 US 12,705,182 US 12,711,035