Module 1: Signal Encoding and Completion Rules
ACE4 Snoop Transactions and Responses
Learning objectives
- Explain the core mental model behind ACE4 Snoop Transactions and Responses
- Apply ACE4 Snoop Transactions and Responses within Signal Encoding and Completion Rules
- Identify important boundaries, trade-offs, and failure modes
- Produce concrete evidence from the practice exercise
Related: ACE4 Channels and Signals | ACE4 Read and Write Transactions | ACE4 Interconnect Responsibilities | ACE4 Cache States and Line Ownership
What the Snoop Path Does
The snoop path is how the interconnect asks a peer cache:
- do you have this line?
- are you keeping it?
- was it dirty?
- are you providing the data?
That conversation happens over:
ACfor snoop address and typeCRfor snoop responseCDfor snoop data if data is transferred
Common Snoop Transactions
The snoop address channel uses a subset of transaction types such as:
ReadOnceReadSharedReadCleanReadNotSharedDirtyReadUniqueCleanSharedCleanInvalidMakeInvalidDVM MessageDVM Complete
Not every initiator-side transaction maps one-to-one to a snoop transaction. The interconnect can transform initiator intent into the snoops that best achieve the required system result.
CRRESP Bits
| Bit | Name | Meaning |
|---|---|---|
CRRESP[0] | DataTransfer | A data transfer accompanies the snoop response |
CRRESP[1] | Error | The snooped component could not perform the request |
CRRESP[2] | PassDirty | The line was dirty and dirty responsibility is being passed with the data |
CRRESP[3] | IsShared | The snooped cache is retaining a copy after the snoop |
CRRESP[4] | WasUnique | The snooped cache held the line uniquely before this snoop |
The Most Important Legality Rules
PassDirty=1requiresDataTransfer=1.IsSharedmust be low for transactions that require peer copies to be removed, such asReadUnique,CleanInvalid, andMakeInvalid.- A
MakeInvalidtransaction never requires a data transfer. - For transactions such as
BarrierandDVM,IsSharedandPassDirtyhave no meaning and must be low.
These are excellent assertion targets.
How to Read a Snoop Response
| Response pattern | Practical meaning |
|---|---|
DataTransfer=0, IsShared=0, PassDirty=0 | No useful retained copy was involved, or the line was invalidated without data transfer |
DataTransfer=1, IsShared=0, PassDirty=0 | Clean data is being passed and the snooped cache is not retaining a copy |
DataTransfer=1, IsShared=0, PassDirty=1 | Dirty data is being passed and ownership is moving away from the snooped cache |
DataTransfer=1, IsShared=1, PassDirty=0 | Clean data is being provided while the snooped cache keeps a shared copy |
DataTransfer=1, IsShared=1, PassDirty=1 | Dirty data is being provided while the snooped cache still indicates shared retention where legal |
The exact legal combinations depend on the snoop type. The pattern above is meant as intuition, not a substitute for legality tables.
Practical Examples
ReadShared against a dirty peer
- Interconnect snoops the dirty peer.
- Peer returns data with
DataTransfer=1. - If dirty responsibility moves with the data,
PassDirty=1. - If the peer keeps a copy,
IsShared=1. - The interconnect uses all snoop results to generate the final initiator response.
ReadUnique against peers
- Interconnect issues snoops that remove competing copies.
- Snoop responses must not indicate shared retention at the end.
- If a dirty peer had the line, data might be transferred first.
- The initiator ends with unique ownership.
MakeInvalid
- The interconnect tells peers to invalidate.
- Data transfer is generally not required.
- If an implementation chooses not to transfer data,
PassDirtymust also stay low.
The Snoop Data Channel
When DataTransfer is asserted:
- data moves on
CDDATA - all byte lanes are valid
- the snoop data bus does not use byte strobes like the write data channel
This matters because many verification environments accidentally assume snoop data works like W channel payloads. It does not.
What the Interconnect Does with Snoop Outcomes
The interconnect collects all snoop responses and then decides:
- what final
IsSharedandPassDirtyto return to the initiator - whether memory must be updated
- whether later snoops can be optimized, for example once a line is known to be removed from peers
See ACE4 Interconnect Responsibilities.
Good Assertions to Write
PassDirty -> DataTransferMakeInvalid -> !DataTransferif your implementation follows the recommended simplified behaviorReadUnique -> !IsSharedin snoop and initiator-visible outcomesBarrierandDVMresponses must keep ownership bits lowCDVALIDshould only occur when a matching snoop response indicated data transfer
Summary
The snoop response path is where ACE exposes the real ownership story. DataTransfer, PassDirty, IsShared, and WasUnique are not incidental flags. Together they explain whether data moved, whether dirty responsibility moved, and whether any peer still keeps a copy after the snoop completes.
Practice lab
Draw or encode one legal transaction trace for ACE4 Snoop Transactions and Responses. Annotate fields, channel events, ordering points, and completion conditions; then construct one illegal or adversarial trace and define the checker that should catch it. Add an operational constraint such as concurrency, recovery, security, latency, or cost, and defend the resulting design trade-off.
Review questions
- What problem does ACE4 Snoop Transactions and Responses solve, and what assumptions does it rely on?
- Which boundary or failure case is easiest to miss, and how would you expose it?
- What alternative design would you consider, and what trade-off would change the decision?
- What artifact, trace, test, or metric proves that your implementation is correct?
Completion evidence
- A working artifact, annotated trace, or reproducible experiment
- At least one normal case and one deliberately failing or boundary case
- A concise explanation of the design choice and its trade-offs
- Saved output showing how correctness was evaluated