IP Library › Granted Patent US 12,579,071
Granted Patent B1
US 12,579,071 · App. 18/925,984 · Granted Mar 17, 2026

Pattern match prefetcher with supplemental program-counter-based learning

Inventors: Stephen G. Meier (Los Altos, CA); Tyler J. Huberty (Sunnyvale, CA)
Assignee: Apple Inc.
G06F12/0862G06F12/0292G06F12/0891
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,579,071
App. No.
18/925,984
Granted
Mar 17, 2026
Kind
B1
Abstract

Disclosed techniques relate to supplemental PC-based learning for a pattern-based prefetcher. In some embodiments, prefetch circuitry is configured to store access map data based on address information corresponding to memory accesses and generate, based on the access map data and stored access patterns, one or more prefetch requests to prefetch data to a cache. In some embodiments, supplemental access tracking circuitry is configured to store initial access tracking information for offsets corresponding to a first access map evicted from the prefetch circuitry, store program counter information associated with an initial memory access that touched the first access map, update the access tracking information, based on one or more additional access maps evicted from the prefetch circuitry that match the stored program counter information, and generate, in response to a hit and based on the updated access tracking information, a starting access map for allocation in the prefetch circuitry.

Claims (62)

1 . A method, comprising:

storing, by a computing system in a prefetch table, access map data based on address information corresponding to memory accesses, wherein a given access map of a plurality of stored access maps records categories of prior accesses to different offsets in a defined address region;

generating, by the computing system based on the access map data and stored access patterns, one or more prefetch requests to prefetch data to a cache;

storing, by the computing system, initial access tracking information for offsets corresponding to a first access map evicted from the prefetch table;

storing, by the computing system, program counter information associated with an initial memory access that touched the first access map;

updating, by the computing system, the access tracking information, based on one or more additional access maps evicted from the prefetch table that match the stored program counter information;

detecting, by the computing system, a hit for the updated access tracking information based on comparison of the stored program counter information and program counter information for a subsequent memory access; and

generating, by the computing system in response to the hit and based on the updated access tracking information, a starting access map for allocation in the prefetch table.

2 . The method of claim 1 , wherein:

the initial access tracking information includes respective counter values for different offsets in the defined address region; and

the updating includes adjusting one or more of the counter values based on the one or more additional evicted access maps.

3 . The method of claim 2 , wherein the generating includes determining starting symbols at different offsets based on corresponding counter values of the access tracking information.

4 . The method of claim 1 , wherein the generating includes aligning the first access map with the offset of the initial memory access that touched the first access map.

5 . The method of claim 1 , wherein:

the prefetch table supports multiple different granularities corresponding to distance between offsets in a given access map; and

the method further comprises storing granularity information that indicates a granularity of the first access map.

6 . The method of claim 5 , further comprising:

in response to a threshold number of mismatches between the stored granularity information and granularities of subsequently evicted access maps, updating the stored granularity information to match the granularity of the subsequently evicted access maps.

7 . The method of claim 5 , further comprising:

restoring the stored granularity for the starting access map.

8 . The method of claim 1 , wherein the program counter information is a hashed program counter.

9 . The method of claim 1 , wherein the starting access map is different than a default starting access map that is a bi-directional density pattern.

10 . An apparatus, comprising:

memory circuitry; and

a processor configured to execute program instructions that access data in the memory circuitry, wherein the processor includes:

data cache circuitry configured to cache data from the memory circuitry;

prefetch circuitry configured to:

store access map data based on address information corresponding to memory accesses, wherein a given access map of a plurality of stored access maps records categories of prior accesses to different offsets in a defined address region; and

generate, based on the access map data and stored access patterns, one or more prefetch requests to prefetch data from the memory circuitry to the data cache circuitry; and

supplemental access tracking circuitry configured to:

store initial access tracking information for offsets corresponding to a first access map evicted from the prefetch circuitry;

store program counter information associated with an initial memory access that touched the first access map;

update the access tracking information, based on one or more additional access maps evicted from the prefetch circuitry that match the stored program counter information;

