IP Library Granted Patent US 11,023,376
Granted Patent B2
US 11,023,376 · App. 16/196,086 · Granted Jun 1, 2021

System and methods for efficient virtually-tagged cache implementation

Inventor: Erik Ernst Hagersten (Uppsala, SE)
Assignee: Samsung Electronics Co., Ltd.
G06F12/0806G06F12/0811G06F12/0895G06F12/1054G06F12/126G06F12/128G06F2212/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 11,023,376
App. No.
16/196,086
Granted
Jun 1, 2021
Kind
B2
Abstract

A multiprocessor system includes a plurality of nodes and at least one memory, each node containing at least one processor; a first cache configured to store a plurality of first cache lines, the first cache being private to at least one node from among the plurality of nodes; and a second cache configured to store a plurality of second cache lines, the second cache being at a higher level than the first cache, wherein at least one of the first cache lines includes a first associated pointer pointing to a location of one of the second cache lines, and wherein at least one of the second cache lines includes a second associated pointer pointing to a location of one of the first cache lines.

Claims (78)

1. A multiprocessor system for supporting interaction between a virtual cache and a physical cache, the system comprising:

a plurality of nodes and at least one memory, each node containing one or more processors, the one or more processors including a first processor;

a first cache configured to store a plurality of first cache lines, the first cache being private to at least one node from among the plurality of nodes; and

a second cache configured to store a plurality of second cache lines, the second cache being at a higher level than the first cache,

wherein at least one of the first cache lines includes a first associated pointer that points to a location, within the second cache, of one of the second cache lines,

wherein at least one of the second cache lines includes a second associated pointer that points to a location, within the first cache, of one of the first cache lines, and

wherein, in response to a data request of the first processor of the at least one node

resulting in a cache miss in the first cache due to data requested by the data request being included in none of the first cache lines of the first cache, and

resulting in a cache hit in the second cache due to the data being included in at least one of the second cache lines of the second cache

the first processor is configured to

generate a new cache line that holds the data and a pointer, and

store the new cache line in the first cache as one of the plurality of first cache lines,

wherein the pointer of the new cache line points to a location of a second cache line in which the data is stored, from among the plurality of second cache lines.

2. The multiprocessor system according to claim 1 , wherein,

the first cache is a virtually tagged cache,

each of the first cache lines includes a virtual tag,

the second cache is a physically tagged cache, and

each of the second cache lines includes a physical tag.

3. The multiprocessor system according to claim 1 ,

wherein the first cache is a write-through cache such that first data written to a first cache line, from among the plurality of first cache lines of the first cache, is also written to a second cache line, from among the plurality of second cache lines of the second cache, and

wherein the first cache line to which the first data was written includes a pointer that points to a location, within the second cache, of the second cache line to which the first data was written.

4. The multiprocessor system according to claim 1 ,

wherein the first cache is a write-invalidate cache such that in response to a first cache line, from among the plurality of first cache lines of the first cache, being invalidated, a corresponding second cache line, from among the plurality of second cache lines of the second cache, is also invalidated, and

wherein the first cache line that was invalidated includes a pointer that points to a location, within the second cache, of the corresponding second cache line that was invalidated.

5. The multiprocessor system according to claim 1 , wherein the first cache is a write-back cache such that, in response to one of the first cache lines being written to and dirty, a second cache line that is pointed to by a pointer included in the dirty first cache line, from among the plurality of second cache lines, is either

updated upon eviction of the dirty first cache line, or

state-changed to reflect that the dirty first cache line is not readable.

6. A data management method for supporting interaction between a virtual cache and a physical cache for a system, the system including at least one node, the at least one node including a processor to which a first cache, a second cache, and a memory are allocated, the first cache storing a plurality of first cache lines and being private to the at least one node, and the second cache storing a plurality of second cache lines and being at a higher level than the first cache, comprises:

storing in a first cache line from among the plurality of first cache lines a first associated pointer that points to a location, within the second cache, of a second cache line from among the plurality of second cache lines;

storing in the second cache line located at the location to which the first associated pointer points, a second associated pointer that points to a location, within the first cache, of the first cache line in which the first associated pointer is stored;

sending a request for data from the processor to the first cache and the second cache; and

in response to

the requested data resulting in a cache miss in the first cache due to the requested data being included in none of the first cache lines of the first cache, and

the requested data resulting in a cache hit in the second cache due to the requested data being included in at least one of the second cache lines of the second cache,

generating a new cache line that holds the requested data and a pointer, and

storing the new cache line in the first cache as one of the plurality of first cache lines,

