IP Library › Granted Patent US 12,265,477
Granted Patent B2
US 12,265,477 · App. 18/535,162 · Granted Apr 1, 2025

Hybrid victim cache and write miss buffer with fence operation

Inventors: Naveen Bhoria (Plano, TX); Timothy David Anderson (University Park, TX); Pete Hippleheuser (Murphy, TX)
Assignee: Texas Instruments Incorporated
G06F12/128G06F9/3001G06F9/30043G06F9/30047G06F9/546G06F11/1064G06F12/0215G06F12/0238G06F12/0292G06F12/0802G06F12/0804G06F12/0806G06F12/0811G06F12/0815G06F12/082G06F12/0853G06F12/0855G06F12/0864G06F12/0884G06F12/0888G06F12/0891G06F12/0895G06F12/0897G06F12/1027G06F12/12G06F12/121G06F12/126G06F12/127G06F13/1605G06F13/1642G06F13/1673G06F13/1689G06F15/8069G11C5/066G11C7/10G11C7/1015G11C7/106G11C7/1075G11C7/1078G11C7/1087G11C7/222G11C29/42G11C29/44G06F2212/1016G06F2212/1021G06F2212/1024G06F2212/1041G06F2212/1044G06F2212/301G06F2212/454G06F2212/603G06F2212/6032G06F2212/6042G06F2212/608G06F2212/62
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,265,477
App. No.
18/535,162
Granted
Apr 1, 2025
Kind
B2
Abstract

A caching system including a first sub-cache, and a second sub-cache, coupled in parallel with the first cache, for storing cache data evicted from the first sub-cache and write-memory commands that are not cached in the first sub-cache, and wherein the second sub-cache includes: color tag bits configured to store an indication that a corresponding cache line of the second sub-cache storing write miss data is associated with a color tag, and an eviction controller configured to evict cache lines of the second sub-cache storing write-miss data based on the color tag associated with the cache line.

Claims (46)

1. A system, comprising:

a first sub-cache; and

a second sub-cache, comprising:

a set of cache lines configured to store data evicted from the first sub-cache; and

a memory configured to store a set of eviction tags each corresponding to a respective cache line of the set of cache lines,

wherein the second sub-cache is configured to:

receive a first write memory command for a memory address, the first write memory command associated with a first eviction tag;

store first data associated with the first write memory command in a cache line of the second sub-cache;

store the first eviction tag in the memory;

receive a second write memory command for the cache line, the second write memory command associated with a second eviction tag; and

merge the second eviction tag with the first eviction tag to generate a merged eviction tag.

2. The system of claim 1 , wherein the first eviction tag is same as the second eviction tag, and wherein the merged eviction tag is same as the first eviction tag.

3. The system of claim 1 , wherein the first eviction tag is different from the second eviction tag, and wherein the merged eviction tag includes both the first and second eviction tags.

4. The system of claim 3 , wherein the second sub-cache is configured to evict the first data of the cache line based on the first eviction tag or the second eviction tag.

5. The system of claim 1 , wherein the first and second eviction tags are represented by respective values of a first bit field and a second bit field in an entry of the memory.

6. The system of claim 5 , wherein the entry comprises one or more additional fields configured to store values indicating modified, exclusive, shared, and invalid (MESI) states of the first data of the cache line.

7. The system of claim 6 , wherein the one or more additional fields comprises a field storing a value that indicates whether the first data is associated with a write memory command that misses in the first sub-cache.

8. A method, comprising:

receiving, by a caching system, a first write memory command for a memory address, wherein the caching system includes a first sub-cache and a second sub-cache, wherein the second sub-cache includes a set of cache lines and a memory, wherein the set of cache lines stores data evicted from the first sub-cache, wherein the memory stores a set of eviction tags each corresponding to a respective cache line of the set of cache lines, and wherein the first write memory command is associated with a first eviction tag;

storing, by the second sub-cache, first data associated with the first write memory command in a cache line of the second sub-cache;

storing, by the second sub-cache, the first eviction tag in the memory;

receiving, by the caching system, a second write memory command for the cache line, wherein the second write memory command is associated with a second eviction tag; and

merging, by the second sub-cache, the second eviction tag with the first eviction tag to generate a merged eviction tag.

9. The method of claim 8 , wherein the first eviction tag is same as the second eviction tag, and wherein the merged eviction tag is same as the first eviction tag.

10. The method of claim 8 , wherein the first eviction tag is different from the second eviction tag, and wherein the merged eviction tag includes both the first and second eviction tags.

11. The method of claim 10 , further comprising evicting the first data of the cache line from the second sub-cache based on the first eviction tag or the second eviction tag.

