# US 10,769,067 B2 · Cache line contention

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

- Number: US 10,769,067 B2
- Document ID: US10769067B2
- Status: Granted
- Kind: B2
- Application number: 16/182,669
- Filed: 2018-11-07
- Published: 2020-05-07
- Granted: 2020-09-08
- Earliest claimed: 2018-11-07
- Assignees: Arm Limited
- Applicants: Arm Limited
- Inventors: Alasdair Grant
- Web page: https://patentgrep.com/patent/US10769067B2

## CPC

- G06F 12/0815: Cache consistency protocols
- G06F 12/0831: using a bus scheme, e.g. with bus monitoring or watching means
- G06F 12/0833: {in combination with broadcast means (e.g. for invalidation or updating)}
- G06F 13/1668: {Details of memory controller}
- G06F 2212/1024: Latency reduction
- G06F 2212/1032: Reliability improvement, data loss prevention, degraded operation etc
- G06F 2212/608: Details relating to cache mapping
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A cache interconnect and method of operating a cache interconnect are disclosed. In the cache interconnect snoop circuitry stores a table containing an entry, for each of a plurality of cache lines, comprising a cache line identifier, an indication of a most recent processing element of a plurality of processing elements associated with the cache interconnect to access the cache line, and an indication of a data item in the cache line which was identified by the most recent processing element to be accessed. In response to a request from a requesting processing element of the plurality of processing elements, the request identifying a requested data item, the snoop circuitry determines a requested cache line identifier corresponding to the requested data item and looks up that identifier in the table. When the requested cache line identifier is stored in an identified entry in the table, the snoop circuitry provides, based on the requested data item and the indication of the data item in the table, an indication as to whether the requested data item is the same as the data item in the identified entry.

## Claims

### Claim 1

An apparatus comprising:
a cache interconnect comprising snoop circuitry to store a table containing an entry, for each of a plurality of cache lines, comprising a cache line identifier, an indication of a most recent processing element of a plurality of processing elements associated with the cache interconnect to access the cache line, and an indication of a data item in the cache line which was identified by the most recent processing element to be accessed;
wherein the snoop circuitry is responsive to a request from a requesting processing element of the plurality of processing elements, the request identifying a requested data item, to determine a requested cache line identifier corresponding to the requested data item, and
wherein the snoop circuitry is responsive to determining that the requested cache line identifier is stored in an identified entry in the table to provide, based on the requested data item and the indication of the data item in the table, an identity indication as to whether the requested data item is the same as the data item in the identified entry,
wherein the snoop circuitry further comprises a false sharing counter, and the snoop circuitry is responsive to the identity indication showing that the requested data item is not the same as the data item in the entry for the requested cache line to increment a value held by the false sharing counter.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the snoop circuitry further comprises a true sharing counter, and the snoop circuitry is responsive to the identity indication showing that the requested data item is the same as the data item in the entry for the requested cache line to increment a value held by the true sharing counter.

### Claim 3 (depends on 2)

The apparatus of claim 2, wherein the value held by the true sharing counter is stored in a software readable storage location.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein the value held by the false sharing counter is stored in a software readable storage location.

### Claim 5 (depends on 1)

The apparatus of claim 1, wherein the data item in the cache line is a first accessed data item which was identified by the most recent processing element to be accessed first amongst plural data items in the cache line.

### Claim 6 (depends on 1)

The apparatus of claim 1, wherein the requested data item is specified in the request to be accessed first amongst plural data items in the cache line by the requesting processing element.

### Claim 7 (depends on 1)

The apparatus of claim 1, wherein the identity indication is provided to the requesting processing element with the requested data item.

### Claim 8 (depends on 1)

The apparatus of claim 1, wherein the snoop circuitry is configured to update the identified entry in the table such that the indication of the most recent processing element of the plurality of processing elements to access the cache line corresponds to the requesting processing element, and the indication of the data item in the cache line which was identified by the most recent processing element to be accessed corresponds to the requested data item.

### Claim 9 (depends on 1)

The apparatus of claim 1, wherein the request identifying a requested data item comprises a memory address of the requested data item.

### Claim 10 (depends on 1)

The apparatus of claim 1, wherein the cache interconnect is configured to provide a status indicator to the requesting processing element with the requested data item.

### Claim 11 (depends on 10)

The apparatus of claim 10, wherein the status indicator comprises:
an indication that the data item is not being shared when the requested cache line identifier is not stored in the entries in the table.

### Claim 12 (depends on 10)

The apparatus of claim 10, wherein the status indicator comprises:
an indication that true sharing of the requested data item is occurring when the requested data item is the same as the data item in the entry for the requested cache line.

### Claim 13 (depends on 10)

The apparatus of claim 10, wherein the status indicator comprises:
an indication that false sharing of the requested data item is occurring when the requested data item is not the same as the data item in the entry for the requested cache line.

### Claim 14

A method of operating a cache interconnect comprising:
storing, in snoop circuitry of the cache interconnect, a table containing an entry, for each of a plurality of cache lines, comprising a cache line identifier, an indication of a most recent processing element of a plurality of processing elements associated with the cache interconnect to access the cache line, and an indication of a data item in the cache line which was identified by the most recent processing element to be accessed;
receiving, by the snoop circuitry, a request from a requesting processing element of the plurality of processing elements, the request identifying a requested data item;
determining, by the snoop circuitry, a requested cache line identifier corresponding to the requested data item;
providing, by the snoop circuitry and responsive to determining that the requested cache line identifier is stored in an identified entry in the table, and based on the requested data item and the indication of the data item in the table, an identity indication as to whether the requested data item is the same as the data item in the identified entry; and
in response to the identity indication showing that the requested data item is not the same as the data item in the entry for the requested cache line, incrementing a value held by a false sharing counter.

### Claim 15

An apparatus comprising:
means for storing a table containing an entry, for each of a plurality of cache lines, comprising a cache line identifier, an indication of a most recent processing element of a plurality of processing elements associated with a cache interconnect to access the cache line, and an indication of a data item in the cache line which was identified by the most recent processing element to be accessed;
means for receiving a request from a requesting processing element of the plurality of processing elements, the request identifying a requested data item to be accessed;
means for determining a requested cache line identifier corresponding to the requested data item;
means for providing, responsive to determining that the requested cache line identifier is stored in an identified entry in the table, and based on the requested data item and the indication of the data item in the table, an identity indication as to whether the requested data item is the same as the data item in the identified entry; and
responsive to the identity indication showing that the requested data item is not the same as the data item in the entry for the requested cache line, means for incrementing a value held by a false sharing counter.
