# US 10,120,774 B2 · Coherence protocol tables

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

- Number: US 10,120,774 B2
- Document ID: US10120774B2
- Status: Granted
- Kind: B2
- Application number: 14/583,559
- Filed: 2014-12-26
- Published: 2015-06-25
- Granted: 2018-11-06
- Earliest claimed: 2012-10-22
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Robert Beers; Yuvraj S. Dhillon
- Web page: https://patentgrep.com/patent/US10120774B2

## CPC

- G06F 13/22: using successive scanning, e.g. polling (G06F13/24 takes precedence)
- G06F 1/12: Synchronisation of different clock signals {provided by a plurality of clock generators}
- G06F 1/24: Resetting means
- G06F 1/3287: by switching off individual functional units in the computer system
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F 8/77: Software metrics
- G06F 9/30145: {Instruction analysis, e.g. decoding, instruction word fields}
- G06F 9/44505: {Configuring for program initiating, e.g. using registry, configuration files}
- G06F 9/466: {Transaction processing}
- G06F 11/1004: {to protect a block of data words, e.g. CRC or checksum (G06F11/1076 takes precedence; security arrangements for protecting computers or computer systems against unauthorized activity G06F21/00)}
- G06F 11/3604: Analysis of software for verifying properties of programs (testing of software G06F11/3668)
- G06F 12/0806: Multiuser, multiprocessor or multiprocessing cache systems
- G06F 12/0808: with cache invalidating means (G06F12/0815 takes precedence)
- G06F 12/0813: with a network or matrix configuration
- G06F 12/0815: Cache consistency protocols
- G06F 12/0828: {with concurrent directory accessing, i.e. handling multiple concurrent coherency transactions}
- 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/161: {with latency improvement}
- G06F 13/1673: {using buffers}
- G06F 13/1678: {using bus width}
- G06F 13/382: {using universal interface adapter}
- G06F 13/4004: {Coupling between buses}
- G06F 13/4022: {using switching circuits, e.g. switching matrix, connection or expansion network (G06F13/4009 takes precedence)}
- G06F 13/4068: {Electrical coupling}
- G06F 13/42: Bus transfer protocol, e.g. handshake; Synchronisation
- G06F 13/4221: {being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus}
- G06F 13/4265: {on a point to point bus (G06F13/4247, G06F13/4282 take precedence)}
- G06F 13/4282: {on a serial bus, e.g. I2C bus, SPI bus (on daisy chain buses G06F13/4247)}
- G06F 13/4286: {using a handshaking protocol, e.g. RS232C link}
- G06F 13/4291: {using a clocked protocol}
- G06N 20/00: Machine learning
- H03M 13/09: Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H04L 9/0662: {with particular pseudorandom sequence generator}
- H04L 49/15: Interconnection of switching modules
- G06F 8/73: Program documentation
- G06F 13/4273: {using a clocked protocol}
- G06F 2212/1016: Performance improvement
- G06F 2212/2542: Non-uniform memory access [NUMA] architecture
- G06F 2212/621: Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
- G06F 2212/622: State-only directory, i.e. not recording identity of sharing or owning nodes
- G06F 2213/0026: PCI express
- H04L 12/4641: {Virtual LANs, VLANs, e.g. virtual private networks [VPN] (LAN interconnection over a bridge based backbone H04L12/462; encapsulation techniques H04L12/4633; routing of packets H04L45/00; packet switches H04L49/00; virtual private networks for security H04L63/0272)}
- H04L 45/74: Address processing for routing
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- Y02D 30/00: Reducing energy consumption in communication networks
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- 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

An agent is provided to include state table storage to hold a set of state tables to represent a plurality of coherence protocol actions, where the set of state tables is to include at least one nested state table. The agent further includes protocol logic associated with the state table storage, the protocol logic to receive a coherence protocol message, and determine a coherence protocol action of the plurality of coherence protocol actions from the set of state tables based at least in part on the coherence protocol message.

## Claims

### Claim 1

An apparatus comprising: a coherence agent, implemented at least in part in hardware, wherein the coherence agent is to: identify a particular action; identify that a particular one of a plurality of state machine tables stored in memory corresponds to the particular action, wherein the plurality of state machine tables comprise machine-readable table structures and describe conditions governing state machine transitions to be made by coherence agents to comply with a particular coherence protocol; read the particular table to identify a particular row corresponding to a current coherence state of a cache line, wherein the particular row comprises a reference to another one of the plurality of state machine tables; access the other state machine table based on the reference to determine a particular coherence state transition from the current coherence state of the cache line; and transition the cache line from the current coherence state to a new coherence state based on the particular coherence state transition; and handle a request from another coherence agent corresponding to a cache managed by the coherence agent based on the new coherence state.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the reference comprises a link to the particular state machine table.

