IP Library Granted Patent US 12,468,631
Granted Patent B2
US 12,468,631 · App. 17/561,831 · Granted Nov 11, 2025

Region aware delta prefetcher

Inventors: Swaraj Sha (Bangalore, IN); Anant Vithal Nori (Bangalore, IN); Sreenivas Subramoney (Bangalore, IN); Stanislav Shwartsman (Haifa, IL); Pavel I. Kryukov (Moscow, RU); Lihu Rappoport (Haifa, IL)
Assignee: Intel Corporation
G06F12/0862G06F9/3816G06F12/0811G06F12/0877
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 12,468,631
App. No.
17/561,831
Granted
Nov 11, 2025
Kind
B2
Abstract

An apparatus includes memory circuitry including a first data structure and prefetch circuitry that is coupled to the memory circuitry. The prefetch circuitry is to store, in the first data structure, a first subregion entry corresponding to a first subregion of a memory region allocated to a program. The first subregion entry is to include a plurality of delta values. A first delta value of the plurality of delta values represents a first distance between two cache lines associated with consecutive memory accesses within a second subregion of the memory region. The prefetch circuitry is further to detect a first memory access of a first cache line in the first subregion, identify prefetch candidates based on the first cache line and the plurality of delta values, and issue at least one prefetch request based on at least two of the prefetch candidates to be prefetched into a cache.

Claims (74)

1 . An apparatus comprising:

memory circuitry including a first data structure; and

prefetch circuitry coupled to the memory circuitry, the prefetch circuitry to:

store, in the first data structure, a first subregion entry corresponding to a first subregion of a memory region allocated to a program, the first subregion entry to include a plurality of delta values, a first delta value of the plurality of delta values representing a first distance between two cache lines associated with consecutive memory accesses within a second subregion of the memory region;

detect a first memory access of a first cache line in the first subregion;

select the first delta value based on the first delta value being one of a number of most frequently occurring delta values of the plurality of delta values in the first subregion entry;

identify prefetch candidates based on the first cache line and the first delta value and on the first cache line and one or more other selected delta values of the plurality of delta values; and

issue at least one prefetch request based on at least two of the prefetch candidates to be prefetched into a cache.

2 . The apparatus of claim 1 , wherein the first subregion entry is to be stored in the first data structure in response to the prefetch circuitry detecting a new memory access request to the first subregion and determining that the first subregion entry is missing from the first data structure.

3 . The apparatus of claim 1 , wherein the prefetch circuitry is further to:

determine a second delta value representing a second distance between the first cache line in the first subregion and a second cache line in the first subregion, the second cache line to be accessed by the program prior to the first cache line being accessed and without an intervening memory access to the first subregion.

4 . The apparatus of claim 3 , wherein the prefetch circuitry is further to:

in response to determining that the second delta value is one of the plurality of delta values in the first subregion entry, increment a second frequency value mapped to the second delta value in the first subregion entry.

5 . The apparatus of claim 3 , wherein the prefetch circuitry is further to:

in response to determining that the second delta value is not included in the plurality of delta values in the first subregion entry, store the second delta value and a second frequency value mapped to the second delta value in the first subregion entry.

6 . The apparatus of claim 5 , wherein the prefetch circuitry is to:

in response to determining that the second frequency value is at least three, evict the first subregion entry from the first data structure.

7 . The apparatus of claim 3 , wherein the prefetch circuitry is further to:

determine a third delta value representing a third distance between the first cache line and a third cache line in the first subregion, the third cache line to be accessed by the program prior to the second cache line being accessed, without an intervening memory access to the first subregion; and

in response to determining that the third delta value is one of the plurality of delta values in the first subregion entry, increment a third frequency value mapped to the third delta value in the first subregion entry.

8 . The apparatus of claim 7 , wherein the prefetch circuitry is further to:

determine a fourth delta value representing a fourth distance between the first cache line and a fourth cache line in the first subregion, the fourth cache line to be accessed by the program prior to the third cache line being accessed, without an intervening memory access to the first subregion; and

in response to determining that the fourth delta value is one of the plurality of delta values in the first subregion entry, increment a fourth frequency value mapped to the fourth delta value in the first subregion entry.

9 . The apparatus of claim 1 , wherein a first temporal window is to begin upon the first subregion entry being stored in the first data structure, and wherein the first temporal window is to end upon eviction of the first subregion entry from the first data structure.

10 . The apparatus of claim 9 , wherein the prefetch candidates are to be identified in response to determining that the first cache line has not been accessed by the program during the first temporal window.

11 . The apparatus of claim 9 , wherein the prefetch circuitry is further to:

store, in a second data structure of the memory circuitry, a region entry to track a predetermined number of most frequently occurring delta values for the memory region; and

load the predetermined number of most frequently occurring delta values into the first subregion entry as the plurality of delta values.

12 . The apparatus of claim 11 , wherein the prefetch circuitry is further to:

prior to the first temporal window, evict from the first data structure a second subregion entry corresponding to the second subregion of the memory region; and

