IP Library › Granted Patent US 12,321,285
Granted Patent B2
US 12,321,285 · App. 18/659,407 · Granted Jun 3, 2025

Victim cache with write miss merging

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,321,285
App. No.
18/659,407
Granted
Jun 3, 2025
Kind
B2
Abstract

A caching system including a first sub-cache, a second sub-cache, coupled in parallel with the first sub-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 a cache controller configured to receive two or more cache commands, determine a conflict exists between the received two or more cache commands, determine a conflict resolution between the received two or more cache commands, and sending the two or more cache commands to the first sub-cache and the second sub-cache.

Claims (76)

1. A device, comprising:

a cache including a cache line mappable to a plurality of addresses; and

a cache controller coupled to the cache and configured to:

receive a write command specifying to write first data to a first address of the plurality of addresses;

determine whether the write command is associated with a hit in the cache; and

based on determining that the write command is associated with a hit in the cache,

begin write of the first data to the cache line; and

during the write of the first data to the cache line,

receive a read command specifying to read from a second address of the plurality of addresses;

determine whether the read command is associated with a miss in the cache; and

based on determining that the read command is associated with a miss in the cache, interrupt the write of the first data to the cache line.

2. The device of claim 1 , wherein the cache controller is further configured to:

based on determining that the read command is associated with a miss in the cache, read second data from another memory; and

store the second data to the cache line.

3. The device of claim 1 , wherein a size of the first data is less than a size of the cache line.

4. The device of claim 1 , wherein the cache controller is further configured to:

based on determining that the read command is not associated with a miss in the cache, complete the write of the first data to the cache line.

5. The device of claim 4 , wherein:

the write command further specifies a key value; and

to complete the write of the first data to the cache line, the cache controller is configured to:

read existing data from the cache line;

compare the existing data and the key value; and

based on a result of comparison of the existing data and the key value, write the first data to overwrite the existing data.

6. The device of claim 5 , wherein the cache controller is further configured to:

based on the result of comparison of the existing data and the key value, generate an error correcting code (ECC) based on the first data.

7. The device of claim 1 , wherein the cache controller is further configured to write the ECC to the cache.

8. The device of claim 1 , wherein the cache is a 2-way set associative cache.

9. A system, comprising:

a processor configured to generate write commands and read commands;

a cache including a cache line mappable to a first address and a second address; and

a cache controller configured to:

receive a write command generated by the processor which specifies to write first data to the first address;

determine that the cache line is presently mapped to the first address; and

based on determining that the cache line is presently mapped to the first address,

begin write of the first data to the cache line; and

during the write of the first data to the cache line,

receive a read command generated by the processor;

determine whether the read command specifies to read from the second address; and

based on determining that the read command specifies to read from the second address, interrupt the write of the first data to the cache line.

10. The system of claim 9 , wherein the cache controller is further configured to:

based on determining that the read command specifies to read from the second address,

read second data from another memory; and

store the second data to the cache line.

11. The system of claim 9 , wherein the write command is a partial write command.

12. The system of claim 9 , wherein the cache controller is further configured to:

based on determining that the read command does not specify to read from the second address, complete the write of the first data to the cache line.

13. The system of claim 12 , wherein:

the write command further specifies a key value; and

to complete the write of the first data to the cache line, the cache controller is configured to:

read existing data from the cache line;

compare the existing data and the key value; and

based on a result of comparison of the existing data and the key value, write the first data to overwrite the existing data.

14. The system of claim 13 , wherein the cache controller is further configured to:

based on the result of comparison of the existing data and the key value, generate an error correcting code (ECC) based on the first data.

15. The system of claim 14 , wherein the cache controller is further configured to write the ECC to the cache.

16. A method, comprising:

receiving, at a cache controller of a cache, a write command, wherein the cache includes a cache line mappable to a plurality of addresses, and wherein the write command specifies to write first data to a first address of the plurality of address;

determining, by the cache controller, that the write command is associated with a hit in the cache; and

based on determining that the write command is associated with a hit in the cache, beginning, by the cache controller, write of the first data to the cache line; and

during the write of the first data to the cache line,

receiving, at the cache controller, a read command specifying to read from a second address of the plurality of address;

determining, by the cache controller, whether the read command is associated with a miss in the cache; and

based on determining that the read command is associated with a miss in the cache, interrupting, by the cache controller, the write of the first data to the cache line.

17. The method of claim 16 , further comprising:

based on determining that the read command is associated with a miss in the cache, reading second data from another memory; and

storing the second data to the cache line.

18. The method of claim 16 , further comprising:

based on determining that the read command is not associated with a miss in the cache, writing the first data to the cache line.

19. The method of claim 18 , wherein:

the write command further specifies a key value; and

writing the first data to the cache line comprises:

reading existing data from the cache line;

comparing the existing data and the key value; and

based on a result of comparison of the existing data and the key value, writing the first data to overwrite the existing data.

20. The method of claim 19 , further comprises:

based on the result of comparison of the existing data and the key value, generating an error correcting code (ECC) based on the first data.

Continuity (4)
Continuation 17828189 · May 31, 2022
Continuation 16882403 · May 22, 2020
Provisional Application 62852494 · May 24, 2019
Related Publication 20240296129A1 · Sep 5, 2024
References Cited (15)
US 5687338A · Boggs et al. · 1997 [cited by applicant]
US 6775750B2 · Krueger · 2004 [cited by applicant]
US 8181005B2 · Zuraski, Jr. et al. · 2012 [cited by applicant]
US 9170955B2 · Forsyth et al. · 2015 [cited by applicant]
US 20010034808A1 · Nakajima · 2001 [cited by examiner]
US 20100023695A1 · Guthrie 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 20130191601A1 · Peterson 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 20170046278A1 · Clancy et al. · 2017 [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]