# US 2017/0286299 A1 · Sharing aware snoop filter apparatus and method

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2017/0286299 A1
- Document ID: US20170286299A1
- Status: Published application
- Kind: A1
- Application number: 15/088,921
- Filed: 2016-04-01
- Published: 2017-10-05
- Earliest claimed: 2016-04-01
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: SAMANTIKA S. SURY; ROBERT G. BLANKENSHIP; SIMON C. STEELY, JR.
- Web page: https://patentgrep.com/patent/US20170286299A1

## CPC

- G06F 12/0831: using a bus scheme, e.g. with bus monitoring or watching means
- G06F 12/0811: with multilevel cache hierarchies
- G06F 2212/283: Plural cache memories
- G06F 2212/621: Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An apparatus and method are described for a sharing aware snoop filter. For example, one embodiment of a processor comprises: a plurality of caches, each of the caches comprising a plurality of cache lines, at least some of which are to be shared by two or more of the caches; a snoop filter to monitor accesses to the plurality of cache lines shared by the two or more caches, the snoop filter comprising: a primary snoop filter comprising a first plurality of entries, each entry associated with one of the plurality of cache lines and comprising a N unique identifiers to uniquely identify up to N of the plurality of caches currently storing the cache line; an auxiliary snoop filter comprising a second plurality of entries, each entry associated with one of the plurality of cache lines, wherein once a particular cache line has been shared by more than N caches, an entry for that cache line is allocated in the auxiliary snoop filter to uniquely identify one or more additional caches storing the cache line.

## Claims

### Claim 1

A processor comprising:
a plurality of caches, each of the caches comprising a plurality of cache lines, at least some of which are to be shared by two or more of the caches;
a snoop filter to monitor accesses to the plurality of cache lines shared by the two or more caches, the snoop filter comprising:
a primary snoop filter comprising a first plurality of entries, each entry associated with one of the plurality of cache lines and comprising a N unique identifiers to uniquely identify up to N of the plurality of caches currently storing the cache line;
an auxiliary snoop filter comprising a second plurality of entries, each entry associated with one of the plurality of cache lines, wherein once a particular cache line has been shared by more than N caches, an entry for that cache line is allocated in the auxiliary snoop filter to uniquely identify one or more additional caches storing the cache line.

### Claim 2 (depends on 1)

The processor as in claim 1 wherein the N identifiers comprise first identification data uniquely identifying a current owner of the cache line and second identification data uniquely identifying a first sharer of the cache line.

### Claim 3 (depends on 1)

The processor as in claim 1 wherein once the cache line is stored by more than the current owner and the first sharer, an allocation for the cache line is made in the auxiliary snoop filter to uniquely identify one or more additional caches storing the cache line.

### Claim 4 (depends on 1)

The processor as in claim 1 wherein a first entry associated with a first cache line is to be initially stored in the primary snoop filter but not in the auxiliary snoop filter, the first entry to be copied from the primary snoop filter to the auxiliary snoop filter when the first cache line has been shared by more than N caches.

### Claim 5 (depends on 4)

The processor as in claim 4 wherein the first entry is removed from the primary snoop filter upon being copied to the auxiliary snoop filter, the first entry to be copied back to the primary snoop filter and removed from the auxiliary snoop filter upon being shared by N or fewer caches.

### Claim 6 (depends on 1)

The processor as in claim 1 wherein a first entry associated with a first cache line is to be initially allocated in the primary snoop filter, a first auxiliary entry to be allocated within the auxiliary snoop filter when the first cache line has been shared by more than N caches, the first auxiliary entry to include identification data for each individual cache sharing the first cache line.

### Claim 7 (depends on 6)

The processor as in claim 6 wherein the first entry in the primary snoop filter includes coarse-grained identification data identifying a group of caches which may be caching the first cache line.

### Claim 8 (depends on 1)

The processor as in claim 1 wherein the plurality of caches comprise a plurality of intra-core caches.

### Claim 9 (depends on 8)

The processor as in claim 8 wherein the intra-core caches comprise Level 1 (L1) and/or Level 2 (L2) caches.

### Claim 10 (depends on 9)

The processor as in claim 9 wherein the plurality of caches include one or more uncore caches.

### Claim 11