12. The method of claim 8 , wherein the first and second eviction tags are represented by respective values of a first bit field and a second bit field in an entry of the memory.

13. The method of claim 12 , wherein the entry comprises one or more additional fields storing values that indicate modified, exclusive, shared, and invalid (MESI) states of the first data of the cache line.

14. The method of claim 13 , wherein the one or more additional fields comprises a field storing a value that indicates whether the first data is associated with a write memory command that misses in the first sub-cache.

15. A device, comprising:

a processor;

a first sub-cache coupled to the processor; and

a second sub-cache, comprising:

a set of cache lines configured to store data evicted from the first sub-cache; and

a memory configured to store a set of eviction tags each corresponding to a respective cache line of the set of cache lines,

wherein the second sub-cache is configured to:

receive a first write memory command for a memory address, the first write memory command associated with a first eviction tag;

store first data associated with the first write memory command in a cache line of the second sub-cache;

store the first eviction tag in the memory;

receive a second write memory command for the cache line, the second write memory command associated with a second eviction tag; and

merge the second eviction tag with the first eviction tag to generate a merged eviction tag.

16. The device of claim 15 , wherein the second sub-cache is configured to evict the first data of the cache line based on the merged eviction tag.

17. The device of claim 15 , wherein the first eviction tag is same as the second eviction tag, and wherein the merged eviction tag is same as the first eviction tag.

18. The device of claim 15 , wherein the first eviction tag is different from the second eviction tag, and wherein the merged eviction tag includes both the first and second eviction tags.

19. The device of claim 15 , wherein the first and second eviction tags are represented by respective values of a first bit field and a second bit field in an entry of the memory.

20. The device of claim 19 , wherein the entry comprises an additional field storing a value that indicates whether the first data is associated with a write memory command that misses in the first sub-cache.

Continuity (3)
Continuation 16882378 · May 22, 2020
Provisional Application 62852494 · May 24, 2019
Related Publication 20240104026A1 · Mar 28, 2024
References Cited (33)
US 5412799A · Papadopoulos · 1995 [cited by applicant]
US 6195729B1 · Arimilli et al. · 2001 [cited by applicant]
US 6477634B1 · Comment · 2002 [cited by applicant]
US 6775750B2 · Krueger · 2004 [cited by applicant]
US 7461210B1 · Wentzlaff et al. · 2008 [cited by applicant]
US 8181005B2 · Zuraski, Jr. et al. · 2012 [cited by applicant]
US 8327187B1 · Metcalf · 2012 [cited by applicant]
US 9170955B2 · Forsyth et al. · 2015 [cited by applicant]
US 20020069328A1 · Chauvel · 2002 [cited by applicant]
US 20030056143A1 · Prabhu · 2003 [cited by applicant]
US 20060143396A1 · Cabot · 2006 [cited by applicant]
US 20060277352A1 · Pong · 2006 [cited by examiner]
US 20100064107A1 · Eddy et al. · 2010 [cited by applicant]
US 20120042126A1 · Krick et al. · 2012 [cited by applicant]
US 20120221774A1 · Atkisson et al. · 2012 [cited by applicant]
US 20120221793A1 · Tran · 2012 [cited by applicant]
US 20120246408A1 · Yamamura et al. · 2012 [cited by applicant]
US 20130117838A1 · Levin et al. · 2013 [cited by applicant]
US 20130191601A1 · Peterson et al. · 2013 [cited by applicant]
US 20130332672A1 · Busaba et al. · 2013 [cited by applicant]
US 20130339659A1 · Bybell et al. · 2013 [cited by applicant]
US 20140189245A1 · Rupley et al. · 2014 [cited by applicant]
US 20150006820A1 · Bhoria et al. · 2015 [cited by applicant]
US 20160269501A1 · Usgaonkar et al. · 2016 [cited by applicant]
US 20170047119A1 · Xu et al. · 2017 [cited by applicant]
US 20180307613A1 · Koker et al. · 2018 [cited by applicant]
US 20190042444A1 · Natarajan et al. · 2019 [cited by applicant]
US 20200097407A1 · Kimelman et al. · 2020 [cited by applicant]
EP 0989496A2 · 2005 [cited by applicant]
International Search Report for PCT/US2020/034560 mailed Aug. 20, 2020. [cited by applicant]
International Search Report for PCT/US2020/034557 mailed Sep. 10, 2020. [cited by applicant]
Wikipedia page on Cache Coloring as Published Mar. 27, 2019 (Year: 2019). [cited by applicant]
What happens to the cache contents on a context switch by Gilles (Year: 2015). [cited by applicant]