### Claim 3 (depends on 2)

The apparatus of claim 2, wherein the other state machine table is linked to by a plurality of different state machine tables in the plurality of state machine tables.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein the other state machine table is referenced in at least one other state machine table.

### Claim 5 (depends on 1)

The apparatus of claim 1, wherein the particular state table includes one or more columns corresponding to current states and one or more columns associated with next states, and the reference to the other state machine table is included in the columns associated with next states.

### Claim 6 (depends on 5)

The apparatus of claim 5, wherein the new state is determined from a particular one of the cells in the one or more columns associated with next states.

### Claim 7 (depends on 1)

The apparatus of claim 1, wherein the plurality of state machine tables embodies a formal specification of a protocol.

### Claim 8 (depends on 7)

The apparatus of claim 7, wherein the plurality of state machine tables comprise machine-parsable tables.

### Claim 9 (depends on 1)

The apparatus of claim 1, wherein the plurality of state machine tables comprises explicitly non-deterministic tables.

### Claim 10 (depends on 9)

The apparatus of claim 9, wherein the plurality of state machine tables lack bias fields.

### Claim 11

An apparatus comprising:
a computer-readable memory storing a plurality of state machine tables of a formal specification for a coherence protocol, wherein the plurality of state machine tables comprise machine-readable table structures and describe conditions governing state machine transitions to be made by coherence agents in compliance with the coherence protocol, each of the state machine tables is associated with a respective action and includes a plurality of respective columns, some of the columns are associated with a current state and other columns are associated with a next state, at least one column associated with a next state of a particular one of the plurality of state machine tables includes a reference to another one of the plurality of state machine tables, the particular state machine table is associated with a particular action, and the other state machine table is associated with a sub-action; and
a coherence agent, implemented at least in part in hardware, to use the plurality of state machines to determine behaviors of the coherence agent required or allowed by the coherence protocol, wherein the behaviors comprise transitioning a cache line from a current coherence state to a next coherence state,
wherein the coherence agents are further to handle a request corresponding to a cache managed by the coherence agent based on the new coherence state.

### Claim 12

A method comprising: receiving, at a coherence agent of a device, coherence protocol information; identifying a particular state table in a plurality of state machine tables stored in memory corresponding to the information, wherein the plurality of state machine tables comprise machine-readable table structures and describe conditions governing state machine transitions to be made by coherence agents to comply with a particular coherence protocol, and reading the particular table to identify a particular row of the particular table corresponding to a current coherence state of a cache line, wherein the particular row comprises a reference to another one of the plurality of state machine tables; accessing the other state machine table based on the reference; and performing a state machine transition from the current coherence state for the cache line based at least in part on contents of the other state machine table; and handling a request, received from another coherence agent, corresponding to a cache managed by the coherence agent based on the new coherence state.

### Claim 13 (depends on 12)

The method of claim 12, wherein the other state machine table corresponds to a sub-action of an action corresponding to the particular state table.

### Claim 14 (depends on 13)

The method of claim 13, wherein two or more of the plurality of state machine tables reference the other table.

### Claim 15 (depends on 12)

The method of claim 12, wherein the coherence protocol information comprises at least one of a snoop, a data message, a completion, and a forward response message.

### Claim 16

A system comprising:
a home agent comprising hardware circuitry, the home agent to service requests to a coherent memory space;
a cache agent comprising hardware circuitry, the cache agent communicatively coupled to the home agent, the cache agent to make requests of the coherent memory space according to a coherence protocol; and
a computer-readable memory accessible by the cache agent, the memory to store a plurality of state machine tables corresponding to the information, wherein the plurality of state machine tables comprise machine-readable table structures and describe conditions governing state machine transitions to be made by coherence agents to comply with a particular coherence protocol, a particular state machine table corresponds to a particular action and directs the cache agent to use another one of the plurality of state machine tables corresponding to a sub-action in association with entering a next state, and the particular table includes a reference to the other state machine table in a particular row of the particular table corresponding to a transition to the next state,
wherein the coherence agents are further to handle a request corresponding to a cache managed by the coherence agent based on the new coherence state.

### Claim 17 (depends on 16)

The system of claim 16, wherein the cache agent is further to receive responses to the requests of the coherent memory space from the home agent.

### Claim 18 (depends on 17)

The system of claim 17, wherein the cache agent is to determine a response from the plurality of state tables.

### Claim 19 (depends on 18)

The system of claim 18, wherein the response is based at least in part on content of the other state machine table.

### Claim 20 (depends on 16)

The system of claim 16, wherein the set of state tables are explicitly non-deterministic.