wherein the pointer of the new cache line points to a location of a second cache line in which the data is stored.

7. The data management method of claim 6 , further comprising:

in response to first data being written to a first cache line, from among the plurality of first cache lines of the first cache, the first data is also written to a second cache line, from among the plurality of second cache lines of the second cache,

wherein the first cache line to which the first data was written includes a pointer that points to a location, within the second cache, of the second cache line to which the first data was written.

8. The data management method of claim 6 , further comprising:

in response to a first cache line, from among the plurality of first cache lines of the first cache, being invalidated, a corresponding second cache line, from among the plurality of second cache lines of the second cache, is also invalidated,

wherein the first cache line that was invalidated includes a pointer that points to a location, within the second cache, of the corresponding second cache line that was invalidated.

9. The data management method of claim 6 , further comprising:

in response to one of the first cache lines being written to and dirty, changing a state to reflect that the dirty first cache line is not readable,

the state being a state of a second cache line that is pointed to by a pointer included in the dirty first cache line, from among the plurality of second cache lines.

10. The data management method of claim 6 , further comprising:

receiving an external request produced by a cache coherence protocol;

performing a lookup in the second cache and selecting one of the second cache lines; and

accessing a first cache line to which a pointer included in the selected second cache line points.

11. The data management method of claim 10 , further comprising:

when the external request is an invalidation request, invalidating both the accessed first cache line and the selected second cache line.

12. The data management method of claim 10 , further comprising:

when the external request is a read request, reading data stored in at least one of the accessed first cache line and the selected second cache line.

13. The data management method of claim 6 , wherein the processor is further allocated a virtual-to-physical address translator, the first cache is virtually tagged cache and the second cache is physically tagged cache, and the method further comprises:

performing a lookup of the first cache based on a virtual address included in a data request generated from the processor;

when the data misses in the first cache, selecting one of the first cache lines as a victim cache line and generating a physical address from the virtual-to-physical address translator based on the data request; and

performing a lookup of the second cache based on the physical address.

14. The data management method of claim 13 , wherein the physical address includes a location of the victim cache line.

15. A non-transitory, computer-readable storage medium comprising computer-executable instructions that, when executed by at least one processor to which a virtually tagged cache including a plurality of first cache lines, a physically tagged cache including a plurality of second cache lines, and a memory are allocated, cause the at least one processor to perform a method for supporting interaction between a virtual cache and a physical cache, the method comprising:

storing in a first cache line from among the plurality of first cache lines a first associated pointer that points to a location, within the second cache, of a second cache line from among the plurality of second cache lines; and

storing in the second cache line located at the location to which the first associated pointer points, a second associated pointer that points to a location, within the first cache, of the first cache line in which the first associated pointer is stored;

sending a request for data from the processor to the first cache and the second cache; and

in response to

the requested data resulting in a cache miss in the first cache due to the requested data being included in none of the first cache lines of the first cache, and

the requested data resulting in a cache hit in the second cache due to the requested data being included in at least one of the second cache lines of the second cache,

generating a new cache line that holds the requested data and a pointer, and

storing the new cache line in the first cache as one of the plurality of first cache lines,

wherein the pointer of the new cache line points to a location of a second cache line in which the data is stored.

16. The non-transitory computer-readable storage medium according to claim 15 , wherein the method further includes:

in response to first data being written to a first cache line, from among the plurality of first cache lines of the first cache, the first data is also written to a second cache line, from among the plurality of second cache lines of the second cache,

wherein the first cache line to which the first data was written includes a pointer that points to a location, within the second cache, of the second cache line to which the first data was written.

17. The non-transitory computer-readable storage medium according to claim 15 , wherein the method further includes:

in response to a first cache line, from among the plurality of first cache lines of the first cache, being invalidated, a corresponding second cache line, from among the plurality of second cache lines of the second cache, is also invalidated,

wherein the first cache line that was invalidated includes a pointer that points to a location, within the second cache, of the corresponding second cache line that was invalidated.

18. The non-transitory computer-readable storage medium according to claim 15 , wherein the method further includes:

in response to one of the first cache lines being written to and dirty, changing a state to reflect that the dirty first cache line is not readable,

the state being a state of a second cache line that is pointed to by a pointer included in the dirty first cache line, from among the plurality of second cache lines.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 20, 2018
From: HAGERSTEN, ERIK ERNST
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 047555/0250 →
Continuity (2)
Provisional Application 62588720 · Nov 20, 2017
Related Publication 20190155733A1 · May 23, 2019
Cited By (1)
US 12,737,295