detect a hit for the updated access tracking information based on comparison of the stored program counter information and program counter information for a subsequent memory access; and

generate, in response to the hit and based on the updated access tracking information, a starting access map for allocation in the prefetch circuitry.

11 . An apparatus, comprising:

prefetch circuitry configured to:

store access map data based on address information corresponding to memory accesses, wherein a given access map of a plurality of stored access maps records categories of prior accesses to different offsets in a defined address region; and

generate, based on the access map data and stored access patterns, one or more prefetch requests to prefetch data to a cache; and

supplemental access tracking circuitry configured to:

store initial access tracking information for offsets corresponding to a first access map evicted from the prefetch circuitry;

store program counter information associated with an initial memory access that touched the first access map;

update the access tracking information, based on one or more additional access maps evicted from the prefetch circuitry that match the stored program counter information;

detect a hit for the updated access tracking information based on comparison of the stored program counter information and program counter information for a subsequent memory access; and

generate, in response to the hit and based on the updated access tracking information, a starting access map for allocation in the prefetch circuitry.

12 . The apparatus of claim 11 , wherein:

the initial access tracking information includes respective counter values for different offsets in the defined address region; and

the update to the access tracking information includes adjusting one or more of the counter values based on the one or more additional evicted access maps.

13 . The apparatus of claim 12 , wherein, to generate the starting access map, the supplemental access tracking circuitry is configured to determine starting symbols at different offsets based on corresponding counter values of the access tracking information.

14 . The apparatus of claim 11 , wherein, to generate the initial access tracking information, the supplemental access tracking circuitry is further configured to align the first access map with the offset of the initial memory access that touched the first access map.

15 . The apparatus of claim 11 , wherein:

the prefetch circuitry supports multiple different granularities corresponding to distance between offsets in a given access map; and

the supplemental access tracking circuitry is further configured to store granularity information that indicates a granularity of the first access map.

16 . The apparatus of claim 15 , wherein:

in response to a threshold number of mismatches between the stored granularity information and granularities of subsequently evicted access maps, the supplemental access tracking circuitry is configured to update the stored granularity information to match the granularity of the subsequently evicted access maps.

17 . The apparatus of claim 15 , wherein the supplemental access tracking circuitry is configured to restore the stored granularity for the starting access map.

18 . The apparatus of claim 11 , wherein the program counter information is a hashed program counter.

19 . The apparatus of claim 11 , wherein the starting access map is different than a default starting access map that the prefetch circuitry is configured to use if there is not a hit in the supplemental access tracking circuitry.

20 . The apparatus of claim 11 , wherein the apparatus is a computing device that further includes:

a processor that includes the prefetch circuitry and the supplemental access tracking circuitry;

a display; and

