Channels

PicoLink uses exactly two channels per core, one in each direction. Each channel is an independent, unidirectional, flow-controlled message stream (see Signal Descriptions and Flow Control for the signal-level definition).

Channel

Direction

Purpose

A

Core → CM

Requests (ReadShared, ReadExclusive, Upgrade), voluntary and forced writebacks (WriteBack), and invalidation acknowledgments (InvAck).

B

CM → Core

Grants (GrantS, GrantE, GrantM), demand invalidations (Invalidate), writeback acknowledgments (WriteBackAck), and denials (Nack).

Channel usage rules

Rule

Requirement

PL-CHAN-01

A-channel opcodes shall only be transported on channel A; B-channel opcodes shall only be transported on channel B. The unified opcode space (see Message Field Definitions) makes the channel derivable from the opcode; a receiver may treat a mismatch as a protocol error.

PL-CHAN-02

A core shall have at most one outstanding request (ReadShared, ReadExclusive, Upgrade, or voluntary WriteBack) per cache line at any time. Multiple outstanding requests to different lines are permitted, bounded by the transaction-ID space (see Message Field Definitions).

PL-CHAN-03

The CM shall have at most one outstanding Invalidate per {core, cache line} pair at any time.

PL-CHAN-04

Nack shall only be issued in response to Upgrade. ReadShared, ReadExclusive, and WriteBack shall never be denied; the CM shall stall or queue such requests until it can serve them (see Coherency Manager (CM) Behavior). This restriction is what guarantees forward progress after a Nack retry (rule PL-PROG-01).

A channel messages (Core → CM)

Message

Class

Meaning

ReadShared

Request

Request at least Shared (S) permission for a cache line, with data. The CM may respond with GrantE when the requester would be the only holder (see Grant message usage).

ReadExclusive

Request

Request Exclusive (E) permission for a cache line, with data, typically ahead of a store.

Upgrade

Request

Request promotion S M without data transfer. The requester shall hold the line in S when the request is issued. This is the only request that can be denied (Nack).

WriteBack

Writeback

Transfer a dirty (M) line back to memory and relinquish it. Issued voluntarily on eviction, or as the forced response of an M holder to Invalidate. Carries a full-line data payload.

InvAck

Response

Acknowledge a received Invalidate. Confirms the core no longer holds a valid copy of the line.

Rule

Requirement

PL-CHAN-05

A core that receives Invalidate shall respond with exactly one of WriteBack (if it holds the line in M) or InvAck (in all other cases, including I — see rule PL-MESI-06). When a core in M responds with WriteBack, that WriteBack is the implicit InvAck: the core shall not send a separate InvAck, and the CM shall not expect one.

B channel messages (CM → Core)

Message

Class

Meaning

GrantS

Response

Grants Shared permission. Carries a full clean line of data.

GrantE

Response

Grants Exclusive permission. Carries a full clean line of data.

GrantM

Response

Grants write (Modified) permission without data. Issued only in response to Upgrade: the requester already holds the current data in S.

Invalidate

Demand

Orders the core to relinquish the line: write back if dirty (WriteBack), acknowledge otherwise (InvAck), and transition to I. The only CM-initiated message in the protocol.

WriteBackAck

Response

Acknowledges a WriteBack; confirms the payload has been committed to memory. Completes the writeback transaction.

Nack

Response

Denies an Upgrade that lost a race. The requester shall retry using ReadExclusive (see Ordering, Races, and Atomicity).

Grant message usage

Message

Data?

Response to

Conditions

GrantS

Yes

ReadShared

Always legal in response to ReadShared.

GrantE

Yes

ReadShared, ReadExclusive

The only legal response to ReadExclusive. Legal in response to ReadShared only when the requester becomes the sole holder of the line.

GrantM

No

Upgrade

Only after all other sharers have been invalidated and every acknowledgment has been received (rule PL-CM-06).

Rule

Requirement

PL-CHAN-06

In response to ReadShared, the CM shall issue GrantS or GrantE. GrantE is permitted only when no other core holds the line at the time the grant is issued, and is the recommended response in that case (the Exclusive-grant optimization: it allows the requester to later write without an Upgrade). GrantS is always legal.

PL-CHAN-07

In response to ReadExclusive, the CM shall issue GrantE and nothing else. Note that a core intending to write receives E, not M: the subsequent store performs the silent E M transition locally (see MESI State Transitions).

Request–response summary

Every A-channel message except InvAck completes with exactly one B-channel response:

A-channel message

Legal completions

Illegal responses

ReadShared

GrantS, GrantE

GrantM, Nack

ReadExclusive

GrantE

GrantS, GrantM, Nack

Upgrade

GrantM, Nack

GrantS, GrantE

WriteBack

WriteBackAck

any other

InvAck

(none — terminates the CM’s Invalidate)

any

Rule

Requirement

PL-CHAN-08

Every request and every WriteBack shall receive exactly one completing response. InvAck and Invalidate are themselves completions and shall not be responded to.