IP Library › Granted Patent US 12,380,035
Granted Patent B2
US 12,380,035 · App. 18/194,716 · Granted Aug 5, 2025

Methods and apparatus to facilitate read-modify-write support in a coherent victim cache with parallel data paths

Inventors: Naveen Bhoria (Plano, TX); Timothy David Anderson (University Park, TX); Pete Michael 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,380,035
App. No.
18/194,716
Granted
Aug 5, 2025
Kind
B2
Abstract

Methods, apparatus, systems and articles of manufacture are disclosed facilitate read-modify-write support in a coherent victim cache with parallel data paths. An example apparatus includes a random-access memory configured to be coupled to a central processing unit via a first interface and a second interface, the random-access memory configured to obtain a read request indicating a first address to read via a snoop interface, an address encoder coupled to the random-access memory, the address encoder to, when the random-access memory indicates a hit of the read request, generate a second address corresponding to a victim cache based on the first address, and a multiplexer coupled to the victim cache to transmit a response including data obtained from the second address of the victim cache.

Claims (72)

1. A circuit device comprising:

a first cache level that includes:

a main cache memory;

a victim cache memory configured to receive data evicted from the main cache memory;

a victim store queue coupled to the victim cache memory; and

a cache controller coupled to the victim cache memory and coupled to the victim store queue,

wherein the cache controller is configured to:

receive a snoop request associated with a set of data from a second cache level;

determine whether the set of data is present in either the victim store queue or in the victim cache memory; and

based on that the set of data is present in either the victim store queue or the victim cache memory, provide the set of data to the second cache level.

2. The circuit device of claim 1 , wherein the cache controller includes a multiplexer that includes:

a first input coupled to the victim store queue;

a second input coupled to the victim cache memory; and

an output configured to provide the set of data.

3. The circuit device of claim 1 , wherein the cache controller comprises:

a first interface coupled to a processor; and

a snoop interface coupled to the second cache level.

4. The circuit device of claim 3 , further comprising a tag random access memory configured to store a set of addresses, wherein the cache controller is configured to determine whether the set of data is present in either the victim store queue or in the victim cache memory based on the set of addresses stored in the tag random access memory.

5. The circuit device of claim 4 , wherein:

the cache controller includes comparison logic coupled to the snoop interface and to the tag random access memory; and

wherein the cache controller is configured to determine whether the set of data is present in either the victim store queue or in the victim cache memory using the tag random access memory.

6. The circuit device of claim 5 , wherein:

the snoop request specifies an address associated with the set of data; and

the cache controller includes an address generator coupled to the comparison logic and configured to translate the address into an address space of the victim cache memory.

7. The circuit device of claim 3 , wherein the cache controller includes a second interface configured to couple to the processor in parallel with the first interface.

8. The circuit device of claim 7 , wherein the first interface is a scalar interface and the second interface is a vector interface.

9. The circuit device of claim 1 , wherein the first cache level is a level one (L1) cache level and the second cache level is a level two (L2) cache level.

10. A circuit device comprising:

a processor core; and

a first cache level that includes:

a first main cache memory;

a first victim cache memory configured to receive data evicted from the first main cache memory;

a victim store queue coupled to the first victim cache memory; and

a cache controller coupled to the processor core, to the first victim cache memory, and to the victim store queue; and

a second cache level that includes:

a second cache memory,

wherein the cache controller is configured to:

receive a first request to read or write a set of data from the processor core;

receive a snoop request for the set of data from the second cache level; and

provide the set of data from either the victim store queue or the first victim cache memory to the second cache level.

11. The circuit device of claim 10 , wherein:

the first cache level is a level one (L1) cache level; and

the second cache level is a level two (L2) cache level.

12. The circuit device of claim 10 , wherein:

the snoop request specifies an address associated with the set of data; and

the cache controller includes an address generator configured to translate the address into an address space of the first victim cache memory.

13. The circuit device of claim 10 , wherein the cache controller includes a multiplexer that includes:

a first input coupled to the victim store queue;

a second input coupled to the first victim cache memory; and

an output configured to provide the set of data.

14. The circuit device of claim 10 , wherein the cache controller is configured to:

receive the first request from the processor core via a first interface; and

receive the snoop request from the second cache level via a second interface.

15. A method comprising:

receiving, by a cache controller of a first cache level, a snoop request from a second cache level directed to a set of data;

determining, by the cache controller, whether the set of data is present in a victim cache memory of the first cache level or in a queue associated with pending writes to the victim cache memory;

retrieving, by the cache controller, the set of data from either the victim cache memory or the queue; and

providing, by the cache controller, the set of data to the second cache level.

16. The method of claim 15 , wherein:

the victim cache memory receives data evicted from a main cache memory of the first cache level.

17. The method of claim 15 , wherein:

the victim cache memory is a level-one (L1) cache memory; and

the snoop request is received from a level two (L2) cache controller.

18. The method of claim 15 , wherein:

the snoop request specifies an address associated with the set of data; and

the retrieving of the set of data includes translating the address into an address space of the victim cache memory.

19. The method of claim 18 , wherein:

the retrieving of the set of data includes comparing the address to contents of a tag random access memory to determine whether the snoop request is associated with a cache hit; and

the translating of the address is performed based on the snoop request being associated with the cache hit.

20. The method of claim 15 further comprising:

receiving a first request associated with the set of data from a processor core; and

based on the first request, storing the set of data in the queue.

Continuity (3)
Continuation 16882225 · May 22, 2020
Provisional Application 62852494 · May 24, 2019
Related Publication 20230236974A1 · Jul 27, 2023
References Cited (61)
US 5325503A · Stevens et al. · 1994 [cited by applicant]
US 5822755A · Shippy · 1998 [cited by applicant]
US 5935233A · Jeddeloh · 1999 [cited by applicant]
US 6173371B1 · Arimilli · 2001 [cited by examiner]
US 6215497B1 · Leung · 2001 [cited by applicant]
US 6397296B1 · Werner · 2002 [cited by applicant]
US 6446166B1 · Arimilli · 2002 [cited by examiner]
US 6484237B1 · Agarwala · 2002 [cited by examiner]
US 6775750B2 · Krueger · 2004 [cited by applicant]
US 7620780B1 · Anderson · 2009 [cited by examiner]
US 7970998B2 · Yamamoto et al. · 2011 [cited by applicant]
US 8019944B1 · Favor · 2011 [cited by examiner]
US 8181005B2 · Zuraski, Jr. et al. · 2012 [cited by applicant]
US 9170955B2 · Forsyth et al. · 2015 [cited by applicant]
US 9317433B1 · Joshua · 2016 [cited by examiner]
US 9691452B2 · Pekny et al. · 2017 [cited by applicant]
US 9696934B2 · Rothberg · 2017 [cited by applicant]
US 20010037424A1 · Singh · 2001 [cited by examiner]
US 20030009629A1 · Gruner · 2003 [cited by examiner]
US 20030023814A1 · Barroso et al. · 2003 [cited by applicant]
US 20040193809A1 · Dieffenderfer · 2004 [cited by examiner]
US 20040199722A1 · Dodson · 2004 [cited by examiner]
US 20060047912A1 · Chinnakonda · 2006 [cited by examiner]
US 20070005842A1 · Sohm · 2007 [cited by examiner]
US 20070094450A1 · VanderWiel · 2007 [cited by applicant]
US 20090231918A1 · Doyle · 2009 [cited by applicant]
US 20100153647A1 · Guthrie · 2010 [cited by examiner]
US 20110010503A1 · Yamamura et al. · 2011 [cited by applicant]
US 20110185114A1 · Bolanowski · 2011 [cited by applicant]
US 20110283041A1 · Kanoh · 2011 [cited by applicant]
US 20120042126A1 · Krick et al. · 2012 [cited by applicant]
US 20120198163A1 · Damodaran · 2012 [cited by examiner]
US 20120221774A1 · Atkisson · 2012 [cited by examiner]
US 20120221793A1 · Tran · 2012 [cited by examiner]
US 20130111123A1 · Thayer · 2013 [cited by applicant]
US 20130111141A1 · Kessler · 2013 [cited by examiner]
US 20130125097A1 · Ebcioglu et al. · 2013 [cited by applicant]
US 20130191601A1 · Peterson · 2013 [cited by examiner]
US 20130321439A1 · Goodrich · 2013 [cited by applicant]
US 20140095809A1 · Moll et al. · 2014 [cited by applicant]
US 20140189245A1 · Rupley · 2014 [cited by examiner]
US 20140195715A1 · Kim et al. · 2014 [cited by applicant]
US 20150006820A1 · Bhoria et al. · 2015 [cited by applicant]
US 20150106567A1 · Godard · 2015 [cited by examiner]
US 20150127912A1 · Solihin · 2015 [cited by applicant]
US 20150278984A1 · Koker · 2015 [cited by examiner]
US 20150302904A1 · Yoon et al. · 2015 [cited by applicant]
US 20150316605A1 · Deutsch et al. · 2015 [cited by applicant]
US 20160294983A1 · Kliteynik et al. · 2016 [cited by applicant]
US 20170091096A1 · McCarthy · 2017 [cited by applicant]
US 20170357588A1 · Moyer · 2017 [cited by applicant]
US 20180157967A1 · Henry · 2018 [cited by examiner]
US 20180165199A1 · Brandt · 2018 [cited by examiner]
US 20180336143A1 · Lai et al. · 2018 [cited by applicant]
US 20200241844A1 · Koeplinger · 2020 [cited by examiner]
CN 116257472B · 2023 [cited by examiner]
KR 920009192B1 · 1989 [cited by examiner]
KR 20090084465A · 2008 [cited by examiner]
KR 20170083070A · 2015 [cited by examiner]
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]