network interface circuitry.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE SECOND ASSIGNOR'S EXECUTION DATE PREVIOUSLY RECORDED ON REEL 69010 FRAME 786. ASSIGNOR(S) HEREBY CONFIRMS THE SECOND ASSIGNOR'S EXECUTION DATE. Recorded Oct 29, 2024
From: MEIER, STEPHEN G.; HUBERTY, TYLER J.
To: APPLE INC.
Reel/Frame 070701/0067 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 24, 2024
From: MEIER, STEPHEN G.; HUBERTY, TYLER J.
To: APPLE INC.
Reel/Frame 069010/0786 →
Continuity (1)
Provisional Application 63692904 · Sep 10, 2024
References Cited (50)
US 9015422B2 · Meier et al. · 2015 [cited by applicant]
US 9582282B2 · Hayenga et al. · 2017 [cited by applicant]
US 9785571B2 · Shiu · 2017 [cited by applicant]
US 10089240B2 · Sohi et al. · 2018 [cited by applicant]
US 10331567B1 · Meier et al. · 2019 [cited by applicant]
US 10539996B2 · HomChaudhuri et al. · 2020 [cited by applicant]
US 10540287B2 · Meier et al. · 2020 [cited by applicant]
US 10572378B2 · Li et al. · 2020 [cited by applicant]
US 10621100B1 · Meier · 2020 [cited by examiner]
US 11126556B1 · Mukherjee · 2021 [cited by examiner]
US 11379372B1 · Mukherjee · 2022 [cited by examiner]
US 11507519B2 · Kotra et al. · 2022 [cited by applicant]
US 11520585B2 · Lloyd et al. · 2022 [cited by applicant]
US 11573900B2 · Guim et al. · 2023 [cited by applicant]
US 11645148B2 · Zeng et al. · 2023 [cited by applicant]
US 11726917B2 · Mashimo et al. · 2023 [cited by applicant]
US 11797307B2 · Nathella · 2023 [cited by examiner]
US 11809318B2 · Zhang et al. · 2023 [cited by applicant]
US 11966382B2 · Boivie et al. · 2024 [cited by applicant]
US 11972126B2 · Durham et al. · 2024 [cited by applicant]
US 20150026413A1 · Meier · 2015 [cited by examiner]
US 20160054997A1 · Radhakrishnan et al. · 2016 [cited by applicant]
US 20210365267A1 · Lee et al. · 2021 [cited by applicant]
US 20220019537A1 · Roberts · 2022 [cited by examiner]
US 20220206958A1 · LeMay et al. · 2022 [cited by applicant]
US 20230004318A1 · Zhang et al. · 2023 [cited by applicant]
US 20230110541A1 · Pusdesris · 2023 [cited by examiner]
US 20230205699A1 · Sha et al. · 2023 [cited by applicant]
US 20230222065A1 · Reed · 2023 [cited by examiner]
US 20240111677A1 · Loh · 2024 [cited by examiner]
CN 106024052A · 2016 [cited by applicant]
CN 105930281B · 2019 [cited by applicant]
CN 113190499A · 2021 [cited by applicant]
CN 113986774A · 2022 [cited by applicant]
CN 111143242B · 2022 [cited by applicant]
CN 111506517B · 2022 [cited by applicant]
CN 115309453A · 2022 [cited by applicant]
CN 116502239A · 2024 [cited by applicant]
CN 117389630B · 2024 [cited by applicant]
CN 117972799A · 2024 [cited by applicant]
KR 102031490B1 · 2019 [cited by applicant]
KR 2024025417A · 2024 [cited by applicant]
WO WO2024072574A1 · 2024 [cited by examiner]
G. O. Ganfure, C.-F. Wu, Y.-H. Chang and W.-K. Shih, “DeepPrefetcher: A Deep Learning Framework for Data Prefetching in Flash Storage Devices,” in IEEE Transactions on Computer-Aided Design of Integrated Circuits and Sy… [cited by examiner]
C. Yang, L. Liu, S. Yin and S. Wei, “Data cache prefetching via context directed pattern matching for coarse-grained reconfigurable arrays,” 2016 53nd ACM/EDAC/IEEE Design Automation Conference (DAC), Austin, TX, USA, 2… [cited by examiner]
Partap et al., “Memory Tagging: A Memory Efficient Design,” Google Scholar, Nov. 3, 2022, 16 pages. [cited by applicant]
Unterguggenberger et al. “Multi-Tag: A Hardware-Software Co-Design for Memory Safety based on Multi-Granular Memory Tagging,” Proceedings of the 2023 ACM Asia Conference on Computer and Communications Security, Jul. 10,… [cited by applicant]
Chen et al., “FlexPointer: Fast Address Translation Based on Range TLB and Tagged Pointers,” ACM Transactions on Architecture and Code Optimization, Mar. 1, 2023, pp. 1-24. [cited by applicant]
Xia et al., “CHERIvoke: Characterising Pointer Revocation using CHERI Capabilities for Temporal Memory Safety,” Proceedings of the 52nd Annual IEEE/ACM International Symposium on Microarchitecture, Oct. 12, 2019, pp. 54… [cited by applicant]
Koruyeh, “Architectural Support for Securing Systems Against Micro-Architectural Attacks,” PhD dissertation at University of California Riverside, Sep. 2023, 192 pages. [cited by applicant]