A method comprising:
allocating a first entry for a first cache line in a primary snoop filter, the first entry comprising a N unique identifiers to uniquely identify up to N caches currently storing the cache line;
detecting that a number of caches currently storing the first cache line is greater than N; and
responsively allocating a first auxiliary entry for the first cache line in an auxiliary snoop filter to uniquely identify one or more additional caches storing the cache line.

### Claim 12 (depends on 11)

The method as in claim 11 wherein the N identifiers comprise first identification data uniquely identifying a current owner of the first cache line and second identification data uniquely identifying a first sharer of the first cache line.

### Claim 13 (depends on 11)

The processor as in claim 11 wherein once the first cache line is stored by more than the current owner and the first sharer, an allocation for the first cache line is made in the auxiliary snoop filter to uniquely identify one or more additional caches storing the cache line.

### Claim 14 (depends on 11)

The processor as in claim 11 wherein a first entry associated with the first cache line is to be initially stored in the primary snoop filter but not in the auxiliary snoop filter, the first entry to be copied from the primary snoop filter to the auxiliary snoop filter when the first cache line has been shared by more than N caches.

### Claim 15 (depends on 14)

The processor as in claim 14 wherein the first entry is removed from the primary snoop filter upon being copied to the auxiliary snoop filter, the first entry to be copied back to the primary snoop filter and removed from the auxiliary snoop filter upon being shared by N or fewer caches.

### Claim 16 (depends on 11)

The processor as in claim 11 wherein a first auxiliary entry is to be allocated within the auxiliary snoop filter when the first cache line has been shared by more than N caches, the first auxiliary entry to include identification data for each individual cache sharing the first cache line.

### Claim 17 (depends on 16)

The processor as in claim 16 wherein the first entry in the primary snoop filter includes coarse-grained identification data identifying a group of caches which may be caching the first cache line.

### Claim 18 (depends on 11)

The processor as in claim 11 wherein the plurality of caches comprise a plurality of intra-core caches.

### Claim 19 (depends on 18)

The processor as in claim 18 wherein the intra-core caches comprise Level 1 (L1) and/or Level 2 (L2) caches.

### Claim 20 (depends on 19)

The processor as in claim 19 wherein the plurality of caches include one or more uncore caches.

### Claim 21

A system comprising:
a memory to store instructions and data;
a processor to execute the instructions and process the data;
a graphics processor to perform graphics operations in response to graphics instructions;
a network interface to receive and transmit data over a network;
an interface for receiving user input from a mouse or cursor control device, the plurality of cores executing the instructions and processing the data responsive to the user input;
the processor comprising:
a plurality of caches, each of the caches comprising a plurality of cache lines, at least some of which are to be shared by two or more of the caches;
a snoop filter to monitor accesses to the plurality of cache lines shared by the two or more caches, the snoop filter comprising:
a primary snoop filter comprising a first plurality of entries, each entry associated with one of the plurality of cache lines and comprising a N unique identifiers to uniquely identify up to N of the plurality of caches currently storing the cache line;
an auxiliary snoop filter comprising a second plurality of entries, each entry associated with one of the plurality of cache lines, wherein once a particular cache line has been shared by more than N caches, an entry for that cache line is allocated in the auxiliary snoop filter to uniquely identify one or more additional caches storing the cache line.

### Claim 22 (depends on 21)

The system as in claim 21 wherein the N identifiers comprise first identification data uniquely identifying a current owner of the cache line and second identification data uniquely identifying a first sharer of the cache line.

### Claim 23 (depends on 21)

The system as in claim 21 wherein once the cache line is stored by more than the current owner and the first sharer, an allocation for the cache line is made in the auxiliary snoop filter to uniquely identify one or more additional caches storing the cache line.

### Claim 24 (depends on 21)

The system as in claim 21 wherein a first entry associated with a first cache line is to be initially stored in the primary snoop filter but not in the auxiliary snoop filter, the first entry to be copied from the primary snoop filter to the auxiliary snoop filter when the first cache line has been shared by more than N caches.

### Claim 25 (depends on 24)

The system as in claim 24 wherein the first entry is removed from the primary snoop filter upon being copied to the auxiliary snoop filter, the first entry to be copied back to the primary snoop filter and removed from the auxiliary snoop filter upon being shared by N or fewer caches.
