IP Library Granted Patent US 12,499,050
Granted Patent B1
US 12,499,050 · App. 18/910,922 · Granted Dec 16, 2025

Physical address proxy (PAP) residency determination for reduction of PAP reuse

Inventors: John G. Favor (San Francisco, CA); Srivatsan Srinivasan (Cedar Park, TX); Robert Haskell Utley (Austin, TX)
Assignee: Ventana Micro Systems Inc.
G06F12/0864G06F3/0626G06F3/0659G06F3/0673G06F2212/6032
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,499,050
App. No.
18/910,922
Granted
Dec 16, 2025
Kind
B1
Abstract

A system and method for a cache memory subsystem including a first-level cache (L1) and an N-way set associative second-level cache (L2) inclusive of L1, including receiving a physical memory line address (PMLA) for allocation into L2, using a set index of the PMLA to select a set of N ways of L2, for each way of the selected set of N ways, forming a physical address proxy (PAP) for the PMLA, in which each formed PAP includes the set index portion and the corresponding way that uniquely identifies a corresponding one of the selected set of N ways of L2, for each of the N formed PAPs, receiving a corresponding indicator of whether the formed PAP is resident in L1, and selecting one of the selected N ways of L2 having a corresponding indicator indicating that the corresponding one of the N formed PAPs is not resident in L1.

Claims (89)

1 . A method, comprising:

in a cache memory subsystem comprising a first-level cache and an N-way set associative second-level cache that is inclusive of the first-level cache;

receiving a physical memory line address for allocation into the second-level cache;

using a set index portion of the physical memory line address to select a set of N ways of the second-level cache;

for each way of the selected set of N ways of the second-level cache, forming a physical address proxy (PAP) for the physical memory line address corresponding to the way, wherein each formed PAP includes the set index portion and the corresponding way that uniquely identifies a corresponding one of the selected set of N ways of second-level cache;

for each of the N formed PAPs, receiving a corresponding indicator of whether the formed PAP is resident in the first-level cache; and

selecting one way of the selected set of N ways of the second-level cache having a corresponding indicator indicating that the corresponding one of the N formed PAPs is not resident in the first-level cache.

2 . The method of claim 1 , wherein the first-level cache is configured to be accessed using virtual addresses, further comprising:

detecting, by the cache memory subsystem, that a virtual address misses in the first-level cache;

translating at least a portion of the virtual address into the physical memory line address for allocation into the selected one way of the selected set of N ways of the second-level cache; and

allocating the corresponding one of the N formed PAPs that is not resident in the first-level cache into an entry of the first-level cache.

3 . The method of claim 1 , wherein the cache memory subsystem further comprises a load/store unit, the method further comprising:

using, by the load/store unit, PAPs obtained from the first-level cache rather than corresponding physical memory line addresses to make store-to-load forwarding-related comparisons; and

said selecting comprising selecting one way of the selected set of N ways of the second-level cache to minimize a likelihood that the formed PAP corresponding to the selected way is already in use as a proxy for a physical memory line address different from the received physical memory line address.

4 . The method of claim 1 , wherein the cache memory subsystem further comprises a PAP directory having entries corresponding to the entries of the first-level cache, the method further comprising:

when a PAP for a physical memory line address is allocated into an entry of the first-level cache, allocating the PAP into a corresponding entry of the PAP directory; and

for each of the N formed PAPs, looking up the formed PAP in the PAP directory, wherein the PAP directory is configured to provide the corresponding indicator to indicate whether the formed PAP is resident in the first-level cache.

5 . The method of claim 4 , wherein said looking up the formed PAP in the PAP directory comprises concurrently looking up each of the N formed PAPs in the PAP directory and concurrently setting the corresponding one of N indicators to indicate whether the corresponding one of N formed PAPs is resident in the first-level cache.

6 . The method of claim 4 ,

wherein the first-level cache is configured to be accessed using virtual addresses, is logically arranged as S sets and W ways, and is configured to be indexed to select a set of the S sets using T translated bits and U untranslated bits of a virtual address such that a PAP may be allocated into 2{circumflex over ( )}T different sets of the first-level cache;

wherein the PAP directory is physically arranged as S/(2{circumflex over ( )}T) rows and W*(2{circumflex over ( )}T) columns; and

wherein the concurrently looking up each of the N formed PAPs in the PAP directory comprises using U untranslated bits within the set index portion of the physical memory line address to select a row of the PAP directory.

7 . The method of claim 6 ,

wherein to allocate a PAP into the entry of the PAP directory corresponding to an entry of the first-level cache:

the U untranslated bits of the virtual address are used to select a row of the PAP directory; and

