IP Library Granted Patent US 12,189,540
Granted Patent B2
US 12,189,540 · App. 18/456,619 · Granted Jan 7, 2025

Fully pipelined read-modify-write support

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/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,189,540
App. No.
18/456,619
Granted
Jan 7, 2025
Kind
B2
Abstract

Methods, apparatus, systems and articles of manufacture are disclosed to facilitate fully pipelined read-modify-write support in level 1 data cache using store queue and data forwarding. An example apparatus includes a first storage, a second storage, a store queue coupled to the first storage and the second storage, the store queue operable to receive a first memory operation specifying a first set of data, process the first memory operation for storing the first set of data in at least one of the first storage and the second storage, receive a second memory operation, and prior to storing the first set of data in the at least one of the first storage and the second storage, feedback the first set of data for use in the second memory operation.

Claims (73)

1. A device comprising:

a processor core configured to provide:

a first operation associated with writing a first set of data; and

a second operation associated with reading the first set of data; and

a cache subsystem coupled to the processor core that includes:

a cache memory; and

a cache queue coupled to the cache memory and that includes a set of pipeline stages that includes:

a first pipeline stage coupled to the cache memory and configured to read a second set of data;

a second pipeline stage coupled to the first pipeline stage and that includes read-modify-write circuitry configured to merge the first set of data with the second set of data to produce a third set of data; and

a third pipeline stage coupled to the second pipeline stage and configured to, based on the second operation being associated with reading of the first set of data, cause the third set of data that includes the first set of data to be provided to a previous pipeline stage of the cache queue prior to the third set of data being stored in the cache memory.

2. The device of claim 1 , wherein:

the third pipeline stage includes error correcting code generation circuitry configured to generate error correcting code for the third set of data; and

the third pipeline stage is configured to cause the error correcting code to be stored in the cache memory with the third set of data.

3. The device of claim 1 , wherein the previous pipeline stage is the second pipeline stage.

4. The device of claim 1 , wherein:

the second operation is a read-modify-write operation; and

the third pipeline stage is configured to provide the third set of data to the read-modify-write circuitry of the second pipeline stage.

5. The device of claim 1 , wherein:

the second pipeline stage includes arithmetic circuitry; and

the third pipeline stage is configured to provide the third set of data to the arithmetic circuitry of the second pipeline stage.

6. The device of claim 1 , wherein:

the second pipeline stage includes atomic compare-and-swap circuitry; and

the third pipeline stage is configured to provide the third set of data to the atomic compare-and-swap circuitry of the second pipeline stage.

7. The device of claim 1 , wherein the cache memory is a level-one (L1) main cache memory.

8. The device of claim 1 , wherein the cache memory is a level-one (L1) victim cache memory.

9. The device of claim 1 , wherein the third pipeline stage is configured to provide the third set of data to the first pipeline stage to be stored in the cache memory.

10. A device comprising:

a set of processor cores configured to provide:

a read-modify write operation associated with an address and a first set of data; and

a second operation associated with the address; and

a cache subsystem coupled to the set of processor cores that includes:

a main cache memory;

a victim cache memory; and

a cache queue coupled to the main cache memory and that includes:

a first pipeline stage coupled to the main cache memory and configured to read, based on the address, a second set of data;

a second pipeline stage coupled to the first pipeline stage and that includes read-modify-write circuitry configured to merge the first set of data with the second set of data to produce a third set of data; and

a third pipeline stage coupled to the second pipeline stage and configured to, based on the second operation being associated with the address, cause the third set of data to be provided to a previous pipeline stage of the cache queue prior to the third set of data being stored in the main cache memory.

11. The device of claim 10 , wherein:

the third pipeline stage includes error correcting code generation circuitry configured to generate error correcting code for the third set of data; and

the third pipeline stage is configured to cause the error correcting code to be stored in the main cache memory with the third set of data.

12. The device of claim 10 , wherein the previous pipeline stage is the second pipeline stage.

13. The device of claim 10 , wherein:

the second operation is a read-modify-write operation; and

the third pipeline stage is configured to provide the third set of data to the read-modify-write circuitry of the second pipeline stage.

14. The device of claim 10 , wherein:

the second pipeline stage includes arithmetic circuitry; and

the third pipeline stage is configured to provide the third set of data to the arithmetic circuitry of the second pipeline stage.

15. The device of claim 10 , wherein:

the second pipeline stage includes atomic compare-and-swap circuitry; and

the third pipeline stage is configured to provide the third set of data to the atomic compare-and-swap circuitry of the second pipeline stage.

16. A device comprising:

a set of processor cores configured to provide:

a read-modify write operation associated with an address and a first set of data; and

a second operation associated with the address; and

a cache subsystem coupled to the set of processor cores that includes:

a main cache memory;

a victim cache memory; and

a cache queue coupled to the victim cache memory and that includes:

a first pipeline stage coupled to the victim cache memory and configured to read, based on the address, a second set of data;

a second pipeline stage coupled to the first pipeline stage and that includes read-modify-write circuitry configured to merge the first set of data with the second set of data to produce a third set of data; and

a third pipeline stage coupled to the second pipeline stage and configured to, based on the second operation being associated with the address, cause the third set of data to be provided to a previous pipeline stage of the cache queue prior to the third set of data being stored in the victim cache memory.

17. The device of claim 16 , wherein:

the third pipeline stage includes error correcting code generation circuitry configured to generate error correcting code for the third set of data; and

the third pipeline stage is configured to cause the error correcting code to be stored in the victim cache memory with the third set of data.

18. The device of claim 16 , wherein:

the second operation is a read-modify-write operation; and

the third pipeline stage is configured to provide the third set of data to the read-modify-write circuitry of the second pipeline stage.

19. The device of claim 16 , wherein:

the second pipeline stage includes arithmetic circuitry; and

the third pipeline stage is configured to provide the third set of data to the arithmetic circuitry of the second pipeline stage.

20. The device of claim 16 , wherein:

the second pipeline stage includes atomic compare-and-swap circuitry; and

the third pipeline stage is configured to provide the third set of data to the atomic compare-and-swap circuitry of the second pipeline stage.

Continuity (3)
Continuation 16882238 · May 22, 2020
Provisional Application 62852494 · May 24, 2019
Related Publication 20230401162A1 · Dec 14, 2023
References Cited (38)
US 5644752A · Cohen et al. · 1997 [cited by applicant]
US 5845321A · Ito et al. · 1998 [cited by applicant]
US 5860107A · Patel · 1999 [cited by applicant]
US 6219773B1 · Garibay, Jr. et al. · 2001 [cited by applicant]
US 6289438B1 · Takayanagi · 2001 [cited by applicant]
US 7814300B2 · Moyer et al. · 2010 [cited by applicant]
US 7937559B1 · Parameswar et al. · 2011 [cited by applicant]
US 8943273B1 · Jamil et al. · 2015 [cited by applicant]
US 9081501B2 · Asaad et al. · 2015 [cited by applicant]
US 10114558B2 · Miller · 2018 [cited by examiner]
US 11714760B2 · Bhoria · 2023 [cited by examiner]
US 20030033491A1 · Henry et al. · 2003 [cited by applicant]
US 20060095741A1 · Asher et al. · 2006 [cited by applicant]
US 20070094450A1 · VaneerWiel · 2007 [cited by applicant]
US 20080126691A1 · Yang et al. · 2008 [cited by applicant]
US 20090198867A1 · Guthrie et al. · 2009 [cited by applicant]
US 20090282225A1 · Caprioli et al. · 2009 [cited by applicant]
US 20090300338A1 · Caprioli et al. · 2009 [cited by applicant]
US 20110149661A1 · Rajwani et al. · 2011 [cited by applicant]
US 20110185104A1 · Brueggen · 2011 [cited by applicant]
US 20110219215A1 · Blumrich et al. · 2011 [cited by applicant]
US 20110289279A1 · Sonnier et al. · 2011 [cited by applicant]
US 20110302373A1 · Ito · 2011 [cited by applicant]
US 20120117323A1 · Cypher et al. · 2012 [cited by applicant]
US 20140143471A1 · Moyer et al. · 2014 [cited by applicant]
US 20150178221A1 · Damodaran et al. · 2015 [cited by applicant]
US 20170091102A1 · Wright · 2017 [cited by applicant]
US 20170153890A1 · Anderson et al. · 2017 [cited by applicant]
US 20180365122A1 · Zbiciak et al. · 2018 [cited by applicant]
US 20190102090A1 · Guim Bernat et al. · 2019 [cited by applicant]
US 20200371939A1 · Bhoria et al. · 2020 [cited by applicant]
US 20200371956A1 · Bhoria et al. · 2020 [cited by applicant]
Extended European Search Report for 20813951.9 mailed Jun. 13, 2022. [cited by applicant]
International Search Report for PCT/US2020/034564 mailed Aug. 20, 2020. [cited by applicant]
Nesbit, et al.; “Virtual Private Caches”; Jun. 2007; ACM; ISCA 2007; pp. 57-68. [cited by applicant]
Skadron et al.; “Design Issues and Tradeoffs for Write Buffers”; 1997; IEEE; HPCA 1997; pp. 144-155. [cited by applicant]
Norman P. Jouppi; “Improving Direct-Mapped Cache Performance by the Addition of a Small fully-Associative Cache and Prefetch Butters”; 1990; IEEE; Computer architecture News; pp. 364-373. [cited by applicant]
European Extended Search Report for 24183618.8 dated Nov. 20, 2024; 7 pages. [cited by applicant]