IP Library Granted Patent US 12,099,448
Granted Patent B2
US 12,099,448 · App. 17/752,010 · Granted Sep 24, 2024

Virtually-indexed cache coherency using physical address proxies

Inventors: John G. Favor (San Francisco, CA); Srivatsan Srinivasan (Cedar Park, TX); Robert Haskell Utley (Austin, TX)
Assignee: Ventana Micro Systems Inc.
G06F12/0891G06F12/0811G06F12/0864
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,099,448
App. No.
17/752,010
Granted
Sep 24, 2024
Kind
B2
Abstract

A cache memory subsystem includes virtually-indexed L1 and PIPT L2 set-associative caches having an inclusive allocation policy such that: when a first copy of a memory line specified by a physical memory line address (PMLA) is allocated into an L1 entry, a second copy of the line is also allocated into an L2 entry; when the second copy is evicted, the first copy is also evicted. For each value of the PMLA, the second copy can be allocated into only one L2 set, and an associated physical address proxy (PAP) for the PMLA includes a set index and way number that uniquely identifies the entry. For each value of the PMLA there exist two or more different L1 sets into which the first copy can be allocated, and when the L2 evicts the second copy, the L1 uses the PAP of the PMLA to evict the first copy.

Claims (83)

1. A cache memory subsystem, comprising:

first-level and second-level set-associative caches having an inclusive allocation policy such that:

when a first copy of a line of memory specified by a physical memory line address is allocated into an entry of the first-level cache, a second copy of the line of memory is also allocated into an entry of the second-level cache if the second copy has not already been allocated into an entry of the second-level cache; and

when the second copy is evicted from the second-level cache, the first copy is also evicted from the first-level cache;

wherein the second-level cache is physically-indexed and physically-tagged such that, for each value of the physical memory line address:

there exists only one set of the second-level cache into which the second copy can be allocated; and

an associated physical address proxy (PAP) for the physical memory line address may be formed by the cache memory subsystem that includes a set index and a way number that uniquely identifies the entry in the set into which the second copy is allocated;

wherein the first-level cache is virtually-indexed such that, for each value of the physical memory line address:

there exist two or more different sets of the first-level cache into which the first copy can be allocated; and

wherein when the second-level cache evicts the second copy, the first-level cache uses the PAP of the physical memory line address to determine the entry into which the first copy was allocated and to evict the first copy.

2. The cache memory subsystem of claim 1 ,

wherein the first-level cache is also virtually-tagged such that, for each value of the physical memory line address:

there exist two or more different ways within each of the two or more different sets of the first-level cache into which the first copy can be allocated.

3. The cache memory subsystem of claim 1 ,

wherein the second-level cache evicts the second copy from the second-level cache in response to a snoop request that specifies the physical memory line address.

4. The cache memory subsystem of claim 1 ,

wherein the second-level cache evicts the second copy from the second-level cache in response to allocating a different physical memory line address into the entry of the second-level cache into which the second copy was previously allocated.

5. The cache memory subsystem of claim 1 ,

wherein if the first copy in the determined entry is modified, the first-level data cache is configured to write back the modified first copy to memory in conjunction with evicting the first copy.

6. The cache memory subsystem of claim 1 , further comprising:

a PAP directory having entries corresponding to the entries of the first-level cache;

wherein the first-level cache looks up the PAP in the PAP directory to determine the entry into which the first copy was allocated.

7. The cache memory subsystem of claim 6 ,

wherein a set of the first-level cache is selected using a virtual address having T translated bits and U untranslated bits;

wherein the first-level cache is logically arranged as S sets and W ways;

wherein the two or more different sets of the first-level cache into which the first copy can be allocated are 2{circumflex over ( )}T different sets; and

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

8. The cache memory subsystem of claim 7 ,

wherein the U untranslated bits of the virtual address are equivalent to U corresponding bits of the set index of the second-level cache;

wherein in response to the virtual address missing in the first-level cache, the first-level cache generates a cache line fill request to the second-level cache;

wherein in response to the cache line fill request, the second-level cache allocates the second copy into the entry of the second-level cache if the second copy has not already been allocated into the entry of the second-level cache and provides at least a diminutive PAP (dPAP) of the PAP that uniquely identifies the entry of the second-level cache into which the second copy is allocated, wherein the dPAP is bits of the PAP other than the bits of the set index of the second-level cache corresponding to the U untranslated bits of the virtual address; and

wherein the U untranslated bits of the virtual address are used to select one row of the S/(2{circumflex over ( )}T) rows of the PAP directory into which to write the dPAP.

9. The cache memory subsystem of claim 8 ,

wherein the T translated bits of the virtual address are used to select W columns of the W*(2{circumflex over ( )}T) columns of the PAP directory from which to select one column of the selected W columns into which to write the dPAP.

10. The cache memory subsystem of claim 6 ,

wherein the allocation policy permits multiple synonyms to be co-resident in the first-level data cache; and