update the predetermined number of most frequently occurring delta values in the region entry with a plurality of selected delta values from the second subregion entry.

13 . The apparatus of claim 12 , wherein the prefetch circuitry is further to:

select the plurality of selected delta values in the second subregion entry to update the predetermined number of most frequently occurring delta values in the region entry based, at least in part, on respective frequency values of the plurality of selected delta values,

wherein to update the predetermined number of most frequently occurring delta values in the region entry is to include updating corresponding frequency values in the region entry with a plurality of frequency values corresponding to the plurality of selected delta values.

14 . The apparatus of claim 1 , wherein the prefetch circuitry is further to:

detect a second memory access to a fifth cache line in a third subregion of the memory region allocated to the program; and

store a third subregion entry corresponding to the third subregion in the first data structure of the memory circuitry, wherein the third subregion entry is to include the plurality of delta values.

15 . The apparatus of claim 1 , wherein the first delta value is one of a second number of most frequently occurring delta values of a second plurality of delta values stored in a second subregion entry corresponding to the second subregion of the memory region prior to an eviction of the second subregion entry.

16 . A system comprising:

a processor including a cache and a prefetch unit, the prefetch unit including prefetch circuitry, and first memory circuitry, wherein the prefetch circuitry is to:

store, in the first memory circuitry, a first subregion entry corresponding to a first subregion of a memory region allocated to a program, the first subregion entry to include a plurality of delta values, a first delta value of the plurality of delta values representing a first distance between two cache lines associated with consecutive memory accesses within a second subregion of the memory region;

detect a first memory access of a first cache line in the first subregion;

select one or more delta values of the plurality of delta values based on the one or more delta values being in a number of most frequently occurring delta values of the plurality of delta values in the first subregion entry;

identify prefetch candidates based on the first cache line and the selected one or more delta values of the plurality of delta values; and

issue at least one prefetch request based on at least two of the prefetch candidates to be prefetched into the cache.

17 . The system of claim 16 , wherein the prefetch circuitry is further to:

determine a second delta value representing a second distance between the first cache line in the first subregion and a second cache line in the first subregion, the second cache line to be accessed by the program prior to the first cache line being accessed and without an intervening memory access to the first subregion.

18 . The system of claim 17 , wherein the prefetch circuitry is further to:

in response to determining that the second delta value is one of the plurality of delta values in the first subregion entry, increment a second frequency value mapped to the second delta value in the first subregion entry.

19 . The system of claim 17 , wherein the prefetch circuitry is further to:

in response to determining that the second delta value is not included in the plurality of delta values in the first subregion entry, store the second delta value and a second frequency value mapped to the second delta value in the first subregion entry.

20 . The system of claim 16 , the system further comprising:

second memory circuitry to store a region entry to track a predetermined number of most frequently occurring delta values for the memory region; and

load the predetermined number of most frequently occurring delta values into the first subregion entry as the plurality of delta values.

21 . The system of claim 20 , wherein the prefetch circuitry is further to:

select the first subregion entry for eviction from the first memory circuitry;

determine that a second delta value is one of a selected number of most frequently occurring delta values in the first subregion entry based on a second frequency value and respective frequency values associated with each delta value of the plurality of delta values in the first subregion entry; and

update an existing delta value in the predetermined number of most frequently occurring delta values in the region entry with the second delta value based on determining that the second frequency value is greater than another frequency value associated with the existing delta value in the region entry.

22 . A method comprising:

storing in first memory circuitry, by prefetch circuitry in a core, a first subregion entry corresponding to a first subregion of a memory region allocated to a program, wherein the first subregion entry includes a plurality of delta values, and wherein a first delta value of the plurality of delta values represents a first distance between two cache lines associated with consecutive memory accesses within a second subregion of the memory region;

detecting a first memory access of a first cache line in the first subregion;

selecting the first delta value based on the first delta value being one of a number of most frequently occurring delta values of the plurality of delta values in the first subregion entry;

identifying prefetch candidates based on the first cache line and the first delta value and on the first cache line and one or more other selected delta values of the plurality of delta values; and

issuing at least one prefetch request based on at least two of the prefetch candidates to be prefetched into a cache.

23 . The method of claim 22 , further comprising:

detecting a second memory access to a second cache line in a third subregion of the memory region allocated to the program; and

storing a third subregion entry corresponding to the third subregion in the first memory circuitry, wherein the third subregion entry is to include the plurality of delta values.

24 . One or more machine readable storage media having instructions stored thereon, the instructions when executed by a machine are to cause the machine to:

storing in a first data structure in memory circuitry, a first subregion entry corresponding to a first subregion of a memory region allocated to a program, wherein the first subregion entry includes a plurality of delta values, and wherein a first delta value of the plurality of delta values represents a first distance between two cache lines associated with consecutive memory accesses within a second subregion of the memory region;

detecting a first memory access of a first cache line in the first subregion;

selecting a second delta value of the plurality of delta values based on the second delta value being in a number of most frequently occurring delta values of the plurality of delta values in the first subregion entry, wherein the second delta value represents a second distance between two other cache lines associated with memory accesses within the first subregion;

