# US 2014/0195740 A1 · Flow-id dependency checking logic

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

- Number: US 2014/0195740 A1
- Document ID: US20140195740A1
- Status: Published application
- Kind: A1
- Application number: 13/736,245
- Filed: 2013-01-08
- Published: 2014-07-10
- Earliest claimed: 2013-01-08
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: Gurjeet S. Saund; Harshavardhan Kaushikkar
- Web page: https://patentgrep.com/patent/US20140195740A1

## CPC

- G06F 12/0815: Cache consistency protocols
- G06F 9/46: Multiprogramming arrangements
- G06F 9/466: {Transaction processing}
- G06F 12/0811: with multilevel cache hierarchies
- G06F 13/18: based on priority control (G06F13/1605 takes precedence)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Systems and methods for maintaining an order of transactions in the coherence point. The coherence point stores attributes associated with received transactions in an input request queue (IRQ). When a new transaction is received with a device ordered attribute, the IRQ is searched for other entries with the same flow ID as the new transaction. If one or more matches are found, the new transaction entry points to the entry for the most recently received transaction with the same flow ID. The new transaction is prevented from exiting the coherence point until the transaction it points to has been sent to its destination.

## Claims

### Claim 1

A coherence point comprising:
one or more queues, wherein each queue stores a plurality of outstanding transactions; and
a dependency logic unit coupled to the one or more queues, wherein the dependency logic unit is configured to:
search the one or more queues for transactions with a first flow-identifier (ID) responsive to receiving a first transaction with the first flow-ID at the coherence point, wherein the first transaction has a device ordered attribute; and
mark the first transaction as dependent on a second transaction responsive to determining the second transaction is a most recently received transaction in the one or more queues with the first flow-ID.

### Claim 2 (depends on 1)

The coherence point as recited in claim 1, wherein the coherence point is configured to prevent the first transaction from exiting the queue until the second transaction exits the queue.

### Claim 3 (depends on 2)

The coherence point as recited in claim 2, wherein marking the first transaction as dependent on the second transaction comprises setting a head pointer field of the first transaction to reference the second transaction.

### Claim 4 (depends on 3)

The coherence point as recited in claim 3, wherein the coherence point is configured to store attributes associated with the first transaction in a first entry of a given queue, and wherein the first entry comprises the head pointer field.

### Claim 5 (depends on 4)

The coherence point as recited in claim 4, wherein the coherence point is configured to set the head pointer field of the first transaction to reference itself responsive to the second transaction exiting the queue.

### Claim 6 (depends on 5)

The coherence point as recited in claim 5, wherein the coherence point is configured to allow the first transaction to exit the queue responsive to determining the head pointer field of the first transaction references itself.

### Claim 7

A method comprising:
receiving a first transaction with a first flow-identifier (ID) at a coherence point;
searching a queue for any transactions with the first flow-ID, wherein the queue is configured to store entries corresponding to a plurality of outstanding transactions;
identifying a most recently received transaction in the queue with the first flow-ID responsive to finding multiple matches for the first flow-ID in the queue;
marking the first transaction as dependent on the most recently received transaction in the queue with the first flow-ID; and
preventing the first transaction from exiting the queue until the most recently received transaction with the first flow-ID exits the queue.

### Claim 8 (depends on 7)

The method as recited in claim 7, wherein the first transaction has a device ordered attribute.

### Claim 9 (depends on 8)

The method as recited in claim 8, further comprising storing attributes associated with the first transaction in a first entry of the queue.

### Claim 10 (depends on 9)

The method as recited in claim 9, wherein the attributes comprise a head pointer field, and wherein marking the first transaction as dependent on the most recently received transaction in the queue with the first flow-ID comprises setting the head pointer field of the first entry to reference an entry corresponding to the most recently received transaction in the queue with the first flow-ID.

### Claim 11 (depends on 10)

The method as recited in claim 10, further comprising setting the head pointer field of the first entry to reference itself responsive the most recently received transaction in the queue with the first flow-ID exiting the queue.

### Claim 12 (depends on 11)

The method as recited in claim 11, further comprising allowing the first transaction to exit the queue responsive to determining the head pointer field of the first entry references itself.

### Claim 13 (depends on 7)

The method as recited in claim 7, wherein the coherence point includes level two (L2) duplicate tags, wherein the method further comprising permitting the first transaction to search the L2 duplicate tags prior to the most recently received transaction in the queue with the first flow-ID exiting the queue.

### Claim 14

A method comprising:
receiving a first transaction with a first flow-identifier (ID) at a coherence point, wherein the first transaction has a device ordered attribute;
searching a queue for any transactions with the first flow-ID and the device ordered attribute;
setting a first head pointer corresponding to the first transaction to reference itself responsive to finding no transactions with the first flow-ID in the queue; and
setting the first head pointer to reference a second transaction responsive to finding one or more transactions with the first flow-ID and the device ordered attribute, wherein the second transaction is a most recently received transaction in the queue with both the first flow-ID and the device ordered attribute.

### Claim 15 (depends on 14)

The method as recited in claim 14, further comprising preventing the first transaction from exiting the queue responsive to determining the first head pointer references the second transaction.

### Claim 16 (depends on 15)

The method as recited in claim 15, further comprising allowing the first transaction to exit the queue responsive to determining the first head pointer references itself.

### Claim 17 (depends on 16)

The method as recited in claim 16, further comprising storing a plurality of attributes associated with the first transaction in a first entry of the queue.

### Claim 18 (depends on 17)

The method as recited in claim 17, wherein the plurality of attributes comprise the first head pointer.

### Claim 19 (depends on 18)

The method as recited in claim 18, further comprising setting the first head pointer to reference itself responsive to reading the second transaction out of the queue.

### Claim 20

An apparatus (SoC) comprising:
a coherence point, wherein the coherence point comprises:
one or more queues, wherein each queue of the one or more queues stores a plurality of outstanding transactions;
a dependency logic unit coupled to the one or more queues; and
a memory controller coupled to the coherence point;
wherein the coherence point is configured to:
search a flow-ID field of each entry of the one or more queues for a match to a first flow-ID, responsive to receiving a new transaction with the first flow-ID and a device ordered attribute;
identify a most recently received transaction in the queue with the first flow-ID responsive to finding multiple matching entries in the one or more queues;
store the new transaction in a first entry of the one or more queues;
update a head pointer field of the first entry to reference a second entry, wherein the second entry stores the most recently received transaction in the queue with the first flow-ID; and
prevent the new transaction from exiting the coherence point until the most recently received transaction in the queue with the first flow-ID has exited the coherence point.

### Claim 21 (depends on 20)

The apparatus as recited in claim 20, wherein the coherence point is further configured to allow the new transaction to be sent to the memory controller responsive to determining the most recently received transaction in the queue with the first flow-ID has been sent to the memory controller.

### Claim 22 (depends on 21)

The apparatus as recited in claim 21, wherein the coherence point is configured to store the first transaction in the first entry in a first queue.

### Claim 23 (depends on 22)

The apparatus as recited in claim 22, wherein the second transaction is stored in the second entry in a second queue, and wherein the head pointer field of the first entry references the second entry in the second queue.

### Claim 24 (depends on 20)

The apparatus as recited in claim 20, wherein the flow-ID field is a concatenation of a source ID field and a virtual channel (VC) field.