the T translated bits of the virtual address are used to select W columns of the PAP directory from which to select one column of the selected W columns into which to write a diminutive PAP (dPAP); and

wherein the dPAP is remaining bits of the PAP other than bits of the set index portion of the physical memory line address that correspond to the U untranslated bits of the virtual address; and

wherein said concurrently looking up each of the N formed PAPs in the PAP directory comprises:

for each of the N formed PAPs, concurrently comparing a dPAP portion of the formed PAP with each of the W*(2{circumflex over ( )}T) dPAPs of the selected row of the PAP directory to detect whether the PAP is resident in the PAP directory.

8 . A cache memory subsystem, comprising:

a first-level cache; and

an N-way set associative second-level cache that is inclusive of the first-level cache, wherein the second-level cache is configured to:

receive a physical memory line address for allocation into the second-level cache;

use a set index portion of the physical memory line address to select a set of N ways of the second-level cache;

for each way of the selected set of N ways of the second-level cache, form a physical address proxy (PAP) for the physical memory line address corresponding to the way, wherein each formed PAP includes the set index portion and the corresponding way that uniquely identifies a corresponding one of the selected set of N ways of second-level cache;

for each of the N formed PAPs, receive a corresponding indicator of whether the formed PAP is resident in the first-level cache; and

select one way of the selected set of N ways of the second-level cache having a corresponding indicator indicating that the corresponding one of the N formed PAPs is not resident in the first-level cache.

9 . The cache memory subsystem of claim 8 , wherein the first-level cache is configured to be accessed using virtual addresses, and wherein the cache memory subsystem is further configured to:

translate at least a portion of a virtual address that misses in the first-level cache into the physical memory line address;

allocate the physical memory line address into the selected one way of the selected set of N ways of the second-level cache; and

allocate the corresponding one of the N formed PAPs that is not resident in the first-level cache into an entry of the first-level cache.

10 . The cache memory subsystem of claim 8 , further comprising:

a load/store unit that uses the PAPs obtained from the first-level cache rather than corresponding physical memory line addresses to make store-to-load forwarding-related comparisons; and

wherein the one way of the selected set of N ways of the second-level cache is selected to minimize a likelihood that the formed PAP corresponding to the selected way is already in use as a proxy for a physical memory line address different from the received physical memory line address.

11 . The cache memory subsystem of claim 8 , further comprising:

a PAP directory having entries corresponding to the entries of the first-level cache, so that when a PAP for a physical memory line address is allocated into an entry of the first-level cache, the PAP is also allocated into the corresponding entry of the PAP directory; and

wherein the cache memory subsystem is further configured to:

for each of the N formed PAPs, look up the formed PAP in the PAP directory, wherein the PAP directory is configured to provide the corresponding indicator to indicate whether the formed PAP is resident in the first-level cache.

12 . The cache memory subsystem of claim 11 , wherein the cache memory subsystem is configured to concurrently look up each of the N formed PAPs in the PAP directory and wherein the PAP directory is configured to concurrently provide the N corresponding indicators each indicating whether a corresponding one of the N formed PAPs is resident in the first-level cache.

13 . The cache memory subsystem of claim 12 ,

wherein the first-level cache is configured to be accessed using virtual addresses, and wherein the first-level cache is logically arranged as S sets and W ways and is configured to be indexed to select a set of the S sets using T translated bits and U untranslated bits of a virtual address such that a PAP may be allocated into 2{circumflex over ( )}T different sets of the first-level cache;

wherein the PAP directory is physically arranged as S/(2{circumflex over ( )}T) rows and W*(2{circumflex over ( )}T) columns; and

wherein to concurrently look up each of the N formed PAPs in the PAP directory, the cache memory subsystem is configured to use U untranslated bits within the set index portion of the physical memory line address to select a row of the PAP directory.

14 . The cache memory subsystem of claim 13 ,

wherein to allocate a PAP into the entry of the PAP directory corresponding to an entry of the first-level cache:

the U untranslated bits of the virtual address are used to select a row of the PAP directory; and

the T translated bits of the virtual address are used to select W columns of the PAP directory from which to select one column of the selected W columns into which to write a diminutive PAP (dPAP); and

wherein the dPAP is remaining bits of the PAP other than bits of the set index portion of the physical memory line address that correspond to the U untranslated bits of the virtual address; and

wherein to concurrently look up each of the N formed PAPs in the PAP directory, the cache memory subsystem is configured to:

for each of the N formed PAPs, concurrently compare a dPAP portion of the formed PAP with each of the W*(2{circumflex over ( )}T) dPAPs of the selected row of the PAP directory to detect whether the PAP is resident in the PAP directory.

