IP Library › Granted Patent US 9,235,521
Granted Patent B2
US 9,235,521 · App. 13/952,710 · Granted Jan 12, 2016

Cache system for managing various cache line conditions

Inventors: Gary M. Lippert (Kasson, MN); Judy M. Gehman (Fort Collins, CO); Scott E. Greenfield (Burnsville, MN); Jerome M. Meyer (Chanhassen, MN); John M. Nystuen (Burnsville, MN)
Assignee: Avago Technologies General IP (Singapore) Pte Ltd
G06F12/0833G06F12/0888
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 9,235,521
App. No.
13/952,710
Granted
Jan 12, 2016
Kind
B2
Abstract

A cache controller configured to detect a wait type (i.e., a wait event) associated with an imprecise collision and/or contention event is disclosed. The cache controller is configured to operatively connect to a cache memory device, which is configured to store a plurality of cache lines. The cache controller is configured to detect a wait type due to an imprecise collision and/or collision event associated with a cache line. The cache controller is configured to cause transmission of a broadcast to one or more transaction sources (e.g., broadcast to the transaction sources internal to the cache controller) requesting the cache line indicating the transaction source can employ the cache line.

Claims (43)

1. An apparatus comprising:

a cache controller configured to operatively couple to a cache memory device, the cache memory device configured to store a plurality of cache lines,

the cache controller configured to detect a wait type due to an at least one of an imprecise collision event or an imprecise contention event associated with at least one cache line of the plurality of cache lines; and cause transmission of a broadcast to at least one transaction source requesting the at least one cache line, the broadcast indicating the at least one transaction source can employ the at least one cache line,

wherein imprecise collision events and imprecise contention events indicate that a resource is not available, and occur when resources cannot be allocated for a line fill operation.

2. The apparatus as recited in claim 1 , wherein each cache line of the plurality of cache lines associated with a tag entry within a cache tag array, the tag entry including cache state data for each corresponding cache line,

the cache controller configured to determine at least one cache line is to be evicted; set the cache state data for the at least one cache line to indicate the at least one cache line is marked for eviction; determine whether modified data is available for the at least one cache line; evict the at least one cache line; and set the cache state data corresponding to the at least one cache line to indicate the at least one cache line is ready to receive data from a line fill operation.

3. The apparatus as recited in claim 2 , wherein the cache controller is further configured to perform a snoop request to determine whether a cache line included within a second cache memory device that corresponds to the at least one cache line includes modified data.

4. The apparatus as recited in claim 1 , wherein each cache line of the plurality of cache lines associated with a tag entry within a cache tag array, the tag entry including cache state data for each corresponding cache line,

the cache controller configured to receive a partial write request associated with at least one cache line of the plurality of cache lines, the partial write request associated with a first portion of data; in response to receiving the partial write request, perform a background read operation to the at least one cache line, the background read operation associated with a second portion of data; modify the cache data state for the at least one cache line to prevent further access to the at least one cache line; merge the first portion of data with the second portion of data; write the merged data to the at least one cache line; and modify the cache data state for the at least one cache line to allow access to the at least one cache line.

5. The apparatus as recited in claim 4 , wherein the cache state data comprises a busy flag portion within the cache tag array.

6. The apparatus as recited in claim 4 , wherein the cache controller is configured to prevent a transaction source from accessing the at least one cache line when the cache data state is modified to prevent further access to the at least one cache line.

7. The apparatus as recited in claim 1 , wherein the wait type comprises a required resource being unavailable for the at least one cache line, and wherein the broadcast includes an indication the required resource is available.

8. A system comprising:

a cache memory device, the cache memory device configured to store a plurality of cache lines;

a cache controller operatively coupled to the cache memory device, the cache controller configured to detect a wait type due to an at least one of an imprecise collision event or an imprecise contention event associated with at least one cache line of the plurality of cache lines; and cause transmission of a broadcast to at least one transaction source requesting the at least one cache line, the broadcast indicating the at least one transaction source can employ the at least one cache line

wherein imprecise collision events and imprecise contention events indicate that a resource is not available, and occur when resources cannot be allocated for a line fill operation.

