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:

  • AC for snoop address and type
  • CR for snoop response
  • CD for snoop data if data is transferred

Common Snoop Transactions

The snoop address channel uses a subset of transaction types such as:

  • ReadOnce
  • ReadShared
  • ReadClean
  • ReadNotSharedDirty
  • ReadUnique
  • CleanShared
  • CleanInvalid
  • MakeInvalid
  • DVM Message
  • DVM 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

BitNameMeaning
CRRESP[0]DataTransferA data transfer accompanies the snoop response
CRRESP[1]ErrorThe snooped component could not perform the request
CRRESP[2]PassDirtyThe line was dirty and dirty responsibility is being passed with the data
CRRESP[3]IsSharedThe snooped cache is retaining a copy after the snoop
CRRESP[4]WasUniqueThe snooped cache held the line uniquely before this snoop

The Most Important Legality Rules

  • PassDirty=1 requires DataTransfer=1.
  • IsShared must be low for transactions that require peer copies to be removed, such as ReadUnique, CleanInvalid, and MakeInvalid.
  • A MakeInvalid transaction never requires a data transfer.
  • For transactions such as Barrier and DVM, IsShared and PassDirty have no meaning and must be low.

These are excellent assertion targets.


How to Read a Snoop Response

Response patternPractical meaning
DataTransfer=0, IsShared=0, PassDirty=0No useful retained copy was involved, or the line was invalidated without data transfer
DataTransfer=1, IsShared=0, PassDirty=0Clean data is being passed and the snooped cache is not retaining a copy
DataTransfer=1, IsShared=0, PassDirty=1Dirty data is being passed and ownership is moving away from the snooped cache
DataTransfer=1, IsShared=1, PassDirty=0Clean data is being provided while the snooped cache keeps a shared copy
DataTransfer=1, IsShared=1, PassDirty=1Dirty 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

  1. Interconnect snoops the dirty peer.
  2. Peer returns data with DataTransfer=1.
  3. If dirty responsibility moves with the data, PassDirty=1.
  4. If the peer keeps a copy, IsShared=1.
  5. The interconnect uses all snoop results to generate the final initiator response.

ReadUnique against peers

  1. Interconnect issues snoops that remove competing copies.
  2. Snoop responses must not indicate shared retention at the end.
  3. If a dirty peer had the line, data might be transferred first.
  4. The initiator ends with unique ownership.

MakeInvalid

  1. The interconnect tells peers to invalidate.
  2. Data transfer is generally not required.
  3. If an implementation chooses not to transfer data, PassDirty must 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 IsShared and PassDirty to 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 -> DataTransfer
  • MakeInvalid -> !DataTransfer if your implementation follows the recommended simplified behavior
  • ReadUnique -> !IsShared in snoop and initiator-visible outcomes
  • Barrier and DVM responses must keep ownership bits low
  • CDVALID should 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

  1. What problem does ACE4 Snoop Transactions and Responses solve, and what assumptions does it rely on?
  2. Which boundary or failure case is easiest to miss, and how would you expose it?
  3. What alternative design would you consider, and what trade-off would change the decision?
  4. 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