# US 2017/0286301 A1 · Method, system, and apparatus for a coherency task list to minimize cache snooping between cpu and fpga

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

- Number: US 2017/0286301 A1
- Document ID: US20170286301A1
- Status: Published application
- Kind: A1
- Application number: 15/089,467
- Filed: 2016-04-01
- Published: 2017-10-05
- Earliest claimed: 2016-04-01
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Stephen S. Chang; Pratik M. Marolia
- Web page: https://patentgrep.com/patent/US20170286301A1

## CPC

- G06F 12/0831: using a bus scheme, e.g. with bus monitoring or watching means
- G06F 12/084: with a shared cache
- G06F 2212/314: In storage network, e.g. network attached cache
- G06F 2212/621: Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

Method and system implementing a task list in a cache agent for reducing cache line snoops. One embodiment comprises: monitoring a list of tasks that is stored in a shared cache memory and shared by a plurality of cache agents, wherein each task in the list of tasks is associated with at least a data block, a task command, and a task state, and wherein the list of tasks is fully coherent amongst the plurality of cache agents and the data block associated with each task is not coherent amongst the plurality of cache agents; detecting an access to the list of tasks and responsive to the detecting, snoop the list of tasks to generate a response, wherein the response comprises performing the task command of the accessed task on the associated data block to generate a result and storing the result in the same or different data block.

## Claims

### Claim 1

A method implemented in a shared cache memory system, the method comprising:
monitoring a list of tasks that is stored in a shared cache memory and shared by a plurality of cache agents, wherein each task in the list of tasks is associated with at least a data block, a task command, and a task state, and wherein the list of tasks is fully coherent amongst the plurality of cache agents and the data block associated with each task is not coherent amongst the plurality of cache agents;
detecting an access to the list of tasks and responsive to the detecting, snoop the list of tasks to generate a response, wherein the response comprises performing the task command of the accessed task on the associated data block to generate a result and storing the result in the same or different data block.

### Claim 2 (depends on 1)

The method of claim 1, wherein the list of tasks is fully coherent such that accesses to the list of tasks generate snoop requests to the plurality of cache agents in the shared cache memory system.

### Claim 3 (depends on 1)

The method of claim 1, wherein the data block is not coherent such that accesses to the data block do not generate snoop requests to the plurality of cache agents in the shared cache memory system.

### Claim 4 (depends on 1)

The method of claim 1, wherein the data block comprises one or more cache lines.

### Claim 5 (depends on 4)

The method of claim 4, wherein the one or more cache lines within the data block all have the same task state as the task entry.

### Claim 6 (depends on 1)

The method of claim 1, wherein each task is further associated with a task ID.

### Claim 7 (depends on 6)

The method of claim 6, wherein the task ID of a given task is an offset between the given task's address and the task list's base address.

### Claim 8 (depends on 1)

The method of claim 1, wherein the shared cache memory and one or more of the plurality of cache agents each maintains a copy of the task list.

### Claim 9 (depends on 1)

The method of claim 1, wherein performing the task command comprises one of reading the associated data block, writing to the associated data block, or process the associated data block.

### Claim 10 (depends on 1)

The method of claim 1, wherein the task state comprises one of empty state, idle state, modified state, exclusive state, shared state, invalid state, or pending state.

### Claim 11

A shared cache memory system comprising:
a shared cache memory;
a plurality of cache agents coupled to the shared cache memory, wherein each of the plurality cache agents to:
monitor a list of tasks that is stored in the shared cache memory and shared by the plurality of cache agents, wherein each task in the list of tasks is associated with at least a data block, a task command, and a task state, and wherein the list of tasks is fully coherent amongst the plurality of cache agents and the data block associated with each task is not coherent amongst the plurality of cache agents;
detect an access to the list of tasks and responsive to the detection, snoop the list of tasks to generate a response, wherein the response comprises performing the task command of the accessed task on the associated data block to generate a result and storing the result in the same or different data block.

### Claim 12 (depends on 11)

The system of claim 11, wherein the list of tasks is fully coherent such that accesses to the list of tasks generate snoop requests to the plurality of cache agents in the shared cache memory system.

### Claim 13 (depends on 11)

The system of claim 11, wherein the data block is not coherent such that accesses to the data block do not generate snoop requests to the plurality of cache agent in the shared cache memory system.

### Claim 14 (depends on 11)

The system of claim 11, wherein the data block comprises one or more cache lines.

### Claim 15 (depends on 14)

The system of claim 14, wherein the one or more cache lines within the data block have the same task state as the task entry.

### Claim 16 (depends on 11)

The system of claim 11, wherein each task is further associated with a task ID.

### Claim 17 (depends on 16)

The system of claim 16, wherein the task ID of a given task is an offset between the given task's address and the task list's base address.

### Claim 18 (depends on 11)

The system of claim 11, wherein the shared cache memory and one or more of the plurality of cache agents each maintains a copy of the task list.

### Claim 19 (depends on 11)

The system of claim 11, wherein performing the task command comprises one of reading the associated data block, writing to the associated data block, or process the associated data block.

### Claim 20 (depends on 11)

The system of claim 11, wherein the task state comprises one of empty state, idle state, modified state, exclusive state, shared state, invalid state, and pending state.

### Claim 21 (depends on 11)

The system of claim 11, wherein each of the plurality of cache agent further comprises a task manager to prioritize, check, and maintain cache coherency of the task list with other cache agents, as well as to assign task to one or more processing units within the cache agent.