15 . A non-transitory computer-readable medium having instructions stored thereon that are capable of causing or configuring a cache memory subsystem to perform operations comprising:

in a cache memory subsystem comprising a first-level cache and an N-way set associative second-level cache that is inclusive of the first-level cache;

receiving a physical memory line address for allocation into the second-level cache;

using a set index portion of the physical memory line address to select a set of N ways of the second-level cache;

for each way of the selected set of N ways of the second-level cache, forming a physical address proxy (PAP) for the physical memory line address corresponding to the way, wherein each formed PAP includes the set index portion and the corresponding way that uniquely identifies a corresponding one of the selected set of N ways of second-level cache;

for each of the N formed PAPs, receiving a corresponding indicator of whether the formed PAP is resident in the first-level cache; and

selecting one way of the selected set of N ways of the second-level cache having a corresponding indicator indicating that the corresponding one of the N formed PAPs is not resident in the first-level cache.

16 . The non-transitory computer-readable medium of claim 15 , wherein the first-level cache is configured to be accessed using virtual addresses, further comprising:

detecting, by the cache memory subsystem, that a virtual address misses in the first-level cache;

translating at least a portion of the virtual address into the physical memory line address for allocation into the selected one way of the selected set of N ways of the second-level cache; and

allocating the corresponding one of the N formed PAPs that is not resident in the first-level cache into an entry of the first-level cache.

17 . The non-transitory computer-readable medium of claim 15 , wherein the cache memory subsystem further comprises a load/store unit, the method further comprising:

using, by the load/store unit, PAPs obtained from the first-level cache rather than corresponding physical memory line addresses to make store-to-load forwarding-related comparisons; and

said selecting comprising selecting one way of the selected set of N ways of the second-level cache to minimize a likelihood that the formed PAP corresponding to the selected way is already in use as a proxy for a physical memory line address different from the received physical memory line address.

18 . The non-transitory computer-readable medium of claim 15 , wherein the cache memory subsystem further comprises a PAP directory having entries corresponding to the entries of the first-level cache, the method further comprising:

when a PAP for a physical memory line address is allocated into an entry of the first-level cache, allocating the PAP into a corresponding entry of the PAP directory; and

for each of the N formed PAPs, looking up the formed PAP in the PAP directory, wherein the PAP directory is configured to provide the corresponding indicator to indicate whether the formed PAP is resident in the first-level cache.

19 . The non-transitory computer-readable medium of claim 18 , wherein said looking up the formed PAP in the PAP directory comprises concurrently looking up each of the N formed PAPs in the PAP directory and concurrently setting the corresponding one of N indicators to indicate whether the corresponding one of N formed PAPs is resident in the first-level cache.

20 . The non-transitory computer-readable medium of claim 19 ,

wherein the first-level cache is configured to be accessed using virtual addresses, is logically arranged as S sets and W ways, and is configured to be indexed to select a set of the S sets using T translated bits and U untranslated bits of a virtual address such that a PAP may be allocated into 2{circumflex over ( )}T different sets of the first-level cache;

wherein the PAP directory is physically arranged as S/(2{circumflex over ( )}T) rows and W*(2{circumflex over ( )}T) columns; and

wherein said concurrently looking up each of the N formed PAPs in the PAP directory comprises using U untranslated bits within the set index portion of the physical memory line address to select a row of the PAP directory.

21 . The non-transitory computer-readable medium of claim 20 ,

wherein to allocate a PAP into the entry of the PAP directory corresponding to an entry of the first-level cache:

the U untranslated bits of the virtual address are used to select a row of the PAP directory; and

the T translated bits of the virtual address are used to select W columns of the PAP directory from which to select one column of the selected W columns into which to write a diminutive PAP (dPAP); and

wherein the dPAP is remaining bits of the PAP other than bits of the set index portion of the physical memory line address that correspond to the U untranslated bits of the virtual address; and

wherein said concurrently looking up each of the N formed PAPs in the PAP directory comprises:

for each of the N formed PAPs, concurrently comparing a dPAP portion of the formed PAP with each of the W*(2{circumflex over ( )}T) dPAPs of the selected row of the PAP directory to detect whether the PAP is resident in the PAP directory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 9, 2024
From: FAVOR, JOHN G.; SRINIVASAN, SRIVATSAN; UTLEY, ROBERT HASKELL
To: VENTANA MICRO SYSTEMS INC.
Reel/Frame 068855/0918 →
Continuity (20)
Continuation 18407071 · Jan 8, 2024
Continuation 17752057 · May 24, 2022
Continuation In Part 17747556 · May 18, 2022
Continuation In Part 17747513 · May 18, 2022
Continuation In Part 17370009 · Jul 8, 2021
Continuation In Part 17370009 · Jul 8, 2021
Continuation In Part 17351946 · Jun 18, 2021
Continuation In Part 17351946 · Jun 18, 2021
Continuation In Part 17351946 · Jun 18, 2021
Continuation In Part 17351927 · Jun 18, 2021
Continuation In Part 17351927 · Jun 18, 2021
Continuation In Part 17351927 · Jun 18, 2021
Continuation In Part 17315262 · May 7, 2021
Continuation In Part 17315262 · May 7, 2021
Continuation In Part 17315262 · May 7, 2021
Continuation In Part 17315262 · May 7, 2021
Continuation In Part 17315262 · May 7, 2021
Provisional Application 63331487 · Apr 15, 2022
Provisional Application 63289545 · Dec 14, 2021
Provisional Application 63271934 · Oct 26, 2021
References Cited (48)
US 5526510A · Akkary et al. · 1996 [cited by applicant]
US 5742831A · Creta · 1998 [cited by applicant]
US 5745729A · Greenley et al. · 1998 [cited by applicant]
US 6006312A · Kohn et al. · 1999 [cited by applicant]
US 6606686B1 · Agarwala et al. · 2003 [cited by applicant]
US 6662280B1 · Hughes · 2003 [cited by examiner]
US 7058065B2 · Musoll et al. · 2006 [cited by applicant]
US 8521982B2 · Cargnoni et al. · 2013 [cited by applicant]
US 8782348B2 · Eddy et al. · 2014 [cited by applicant]
US 8984254B2 · Tran et al. · 2015 [cited by applicant]
US 9772943B1 · Mukherjee · 2017 [cited by applicant]
US 10397362B1 · Volpe et al. · 2019 [cited by applicant]
US 10565113B2 · Avudaiyappan · 2020 [cited by examiner]
US 10877901B2 · Bryant · 2020 [cited by examiner]
US 10977175B2 · Campbell et al. · 2021 [cited by applicant]
US 11625335B2 · Borikar et al. · 2023 [cited by applicant]
US 20020120813A1 · Boatright et al. · 2002 [cited by applicant]
US 20030023814A1 · Barroso et al. · 2003 [cited by applicant]
US 20040148468A1 · Hooker · 2004 [cited by applicant]
US 20060107021A1 · Barrick et al. · 2006 [cited by applicant]
US 20070156971A1 · Sistla et al. · 2007 [cited by applicant]
US 20080104325A1 · Narad et al. · 2008 [cited by applicant]
US 20090172360A1 · Hikichi · 2009 [cited by applicant]
US 20100325395A1 · Burger et al. · 2010 [cited by applicant]
US 20130185792A1 · Balakrishnan et al. · 2013 [cited by applicant]
US 20130304991A1 · Böttcher et al. · 2013 [cited by applicant]
US 20140215191A1 · Kanapathipillai et al. · 2014 [cited by applicant]
US 20150019840A1 · Anderson et al. · 2015 [cited by applicant]
US 20150032964A1 · Habermann et al. · 2015 [cited by applicant]
US 20150331796A1 · Guthrie et al. · 2015 [cited by applicant]
US 20170293567A1 · Bryant et al. · 2017 [cited by applicant]
US 20190108028A1 · Gonzalez et al. · 2019 [cited by applicant]
US 20190108035A1 · Gonzalez et al. · 2019 [cited by applicant]
US 20200133861A1 · Avudaiyappan · 2020 [cited by applicant]
US 20220004501A1 · Favor et al. · 2022 [cited by applicant]
US 20220357955A1 · Favor et al. · 2022 [cited by applicant]
US 20220358037A1 · Favor et al. · 2022 [cited by applicant]
US 20220358038A1 · Favor et al. · 2022 [cited by applicant]
US 20220358039A1 · Favor et al. · 2022 [cited by applicant]
US 20220358040A1 · Favor et al. · 2022 [cited by applicant]
US 20220358044A1 · Favor et al. · 2022 [cited by applicant]
US 20220358045A1 · Favor et al. · 2022 [cited by applicant]
US 20220358046A1 · Favor et al. · 2022 [cited by applicant]
US 20220358047A1 · Favor et al. · 2022 [cited by applicant]
US 20220358048A1 · Favor et al. · 2022 [cited by applicant]
US 20220358052A1 · Favor et al. · 2022 [cited by applicant]
US 20220358209A1 · Favor et al. · 2022 [cited by applicant]
US 20220358210A1 · Favor et al. · 2022 [cited by applicant]