identifying prefetch candidates based on the first cache line and the second delta value and on the first cache line and one or more other selected delta values of the plurality of delta values; and

issuing at least one prefetch request based on at least two of the prefetch candidates to be prefetched into a cache.

25 . The one or more machine readable storage media of claim 24 , wherein the cache is a level one (L1) cache.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 25, 2022
From: SHA, SWARAJ; NORI, ANANT VITHAL; SUBRAMONEY, SREENIVAS; SHWARTSMAN, STANISLAV; KRYUKOV, PAVEL I.; RAPPOPORT, LIHU
To: INTEL CORPORATION
Reel/Frame 059102/0305 →
Continuity (1)
Related Publication 20230205699A1 · Jun 29, 2023
References Cited (26)
US 10331567B1 · Meier · 2019 [cited by examiner]
US 10866896B2 · Rafacz et al. · 2020 [cited by applicant]
US 11874773B2 · Bera · 2024 [cited by examiner]
US 20100281221A1 · Cantin et al. · 2010 [cited by applicant]
US 20190065375A1 · Al Sheikh · 2019 [cited by examiner]
US 20190138451A1 · Alam · 2019 [cited by examiner]
US 20200133863A1 · Pusdesris · 2020 [cited by examiner]
US 20210157730A1 · Hornung et al. · 2021 [cited by applicant]
US 20210406183A1 · Mashimo · 2021 [cited by examiner]
WO WO2024039953A1 · 2024 [cited by examiner]
J. So and M. Lu, “Buffer-referred Data Prefetching: An Effective Approach to Coverage-Driven Prefetching,” 2021 26th International Conference on Automation and Computing (ICAC), Portsmouth, United Kingdom, 2021, pp. 1-6. [cited by examiner]
M. Shevgoor, S. Koladiya, R. Balasubramonian, C. Wilkerson, S. H. Pugsley and Z. Chishti, “Efficiently prefetching complex address patterns,” 2015 48th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO… [cited by examiner]
E. Bhatia, G. Chacon, S. Pugsley, E. Teran, P. V. Gratz and D. A. Jiménez, “Perceptron-Based Prefetch Filtering,” 2019 ACM/IEEE 46th Annual International Symposium on Computer Architecture (ISCA), Phoenix, AZ, USA, 2019… [cited by examiner]
K. J. Nesbit and J. E. Smith, “Data Cache Prefetching Using a Global History Buffer,” 10th International Symposium on High Performance Computer Architecture (HPCA'04), Madrid, Spain, 2004, pp. 96-96. [cited by examiner]
P. Michaud, “Best-offset hardware prefetching,” 2016 IEEE International Symposium on High Performance Computer Architecture (HPCA), Barcelona, Spain, 2016, pp. 469-480. [cited by examiner]
EPO European Extended Search Report in EP Application Serial No. 22208765.2 mailed on May 30, 2023, 7 pages. [cited by applicant]
Bakhshalipour, Mohammad et al., “A Survey on Recent Hardware Data Prefetching Approaches with an Emphasis on Servers,” 2020 retrieved from https://arxiv.org/pdf/2009.00715, (2020), (23 pages). [cited by applicant]
Bakhshalipour, Mohammad et al., “Domino Temporal Data Prefetcher,” 2018 IEEE International Symposium on High Performance Computer Architecture, (2018), (12 pages). [cited by applicant]
Jain, Akanksha et al., “Linearizing irregular memory accesses for improved correlated prefetching” 2013 In Proceedings of the 46th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO-46). Association for… [cited by applicant]
Michaud, Pierre, “A Best-Offset Prefetcher,” 2nd Data Prefetching Championship, Jun. 2015, Portland, US (6 pages). [cited by applicant]
Michaud, Pierre, “Best Offset Hardware Prefetching,” International Symposium on High-Performance Computer Architecture, Mar. 2016, Barcelona Spain (13 pages). [cited by applicant]
Somogyi, Stephen et al., “Spatial memory streaming” 2006 In Proceedings of the 33rd International Symposium on Computer Architecture, (2006), (13 pages). [cited by applicant]
Somogyi, Stephen et al., “Spatio-temporal memory streaming” 2009 In Proceedings of the 36th annual international symposium on Computer architecture (ISCA '09). Association for Computing Machinery, New York, NY, USA, (20… [cited by applicant]
Wu, Hao et al., “Efficient Meta-Data Management for Irregular Data Prefetching” 2019 ISCA 2019, retrieved from https://www.cs.utexas.edu/˜lin/papers/isca19.pdf, (2019), (13 pages). [cited by applicant]
Wu, Hao et al., “Temporal Prefetching Without the Off-Chip Metadata” 2019 In Proceedings of the 52nd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO '52). Association for Computing Machinery, New Yor… [cited by applicant]
Wu, Hao, “Practical Irregular Prefetching” Dissertation Presented to the Faculty of the Graduate School of The University of Texas at Austin, Aug. 2020, Austin, US (108 pages). [cited by applicant]