wherein the first-level cache looks up the PAP in the PAP directory to determine the synonyms into which the first copy was allocated.

11. A method, comprising:

in a cache memory subsystem comprising:

first-level and second-level set-associative caches having an inclusive allocation policy such that:

when a first copy of a line of memory specified by a physical memory line address is allocated into an entry of the first-level cache, a second copy of the line of memory is also allocated into an entry of the second-level cache if the second copy has not already been allocated into an entry of the second-level cache; and

when the second copy is evicted from the second-level cache, the first copy is also evicted from the first-level cache;

wherein the second-level cache is physically-indexed and physically-tagged such that, for each value of the physical memory line address:

there exists only one set of the second-level cache into which the second copy can be allocated; and

an associated physical address proxy (PAP) for the physical memory line address may be formed by the cache memory subsystem that includes a set index and a way number that uniquely identifies the entry in the set into which the second copy is allocated;

wherein the first-level cache is virtually-indexed such that, for each value of the physical memory line address:

there exist two or more different sets of the first-level cache into which the first copy can be allocated;

using, by the first-level cache when the second-level cache evicts the second copy, the PAP of the physical memory line address to determine the entry into which the first copy was allocated and to evict the first copy.

12. The method of claim 11 ,

wherein the first-level cache is also virtually-tagged such that, for each value of the physical memory line address:

there exist two or more different ways within each of the two or more different sets of the first-level cache into which the first copy can be allocated.

13. The method of claim 11 ,

wherein the second-level cache evicts the second copy from the second-level cache in response to a snoop request that specifies the physical memory line address.

14. The method of claim 11 ,

wherein the second-level cache evicts the second copy from the second-level cache in response to allocating a different physical memory line address into the entry of the second-level cache into which the second copy was previously allocated.

15. The method of claim 11 , further comprising:

if the first copy in the determined entry is modified, writing back, by the first-level data cache, the modified first copy to memory in conjunction with evicting the first copy.

16. The method of claim 11 , further comprising:

wherein the cache memory subsystem further comprises a PAP directory having entries corresponding to the entries of the first-level cache;

looking up, by the first-level cache, the PAP in the PAP directory to determine the entry into which the first copy was allocated.

17. The method of claim 16 ,

wherein a set of the first-level cache is selected using a virtual address having T translated bits and U untranslated bits;

wherein the first-level cache is logically arranged as S sets and W ways;

wherein the two or more different sets of the first-level cache into which the first copy can be allocated are 2{circumflex over ( )}T different sets; and

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

18. The method of claim 17 , further comprising:

wherein the U untranslated bits of the virtual address are equivalent to U corresponding bits of the set index of the second-level cache;

generating, by the first-level cache in response to the virtual address missing in the first-level cache, a cache line fill request to the second-level cache; and

allocating, by the second-level cache allocates in response to the cache line fill request, the second copy into the entry of the second-level cache if the second copy has not already been allocated into the entry of the second-level cache and providing at least a diminutive PAP (dPAP) of the PAP that uniquely identifies the entry of the second-level cache into which the second copy is allocated, wherein the dPAP is bits of the PAP other than the bits of the set index of the second-level cache corresponding to the U untranslated bits of the virtual address;

wherein the U untranslated bits of the virtual address are used to select one row of the S/(2{circumflex over ( )}T) rows of the PAP directory into which to write the dPAP.

19. The method of claim 18 ,

wherein the T translated bits of the virtual address are used to select W columns of the W*(2{circumflex over ( )}T) columns of the PAP directory from which to select one column of the selected W columns into which to write the dPAP.

20. The method of claim 16 ,

wherein the allocation policy permits multiple synonyms to be co-resident in the first-level data cache; and

looking up, by the first-level cache looks up, the PAP in the PAP directory to determine the synonyms into which the first copy was allocated.

21. A cache memory subsystem, comprising:

a virtually-indexed first-level data cache;

a physically-indexed physically-tagged second-level set-associative cache, wherein each entry in the second-level cache is uniquely identified by a set index and a way number;

wherein the cache memory subsystem has an inclusive allocation policy such that:

each cache line of memory allocated into the first-level data cache is also allocated into the second-level cache; and

when the second-level cache evicts the cache line, the second-level cache also causes the first-level data cache to evict the cache line;

wherein when a snoop request that specifies a physical memory line address hits in an entry in the second-level cache, the cache memory subsystem forwards the snoop request to the first-level data cache but substitutes a physical address proxy (PAP) for the physical memory line address in response to which the first-level cache evicts the cache line; and

wherein the PAP specifies the way number and the set index of the hit entry in the second-level cache.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 26, 2022
From: FAVOR, JOHN G.; SRINIVASAN, SRIVATSAN; UTLEY, ROBERT HASKELL
To: VENTANA MICRO SYSTEMS INC.
Reel/Frame 060027/0216 →
Continuity (19)
Continuation In Part 17747513 · May 18, 2022
Continuation In Part 17747556 · 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
Related Publication 20220358048A1 · Nov 10, 2022