9. The system as recited in claim 8 , wherein each cache line of the plurality of cache lines associated with a tag entry within a cache tag array, the tag entry including cache state data for each corresponding cache line,

the cache controller configured to determine at least one cache line is to be evicted; set the cache state data for the at least one cache line to indicate the at least one cache line is marked for eviction; determine whether modified data is available for the at least one cache line; evict the at least one cache line; and set the cache state data corresponding to the at least one cache line to indicate the at least one cache line is ready to receive data from a line fill operation.

10. The system as recited in claim 9 , wherein the cache controller is further configured to perform a snoop request to determine whether a cache line included within a second cache memory device that corresponds to the at least one cache line includes modified data.

11. The system as recited in claim 8 , wherein each cache line of the plurality of cache lines associated with a tag entry within a cache tag array, the tag entry including cache state data for each corresponding cache line,

the cache controller configured to receive a partial write request associated with at least one cache line of the plurality of cache lines, the partial write request associated with a first portion of data; in response to receiving the partial write request, perform a background read operation to the at least one cache line, the background read operation associated with a second portion of data; modify the cache data state for the at least one cache line to prevent further access to the at least cache line; merge the first portion of data with the second portion of data; write the merged data to the at least one cache line; and modify the cache data state for the at least one cache line to allow access to the at least one cache line.

12. The system as recited in claim 11 , wherein the cache state data comprises a busy flag portion within the cache tag array.

13. The system as recited in claim 11 , wherein the cache controller is configured to prevent a transaction source from accessing the at least one cache line when the cache data state is modified to prevent further access to the at least one cache line.

14. The system as recited in claim 8 , wherein the wait type compnses a required resource being unavailable for the at least one cache line, and wherein the broadcast includes an indication the required resource is available.

15. A method comprising:

detecting a wait event due to at least one of an imprecise collision event or an imprecise contention event associated with at least one cache line of a plurality of cache lines stored within a cache memory device;

determining the type of wait event associated with the at least one cache line; and causing transmission of a broadcast to at least one transaction source requesting the at least one cache line, the broadcast indicating the at least one transaction source can employ the at least one cache line, the broadcast based upon the type of wait event,

wherein imprecise collision events and imprecise contention events indicate that a resource is not available, and occur when resources cannot be allocated for a line fill operation.

16. The method as recited in claim 15 , further comprising:

determining at least one cache line is to be evicted;

setting a cache state data for the at least one cache line to indicate the at least one cache line is marked for eviction;

evicting the at least one cache line; and

setting the cache state data corresponding to the at least one cache line to indicate the at least one cache line is ready to receive data from a line fill operation.

17. The method as recited in claim 16 , further comprising performing a snoop request to determine whether a cache line included within a second cache memory device that corresponds to the at least one cache line includes modified data.

18. The method as recited in claim 15 , further comprising:

receiving a partial write request associated with at least one cache line of the plurality of cache lines, the partial write request associated with a first portion of data;

performing a background read operation to the at least one cache line, the background read operation associated with a second portion of data in response to receiving the partial write request;

modifying a cache data state for the at least one cache line to prevent further access to the at least one cache line;

merging the first portion of data with the second portion of data;

writing the merged data to the at least one cache line; and

modifying the cache data state for the at least one cache line to allow access to the at least one cache line.

19. The method as recited in claim 18 , wherein the cache state data comprises a busy flag portion within the cache tag array.

20. The method as recited in claim 18 , further comprising preventing a transaction source from accessing the at least one cache line when the cache data state is modified to prevent further access to the at least one cache line.

Assignments (8)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2015
From: LSI CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035390/0388 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2013
From: LIPPERT, GARY M.; GEHMAN, JUDY M.; GREENFIELD, SCOTT E.; MEYER, JEROME M.; NYSTUEN, JOHN M.
To: LSI CORPORATION
Reel/Frame 030891/0639 →
Continuity (2)
Provisional Application 61856789 · Jul 22, 2013
Related Publication 20150026411A1 · Jan 22, 2015